From df888222688d74bf860bd914d50e532d0b115d8d3fe76d0b034d1a5559054def Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Fri, 27 Jul 2012 10:33:12 +0000 Subject: [PATCH] Accepting request 129075 from home:a_jaeger:FactoryFix Fix build with glibc 2.16 OBS-URL: https://build.opensuse.org/request/show/129075 OBS-URL: https://build.opensuse.org/package/show/devel:tools/systemtap?expand=0&rev=53 --- systemtap-docs.changes | 5 +++ systemtap-docs.spec | 2 ++ systemtap-linux-types.patch | 70 +++++++++++++++++++++++++++++++++++++ systemtap.changes | 5 +++ systemtap.spec | 2 ++ 5 files changed, 84 insertions(+) create mode 100644 systemtap-linux-types.patch diff --git a/systemtap-docs.changes b/systemtap-docs.changes index 9c3d920..1eb1f19 100644 --- a/systemtap-docs.changes +++ b/systemtap-docs.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Jul 27 10:29:23 UTC 2012 - aj@suse.de + +- Fix build with glibc 2.16 + ------------------------------------------------------------------- Mon Jun 18 09:47:49 CEST 2012 - jslaby@suse.de diff --git a/systemtap-docs.spec b/systemtap-docs.spec index a7c6f68..23213eb 100644 --- a/systemtap-docs.spec +++ b/systemtap-docs.spec @@ -37,6 +37,7 @@ Source2: README-BEFORE-ADDING-PATCHES Patch1: systemtap-docdir-fix.diff Patch2: systemtap-xmlto-fop.diff Patch3: systemtap-docs-autoconf-version.diff +Patch4: systemtap-linux-types.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch @@ -49,6 +50,7 @@ This package contains the documents and examples for systemtap. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %build # fix interpreter diff --git a/systemtap-linux-types.patch b/systemtap-linux-types.patch new file mode 100644 index 0000000..52812b6 --- /dev/null +++ b/systemtap-linux-types.patch @@ -0,0 +1,70 @@ +From: Josh Stone +Subject: Fix build with glibc 2.16 +Date: 2012-07-27 +Upstream: yes +Signed-Off-by: aj@suse.de + +From Fedora: +Squashed cherry-picks from upstream: + +commit 037853b4644bb6ebd68e2f1fac11c3636f551d8e +Author: Josh Stone +Date: Mon Jul 9 12:07:48 2012 -0700 + + Fix the build with glibc 2.16 + + With our elevated compiler warnings as errors, we got: + + mainloop.c: In function 'stp_main_loop': + mainloop.c:581:3: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + mainloop.c:581:3: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + mainloop.c:583:35: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + mainloop.c:583:35: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + mainloop.c:631:2: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + mainloop.c:631:2: error: signed and unsigned type in conditional expression [-Werror=sign-compare] + cc1: all warnings being treated as errors + + This turns out to be a macro fight between glibc-2.16 and + kernel-headers, via including linux/types.h. We apparently don't + even need that header, so removing it lets us proceed normally. + + Those curious can watch this bug to see how the conflict is resolved: + https://bugzilla.redhat.com/show_bug.cgi?id=837641 + +commit d9b0c1c8712ff255d4b6171fdb0e1ec39f444501 +Author: Josh Stone +Date: Wed Jul 18 18:33:12 2012 -0700 + + Further tweak to glibc/kernel-headers workaround + + ... following commit 037853b4644bb6ebd68e2f1fac11c3636f551d8e, for + https://bugzilla.redhat.com/show_bug.cgi?id=840902 + + Seems it's not always possible to avoid linux/types.h for the conflict + it presents with sys/select.h. Now include linux/types.h very early, so + glibc can stomp over it with #undef and #define, rather than vice versa. + +diff --git a/runtime/staprun/staprun.h b/runtime/staprun/staprun.h +index d01a291..e9ce117 100644 +--- a/runtime/staprun/staprun.h ++++ b/runtime/staprun/staprun.h +@@ -10,6 +10,11 @@ + * Copyright (C) 2005-2008 Red Hat Inc. + */ + #define _FILE_OFFSET_BITS 64 ++ ++/* kernel-headers and glibc like to stomp on each other. We include this early ++ * so we can ensure glibc's own definitions will win. rhbz 837641 & 840902 */ ++#include ++ + #include + #include + #include +@@ -28,7 +33,6 @@ + #include + #include + #include +-#include + #include + #include + #include diff --git a/systemtap.changes b/systemtap.changes index fa89dd1..14da45e 100644 --- a/systemtap.changes +++ b/systemtap.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Jul 27 10:29:19 UTC 2012 - aj@suse.de + +- Fix build with glibc 2.16 + ------------------------------------------------------------------- Mon Jun 18 09:46:52 CEST 2012 - jslaby@suse.de diff --git a/systemtap.spec b/systemtap.spec index e383139..dd54ed2 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -37,6 +37,7 @@ Source: http://sourceware.org/systemtap/ftp/releases/systemtap-%{version Source2: README-BEFORE-ADDING-PATCHES Source3: stap-server.conf Patch0: link-with-pthread.patch +Patch4: systemtap-linux-types.patch Obsoletes: systemtap-client < 1.5 Requires: %{name}-runtime = %{version}-%{release} BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -84,6 +85,7 @@ This package contains the support tools for static probes. %prep %setup -q %patch0 -p1 +%patch4 -p1 %build %configure --disable-docs --docdir=%{_docdir}/systemtap