diff mbox

package/systemd: import daemon needs headers >= 3.11

Message ID 1468182896-8355-1-git-send-email-yann.morin.1998@free.fr
State Rejected
Headers show

Commit Message

Yann E. MORIN July 10, 2016, 8:34 p.m. UTC
... since it uses O_TMPFILE as an open(2) flag, and it was only
introduced in 3.11.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Gabe Evans <gabe@hashrabbit.co>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
---
 package/systemd/Config.in | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Peter Korsgaard July 11, 2016, 7:57 p.m. UTC | #1
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > ... since it uses O_TMPFILE as an open(2) flag, and it was only
 > introduced in 3.11.

 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > Cc: Gabe Evans <gabe@hashrabbit.co>
 > Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>

Committed, thanks.
Yann E. MORIN July 11, 2016, 8:23 p.m. UTC | #2
Peter, All,

On 2016-07-11 21:57 +0200, Peter Korsgaard spake thusly:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
>  > ... since it uses O_TMPFILE as an open(2) flag, and it was only
>  > introduced in 3.11.
> 
>  > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
>  > Cc: Gabe Evans <gabe@hashrabbit.co>
>  > Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
> Committed, thanks.

Had you seen the other patch a bit later, with comments from Thomas,
before applying this one?

https://patchwork.ozlabs.org/patch/646796/

Regards,
Yann E. MORIN.
Peter Korsgaard July 12, 2016, 8:47 a.m. UTC | #3
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > Peter, All,
 > On 2016-07-11 21:57 +0200, Peter Korsgaard spake thusly:
 >> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
 >> > ... since it uses O_TMPFILE as an open(2) flag, and it was only
 >> > introduced in 3.11.
 >> 
 >> > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 >> > Cc: Gabe Evans <gabe@hashrabbit.co>
 >> > Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
 >> Committed, thanks.

 > Had you seen the other patch a bit later, with comments from Thomas,
 > before applying this one?

 > https://patchwork.ozlabs.org/patch/646796/

I hadn't, no. I just did a test build with 3.10 headers and glibc 2.22,
and it built without problems - So I've dropped this patch.
Thomas Petazzoni July 16, 2016, 12:26 p.m. UTC | #4
Hello,

On Tue, 12 Jul 2016 10:47:31 +0200, Peter Korsgaard wrote:

> I hadn't, no. I just did a test build with 3.10 headers and glibc 2.22,
> and it built without problems - So I've dropped this patch.

So the comment from Yann in https://patchwork.ozlabs.org/patch/646796/
that both were needed is incorrect?

Thomas
Yann E. MORIN July 16, 2016, 6:28 p.m. UTC | #5
Thomas, Peter, All,

On 2016-07-16 14:26 +0200, Thomas Petazzoni spake thusly:
> On Tue, 12 Jul 2016 10:47:31 +0200, Peter Korsgaard wrote:
> 
> > I hadn't, no. I just did a test build with 3.10 headers and glibc 2.22,
> > and it built without problems - So I've dropped this patch.

Yes, it works because glibc 2.22 (which is >= 2.19) defines it even if
not available in the kernel headers).

> So the comment from Yann in https://patchwork.ozlabs.org/patch/646796/
> that both were needed is incorrect?

So, I built a toolchain with Linux headers 3.10 and glibc 2.18. And
systemd-importd does not build:

    src/import/export-raw.c: In function 'reflink_snapshot':
    src/import/export-raw.c:271:26: error: 'O_TMPFILE' undeclared (first use in this function)
             new_fd = open(d, O_TMPFILE|O_CLOEXEC|O_NOCTTY|O_RDWR, 0600);
                              ^
    src/import/export-raw.c:271:26: note: each undeclared identifier is reported only once for each function it appears in
    Makefile:16515: recipe for target 'src/import/systemd_export-export-raw.o' failed

O_TMPFILE was added in Linux 3.11; glibc added the corresponding
definition in glib-2.19.

    glibc \ linux   | <= 3.10   | >= 3.11   |
    ----------------+-----------+-----------+
    <= 2.18         | No        | No*       |
    >= 2.19         | Yes       | Yes       |

