Message ID | 20171128154437.1631-1-gael.portay@savoirfairelinux.com |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] netcat-openbsd: depends on linux-headers >= 3.12 | expand |
Baruch, Since you have looked at a lot of different kernel headers related issues, what do you think about this one below? Thanks! Thomas On Tue, 28 Nov 2017 10:44:37 -0500, Gaël PORTAY wrote: > This debian fork of netcat includes the kernel UAPI inet6 header. This > header conflicts with the existing libc inet header and causes > redefinition of structures when they are both included. > > The compiler raises the following error: > > /home/buildroot/build/instance-0/output/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/linux/in6.h:30:8: error: redefinition of 'struct in6_addr' struct in6_addr { > > From version 3.12 of linux, the kernel UAPI header has mechanisms in > libc-compat.h to prevent such situations (see __UAPI_DEF_SOCKADDR_IN6 > macros). > > Unfortunately the build is broken when toolchains do not satisfy at least > the linux headers condition (>= 3.12). > > The package now depends on the toolchain headers at least 3.12. > > Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com> > --- > > Hi all, > > This patch fixes the build issue[1] of the netcat-openbsd package for > x86_64[2] on branch next. I assume it also fixes the mips64el issue[3]. > > It fixes the issue from a configuration point of view. I believe the > issue cannot be solved. As explain in the commit message, the build is > broken because the linux-headers must be at least 3.12. > > I need your help to make sure my understanding of the issue is right. > > This fork of netcat uses some linux features, and the linux uapi header > must be included. It uses macros that are defined in the linux uapi > header which are not defined in the libc header. > > I have tested by installing a new version of the kernel header using the > commands below. > > $ make BR2_DEFAULT_KERNEL_HEADERS=3.12 linux-headers > $ make netcat-openbsd-rebuild > > And it worked. > > Regards, > Gael > > [1]: http://lists.busybox.net/pipermail/buildroot/2017-November/207809.html > [2]: http://autobuild.buildroot.net/results/3c42c1eadcbfc084a1e55bf1df0450aaf1f2139c/ > [3]: http://autobuild.buildroot.net/results/de0dd8983243ee5d1fb189add8ce445177fb87c2/ > > package/netcat-openbsd/Config.in | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/package/netcat-openbsd/Config.in b/package/netcat-openbsd/Config.in > index 6df87ec688..5c8823c2ef 100644 > --- a/package/netcat-openbsd/Config.in > +++ b/package/netcat-openbsd/Config.in > @@ -4,6 +4,7 @@ config BR2_PACKAGE_NETCAT_OPENBSD > depends on BR2_TOOLCHAIN_HAS_THREADS > depends on BR2_TOOLCHAIN_USES_GLIBC > depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS > + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 > select BR2_PACKAGE_LIBBSD > help > A simple Unix utility which reads and writes data across network
Hi Thomas, On Wed, Nov 29, 2017 at 10:24:35PM +0100, Thomas Petazzoni wrote: > Since you have looked at a lot of different kernel headers related > issues, what do you think about this one below? Makes sense. We have faced the same issue with musl and iproute2. In each of these cases we used different solutions because both provide their own headers. For the simple case, it is reaonable to limit build to toolchains with newer kernel headers providing libc-compat.h. Reviewed-by: Baruch Siach <baruch@tkos.co.il> baruch > On Tue, 28 Nov 2017 10:44:37 -0500, Gaël PORTAY wrote: > > This debian fork of netcat includes the kernel UAPI inet6 header. This > > header conflicts with the existing libc inet header and causes > > redefinition of structures when they are both included. > > > > The compiler raises the following error: > > > > /home/buildroot/build/instance-0/output/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/linux/in6.h:30:8: error: redefinition of 'struct in6_addr' struct in6_addr { > > > > From version 3.12 of linux, the kernel UAPI header has mechanisms in > > libc-compat.h to prevent such situations (see __UAPI_DEF_SOCKADDR_IN6 > > macros). > > > > Unfortunately the build is broken when toolchains do not satisfy at least > > the linux headers condition (>= 3.12). > > > > The package now depends on the toolchain headers at least 3.12. > > > > Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com> > > --- > > > > Hi all, > > > > This patch fixes the build issue[1] of the netcat-openbsd package for > > x86_64[2] on branch next. I assume it also fixes the mips64el issue[3]. > > > > It fixes the issue from a configuration point of view. I believe the > > issue cannot be solved. As explain in the commit message, the build is > > broken because the linux-headers must be at least 3.12. > > > > I need your help to make sure my understanding of the issue is right. > > > > This fork of netcat uses some linux features, and the linux uapi header > > must be included. It uses macros that are defined in the linux uapi > > header which are not defined in the libc header. > > > > I have tested by installing a new version of the kernel header using the > > commands below. > > > > $ make BR2_DEFAULT_KERNEL_HEADERS=3.12 linux-headers > > $ make netcat-openbsd-rebuild > > > > And it worked. > > > > Regards, > > Gael > > > > [1]: http://lists.busybox.net/pipermail/buildroot/2017-November/207809.html > > [2]: http://autobuild.buildroot.net/results/3c42c1eadcbfc084a1e55bf1df0450aaf1f2139c/ > > [3]: http://autobuild.buildroot.net/results/de0dd8983243ee5d1fb189add8ce445177fb87c2/ > > > > package/netcat-openbsd/Config.in | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/package/netcat-openbsd/Config.in b/package/netcat-openbsd/Config.in > > index 6df87ec688..5c8823c2ef 100644 > > --- a/package/netcat-openbsd/Config.in > > +++ b/package/netcat-openbsd/Config.in > > @@ -4,6 +4,7 @@ config BR2_PACKAGE_NETCAT_OPENBSD > > depends on BR2_TOOLCHAIN_HAS_THREADS > > depends on BR2_TOOLCHAIN_USES_GLIBC > > depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS > > + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 > > select BR2_PACKAGE_LIBBSD > > help > > A simple Unix utility which reads and writes data across network
Hello, On Thu, 30 Nov 2017 19:10:49 +0200, Baruch Siach wrote: > On Wed, Nov 29, 2017 at 10:24:35PM +0100, Thomas Petazzoni wrote: > > Since you have looked at a lot of different kernel headers related > > issues, what do you think about this one below? > > Makes sense. We have faced the same issue with musl and iproute2. In each of > these cases we used different solutions because both provide their own > headers. For the simple case, it is reaonable to limit build to toolchains > with newer kernel headers providing libc-compat.h. > > Reviewed-by: Baruch Siach <baruch@tkos.co.il> Well, what bothers me is that netcat is a fairly simple tool, so I find it odd that we restrict it to >= 3.12. Thomas
Hi Thomas, On Thu, Nov 30, 2017 at 08:36:25PM +0100, Thomas Petazzoni wrote: > On Thu, 30 Nov 2017 19:10:49 +0200, Baruch Siach wrote: > > > On Wed, Nov 29, 2017 at 10:24:35PM +0100, Thomas Petazzoni wrote: > > > Since you have looked at a lot of different kernel headers related > > > issues, what do you think about this one below? > > > > Makes sense. We have faced the same issue with musl and iproute2. In each of > > these cases we used different solutions because both provide their own > > headers. For the simple case, it is reaonable to limit build to toolchains > > with newer kernel headers providing libc-compat.h. > > > > Reviewed-by: Baruch Siach <baruch@tkos.co.il> > > Well, what bothers me is that netcat is a fairly simple tool, so I find > it odd that we restrict it to >= 3.12. These header collisions are frequent in networking related packages. The awkward duplication of networking libc/kernel headers make it too easy to hit a collision. It is only since 3.12 that we have kind of solution, though far from ideal. As development is usually done on newer kernels, developers don't see hit these collisoins anymore. So we end up with code that only compiles with headers 3.12 or newer. baruch
Thomas, On Thu, Nov 30, 2017 at 08:36:25PM +0100, Thomas Petazzoni wrote: > Hello, > > On Thu, 30 Nov 2017 19:10:49 +0200, Baruch Siach wrote: > > > On Wed, Nov 29, 2017 at 10:24:35PM +0100, Thomas Petazzoni wrote: > > > Since you have looked at a lot of different kernel headers related > > > issues, what do you think about this one below? > > > > Makes sense. We have faced the same issue with musl and iproute2. In each of > > these cases we used different solutions because both provide their own > > headers. For the simple case, it is reaonable to limit build to toolchains > > with newer kernel headers providing libc-compat.h. > > > > Reviewed-by: Baruch Siach <baruch@tkos.co.il> > > Well, what bothers me is that netcat is a fairly simple tool, so I find > it odd that we restrict it to >= 3.12. > If you prefer, I can update debian patch to not include the kernel UAPI header. It will compile, but this version of netcat will be "amputated" from ipv6 feature. Gael
Hello, On Tue, 28 Nov 2017 10:44:37 -0500, Gaël PORTAY wrote: > This debian fork of netcat includes the kernel UAPI inet6 header. This > header conflicts with the existing libc inet header and causes > redefinition of structures when they are both included. > > The compiler raises the following error: > > /home/buildroot/build/instance-0/output/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/linux/in6.h:30:8: error: redefinition of 'struct in6_addr' struct in6_addr { > > From version 3.12 of linux, the kernel UAPI header has mechanisms in > libc-compat.h to prevent such situations (see __UAPI_DEF_SOCKADDR_IN6 > macros). > > Unfortunately the build is broken when toolchains do not satisfy at least > the linux headers condition (>= 3.12). > > The package now depends on the toolchain headers at least 3.12. > > Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com> > --- You forgot to update the Config.in comment, so I've done so, and applied your patch. Thanks! Thomas
diff --git a/package/netcat-openbsd/Config.in b/package/netcat-openbsd/Config.in index 6df87ec688..5c8823c2ef 100644 --- a/package/netcat-openbsd/Config.in +++ b/package/netcat-openbsd/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_NETCAT_OPENBSD depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_USES_GLIBC depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 select BR2_PACKAGE_LIBBSD help A simple Unix utility which reads and writes data across network
This debian fork of netcat includes the kernel UAPI inet6 header. This header conflicts with the existing libc inet header and causes redefinition of structures when they are both included. The compiler raises the following error: /home/buildroot/build/instance-0/output/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/linux/in6.h:30:8: error: redefinition of 'struct in6_addr' struct in6_addr { From version 3.12 of linux, the kernel UAPI header has mechanisms in libc-compat.h to prevent such situations (see __UAPI_DEF_SOCKADDR_IN6 macros). Unfortunately the build is broken when toolchains do not satisfy at least the linux headers condition (>= 3.12). The package now depends on the toolchain headers at least 3.12. Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com> --- Hi all, This patch fixes the build issue[1] of the netcat-openbsd package for x86_64[2] on branch next. I assume it also fixes the mips64el issue[3]. It fixes the issue from a configuration point of view. I believe the issue cannot be solved. As explain in the commit message, the build is broken because the linux-headers must be at least 3.12. I need your help to make sure my understanding of the issue is right. This fork of netcat uses some linux features, and the linux uapi header must be included. It uses macros that are defined in the linux uapi header which are not defined in the libc header. I have tested by installing a new version of the kernel header using the commands below. $ make BR2_DEFAULT_KERNEL_HEADERS=3.12 linux-headers $ make netcat-openbsd-rebuild And it worked. Regards, Gael [1]: http://lists.busybox.net/pipermail/buildroot/2017-November/207809.html [2]: http://autobuild.buildroot.net/results/3c42c1eadcbfc084a1e55bf1df0450aaf1f2139c/ [3]: http://autobuild.buildroot.net/results/de0dd8983243ee5d1fb189add8ce445177fb87c2/ package/netcat-openbsd/Config.in | 1 + 1 file changed, 1 insertion(+)