1
0

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
This commit is contained in:
Wolfgang Rosenauer 2016-05-25 07:27:59 +00:00 committed by Git OBS Bridge
parent 44ae32c807
commit a5bfddd988
4 changed files with 148 additions and 0 deletions

View File

@ -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 <cmath> 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 Fri May 13 00:00:00 CEST 2016 - dsterba@suse.cz

View File

@ -66,6 +66,9 @@
%define crashreporter 1 %define crashreporter 1
%endif %endif
# DETERMINE GCC VERSION TO KNOW WHEN TO APPLY PATCH15 AND PATCH16
%define gcc_ver %(rpm -q --whatprovides --qf '%%{version}' gcc)
Name: %{pkgname} Name: %{pkgname}
BuildRequires: Mesa-devel BuildRequires: Mesa-devel
BuildRequires: autoconf213 BuildRequires: autoconf213
@ -172,6 +175,8 @@ Patch11: mozilla-libproxy.patch
Patch12: mozilla-reduce-files-per-UnifiedBindings.patch Patch12: mozilla-reduce-files-per-UnifiedBindings.patch
Patch13: mozilla-gtk3_20.patch Patch13: mozilla-gtk3_20.patch
Patch14: mozilla-check_return.patch Patch14: mozilla-check_return.patch
Patch15: mozilla-gcc6.patch
Patch16: mozilla-exclude-nametablecpp.patch
# Firefox/browser # Firefox/browser
Patch101: firefox-kde.patch Patch101: firefox-kde.patch
Patch102: firefox-no-default-ualocale.patch Patch102: firefox-no-default-ualocale.patch
@ -286,6 +291,10 @@ cd $RPM_BUILD_DIR/mozilla
%patch13 -p1 %patch13 -p1
%endif %endif
%patch14 -p1 %patch14 -p1
%if %{gcc_ver} >= 6
%patch15 -p1
%patch16 -p1
%endif
# Firefox # Firefox
%patch101 -p1 %patch101 -p1
%patch102 -p1 %patch102 -p1

View File

@ -0,0 +1,50 @@
# HG changeset patch
# User Jonathan Kew <jkew@mozilla.com>
# Date 1463581374 -3600
# Node ID 9c57b7cacffc57ec3919a2cf3b5ce861e0cf3842
# Parent ea7843420fe518b772c7b259d8ff47193fc5b79e
Bug 1272647 - Exclude NameTable.cpp from unified compilation because #include <cmath> 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 <cmath> 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'

76
mozilla-gcc6.patch Normal file
View File

@ -0,0 +1,76 @@
# HG changeset patch
# User Mike Hommey <mh+mozilla@glandium.org>
# 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 <new> for mozalloc.h, which fails because templates
don't work inside extern "C". So, don't pre-include <new> 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 <new>; break the cycle by always explicitly
// including <new> here. NB: this is a tad sneaky. Sez the gcc docs:
//
// `#include_next' does not distinguish between <file> 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 <new>
+# include_next <new>
// 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?