Message ID | 1455393768-26580-1-git-send-email-bernd.kuhls@t-online.de |
---|---|
State | Rejected |
Headers | show |
Dear Bernd Kuhls, On Sat, 13 Feb 2016 21:02:48 +0100, Bernd Kuhls wrote: > --#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) > -+#if defined(__GLIBC__) > -+# if __GLIBC_PREREQ(2,11) > ++#ifndef __GLIBC_PREREQ > ++# define __GLIBC_PREREQ(x,y) 0 > ++#endif > ++ > + #if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) I still don't understand why #if defined(__GLIBC__) #if __GLIBC_PREREQ(2, 11) ... #endif #endif isn't the proposed solution. It looks so much cleaner and simpler than defining __GLIBC_PREREQ to 0 when __GLIBC__ is not defined. And it is actually the most correct solution I believe: only use __GLIBC_PREREQ when __GLIBC__ is defined. Thanks, Thomas
Am Sun, 14 Feb 2016 13:51:41 +0100 schrieb Thomas Petazzoni: > I still don't understand why > > #if defined(__GLIBC__) > #if __GLIBC_PREREQ(2, 11) > ... > #endif #endif > > isn't the proposed solution. It looks so much cleaner and simpler than > defining __GLIBC_PREREQ to 0 when __GLIBC__ is not defined. And it is > actually the most correct solution I believe: only use __GLIBC_PREREQ > when __GLIBC__ is defined. Hi, the code you mentioned above was the first PR I sent on github[1] and received this answer: https://github.com/numactl/numactl/pull/4#issuecomment-183441544 "I don't think the patch is correct. If GLIBC_PREREQ fails the #elif defined(__x86_64) path still needs to be taken. So you need to combine the two #ifs into one line" And combining the two #ifs into one line breaks compilation on musl so I wrote the current patch. Regards, Bernd [1] http://patchwork.ozlabs.org/patch/575931/
Dear Bernd Kuhls, On Sat, 13 Feb 2016 21:02:48 +0100, Bernd Kuhls wrote: > Fixes > http://autobuild.buildroot.net/results/316/3160fb32fbb6990b0bb268524dcea02a1f6880a7/ > http://autobuild.buildroot.net/results/961/9616f09e7cbd020134ba72853acaa28a308432a3// > and others > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > v3: use a better fix (Thomas) > v2: updated patch to consider improvements suggested by upstream Instead of this patch, I've committed a patch that simply replaces our private patch with a NUMACTL_PATCH variable that references the two upstream commits that fix the numactl build issue for both musl and uclibc. Thanks a lot for having worked with upstream on this, definitely appreciated! Thomas
diff --git a/package/numactl/0001-use-glibc-prereq-only-on-glibc.patch b/package/numactl/0001-use-glibc-prereq-only-on-glibc.patch index 0158bd9..04561e9 100644 --- a/package/numactl/0001-use-glibc-prereq-only-on-glibc.patch +++ b/package/numactl/0001-use-glibc-prereq-only-on-glibc.patch @@ -1,35 +1,38 @@ -Use __GLIBC_PREREQ only when __GLIBC__ is defined +From e72abd55ae9a6509372af4e02de707c76d466698 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls <bernd.kuhls@t-online.de> +Date: Fri, 12 Feb 2016 19:25:02 +0100 +Subject: [PATCH 1/1] Fix usage of __GLIBC_PREREQ for non-glibc toolchains The way __GLIBC_PREREQ() is currently used means that it's evaluated even if __GLIBC__ is not defined. But obviously, __GLIBC_PREREQ will not exist if __GLIBC__ is not defined, causing build failures on C libraries not defining __GLIBC__ such as the musl C library. -Patch originally taken from: -https://github.com/voidlinux/void-packages/blob/master/srcpkgs/numactl/patches/musl.patch +Patch sent upstream: https://github.com/numactl/numactl/pull/5 Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> +[Bernd: Reworked to fix uClibc] [Thomas: improve patch description.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +--- + syscall.c | 4 ++++ + 1 file changed, 4 insertions(+) ---- a/syscall.c.orig 2014-10-20 16:12:53.000000000 +0200 -+++ b/syscall.c 2015-06-22 08:13:22.729034702 +0200 -@@ -115,14 +115,16 @@ +diff --git a/syscall.c b/syscall.c +index 4589b85..255853d 100644 +--- a/syscall.c ++++ b/syscall.c +@@ -115,6 +115,10 @@ #endif --#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) -+#if defined(__GLIBC__) -+# if __GLIBC_PREREQ(2,11) ++#ifndef __GLIBC_PREREQ ++# define __GLIBC_PREREQ(x,y) 0 ++#endif ++ + #if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) /* glibc 2.11 seems to have working 6 argument sycall. Use the - glibc supplied syscall in this case. - The version cut-off is rather arbitary and could be probably - earlier. */ - --#define syscall6 syscall -+# define syscall6 syscall -+#endif - #elif defined(__x86_64__) - /* 6 argument calls on x86-64 are often buggy in both glibc and - asm/unistd.h. Add a working version here. */ +-- +2.7.0 +
Fixes http://autobuild.buildroot.net/results/316/3160fb32fbb6990b0bb268524dcea02a1f6880a7/ http://autobuild.buildroot.net/results/961/9616f09e7cbd020134ba72853acaa28a308432a3// and others Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- v3: use a better fix (Thomas) v2: updated patch to consider improvements suggested by upstream .../0001-use-glibc-prereq-only-on-glibc.patch | 41 ++++++++++++---------- 1 file changed, 22 insertions(+), 19 deletions(-)