From e9c86d85460f45011bd978e1495a2b802d733020 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 11 May 2016 10:35:08 -0700 Subject: rpm: Fix build with gcc6 Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch | 54 +++++++++++++++++++++++++ meta/recipes-devtools/rpm/rpm_5.4.16.bb | 3 +- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch diff --git a/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch b/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch new file mode 100644 index 0000000000..0a372c6dad --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch @@ -0,0 +1,54 @@ +gcc6 has fixed a long standing c++ include issue where +was different from inclusion via + +https://gcc.gnu.org/ml/libstdc++/2016-01/msg00025.html + +and its also descibed in https://gcc.gnu.org/gcc-6/porting_to.html +rpmio component uses some .cpp and .cc fies which need to use +C stdlib.h from C library and not the C++ libstdc++ header +therefore we pass _GLIBCXX_INCLUDE_NEXT_C_HEADERS so that it +keeps the old behavior + +/a/build/tmp/sysroots/raspberrypi2/usr/include/c++/6.0.1/cstdlib:143:11: error: '::getenv' has not been declared + using ::getenv; + ^~~~~~ +In file included from ../../rpm-5.4.15/system.h:201:0, + from ../../rpm-5.4.15/rpmio/rpmjs.cpp:1: +/a/build/tmp/sysroots/raspberrypi2/usr/include/c++/6.0.1/stdlib.h:62:12: error: 'std::getenv' has not been declared + using std::getenv; + +Upstream-Status: Pending +Signed-off-by: Khem Raj + +Index: rpm-5.4.15/rpmio/Makefile.am +=================================================================== +--- rpm-5.4.15.orig/rpmio/Makefile.am ++++ rpm-5.4.15/rpmio/Makefile.am +@@ -151,7 +151,7 @@ librpmio_la_SOURCES = \ + groestl.c hamsi.c jh.c keccak.c lane.c luffa.c md2.c md6.c radiogatun.c\ + salsa10.c salsa20.c shabal.c shavite3.c simd.c skein.c tib3.c tiger.c \ + rpmgit.c rpmio-stub.c \ +- rpmjs.cpp rpmjsio.c rpmkeyring.c \ ++ rpmjni.cc rpmjs.cpp rpmjsio.c rpmkeyring.c \ + rpmnix.c rpmodbc.c rpmsql.c set.c \ + ar.c \ + argv.c \ +@@ -195,7 +195,6 @@ librpmio_la_SOURCES = \ + rpmhook.c \ + rpmio.c \ + rpmiob.c \ +- rpmjni.cc \ + rpmku.c \ + rpmlog.c \ + rpmltc.c \ +@@ -279,7 +278,9 @@ keccak.lo: $(top_srcdir)/rpmio/keccak.c + #rpmjs.lo: $(top_srcdir)/rpmio/rpmjs.c + # @$(LTCOMPILE) -O0 -c $< + rpmjs.lo: $(top_srcdir)/rpmio/rpmjs.cpp +- @$(LTCOMPILE) -O0 -c $< ++ @$(LTCOMPILE) -O0 -c -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS $< ++rpmjni.lo: $(top_srcdir)/rpmio/rpmjni.cc ++ @$(LTCOMPILE) -O0 -c -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS $< + + YACC = byacc -d + getdate.c: getdate.y diff --git a/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb index f2c12d2de1..7ebd5e9359 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.16.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb @@ -116,6 +116,7 @@ SRC_URI += " \ file://rpm-fix-lua-tests-compilation-failure.patch \ file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \ file://0001-Disable-__sync_add_and_fetch_8-on-nios2.patch \ + file://gcc6-stdlib.patch \ " # OE specific changes @@ -344,7 +345,7 @@ EXTRA_OECONF += "--verbose \ --program-prefix= \ YACC=byacc" -CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE" +CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS" LDFLAGS_append_libc-uclibc = "-lrt -lpthread" -- cgit v1.2.3