*: headers 3.12

So, not sure where to go from there...

Note: I have not tested uClibc or musl, because,well, systemd depends on
glibc...

Regards,
Yann E. MORIN.
Peter Korsgaard July 17, 2016, 7:02 a.m. UTC | #6
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

Hi,

 > So, I built a toolchain with Linux headers 3.10 and glibc 2.18. And
 > systemd-importd does not build:

 >     src/import/export-raw.c: In function 'reflink_snapshot':
 >     src/import/export-raw.c:271:26: error: 'O_TMPFILE' undeclared (first use in this function)
 >              new_fd = open(d, O_TMPFILE|O_CLOEXEC|O_NOCTTY|O_RDWR, 0600);
 >                               ^
 >     src/import/export-raw.c:271:26: note: each undeclared identifier is reported only once for each function it appears in
 >     Makefile:16515: recipe for target 'src/import/systemd_export-export-raw.o' failed

 > O_TMPFILE was added in Linux 3.11; glibc added the corresponding
 > definition in glib-2.19.

 >     glibc \ linux   | <= 3.10   | >= 3.11   |
 >     ----------------+-----------+-----------+
 >     <= 2.18         | No        | No*       |
 >> = 2.19         | Yes       | Yes       |

 > *: headers 3.12

 > So, not sure where to go from there...

 > Note: I have not tested uClibc or musl, because,well, systemd depends on
 > glibc...

I would just go for  >= glibc 2.19. People are unlikely to use old glibc
with new kernel headers (and it cannot be built with buildroot).
Yann E. MORIN July 17, 2016, 7:18 a.m. UTC | #7
Peter, All,

On 2016-07-17 09:02 +0200, Peter Korsgaard spake thusly:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
>  > So, I built a toolchain with Linux headers 3.10 and glibc 2.18. And
>  > systemd-importd does not build:
> 
>  >     src/import/export-raw.c: In function 'reflink_snapshot':
>  >     src/import/export-raw.c:271:26: error: 'O_TMPFILE' undeclared (first use in this function)
>  >              new_fd = open(d, O_TMPFILE|O_CLOEXEC|O_NOCTTY|O_RDWR, 0600);
>  >                               ^
>  >     src/import/export-raw.c:271:26: note: each undeclared identifier is reported only once for each function it appears in
>  >     Makefile:16515: recipe for target 'src/import/systemd_export-export-raw.o' failed
> 
>  > O_TMPFILE was added in Linux 3.11; glibc added the corresponding
>  > definition in glib-2.19.
> 
>  >     glibc \ linux   | <= 3.10   | >= 3.11   |
>  >     ----------------+-----------+-----------+
>  >     <= 2.18         | No        | No*       |
>  >> = 2.19         | Yes       | Yes       |
> 
>  > *: headers 3.12
> 
>  > So, not sure where to go from there...
> 
>  > Note: I have not tested uClibc or musl, because,well, systemd depends on
>  > glibc...
> 
> I would just go for  >= glibc 2.19. People are unlikely to use old glibc
> with new kernel headers (and it cannot be built with buildroot).

So, should we add GLIBC_AT_LEAST_X_Y symbols?

Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/package/systemd/Config.in b/package/systemd/Config.in
index ddaf3e2..4a2aa33 100644
--- a/package/systemd/Config.in
+++ b/package/systemd/Config.in
@@ -144,6 +144,7 @@  config BR2_PACKAGE_SYSTEMD_HWDB
 config BR2_PACKAGE_SYSTEMD_IMPORTD
 	bool "enable import daemon"
 	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 # O_TMPFILE
 	select BR2_PACKAGE_LIBCURL
 	select BR2_PACKAGE_LIBGCRYPT
 	select BR2_PACKAGE_BZIP2
@@ -157,6 +158,10 @@  config BR2_PACKAGE_SYSTEMD_IMPORTD
 
 	  http://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands
 
+comment "import daemon needs a toolchain w/ headers >= 3.11"
+	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS
+	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
+
 config BR2_PACKAGE_SYSTEMD_KDBUS
 	bool "enable kdbus support"
 	help