From a5bfddd9885789d5f22f6982b810607b663ce9f96e54ba10b7f835ee43bb6564 Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Wed, 25 May 2016 07:27:59 +0000 Subject: [PATCH 1/2] Accepting request 397775 from home:badshah400:branches:openSUSE:Factory:Rings:2-TestDVD Add patches to build against gcc6, apply these patches only if gcc >= 6 is actually used during compilation. OBS-URL: https://build.opensuse.org/request/show/397775 OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=515 --- MozillaFirefox.changes | 13 +++++ MozillaFirefox.spec | 9 ++++ mozilla-exclude-nametablecpp.patch | 50 ++++++++++++++++++++ mozilla-gcc6.patch | 76 ++++++++++++++++++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 mozilla-exclude-nametablecpp.patch create mode 100644 mozilla-gcc6.patch diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index c23ff60..ea8bc02 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Mon May 23 15:30:27 UTC 2016 - badshah400@gmail.com + +- Add patches to fix building with gcc6: + + mozilla-gcc6.patch: fix building with gcc >= 6.1; patch + taken from upstream: + https://hg.mozilla.org/mozilla-central/rev/55212130f19d. + + mozilla-exclude-nametablecpp.patch: Exclude NameTable.cpp + from unified compilation because #include in other + source files causes gcc6 compilation failure; patch taken from + upstream: + https://hg.mozilla.org/mozilla-central/rev/9c57b7cacffc. + ------------------------------------------------------------------- Fri May 13 00:00:00 CEST 2016 - dsterba@suse.cz diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index d5bfe5b..bd1b831 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -66,6 +66,9 @@ %define crashreporter 1 %endif +# DETERMINE GCC VERSION TO KNOW WHEN TO APPLY PATCH15 AND PATCH16 +%define gcc_ver %(rpm -q --whatprovides --qf '%%{version}' gcc) + Name: %{pkgname} BuildRequires: Mesa-devel BuildRequires: autoconf213 @@ -172,6 +175,8 @@ Patch11: mozilla-libproxy.patch Patch12: mozilla-reduce-files-per-UnifiedBindings.patch Patch13: mozilla-gtk3_20.patch Patch14: mozilla-check_return.patch +Patch15: mozilla-gcc6.patch +Patch16: mozilla-exclude-nametablecpp.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-no-default-ualocale.patch @@ -286,6 +291,10 @@ cd $RPM_BUILD_DIR/mozilla %patch13 -p1 %endif %patch14 -p1 +%if %{gcc_ver} >= 6 +%patch15 -p1 +%patch16 -p1 +%endif # Firefox %patch101 -p1 %patch102 -p1 diff --git a/mozilla-exclude-nametablecpp.patch b/mozilla-exclude-nametablecpp.patch new file mode 100644 index 0000000..ca5a168 --- /dev/null +++ b/mozilla-exclude-nametablecpp.patch @@ -0,0 +1,50 @@ + +# HG changeset patch +# User Jonathan Kew +# Date 1463581374 -3600 +# Node ID 9c57b7cacffc57ec3919a2cf3b5ce861e0cf3842 +# Parent ea7843420fe518b772c7b259d8ff47193fc5b79e +Bug 1272647 - Exclude NameTable.cpp from unified compilation because #include in other source files causes gcc6 compilation failure. r=bas + +diff --git a/gfx/graphite2/src/moz.build b/gfx/graphite2/src/moz.build +--- a/gfx/graphite2/src/moz.build ++++ b/gfx/graphite2/src/moz.build +@@ -40,30 +40,35 @@ UNIFIED_SOURCES += [ + 'gr_features.cpp', + 'gr_font.cpp', + 'gr_logging.cpp', + 'gr_segment.cpp', + 'gr_slot.cpp', + 'Intervals.cpp', + 'json.cpp', + 'Justifier.cpp', +- 'NameTable.cpp', + 'Pass.cpp', + 'Position.cpp', + 'SegCache.cpp', + 'SegCacheEntry.cpp', + 'SegCacheStore.cpp', + 'Segment.cpp', + 'Silf.cpp', + 'Slot.cpp', + 'Sparse.cpp', + 'TtfUtil.cpp', + 'UtfCodec.cpp', + ] + ++# Excluded from UNIFIED_SOURCES because from other files breaks it, ++# see bug 1272647. ++SOURCES += [ ++ 'NameTable.cpp', ++] ++ + # tell graphite2 not to export symbols, we'll be linking it directly with + # thebes + DEFINES['GRAPHITE2_STATIC'] = True + + # We allow warnings for third-party code that can be updated from upstream. + ALLOW_COMPILER_WARNINGS = True + + FINAL_LIBRARY = 'gkmedias' + + diff --git a/mozilla-gcc6.patch b/mozilla-gcc6.patch new file mode 100644 index 0000000..9b9c6e8 --- /dev/null +++ b/mozilla-gcc6.patch @@ -0,0 +1,76 @@ + +# HG changeset patch +# User Mike Hommey +# Date 1457596445 -32400 +# Node ID 55212130f19da3079167a6b0a5a0ed6689c9a71d +# Parent 27c94617d7064d566c24a42e11cd4c7ef725923d +Bug 1245076 - Don't include mozalloc.h from the cstdlib wrapper. r=froydnj + +Our STL wrappers do various different things, one of which is including +mozalloc.h for infallible operator new. mozalloc.h includes stdlib.h, +which, in libstdc++ >= 6 is now itself a wrapper around cstdlib, which +circles back to our STL wrapper. + +But of the things our STL wrappers do, including mozalloc.h is not one +that is necessary for cstdlib. So skip including mozalloc.h in our +cstdlib wrapper. + +Additionally, some C++ sources (in media/mtransport) are including +headers in an extern "C" block, which end up including stdlib.h, which +ends up including cstdlib because really, this is all C++, and our +wrapper pre-includes for mozalloc.h, which fails because templates +don't work inside extern "C". So, don't pre-include when we're not +including mozalloc.h. + + +diff --git a/config/gcc-stl-wrapper.template.h b/config/gcc-stl-wrapper.template.h +--- a/config/gcc-stl-wrapper.template.h ++++ b/config/gcc-stl-wrapper.template.h +@@ -12,33 +12,40 @@ + // compiling ObjC. + #if defined(__EXCEPTIONS) && __EXCEPTIONS && !(__OBJC__ && __GNUC__ && XP_IOS) + # error "STL code can only be used with -fno-exceptions" + #endif + + // Silence "warning: #include_next is a GCC extension" + #pragma GCC system_header + ++// Don't include mozalloc for cstdlib. See bug 1245076. ++#ifndef moz_dont_include_mozalloc_for_cstdlib ++# define moz_dont_include_mozalloc_for_cstdlib ++#endif ++#ifndef moz_dont_include_mozalloc_for_${HEADER} + // mozalloc.h wants ; break the cycle by always explicitly + // including here. NB: this is a tad sneaky. Sez the gcc docs: + // + // `#include_next' does not distinguish between and "file" + // inclusion, nor does it check that the file you specify has the + // same name as the current file. It simply looks for the file + // named, starting with the directory in the search path after the + // one where the current file was found. +-#include_next ++# include_next + + // See if we're in code that can use mozalloc. NB: this duplicates + // code in nscore.h because nscore.h pulls in prtypes.h, and chromium + // can't build with that being included before base/basictypes.h. +-#if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) +-# include "mozilla/mozalloc.h" +-#else +-# error "STL code can only be used with infallible ::operator new()" ++# if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) ++# include "mozilla/mozalloc.h" ++# else ++# error "STL code can only be used with infallible ::operator new()" ++# endif ++ + #endif + + #if defined(DEBUG) && !defined(_GLIBCXX_DEBUG) + // Enable checked iterators and other goodies + // + // FIXME/bug 551254: gcc's debug STL implementation requires -frtti. + // Figure out how to resolve this with -fno-rtti. Maybe build with + // -frtti in DEBUG builds? + + From 424ee97030183ec7f7bb7f2553b0e81e486c9f81e43fbb5405119263782ada9a Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Thu, 26 May 2016 05:57:29 +0000 Subject: [PATCH 2/2] Accepting request 398058 from home:badshah400:branches:mozilla:Factory Fix building for non-factory openSUSE. The patches have guards themselves wherever needed, we don't need to be paranoid about applying them unconditionally. Sorry for breaking the build earlier. OBS-URL: https://build.opensuse.org/request/show/398058 OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=516 --- MozillaFirefox.changes | 6 ++++++ MozillaFirefox.spec | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index ea8bc02..f04d6e6 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed May 25 16:36:23 UTC 2016 - badshah400@gmail.com + +- The conditional testing for gcc was failing for different + openSUSE versions, drop it and apply patches unconditionally. + ------------------------------------------------------------------- Mon May 23 15:30:27 UTC 2016 - badshah400@gmail.com diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index bd1b831..377a1e4 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -66,9 +66,6 @@ %define crashreporter 1 %endif -# DETERMINE GCC VERSION TO KNOW WHEN TO APPLY PATCH15 AND PATCH16 -%define gcc_ver %(rpm -q --whatprovides --qf '%%{version}' gcc) - Name: %{pkgname} BuildRequires: Mesa-devel BuildRequires: autoconf213 @@ -291,10 +288,8 @@ cd $RPM_BUILD_DIR/mozilla %patch13 -p1 %endif %patch14 -p1 -%if %{gcc_ver} >= 6 %patch15 -p1 %patch16 -p1 -%endif # Firefox %patch101 -p1 %patch102 -p1