> On Tue, 2017-03-28 at 18:57 +0000, Serhii Popovych wrote: >> While glibc states that 2.6.32 kernels still supported >> for x86 / x86_64 builds are failing due to out of date >> LIBC_LINUX_VERSION macro checks for such architectures. >> >> This macro statically defined to 3.2.0 with commit 5b4ecd3 >> (Require Linux 3.2 except on x86 / x86_64, 3.2 headers everywhere.) >> and additionally checked before --enable-kernel. >> >> Since both --enable-kernel and LIBC_LINUX_VERSION checks >> are the same and there is no users of last one we can >> safely get rid of it enabling glibc builds with 2.6.32 >> kernel headers. >> >> Also add --enable-kernel to glibc-initial build so that we >> build it correctly with old headers. >> >> Cc: XE-Linux <xe-linux-exter...@cisco.com> >> Signed-off-by: Serhii Popovych <spopo...@cisco.com> >> --- >> meta/recipes-core/glibc/glibc-initial.inc | 1 + >> .../glibc/0028-Kill-LIBC_LINUX_VERSION-macro.patch | 113 >> +++++++++++++++++++++ >> meta/recipes-core/glibc/glibc_2.25.bb | 1 + >> 3 files changed, 115 insertions(+) >> create mode 100644 meta/recipes-core/glibc/glibc/0028-Kill- >> LIBC_LINUX_VERSION-macro.patch >> >> diff --git a/meta/recipes-core/glibc/glibc-initial.inc >> b/meta/recipes-core/glibc/glibc-initial.inc >> index f94603c..60b25dd 100644 >> --- a/meta/recipes-core/glibc/glibc-initial.inc >> +++ b/meta/recipes-core/glibc/glibc-initial.inc >> @@ -12,6 +12,7 @@ do_configure () { >> find ${S} -name "configure" | xargs touch >> cfgscript=`python3 -c "import os; >> print(os.path.relpath('${S}', '.'))"`/configure >> $cfgscript --host=${TARGET_SYS} --build=${BUILD_SYS} \ >> + --enable-kernel=${OLDEST_KERNEL} \ >> --prefix=/usr \ >> --without-cvs --disable-sanity-checks \ >> --with-headers=${STAGING_DIR_TARGET}${includedir} \ >> diff --git a/meta/recipes-core/glibc/glibc/0028-Kill- >> LIBC_LINUX_VERSION-macro.patch b/meta/recipes-core/glibc/glibc/0028- >> Kill-LIBC_LINUX_VERSION-macro.patch >> new file mode 100644 >> index 0000000..f5eaf1c >> --- /dev/null >> +++ b/meta/recipes-core/glibc/glibc/0028-Kill-LIBC_LINUX_VERSION- >> macro.patch >> @@ -0,0 +1,113 @@ >> +From 88f83e4b5a8929dac9095ed264700fcb62d5e4dd Mon Sep 17 00:00:00 >> 2001 >> +From: Serhii Popovych <spopo...@cisco.com> >> +Date: Fri, 17 Mar 2017 15:48:34 +0000 >> +Subject: Kill LIBC_LINUX_VERSION macro >> + >> +After commit 5b4ecd3 (Require Linux 3.2 except on x86 / x86_64, >> +3.2 headers everywhere.) minimal kernel version raised from >> +2.6.32 to 3.2.0 for all architectures except x86 and x86_64 >> +unless newer already used for architecture. >> + >> +However LIBC_LINUX_VERSION macro still is in effect and fails >> +configure even with --enable-kernel=2.6.32. >> + >> +While it is present in configure.ac it does not affect anything >> +except LINUX_VERSION_CODE check which already performed by >> +--enable-kernel. >> + >> +Upstream-Status: Pending >> +Signed-off-by: Serhii Popovych <spopo...@cisco.com> >> +--- >> + sysdeps/unix/sysv/linux/configure | 39 ----------------------- >> ------------- >> + sysdeps/unix/sysv/linux/configure.ac | 21 ------------------- >> + 2 files changed, 60 deletions(-) >> + >> +diff --git a/sysdeps/unix/sysv/linux/configure >> b/sysdeps/unix/sysv/linux/configure > > This is presumably a generated file. We should only patch configure.ac > as otherwise the potential timestamp differences between these can > cause problems (we've been burnt before). The configure version will > get updated when we reautoconf.
Yes thats true, but I get following | running configure fragment for sysdeps/unix/sysv/linux | checking installed Linux kernel header files... missing or too old! | configure: error: GNU libc requires kernel header files from | Linux 3.2.0 or later to be installed before configuring. | The kernel header files are found usually in /usr/include/asm and | /usr/include/linux; make sure these directories use files from | Linux 3.2.0 or later. This check uses <linux/version.h>, so | make sure that file was built correctly when installing the kernel header | files. To use kernel headers not from /usr/include/linux, use the | configure option --with-headers. | WARNING: /home/spopovyc/oe/build-oe/tmp-glibc/work/x86_64-nativesdk-oesdk-linux/nativesdk-glibc-initial/2.25-r0/temp/run.do_configure.58685:1 exit 1 from '$cfgscript --host=x86_64-oesdk-linux --build=x86_64-linux --enable-kernel=2.6.32 --prefix=/usr --without-cvs --disable-sanity-checks --with-headers=/home/spopovyc/oe/build-oe/tmp-glibc/work/x86_64-nativesdk-oesdk-linux/nativesdk-glibc-initial/2.25-r0/recipe-sysroot/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/include --enable-hacker-mode --enable-addons' | ERROR: Function failed: do_configure (log file is located at /home/spopovyc/oe/build-oe/tmp-glibc/work/x86_64-nativesdk-oesdk-linux/nativesdk-glibc-initial/2.25-r0/temp/log.do_configure.58685) When patching only configure.ac and by looking at configure I see it wasn't recreated from changes in confiugre.ac and by looking at glibc-initial/glibc recipes i see that do_configure() task is overwritten to not to call autoreconf, so I think patching configure is correct here. Also I found few more patches in glibc directory that patch both configure and configure.ac. Thanks, Serhii > > Cheers, > > Richard > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core