diff --git a/.gitignore b/.gitignore index 8fac829..dc10552 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,11 @@ SOURCES/Python-2.7.13.tar.xz +SOURCES/Python-3.6.8.tar.xz +SOURCES/cbindgen-vendor.tar.xz SOURCES/gtk3-private-3.22.26-1.el6.src.rpm SOURCES/libffi-3.0.13-18.el7_3.src.rpm -SOURCES/lightning-langpacks-60.7.0.tar.xz -SOURCES/thunderbird-60.7.0.source.tar.xz -SOURCES/thunderbird-langpacks-60.7.0-20190520.tar.xz +SOURCES/lightning-langpacks-68.3.0.tar.xz +SOURCES/nodejs-8.11.4-1.3.fc27.src.rpm +SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm +SOURCES/thunderbird-68.3.0.source.tar.xz +SOURCES/thunderbird-langpacks-68.3.0-20191202.tar.xz SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/.thunderbird.metadata b/.thunderbird.metadata index 14d9b62..286970f 100644 --- a/.thunderbird.metadata +++ b/.thunderbird.metadata @@ -1,7 +1,11 @@ 18a8f30a0356c751b8d0ea6f76e764cab13ee046 SOURCES/Python-2.7.13.tar.xz +ee55acedef049268307633cbc9c7ff0610d1244f SOURCES/Python-3.6.8.tar.xz +e86c38c48960b95353503b78e1de9ddca1ed34d7 SOURCES/cbindgen-vendor.tar.xz 0de63f863b158454b9429234b52ed28a397ec45c SOURCES/gtk3-private-3.22.26-1.el6.src.rpm e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm -27325758061b85882d0b21834ccb1249dbf32d81 SOURCES/lightning-langpacks-60.7.0.tar.xz -23b4227d9459d2100f580af68139f6641fc24c66 SOURCES/thunderbird-60.7.0.source.tar.xz -ea4041cafc04999e714a223d0b07dc08c1fefeff SOURCES/thunderbird-langpacks-60.7.0-20190520.tar.xz +52e3db96daa8c54295b6fe958f4dd5d7ca902534 SOURCES/lightning-langpacks-68.3.0.tar.xz +4f8d3bf2483d95261ff90742ecec82d6a899eca3 SOURCES/nodejs-8.11.4-1.3.fc27.src.rpm +a379070abf5000cde61411c97af7e733b267a4d3 SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm +1602af5c854109d939528ec14ada80103030128d SOURCES/thunderbird-68.3.0.source.tar.xz +9f691d8b90eda93a423d17f6ff45ddc81f63b6b4 SOURCES/thunderbird-langpacks-68.3.0-20191202.tar.xz 77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/README.debrand b/README.debrand deleted file mode 100644 index 01c46d2..0000000 --- a/README.debrand +++ /dev/null @@ -1,2 +0,0 @@ -Warning: This package was configured for automatic debranding, but the changes -failed to apply. diff --git a/SOURCES/build-aarch64-skia.patch b/SOURCES/build-aarch64-skia.patch deleted file mode 100644 index 1ecad24..0000000 --- a/SOURCES/build-aarch64-skia.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.aarch64-skia firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp ---- firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.aarch64-skia 2018-06-20 09:19:11.411939714 +0200 -+++ firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp 2018-06-20 09:23:36.831919894 +0200 -@@ -686,7 +686,7 @@ SI F from_half(U16 h) { - } - - SI U16 to_half(F f) { --#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. -+#if 0 && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. - return vcvt_f16_f32(f); - - #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) diff --git a/SOURCES/build-disable-elfhack.patch b/SOURCES/build-disable-elfhack.patch index 1db9bdf..a54814e 100644 --- a/SOURCES/build-disable-elfhack.patch +++ b/SOURCES/build-disable-elfhack.patch @@ -1,12 +1,12 @@ -diff -up firefox-60.4.0/toolkit/moz.configure.disable-elfhack firefox-60.4.0/toolkit/moz.configure ---- firefox-60.4.0/toolkit/moz.configure.disable-elfhack 2019-01-03 14:47:00.566556623 +0100 -+++ firefox-60.4.0/toolkit/moz.configure 2019-01-03 14:49:14.243887620 +0100 -@@ -1192,7 +1192,7 @@ with only_when(has_elfhack): - option('--disable-elf-hack', help='Disable elf hacks') +diff -up thunderbird-68.1.1/toolkit/moz.configure.elfhack thunderbird-68.1.1/toolkit/moz.configure +--- thunderbird-68.1.1/toolkit/moz.configure.elfhack 2019-10-04 08:33:32.881241826 +0200 ++++ thunderbird-68.1.1/toolkit/moz.configure 2019-10-04 08:38:35.422159976 +0200 +@@ -1130,7 +1130,7 @@ with only_when('--enable-compile-environ + help='{Enable|Disable} elf hacks') - set_config('USE_ELF_HACK', -- depends_if('--enable-elf-hack')(lambda _: True)) -+ depends_if('--enable-elf-hack')(lambda _: False)) + set_config('USE_ELF_HACK', +- depends_if('--enable-elf-hack')(lambda _: True)) ++ depends_if('--enable-elf-hack')(lambda _: False)) @depends(check_build_environment) diff --git a/SOURCES/build-gdk-version.patch b/SOURCES/build-gdk-version.patch deleted file mode 100644 index a25b255..0000000 --- a/SOURCES/build-gdk-version.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -up mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in.gdk-version mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in ---- mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in.gdk-version 2018-03-10 03:54:17.000000000 +0100 -+++ mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in 2018-03-28 13:11:06.294873487 +0200 -@@ -61,6 +61,7 @@ CAIRO_VERSION=1.10 - GTK2_VERSION=2.18.0 - GTK3_VERSION=3.4.0 - GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 -+GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 - WINDRES_VERSION=2.14.90 - W32API_VERSION=3.14 - GCONF_VERSION=1.2.1 -@@ -2173,6 +2174,7 @@ if test "$COMPILE_ENVIRONMENT"; then - dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings - dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h. - AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED) -+ AC_DEFINE_UNQUOTED(GDK_VERSION_MIN_REQUIRED,$GDK_VERSION_MIN_REQUIRED) - GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 - fi - if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then diff --git a/SOURCES/build-icu-big-endian.patch b/SOURCES/build-icu-big-endian.patch index c26a4d4..b0a4a09 100644 --- a/SOURCES/build-icu-big-endian.patch +++ b/SOURCES/build-icu-big-endian.patch @@ -1,12 +1,12 @@ -diff -up firefox-60.0/build/autoconf/icu.m4.icu firefox-60.0/build/autoconf/icu.m4 ---- firefox-60.0/build/autoconf/icu.m4.icu 2018-04-17 15:11:54.100644119 +0200 -+++ firefox-60.0/build/autoconf/icu.m4 2018-04-17 15:12:50.740686636 +0200 +diff -up thunderbird-68.1.1/build/autoconf/icu.m4.icu thunderbird-68.1.1/build/autoconf/icu.m4 +--- thunderbird-68.1.1/build/autoconf/icu.m4.icu 2019-10-04 09:48:47.337041046 +0200 ++++ thunderbird-68.1.1/build/autoconf/icu.m4 2019-10-04 09:52:32.046670353 +0200 @@ -78,7 +78,7 @@ if test -n "$USE_ICU"; then # TODO: the l is actually endian-dependent # We could make this set as 'l' or 'b' for little or big, respectively, # but we'd need to check in a big-endian version of the file. - ICU_DATA_FILE="icudt${version}l.dat" + ICU_DATA_FILE="icudt${version}b.dat" - - MOZ_ICU_DATA_ARCHIVE= fi + + AC_SUBST(MOZ_ICU_VERSION) diff --git a/SOURCES/build-jit-atomic-always-lucky.patch b/SOURCES/build-jit-atomic-always-lucky.patch deleted file mode 100644 index ab99524..0000000 --- a/SOURCES/build-jit-atomic-always-lucky.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-60.5.0/js/src/jit/AtomicOperations.h.jit-atomic-lucky firefox-60.5.0/js/src/jit/AtomicOperations.h ---- firefox-60.5.0/js/src/jit/AtomicOperations.h.jit-atomic-lucky 2019-01-22 10:20:27.993697161 +0100 -+++ firefox-60.5.0/js/src/jit/AtomicOperations.h 2019-01-22 10:23:15.337873762 +0100 -@@ -394,7 +394,7 @@ inline bool AtomicOperations::isLockfree - #elif defined(__s390__) || defined(__s390x__) - #include "jit/none/AtomicOperations-feeling-lucky.h" - #else --#error "No AtomicOperations support provided for this platform" -+#include "jit/none/AtomicOperations-feeling-lucky.h" - #endif - - #endif // jit_AtomicOperations_h diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch index 94947f2..583e0da 100644 --- a/SOURCES/build-nss-version.patch +++ b/SOURCES/build-nss-version.patch @@ -1,12 +1,12 @@ -diff -up firefox-60.1.0/old-configure.in.nss-version firefox-60.1.0/old-configure.in ---- firefox-60.1.0/old-configure.in.nss-version 2018-06-20 14:24:55.204158540 +0200 -+++ firefox-60.1.0/old-configure.in 2018-06-20 14:30:19.517004230 +0200 -@@ -1768,7 +1768,7 @@ MOZ_ARG_WITH_BOOL(system-nss, +diff -up thunderbird-68.2.0/old-configure.in.nss-version thunderbird-68.2.0/old-configure.in +--- thunderbird-68.2.0/old-configure.in.nss-version 2019-10-22 14:50:42.649086398 +0200 ++++ thunderbird-68.2.0/old-configure.in 2019-10-22 14:51:11.567171593 +0200 +@@ -1537,7 +1537,7 @@ MOZ_ARG_WITH_BOOL(system-nss, _USE_SYSTEM_NSS=1 ) if test -n "$_USE_SYSTEM_NSS"; then -- AM_PATH_NSS(3.36.7, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) -+ AM_PATH_NSS(3.36.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) +- AM_PATH_NSS(3.44.3, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) ++ AM_PATH_NSS(3.44.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) fi - if test -z "$MOZ_SYSTEM_NSS"; then + NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss" diff --git a/SOURCES/build-ppc64le-inline.patch b/SOURCES/build-ppc64le-inline.patch new file mode 100644 index 0000000..de0f6d9 --- /dev/null +++ b/SOURCES/build-ppc64le-inline.patch @@ -0,0 +1,27 @@ +diff -up firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.ppc64le-inline firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp +--- firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.ppc64le-inline 2019-08-26 18:52:28.000000000 +0200 ++++ firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp 2019-08-29 08:49:57.695687874 +0200 +@@ -1092,7 +1092,11 @@ class MOZ_STACK_CLASS CallMethodHelper f + MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, + MutableHandleValue srcp) const; + ++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) ++ bool GatherAndConvertResults(); ++#else + MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); ++#endif + + MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); + +@@ -1139,7 +1143,11 @@ class MOZ_STACK_CLASS CallMethodHelper f + + ~CallMethodHelper(); + ++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) ++ bool Call(); ++#else + MOZ_ALWAYS_INLINE bool Call(); ++#endif + + // Trace implementation so we can put our CallMethodHelper in a Rooted. + void trace(JSTracer* aTrc); diff --git a/SOURCES/firefox-debugedits-error.patch b/SOURCES/firefox-debugedits-error.patch new file mode 100644 index 0000000..a4b005f --- /dev/null +++ b/SOURCES/firefox-debugedits-error.patch @@ -0,0 +1,50 @@ +diff -up firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium +diff -up firefox-68.0/media/webrtc/trunk/Makefile.old firefox-68.0/media/webrtc/trunk/Makefile +diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old 2019-06-12 08:17:02.673268442 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc 2019-06-12 08:17:13.582328073 +0200 +@@ -21,7 +21,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + +diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old 2019-06-12 08:17:36.671454285 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc 2019-06-12 08:17:46.989510679 +0200 +@@ -8,7 +8,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + +diff -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c +--- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old 2019-06-12 08:16:15.673011534 +0200 ++++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c 2019-06-12 08:16:22.602049410 +0200 +@@ -17,7 +17,7 @@ + #include "aom_dsp/blend.h" + #include "aom/aom_integer.h" + #include "aom_dsp/x86/synonyms.h" +-#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" ++#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" + + static INLINE unsigned int masked_sad32xh_avx2( + const uint8_t *src_ptr, int src_stride, const uint8_t *a_ptr, int a_stride, +diff -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c +--- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old 2019-06-12 08:16:35.404119384 +0200 ++++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c 2019-06-12 08:16:43.415163174 +0200 +@@ -19,7 +19,7 @@ + #include "aom/aom_integer.h" + #include "aom_dsp/x86/synonyms.h" + +-#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" ++#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" + + // For width a multiple of 16 + static INLINE unsigned int masked_sad_ssse3(const uint8_t *src_ptr, diff --git a/SOURCES/firefox-dont-check-binary.patch b/SOURCES/firefox-dont-check-binary.patch new file mode 100644 index 0000000..c498034 --- /dev/null +++ b/SOURCES/firefox-dont-check-binary.patch @@ -0,0 +1,47 @@ +diff -up firefox-68.0/config/rules.mk.old firefox-68.0/config/rules.mk +--- firefox-68.0/config/rules.mk.old 2019-06-26 09:36:58.537034443 +0200 ++++ firefox-68.0/config/rules.mk 2019-06-26 09:37:38.004970573 +0200 +@@ -569,7 +569,6 @@ ifdef MOZ_PROFILE_GENERATE + endif + else # !WINNT || GNU_CC + $(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $($(notdir $@)_$(OBJS_VAR_SUFFIX)) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) +- $(call py_action,check_binary,--target $@) + endif # WINNT && !GNU_CC + + ifdef ENABLE_STRIP +@@ -604,9 +603,6 @@ else + $(HOST_CC) -o $@ $(HOST_C_LDFLAGS) $(HOST_LDFLAGS) $($(notdir $@)_OBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) + endif # HOST_CPP_PROG_LINK + endif +-ifndef CROSS_COMPILE +- $(call py_action,check_binary,--host $@) +-endif + + # + # This is an attempt to support generation of multiple binaries +@@ -630,7 +626,6 @@ ifdef MSMANIFEST_TOOL + endif # MSVC with manifest tool + else + $(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $($@_$(OBJS_VAR_SUFFIX)) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) +- $(call py_action,check_binary,--target $@) + endif # WINNT && !GNU_CC + + ifdef ENABLE_STRIP +@@ -651,9 +646,6 @@ else + $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_C_LDFLAGS) $($(notdir $@)_OBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) + endif + endif +-ifndef CROSS_COMPILE +- $(call py_action,check_binary,--host $@) +-endif + + $(LIBRARY): $(OBJS) $(STATIC_LIBS) $(EXTRA_DEPS) $(GLOBAL_DEPS) + $(REPORT_BUILD) +@@ -691,7 +683,6 @@ ifndef INCREMENTAL_LINKER + $(RM) $@ + endif + $(MKSHLIB) $($@_$(OBJS_VAR_SUFFIX)) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS) +- $(call py_action,check_binary,--target $@) + + ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH)) + ifdef MSMANIFEST_TOOL diff --git a/SOURCES/firefox-rhel6-hugepage.patch b/SOURCES/firefox-rhel6-hugepage.patch new file mode 100644 index 0000000..4855721 --- /dev/null +++ b/SOURCES/firefox-rhel6-hugepage.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.1.0/xpcom/threads/nsThread.cpp.old firefox-68.1.0/xpcom/threads/nsThread.cpp +--- firefox-68.1.0/xpcom/threads/nsThread.cpp.old 2019-09-20 12:17:35.481661390 +0200 ++++ firefox-68.1.0/xpcom/threads/nsThread.cpp 2019-09-20 12:19:14.269180516 +0200 +@@ -556,7 +556,8 @@ void nsThread::InitCommon() { + // kernel report them as separate regions, even when they are adjacent to + // heap memory. This allows us to accurately track the actual memory + // consumption of our allocated stacks. +- madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); ++ // not supported on RHEL6 ++ // madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); + + pthread_attr_destroy(&attr); + #elif defined(XP_WIN) diff --git a/SOURCES/firefox-rhel6-nss-tls1.3.patch b/SOURCES/firefox-rhel6-nss-tls1.3.patch new file mode 100644 index 0000000..2b6e8f7 --- /dev/null +++ b/SOURCES/firefox-rhel6-nss-tls1.3.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp +--- firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old 2019-10-24 14:20:21.227037984 +0200 ++++ firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp 2019-10-24 14:45:52.769506967 +0200 +@@ -996,6 +996,9 @@ void nsNSSComponent::FillTLSVersionRange + return; + } + ++ // Enable TLS 1.3 as our NSS supports it. ++ supported.max = 0x304; ++ + // Clip the defaults by what NSS actually supports to enable + // working with a system NSS with different ranges. + rangeOut.min = std::max(rangeOut.min, supported.min); diff --git a/SOURCES/mozilla-1170092.patch b/SOURCES/mozilla-1170092.patch index b182d64..66aea0e 100644 --- a/SOURCES/mozilla-1170092.patch +++ b/SOURCES/mozilla-1170092.patch @@ -1,7 +1,7 @@ -diff -up firefox-60.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-60.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- firefox-60.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2019-01-22 10:48:38.187383614 +0100 -+++ firefox-60.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2019-01-22 11:26:11.027108692 +0100 -@@ -225,8 +225,20 @@ nsresult nsReadConfig::openAndEvaluateJS +diff -up thunderbird-68.1.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 thunderbird-68.1.1/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- thunderbird-68.1.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2019-09-24 16:36:11.000000000 +0200 ++++ thunderbird-68.1.1/extensions/pref/autoconfig/src/nsReadConfig.cpp 2019-10-03 11:27:33.905512072 +0200 +@@ -246,8 +246,20 @@ nsresult nsReadConfig::openAndEvaluateJS if (NS_FAILED(rv)) return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -23,30 +23,22 @@ diff -up firefox-60.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -diff -up firefox-60.5.0/modules/libpref/Preferences.cpp.1170092 firefox-60.5.0/modules/libpref/Preferences.cpp ---- firefox-60.5.0/modules/libpref/Preferences.cpp.1170092 2019-01-21 17:38:16.000000000 +0100 -+++ firefox-60.5.0/modules/libpref/Preferences.cpp 2019-01-22 10:48:38.187383614 +0100 -@@ -3459,6 +3459,8 @@ static nsresult pref_ReadPrefFromJar(nsZ +diff -up thunderbird-68.1.1/modules/libpref/Preferences.cpp.1170092 thunderbird-68.1.1/modules/libpref/Preferences.cpp +--- thunderbird-68.1.1/modules/libpref/Preferences.cpp.1170092 2019-09-24 16:36:50.000000000 +0200 ++++ thunderbird-68.1.1/modules/libpref/Preferences.cpp 2019-10-03 11:27:33.906512075 +0200 +@@ -4436,6 +4436,8 @@ static nsresult pref_ReadDefaultPrefs(co // // Thus, in the omni.jar case, we always load app-specific default // preferences from omni.jar, whether or not `$app == $gre`. + // At very end load configuration from system config location: + // - /etc/firefox/pref/*.js - nsresult rv; + nsresult rv = NS_ERROR_FAILURE; nsZipFind* findPtr; -diff -up firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp ---- firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2019-01-21 17:38:51.000000000 +0100 -+++ firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp 2019-01-22 11:37:01.868896974 +0100 -@@ -58,6 +58,7 @@ - #endif - #ifdef XP_UNIX - #include -+#include "nsIXULAppInfo.h" - #endif - #ifdef XP_IOS - #include "UIKitDirProvider.h" -@@ -491,6 +492,21 @@ nsXREDirProvider::GetFile(const char* aP +diff -up thunderbird-68.1.1/toolkit/xre/nsXREDirProvider.cpp.1170092 thunderbird-68.1.1/toolkit/xre/nsXREDirProvider.cpp +--- thunderbird-68.1.1/toolkit/xre/nsXREDirProvider.cpp.1170092 2019-09-24 16:37:39.000000000 +0200 ++++ thunderbird-68.1.1/toolkit/xre/nsXREDirProvider.cpp 2019-10-03 11:33:45.858681620 +0200 +@@ -524,6 +524,21 @@ nsXREDirProvider::GetFile(const char* aP } } } @@ -68,7 +60,7 @@ diff -up firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-60.5.0/ if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; if (ensureFilePermissions) { -@@ -796,6 +812,16 @@ nsresult nsXREDirProvider::GetFilesInter +@@ -880,6 +895,16 @@ nsresult nsXREDirProvider::GetFilesInter LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories); LoadDirsIntoArray(mAppBundleDirectories, kAppendPrefDir, directories); @@ -82,12 +74,12 @@ diff -up firefox-60.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-60.5.0/ + directories.AppendObject(systemPrefDir); + } + - rv = NS_NewArrayEnumerator(aResult, directories); + rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile)); } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) { // NS_APP_CHROME_DIR_LIST is only used to get default (native) icons -diff -up firefox-60.5.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-60.5.0/xpcom/io/nsAppDirectoryServiceDefs.h ---- firefox-60.5.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2019-01-22 10:48:38.188383609 +0100 -+++ firefox-60.5.0/xpcom/io/nsAppDirectoryServiceDefs.h 2019-01-22 11:08:12.068459480 +0100 +diff -up thunderbird-68.1.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 thunderbird-68.1.1/xpcom/io/nsAppDirectoryServiceDefs.h +--- thunderbird-68.1.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2019-09-24 16:37:44.000000000 +0200 ++++ thunderbird-68.1.1/xpcom/io/nsAppDirectoryServiceDefs.h 2019-10-03 11:27:33.907512077 +0200 @@ -62,6 +62,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ diff --git a/SOURCES/mozilla-1353817.patch b/SOURCES/mozilla-1353817.patch index dc8d8f8..3e68cb8 100644 --- a/SOURCES/mozilla-1353817.patch +++ b/SOURCES/mozilla-1353817.patch @@ -1,27 +1,12 @@ -From 1cc652f5525f458b0b4ceb12af24bf5a4367db32 Mon Sep 17 00:00:00 2001 -From: Nicolas Dufresne -Date: Tue, 23 May 2017 13:09:48 -0400 -Subject: [PATCH] Bug 1353817: Include SkNx_neon.h for ARM64 too - -This fixes build errors as arm_neon.h was missing along with some -missing converters. ---- - gfx/skia/skia/src/core/SkNx.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gfx/skia/skia/src/core/SkNx.h b/gfx/skia/skia/src/core/SkNx.h -index 6bca856..b0427aa 100644 ---- a/gfx/skia/skia/src/core/SkNx.h -+++ b/gfx/skia/skia/src/core/SkNx.h -@@ -299,7 +299,7 @@ typedef SkNx<4, uint32_t> Sk4u; +diff -up thunderbird-68.1.1/gfx/skia/skia/include/private/SkNx.h.1353817 thunderbird-68.1.1/gfx/skia/skia/include/private/SkNx.h +--- thunderbird-68.1.1/gfx/skia/skia/include/private/SkNx.h.1353817 2019-10-10 10:41:44.488904790 +0200 ++++ thunderbird-68.1.1/gfx/skia/skia/include/private/SkNx.h 2019-10-10 10:42:24.553039632 +0200 +@@ -416,7 +416,7 @@ typedef SkNx<8, uint32_t> Sk8u; // Include platform specific specializations if available. #if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 - #include "../opts/SkNx_sse.h" + #include "SkNx_sse.h" -#elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON) +#elif !defined(SKNX_NO_SIMD) && (defined(SK_ARM_HAS_NEON) || defined(SK_CPU_ARM64)) - #include "../opts/SkNx_neon.h" + #include "SkNx_neon.h" #else --- -2.9.4 - diff --git a/SOURCES/mozilla-1436242.patch b/SOURCES/mozilla-1436242.patch deleted file mode 100644 index 570b7c5..0000000 --- a/SOURCES/mozilla-1436242.patch +++ /dev/null @@ -1,56 +0,0 @@ - -# HG changeset patch -# User Jed Davis -# Date 1526943705 21600 -# Node ID 6bb3adfa15c6877f7874429462dad88f8c978c4f -# Parent 4c71c8454879c841871ecf3afb7dbdc96bad97fc -Bug 1436242 - Avoid undefined behavior in IPC fd-passing code. r=froydnj - -MozReview-Commit-ID: 3szIPUssgF5 - -diff --git a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc ---- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc -+++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc -@@ -418,20 +418,37 @@ bool Channel::ChannelImpl::ProcessIncomi - const int* fds; - unsigned num_fds; - unsigned fds_i = 0; // the index of the first unused descriptor - - if (input_overflow_fds_.empty()) { - fds = wire_fds; - num_fds = num_wire_fds; - } else { -- const size_t prev_size = input_overflow_fds_.size(); -- input_overflow_fds_.resize(prev_size + num_wire_fds); -- memcpy(&input_overflow_fds_[prev_size], wire_fds, -- num_wire_fds * sizeof(int)); -+ // This code may look like a no-op in the case where -+ // num_wire_fds == 0, but in fact: -+ // -+ // 1. wire_fds will be nullptr, so passing it to memcpy is -+ // undefined behavior according to the C standard, even though -+ // the memcpy length is 0. -+ // -+ // 2. prev_size will be an out-of-bounds index for -+ // input_overflow_fds_; this is undefined behavior according to -+ // the C++ standard, even though the element only has its -+ // pointer taken and isn't accessed (and the corresponding -+ // operation on a C array would be defined). -+ // -+ // UBSan makes #1 a fatal error, and assertions in libstdc++ do -+ // the same for #2 if enabled. -+ if (num_wire_fds > 0) { -+ const size_t prev_size = input_overflow_fds_.size(); -+ input_overflow_fds_.resize(prev_size + num_wire_fds); -+ memcpy(&input_overflow_fds_[prev_size], wire_fds, -+ num_wire_fds * sizeof(int)); -+ } - fds = &input_overflow_fds_[0]; - num_fds = input_overflow_fds_.size(); - } - - // The data for the message we're currently reading consists of any data - // stored in incoming_message_ followed by data in input_buf_ (followed by - // other messages). - - diff --git a/SOURCES/mozilla-1460871-ldap-query.patch b/SOURCES/mozilla-1460871-ldap-query.patch deleted file mode 100644 index 2f9c23d..0000000 --- a/SOURCES/mozilla-1460871-ldap-query.patch +++ /dev/null @@ -1,164 +0,0 @@ -diff -up thunderbird-60.2.1/comm/ldap/xpcom/public/nsILDAPOperation.idl.1460871-ldap-query thunderbird-60.2.1/comm/ldap/xpcom/public/nsILDAPOperation.idl ---- thunderbird-60.2.1/comm/ldap/xpcom/public/nsILDAPOperation.idl.1460871-ldap-query 2018-10-01 16:52:39.000000000 +0200 -+++ thunderbird-60.2.1/comm/ldap/xpcom/public/nsILDAPOperation.idl 2018-10-04 09:40:04.491575949 +0200 -@@ -52,6 +52,10 @@ interface nsILDAPOperation : nsISupports - * private parameter (anything caller desires) - */ - attribute nsISupports closure; -+ /** -+ * number of the request for compare that the request is still valid. -+ */ -+ attribute unsigned long requestNum; - - /** - * No time and/or size limit specified -diff -up thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.cpp.1460871-ldap-query thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.cpp ---- thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.cpp.1460871-ldap-query 2018-10-01 16:52:39.000000000 +0200 -+++ thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.cpp 2018-10-04 09:40:04.491575949 +0200 -@@ -400,6 +400,19 @@ convertControlArray(nsIArray *aXpcomArra - return NS_OK; - } - -+ /* attribute unsigned long requestNum; */ -+NS_IMETHODIMP nsLDAPOperation::GetRequestNum(uint32_t *aRequestNum) -+{ -+ *aRequestNum = mRequestNum; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP nsLDAPOperation::SetRequestNum(uint32_t aRequestNum) -+{ -+ mRequestNum = aRequestNum; -+ return NS_OK; -+} -+ - NS_IMETHODIMP - nsLDAPOperation::SearchExt(const nsACString& aBaseDn, int32_t aScope, - const nsACString& aFilter, -diff -up thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.h.1460871-ldap-query thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.h ---- thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.h.1460871-ldap-query 2018-10-01 16:52:39.000000000 +0200 -+++ thunderbird-60.2.1/comm/ldap/xpcom/src/nsLDAPOperation.h 2018-10-04 09:40:04.491575949 +0200 -@@ -36,6 +36,8 @@ class nsLDAPOperation : public nsILDAPOp - * used to break cycles - */ - void Clear(); -+ // Stores the request number for later check of the operation is still valid -+ int32_t mRequestNum; - - private: - virtual ~nsLDAPOperation(); -diff -up thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp.1460871-ldap-query thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp ---- thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp.1460871-ldap-query 2018-10-01 16:52:43.000000000 +0200 -+++ thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp 2018-10-04 09:40:55.334670404 +0200 -@@ -22,6 +22,8 @@ - - using namespace mozilla; - -+extern mozilla::LazyLogModule gLDAPLogModule; // defined in nsLDAPService.cpp -+ - // nsAbLDAPListenerBase inherits nsILDAPMessageListener - class nsAbQueryLDAPMessageListener : public nsAbLDAPListenerBase - { -@@ -66,7 +68,6 @@ protected: - - bool mFinished; - bool mCanceled; -- bool mWaitingForPrevQueryToFinish; - - nsCOMPtr mServerSearchControls; - nsCOMPtr mClientSearchControls; -@@ -94,7 +95,6 @@ nsAbQueryLDAPMessageListener::nsAbQueryL - mResultLimit(resultLimit), - mFinished(false), - mCanceled(false), -- mWaitingForPrevQueryToFinish(false), - mServerSearchControls(serverSearchControls), - mClientSearchControls(clientSearchControls) - { -@@ -116,9 +116,6 @@ nsresult nsAbQueryLDAPMessageListener::C - return NS_OK; - - mCanceled = true; -- if (!mFinished) -- mWaitingForPrevQueryToFinish = true; -- - return NS_OK; - } - -@@ -129,6 +126,8 @@ NS_IMETHODIMP nsAbQueryLDAPMessageListen - - int32_t messageType; - rv = aMessage->GetType(&messageType); -+ uint32_t requestNum; -+ mOperation->GetRequestNum(&requestNum); - NS_ENSURE_SUCCESS(rv, rv); - - bool cancelOperation = false; -@@ -137,6 +136,14 @@ NS_IMETHODIMP nsAbQueryLDAPMessageListen - { - MutexAutoLock lock (mLock); - -+ if (requestNum != sCurrentRequestNum) { -+ MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Debug, -+ ("nsAbQueryLDAPMessageListener::OnLDAPMessage: Ignoring message with " -+ "request num %d, current request num is %d.", -+ requestNum, sCurrentRequestNum)); -+ return NS_OK; -+ } -+ - if (mFinished) - return NS_OK; - -@@ -166,11 +173,10 @@ NS_IMETHODIMP nsAbQueryLDAPMessageListen - rv = OnLDAPMessageSearchResult(aMessage); - break; - case nsILDAPMessage::RES_SEARCH_ENTRY: -- if (!mFinished && !mWaitingForPrevQueryToFinish) -+ if (!mFinished) - rv = OnLDAPMessageSearchEntry(aMessage); - break; - case nsILDAPMessage::RES_SEARCH_RESULT: -- mWaitingForPrevQueryToFinish = false; - rv = OnLDAPMessageSearchResult(aMessage); - NS_ENSURE_SUCCESS(rv, rv); - break; -@@ -207,6 +213,8 @@ nsresult nsAbQueryLDAPMessageListener::D - rv = mOperation->Init(mConnection, this, nullptr); - NS_ENSURE_SUCCESS(rv, rv); - -+ mOperation->SetRequestNum(++sCurrentRequestNum); -+ - nsAutoCString dn; - rv = mSearchUrl->GetDn(dn); - NS_ENSURE_SUCCESS(rv, rv); -diff -up thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.cpp.1460871-ldap-query thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.cpp ---- thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.cpp.1460871-ldap-query 2018-10-01 16:52:43.000000000 +0200 -+++ thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.cpp 2018-10-04 09:40:04.492575951 +0200 -@@ -20,6 +20,8 @@ - - using namespace mozilla; - -+uint32_t nsAbLDAPListenerBase::sCurrentRequestNum = 0; -+ - nsAbLDAPListenerBase::nsAbLDAPListenerBase(nsILDAPURL* url, - nsILDAPConnection* connection, - const nsACString &login, -@@ -249,6 +251,7 @@ NS_IMETHODIMP nsAbLDAPListenerBase::OnLD - InitFailed(); - return rv; - } -+ mOperation->SetRequestNum(++sCurrentRequestNum); - - // Try non-password mechanisms first - if (mSaslMechanism.EqualsLiteral("GSSAPI")) -diff -up thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.h.1460871-ldap-query thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.h ---- thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.h.1460871-ldap-query 2018-10-01 16:52:43.000000000 +0200 -+++ thunderbird-60.2.1/comm/mailnews/addrbook/src/nsAbLDAPListenerBase.h 2018-10-04 09:40:04.492575951 +0200 -@@ -47,6 +47,7 @@ protected: - int32_t mTimeOut; - bool mBound; - bool mInitialized; -+ static uint32_t sCurrentRequestNum; - - mozilla::Mutex mLock; - }; diff --git a/SOURCES/mozilla-256180.patch b/SOURCES/mozilla-256180.patch deleted file mode 100644 index 13a1c97..0000000 --- a/SOURCES/mozilla-256180.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/layout/generic/nsIFrame.h.old 2016-07-11 13:41:39.688276559 +0200 -+++ b/layout/generic/nsIFrame.h 2016-07-11 13:42:12.791406976 +0200 -@@ -13,7 +13,7 @@ - #error This header/class should only be used within Mozilla code. It should not be used by extensions. - #endif - --#define MAX_REFLOW_DEPTH 200 -+#define MAX_REFLOW_DEPTH 1000 - - /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is eventually - going to be eliminated, and all callers will use nsFrame instead. At the moment diff --git a/SOURCES/no-rust-lto.patch b/SOURCES/no-rust-lto.patch new file mode 100644 index 0000000..7d8ae5d --- /dev/null +++ b/SOURCES/no-rust-lto.patch @@ -0,0 +1,12 @@ +diff -up firefox-68.0/config/makefiles/rust.mk.old firefox-68.0/config/makefiles/rust.mk +--- firefox-68.0/config/makefiles/rust.mk.old 2019-06-05 10:33:34.290128660 +0200 ++++ firefox-68.0/config/makefiles/rust.mk 2019-06-05 10:33:59.835052814 +0200 +@@ -47,7 +47,7 @@ cargo_rustc_flags = $(CARGO_RUSTCFLAGS) + ifndef DEVELOPER_OPTIONS + ifndef MOZ_DEBUG_RUST + # Enable link-time optimization for release builds. +-cargo_rustc_flags += -C lto ++#cargo_rustc_flags += -C lto + endif + endif + diff --git a/SOURCES/node-stdout-nonblocking-wrapper b/SOURCES/node-stdout-nonblocking-wrapper new file mode 100755 index 0000000..e36d134 --- /dev/null +++ b/SOURCES/node-stdout-nonblocking-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh +#exec /usr/bin/node "$@" 2>&1 | cat - +exec $MOZ_NODEJS "$@" 2>&1 | cat - diff --git a/SOURCES/nss-build-mozilla-1564499.patch b/SOURCES/nss-build-mozilla-1564499.patch new file mode 100644 index 0000000..9d5bb5c --- /dev/null +++ b/SOURCES/nss-build-mozilla-1564499.patch @@ -0,0 +1,12 @@ +diff -up firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c.old firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c +--- firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c.old 2019-07-26 07:09:02.383303420 +0200 ++++ firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c 2019-07-26 07:09:27.228193798 +0200 +@@ -727,7 +727,7 @@ static inline void + dcbzl(char *array) + { + register char *a asm("r2") = array; +- __asm__ __volatile__("dcbzl %0,r0" ++ __asm__ __volatile__("dcbzl %0,0" + : "=r"(a) + : "0"(a)); + } diff --git a/SOURCES/python-2.7-gcc8-fix.patch b/SOURCES/python-2.7-gcc8-fix.patch new file mode 100644 index 0000000..d4da520 --- /dev/null +++ b/SOURCES/python-2.7-gcc8-fix.patch @@ -0,0 +1,57 @@ +commit 0b91f8a668201fc58fa732b8acc496caedfdbae0 +Author: Florian Weimer +Date: Sun Apr 29 12:18:33 2018 -0700 + + Indicate that _PyGC_Head is only 8-byte aligned. (closes bpo-33374) + + By spec, the "long double" in _PyGC_Head requires the union to always be 16-byte + aligned. However, obmalloc only yields 8-byte alignment. Compilers including GCC + 8 are starting to use alignment information to do store-merging. So, the "long + double" needs to be changed to a simple "double" as was long ago done in Python + 3 by e348c8d154cf6342c79d627ebfe89dfe9de23817. For 2.7, we need to add some + dummy padding to make sure _PyGC_Head stays the same size. + +diff --git a/Include/objimpl.h b/Include/objimpl.h +index 5f28683329..cbf6bc3f87 100644 +--- Python-2.7.13/Include/objimpl.h ++++ Python-2.7.13/Include/objimpl.h +@@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); + /* for source compatibility with 2.2 */ + #define _PyObject_GC_Del PyObject_GC_Del + ++/* ++ * Former over-aligned definition of PyGC_Head, used to compute the size of the ++ * padding for the new version below. ++ */ ++union _gc_head; ++union _gc_head_old { ++ struct { ++ union _gc_head_old *gc_next; ++ union _gc_head_old *gc_prev; ++ Py_ssize_t gc_refs; ++ } gc; ++ long double dummy; ++}; ++ + /* GC information is stored BEFORE the object structure. */ + typedef union _gc_head { + struct { +@@ -255,7 +269,8 @@ typedef union _gc_head { + union _gc_head *gc_prev; + Py_ssize_t gc_refs; + } gc; +- long double dummy; /* force worst-case alignment */ ++ double dummy; /* Force at least 8-byte alignment. */ ++ char dummy_padding[sizeof(union _gc_head_old)]; + } PyGC_Head; + + extern PyGC_Head *_PyGC_generation0; +diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +new file mode 100644 +index 0000000000..9ec1a605c8 +--- /dev/null ++++ Python-2.7.13/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +@@ -0,0 +1,3 @@ ++Tweak the definition of PyGC_Head, so compilers do not believe it is always ++16-byte aligned on x86. This prevents crashes with more aggressive ++optimizations present in GCC 8. diff --git a/SOURCES/python-2.7.patch b/SOURCES/python-2.7.patch new file mode 100644 index 0000000..cad1c67 --- /dev/null +++ b/SOURCES/python-2.7.patch @@ -0,0 +1,17 @@ +diff -up Python-2.7.13/configure.build Python-2.7.13/configure +--- Python-2.7.13/configure.build 2019-06-04 13:32:12.772134075 +0200 ++++ Python-2.7.13/configure 2019-06-04 13:32:26.140144601 +0200 +@@ -6018,11 +6018,11 @@ then + # debug builds. + OPT="-g -O0 -Wall $STRICT_PROTO" + else +- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" ++ OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" + fi + ;; + *) +- OPT="-O3 -Wall $STRICT_PROTO" ++ OPT="-O2 -Wall $STRICT_PROTO" + ;; + esac + case $ac_sys_system in diff --git a/SOURCES/python-encode.patch b/SOURCES/python-encode.patch new file mode 100644 index 0000000..2f3bad9 --- /dev/null +++ b/SOURCES/python-encode.patch @@ -0,0 +1,12 @@ +diff -up firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old firefox-68.0/python/mozbuild/mozbuild/controller/building.py +--- firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old 2019-05-29 10:46:55.403262995 +0200 ++++ firefox-68.0/python/mozbuild/mozbuild/controller/building.py 2019-05-29 10:47:42.691176970 +0200 +@@ -571,7 +571,7 @@ class TerminalLoggingHandler(logging.Han + if self.footer: + self.footer.clear() + +- self.fh.write(msg) ++ self.fh.write(msg.encode("utf-8")) + self.fh.write('\n') + + if self.footer: diff --git a/SOURCES/python-missing-utimensat.patch b/SOURCES/python-missing-utimensat.patch new file mode 100644 index 0000000..d19ecab --- /dev/null +++ b/SOURCES/python-missing-utimensat.patch @@ -0,0 +1,12 @@ +diff -up python3/Python-3.6.8/configure.old python3/Python-3.6.8/configure +--- Python-3.6.8/configure.old 2019-10-01 12:56:35.074551835 +0200 ++++ Python-3.6.8/configure 2019-10-01 12:56:44.240517798 +0200 +@@ -11438,7 +11438,7 @@ for ac_func in alarm accept4 setitimer g + sigaction sigaltstack siginterrupt sigpending sigrelse \ + sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \ + sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \ +- truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \ ++ truncate uname unlinkat unsetenv utimes waitid waitpid wait3 wait4 \ + wcscoll wcsftime wcsxfrm wmemcmp writev _getpty + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` diff --git a/SOURCES/rhbz-1354671.patch b/SOURCES/rhbz-1354671.patch deleted file mode 100644 index 7660f14..0000000 --- a/SOURCES/rhbz-1354671.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-60.5.0/layout/base/nsIPresShell.h.1354671 firefox-60.5.0/layout/base/nsIPresShell.h ---- firefox-60.5.0/layout/base/nsIPresShell.h.1354671 2019-01-22 16:08:40.796539950 +0100 -+++ firefox-60.5.0/layout/base/nsIPresShell.h 2019-01-22 16:10:25.106069228 +0100 -@@ -204,7 +204,7 @@ class nsIPresShell : public nsStubDocume - * to the same aSize value. AllocateFrame is infallible and will abort - * on out-of-memory. - */ -- void* AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) { -+ void* __attribute__((optimize("no-lifetime-dse"))) AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) { - void* result = mFrameArena.AllocateByFrameID(aID, aSize); - RecordAlloc(result); - return result; diff --git a/SOURCES/rust-network-check.patch b/SOURCES/rust-network-check.patch new file mode 100644 index 0000000..d18f2fe --- /dev/null +++ b/SOURCES/rust-network-check.patch @@ -0,0 +1,105 @@ +diff -up firefox-68.0/config/makefiles/rust.mk.rust-network-check firefox-68.0/config/makefiles/rust.mk +--- firefox-68.0/config/makefiles/rust.mk.rust-network-check 2019-06-06 10:29:18.984737603 +0200 ++++ firefox-68.0/config/makefiles/rust.mk 2019-06-06 11:39:51.581028835 +0200 +@@ -127,7 +127,7 @@ export RUST_BACKTRACE=full + export MOZ_TOPOBJDIR=$(topobjdir) + + target_rust_ltoable := force-cargo-library-build +-target_rust_nonltoable := force-cargo-test-run force-cargo-library-check $(foreach b,build check,force-cargo-program-$(b)) ++target_rust_nonltoable := force-cargo-test-run $(foreach b,build check,force-cargo-program-$(b)) + + $(target_rust_ltoable): RUSTFLAGS:=$(rustflags_override) $(RUSTFLAGS) $(if $(MOZ_LTO_RUST),-Clinker-plugin-lto) + $(target_rust_nonltoable): RUSTFLAGS:=$(rustflags_override) $(RUSTFLAGS) +@@ -238,19 +238,9 @@ force-cargo-library-build: + $(call CARGO_BUILD) --lib $(cargo_target_flag) $(rust_features_flag) -- $(cargo_rustc_flags) + + $(RUST_LIBRARY_FILE): force-cargo-library-build +-# When we are building in --enable-release mode; we add an additional check to confirm +-# that we are not importing any networking-related functions in rust code. This reduces +-# the chance of proxy bypasses originating from rust code. +-ifndef DEVELOPER_OPTIONS +-ifndef MOZ_DEBUG_RUST +-ifeq ($(OS_ARCH), Linux) +- $(call py_action,check_binary,--target --networking $@) +-endif +-endif +-endif + + force-cargo-library-check: +- $(call CARGO_CHECK) --lib $(cargo_target_flag) $(rust_features_flag) ++ @true + else + force-cargo-library-check: + @true +diff -up firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py.rust-network-check firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py +--- firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py.rust-network-check 2019-05-20 18:17:57.000000000 +0200 ++++ firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py 2019-06-06 10:29:18.986737599 +0200 +@@ -250,43 +250,6 @@ def check_mozglue_order(target, binary): + raise RuntimeError('Could not parse readelf output?') + + +-def check_networking(binary): +- retcode = 0 +- networking_functions = set([ +- # socketpair is not concerning; it is restricted to AF_UNIX +- "socket", "connect", "accept", "bind", "listen", +- "getsockname", "getsockopt", "setsockopt", +- "recv", "recvfrom", +- "send", "sendto", +- # We would be concerned by recvmsg and sendmsg; but we believe +- # they are okay as documented in 1376621#c23 +- "gethostbyname", "gethostbyaddr", "gethostent", "sethostent", "endhostent", +- "gethostent_r", "gethostbyname2", "gethostbyaddr_r", "gethostbyname_r", +- "gethostbyname2_r", +- "getaddrinfo", "getservent", "getservbyname", "getservbyport", "setservent", +- "getprotoent", "getprotobyname", "getprotobynumber", "setprotoent", +- "endprotoent"]) +- bad_occurences_names = set() +- +- try: +- for sym in at_least_one(iter_symbols(binary)): +- if sym['addr'] == 0 and sym['name'] in networking_functions: +- bad_occurences_names.add(sym['name']) +- except Empty: +- raise RuntimeError('Could not parse llvm-objdump output?') +- +- basename = os.path.basename(binary) +- if bad_occurences_names: +- s = 'TEST-UNEXPECTED-FAIL | check_networking | {} | Identified {} ' + \ +- 'networking function(s) being imported in the rust static library ({})' +- print(s.format(basename, len(bad_occurences_names), +- ",".join(sorted(bad_occurences_names))), +- file=sys.stderr) +- retcode = 1 +- elif buildconfig.substs.get('MOZ_AUTOMATION'): +- print('TEST-PASS | check_networking | {}'.format(basename)) +- return retcode +- + def checks(target, binary): + # The clang-plugin is built as target but is really a host binary. + # Cheat and pretend we were passed the right argument. +@@ -330,8 +293,6 @@ def main(args): + help='Perform checks for a host binary') + parser.add_argument('--target', action='store_true', + help='Perform checks for a target binary') +- parser.add_argument('--networking', action='store_true', +- help='Perform checks for networking functions') + + parser.add_argument('binary', metavar='PATH', + help='Location of the binary to check') +@@ -343,14 +304,7 @@ def main(args): + file=sys.stderr) + return 1 + +- if options.networking and options.host: +- print('--networking is only valid with --target', +- file=sys.stderr) +- return 1 +- +- if options.networking: +- return check_networking(options.binary) +- elif options.host: ++ if options.host: + return checks(HOST, options.binary) + elif options.target: + return checks(TARGET, options.binary) diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig index 646e90e..559acb8 100644 --- a/SOURCES/thunderbird-mozconfig +++ b/SOURCES/thunderbird-mozconfig @@ -10,17 +10,16 @@ ac_add_options --enable-calendar ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key ac_add_options --with-google-location-service-api-keyfile=../google-api-key ac_add_options --with-google-safebrowsing-api-keyfile=../google-api-key -ac_add_options --enable-pie ac_add_options --enable-default-toolkit=cairo-gtk3 ac_add_options --enable-release ac_add_options --enable-startup-notification ac_add_options --libdir="$LIBDIR" ac_add_options --prefix="$PREFIX" ac_add_options --without-system-libvpx -ac_add_options --with-pthreads ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --enable-update-channel=release +ac_add_options --disable-av1 export BUILD_OFFICIAL=1 export MOZILLA_OFFICIAL=1 mk_add_options BUILD_OFFICIAL=1 diff --git a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch deleted file mode 100644 index c8fe421..0000000 --- a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-60.5.0/memory/build/mozjemalloc.cpp.jemalloc-ppc firefox-60.5.0/memory/build/mozjemalloc.cpp ---- firefox-60.5.0/memory/build/mozjemalloc.cpp.jemalloc-ppc 2019-01-22 10:25:30.764207480 +0100 -+++ firefox-60.5.0/memory/build/mozjemalloc.cpp 2019-01-22 10:28:48.352235343 +0100 -@@ -180,7 +180,7 @@ using namespace mozilla; - // Debug builds are opted out too, for test coverage. - #ifndef MOZ_DEBUG - #if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && \ -- !defined(__aarch64__) -+ !defined(__aarch64__) && !defined(__powerpc__) - #define MALLOC_STATIC_PAGESIZE 1 - #endif - #endif diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec index e7e9146..e4bd194 100644 --- a/SPECS/thunderbird.spec +++ b/SPECS/thunderbird.spec @@ -1,11 +1,19 @@ %global debug_build 0 +# Set for local builds only +%global disable_toolsets 0 %global official_branding 1 %global system_ffi 1 %global system_libicu 0 %global system_libvpx 0 %global system_nss 1 %global system_sqlite 0 -%global use_bundled_python 1 +%if 0%{?rhel} == 8 +%define use_bundled_python_2 1 +%define use_bundled_python_3 0 +%else +%define use_bundled_python_2 1 +%define use_bundled_python_3 1 +%endif %define build_langpacks 1 %define use_bundled_ffi 0 %define use_bundled_python 1 @@ -13,6 +21,11 @@ %global system_jpeg 1 %global hardened_build 1 %global use_dts 1 +%if 0%{?rhel} == 8 +%global use_llvmts 0 +%else +%global use_llvmts 1 +%endif %define bundled_python_version 2.7.13 %global cairo_version 1.10.2 @@ -21,22 +34,31 @@ %global gcc_version 4.8.2-16 %global python_version 2.7.8 %global sqlite_version 3.8.4.2 -%global nspr_version 4.13.1 -%global nss_version 3.28.4 +%global nspr_version 4.21 +%global nss_version 3.44 %if 0%{?rhel} == 7 %define use_bundled_python 0 %endif -%if 0%{?rhel} < 8 %global use_rustts 1 +%global dts_version 8 +%global rust_version 1.31 +%global rust_toolset_version 1.35 +%global llvm_version 7.0 +%if 0%{?rhel} == 8 +%global llvm_version 6.0 %endif -%global dts_version 7 -%global rst_version 7 -%global llvm_version 7 + +%if 0%{?disable_toolsets} +%global use_rustts 0 +%global use_dts 0 +%global use_llvmts 0 +%endif + + + %if 0%{?rhel} == 8 %global use_dts 0 -%global rst_version 1.26 -%global llvm_version 6.0 %endif %define gtk3_nvr 3.22.26-1 @@ -63,6 +85,16 @@ %global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536) %endif +%define bundled_python_version_2 2.7.13 +%define bundled_python_version_3 3.6.8 +%define use_bundled_openssl 0 +%define use_bundled_nodejs 0 +%if 0%{?rhel} < 8 +%define use_bundled_nodejs 1 +%if 0%{?rhel} == 6 +%define use_bundled_openssl 1 +%endif +%endif # GTK3 bundling %define avoid_bundled_rebuild 0 @@ -91,8 +123,8 @@ Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 60.7.0 -Release: 1%{?dist} +Version: 68.3.0 +Release: 2%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet @@ -107,19 +139,22 @@ ExclusiveArch: i686 x86_64 ppc64 s390x # From ftp://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?ext_version}/source Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz %if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}%{?ext_version}-20190520.tar.xz +Source1: thunderbird-langpacks-%{version}%{?ext_version}-20191202.tar.xz # Locales for lightning Source2: lightning-langpacks-%{version}.tar.xz %endif Source3: get-calendar-langpacks.sh +Source4: cbindgen-vendor.tar.xz Source10: thunderbird-mozconfig Source20: thunderbird.desktop Source21: thunderbird.sh.in Source24: mozilla-api-key Source27: google-api-key -#TODO -Source101: find-external-requires +Source28: node-stdout-nonblocking-wrapper +Source100: https://www.python.org/ftp/python/%{bundled_python_version_2}/Python-%{bundled_python_version_2}.tar.xz +Source101: https://www.python.org/ftp/python/%{bundled_python_version_3}/Python-%{bundled_python_version_3}.tar.xz +Source102: find-external-requires Source200: gtk3-private-%{gtk3_nvr}.el6.src.rpm Source201: gtk3-private-%{gtk3_nvr}-post.inc Source202: gtk3-private-%{gtk3_nvr}-postun.inc @@ -129,27 +164,33 @@ Source205: gtk3-private-%{gtk3_nvr}-setup-flags-env.inc Source206: gtk3-private-%{gtk3_nvr}-requires-provides-filter.inc Source301: yasm-1.2.0-3.el5.src.rpm Source303: libffi-3.0.13-18.el7_3.src.rpm +Source304: nodejs-8.11.4-1.3.fc27.src.rpm +Source305: openssl-1.0.2k-19.6.bundle.el7_7.src.rpm Source601: thunderbird-redhat-default-prefs.js.rhel6 Source701: thunderbird-redhat-default-prefs.js.rhel7 -#Python 2.7 -Source100: https://www.python.org/ftp/python/%{bundled_python_version}/Python-%{bundled_python_version}.tar.xz ## Firefox patches # Build patches Patch3: mozilla-build-arm.patch +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch1001: build-ppc64le-inline.patch +Patch1002: python-2.7-gcc8-fix.patch +Patch1003: python-missing-utimensat.patch +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch1: no-rust-lto.patch +Patch2: rust-network-check.patch Patch4: build-mozconfig-fix.patch -Patch5: build-gdk-version.patch Patch6: build-nss-version.patch +Patch7: firefox-debugedits-error.patch +Patch8: firefox-dont-check-binary.patch +Patch9: nss-build-mozilla-1564499.patch Patch26: build-icu-big-endian.patch # Also fixes s390x: https://bugzilla.mozilla.org/show_bug.cgi?id=1376268 Patch29: build-big-endian.patch # Always feel lucky for unsupported platforms: # https://bugzilla.mozilla.org/show_bug.cgi?id=1347128 -Patch37: build-jit-atomic-always-lucky.patch -Patch40: build-aarch64-skia.patch Patch41: build-debug-qcms.patch -Patch43: xulrunner-24.0-jemalloc-ppc.patch Patch45: build-disable-elfhack.patch # Fedora/RHEL specific patches @@ -158,19 +199,19 @@ Patch219: rhbz-1173156.patch Patch224: mozilla-1170092.patch Patch225: mozilla-1005640-accept-lang.patch #ARM run-time patch -Patch226: rhbz-1354671.patch Patch230: rhbz-1503632-nss.patch +Patch1000: python-2.7.patch +Patch1004: firefox-rhel6-nss-tls1.3.patch +Patch232: firefox-rhel6-hugepage.patch # Upstream patches Patch402: mozilla-1196777.patch -Patch406: mozilla-256180.patch Patch413: mozilla-1353817.patch -Patch415: mozilla-1436242.patch -Patch416: mozilla-1460871-ldap-query.patch #Removing this patch would lead to losing user saved credentials in profile! ## Thunderbird patches +Patch501: python-encode.patch # --------------------------------------------------- BuildRequires: autoconf213 @@ -217,7 +258,7 @@ BuildRequires: devtoolset-%{dts_version}-gcc-c++ BuildRequires: devtoolset-%{dts_version}-gcc BuildRequires: devtoolset-%{dts_version}-binutils BuildRequires: devtoolset-%{dts_version}-libatomic-devel -%if 0%{?rhel} == 7 +%if 0%{?use_llvmts} BuildRequires: llvm-toolset-%{llvm_version} BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %endif @@ -225,22 +266,31 @@ BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %if ! %{use_bundled_yasm}0 BuildRequires: yasm %endif +BuildRequires: scl-utils %if %{?system_sqlite} BuildRequires: sqlite-devel >= %{sqlite_version} Requires: sqlite >= %{sqlite_build_version} %endif -%if 0%{?use_rustts} -BuildRequires: rust-toolset-%{rst_version}-cargo -BuildRequires: rust-toolset-%{rst_version}-rust -%endif %if 0%{?rhel} == 8 BuildRequires: cargo -BuildRequires: rust >= 1.24 +BuildRequires: rust >= %{rust_version} BuildRequires: llvm >= %{llvm_version} BuildRequires: llvm-devel >= %{llvm_version} BuildRequires: clang >= %{llvm_version} +BuildRequires: clang-devel >= %{llvm_version} +BuildRequires: python3 +BuildRequires: nodejs >= 8.11 +%else +%if 0%{?use_rustts} +BuildRequires: rust-toolset-%{rust_toolset_version} +%endif +%if 0%{?use_llvmts} +BuildRequires: llvm-toolset-%{llvm_version} +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel +%endif %endif -%if 0%{?use_bundled_python} + +%if 0%{?use_bundled_python_2} #%if 0%{?rhel} == 6 # Needed for Python in RHEL6 BuildRequires: openssl-devel @@ -296,10 +346,6 @@ Requires: nspr >= %{nspr_version} Requires: nss >= %{nss_version} %endif -%if 0%{?rhel} < 8 -BuildRequires: python2-devel -%endif - %if %{?system_sqlite} BuildRequires: pkgconfig(sqlite3) >= %{sqlite_version} Requires: sqlite >= %{sqlite_build_version} @@ -323,32 +369,50 @@ Mozilla Thunderbird is a standalone mail and newsgroup client. %prep -%setup -q -T -c -n python -a 100 +%if 0%{?use_bundled_python_2} +%setup -q -T -c -n python2 -a 100 +%patch1000 -p0 -b .build +%patch1002 -p0 -b .gcc8 +%endif +%if 0%{?use_bundled_python_3} +%setup -q -T -c -n python3 -a 101 +%if 0%{?rhel} == 6 +%patch1003 -p0 -b .missing-utimensat.patch +%endif +%endif %setup -q -n %{tarballdir} # Firefox patches +%patch1 -p1 -b .no-rust-lto +%patch2 -p1 -b .rust-network-check +%patch7 -p1 -b .debugedits-error +%ifarch %{ix86} %{arm} ppc +# binary check fails OOM on 32bit arches +%patch8 -p1 -b .dont-check-binary +%endif +%patch9 -p1 -b .nss-build-mozilla-1564499 -%patch29 -p1 -b .big-endian -%patch37 -p1 -b .jit-atomic-lucky -%patch40 -p1 -b .aarch64-skia +#%patch29 -p1 -b .big-endian %if %{?debug_build} %patch41 -p1 -b .build-debug-qcms %endif -%patch43 -p1 -b .jemalloc-ppc -%if 0%{?rhel} == 8 +#%if 0%{?rhel} == 8 %patch45 -p1 -b .elfhack -%endif +#%endif -%patch3 -p1 -b .arm +#%patch3 -p1 -b .arm %patch4 -p1 -b .build-mozconfig-fix -%patch5 -p1 -b .gdk-version %patch6 -p1 -b .nss-version # Fedora patches %patch215 -p1 -b .addons %patch219 -p1 -b .rhbz-1173156 -%patch224 -p1 -b .1170092 +#FIXME %patch224 -p1 -b .1170092 %patch225 -p1 -b .1005640-accept-lang +%if 0%{?rhel} == 6 +%patch232 -p1 -b .hugepage +%patch1004 -p1 -b .rhel6-nss-tls1.3 +%endif # This ensures no migration of certdb to sqlite on the RHEL6 and RHEL7. # This needs to stay for the future releases @@ -358,14 +422,10 @@ Mozilla Thunderbird is a standalone mail and newsgroup client. #ARM run-time patch %ifarch aarch64 -%patch226 -p1 -b .1354671 %endif %patch402 -p1 -b .1196777 -%patch406 -p1 -b .256180 -%patch413 -p1 -b .1353817 -%patch415 -p1 -b .1436242 -%patch416 -p1 -b .1460871-ldap-query +#%patch413 -p1 -b .1353817 # Patch for big endian platforms only %if 0%{?big_endian} @@ -373,6 +433,8 @@ Mozilla Thunderbird is a standalone mail and newsgroup client. %endif # Thunderbird patches +%patch501 -p1 -b .python-encode +%patch1001 -p1 -b .ppc64le-inline %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig @@ -408,7 +470,7 @@ function add_to_mozconfig() { %if 0%{?system_ffi} add_to_mozconfig "with-system-ffi" %endif -%ifarch %{arm} +%ifarch %{arm} %{ix86} x86_64 add_to_mozconfig "disable-elf-hack" %endif @@ -459,23 +521,19 @@ echo "ac_add_options --without-system-icu" >> .mozconfig echo "ac_add_options --disable-ion" >> .mozconfig %endif -%ifarch %{ix86} -echo "ac_add_options --disable-stylo" >> .mozconfig -%endif -%if 0%{?rhel} == 6 -echo "ac_add_options --disable-stylo" >> .mozconfig -%endif +echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig # Remove executable bit to make brp-mangle-shebangs happy. chmod -x third_party/rust/itertools/src/lib.rs # install lightning langpacks -cd .. -%{__xz} -dc %{SOURCE2} | %{__tar} xf - -cd - -#=============================================================================== %build +set -e +# Hack for missing shell when building in brew on RHEL6 +%if 0%{?rhel} == 6 +export SHELL=/bin/sh +%endif #GTK3 >> %if ! 0%{?avoid_bundled_rebuild} @@ -507,7 +565,7 @@ function build_bundled_package() { PACKAGE_RPM=$1 PACKAGE_FILES=$2 PACKAGE_SOURCE=$3 - PACKAGE_DIR="%{_topdir}/RPMS" + export PACKAGE_DIR="%{_topdir}/RPMS" PACKAGE_ALREADY_BUILD=0 %if %{?avoid_bundled_rebuild} @@ -529,20 +587,27 @@ function build_bundled_package() { %ifarch i386 i686 ARCH_STR="i?86" %endif - PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" + export PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" fi pushd $PACKAGE_DIR + echo "Installing $PACKAGE_DIR/$PACKAGE_RPM"; echo "===============================" - rpm2cpio $PACKAGE_DIR/$PACKAGE_RPM | cpio -iduv + PACKAGE_LIST=$(echo $PACKAGE_DIR/$PACKAGE_RPM | tr " " "\n") + for PACKAGE in $PACKAGE_LIST + do + rpm2cpio $PACKAGE | cpio -iduv + done + + PATH=$PACKAGE_DIR/usr/bin:$PATH + export PATH + LD_LIBRARY_PATH=$PACKAGE_DIR/usr/%{_lib}:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH + # Clean rpms to avoid including them to package %if ! 0%{?avoid_bundled_rebuild} rm -f $PACKAGE_FILES %endif - PATH=$PACKAGE_DIR/usr/bin:$PATH - export PATH - LD_LIBRARY_PATH=$PACKAGE_DIR/usr/%{_lib} - export LD_LIBRARY_PATH popd } @@ -552,13 +617,11 @@ function build_bundled_package() { build_bundled_package 'yasm-1*.rpm' 'yasm-*.rpm' '%{SOURCE301}' %endif - %if 0%{?bundle_gtk3} %if ! 0%{?avoid_bundled_rebuild} rpm -ivh %{SOURCE200} rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/gtk3-private.spec %endif - rm -rf %{_buildrootdir}/* pushd %{_buildrootdir} install_rpms_to_current_dir gtk3-private-%{gtk3_nvr}*.rpm install_rpms_to_current_dir gtk3-private-devel-%{gtk3_nvr}*.rpm @@ -566,18 +629,6 @@ function build_bundled_package() { popd %endif -# If needed build the bundled python 2.7 and put it in the PATH -%if 0%{?use_bundled_python} - pushd %{_builddir}/python/Python-%{bundled_python_version} - #if ! 0%{?avoid_bundled_rebuild} - # Build Python 2.7 and set environment - # Pydebug set optimization to level 0, -O3 crashes on gcc 8 ATM - ./configure --with-pydebug --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" - #endif - make %{?_smp_mflags} install V=1 - popd -%endif - %if 0%{?bundle_gtk3} # gtk3-private-3.22.26.el6-1-requires-provides-filter.inc %include_file %{SOURCE206} @@ -593,43 +644,116 @@ function build_bundled_package() { %endif %filter_setup -# GTK3 << +# If needed build the bundled python 2.7 and 3.6 and put it in the PATH +%if 0%{?use_bundled_python_3} + pushd %{_builddir}/python3/Python-%{bundled_python_version_3} + ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" --with-pydebug + make %{?_smp_mflags} install V=1 -j1 + cp Tools/scripts/pathfix.py %{_buildrootdir}/bin + popd +%endif +%if 0%{?use_bundled_python_2} + pushd %{_builddir}/python2/Python-%{bundled_python_version_2} + ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" + make %{?_smp_mflags} install V=1 + popd +%endif -%if %{?system_sqlite} - # Do not proceed with build if the sqlite require would be broken: - # make sure the minimum requirement is non-empty, ... - sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1 - # ... and that major number of the computed build-time version matches: - case "%{sqlite_build_version}" in - "$sqlite_version"*) ;; - *) exit 1 ;; - esac +function replace_prefix() { + FILE_NAME=$1 + PKG_CONFIG_PREFIX=$2 + + cat $FILE_NAME | tail -n +2 > tmp.txt + echo "$PKG_CONFIG_PREFIX" > $FILE_NAME + cat tmp.txt >> $FILE_NAME + rm -rf tmp.txt +} + +# Build and install local openssl if needed +# ========================================= +%if 0%{?use_bundled_openssl} + rpm -ivh %{SOURCE305} + rpmbuild --nodeps -ba %{_specdir}/openssl.spec + pushd %{_buildrootdir} + install_rpms_to_current_dir openssl-1.0.2k*.rpm + install_rpms_to_current_dir openssl-libs-1.0.2k*.rpm + install_rpms_to_current_dir openssl-devel-1.0.2k*.rpm + install_rpms_to_current_dir openssl-static-1.0.2k*.rpm + # openssl is installed to %{_buildrootdir}/usr/lib(64)/... + export PKG_CONFIG_PATH=%{_buildrootdir}/%{_libdir}/pkgconfig/:$PKG_CONFIG_PATH + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc prefix=%{_buildrootdir}/usr + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc prefix=%{_buildrootdir}/usr + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc prefix=%{_buildrootdir}/usr + cat %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc + cat %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc + cat %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc + pushd %{_rpmdir} + rm -f openssl-*.rpm + popd + popd %endif +# GTK3 << # We need to disable exit on error temporarily for the following scripts: set +e %if 0%{?use_dts} source scl_source enable devtoolset-%{dts_version} %endif %if 0%{?use_rustts} -source scl_source enable rust-toolset-%{rst_version} +source scl_source enable rust-toolset-%{rust_toolset_version} %endif -set -e -# Hack for missing shell when building in brew on RHEL6 -%if 0%{?rhel} == 6 -export SHELL=/bin/sh +# Build and install local node if needed +# ====================================== +%if %{use_bundled_nodejs} + build_bundled_package 'nodejs-8*.rpm' 'nodejs-*.rpm' %{SOURCE304} + export MOZ_NODEJS=$PACKAGE_DIR/usr/bin/node +%else + export MOZ_NODEJS=/usr/bin/node +%endif + +mkdir -p my_rust_vendor +cd my_rust_vendor +%{__tar} xf %{SOURCE4} +cd - +mkdir -p .cargo +cat > .cargo/config < 23 # Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045) @@ -678,27 +808,22 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') # (OOM when linking, rhbz#1238225) export MOZ_DEBUG_FLAGS=" " %endif -%ifarch s390 %{arm} ppc aarch64 i686 -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" -%endif -%ifarch %{arm} -export RUSTFLAGS="-Cdebuginfo=0" -%endif export CFLAGS=$MOZ_OPT_FLAGS export CXXFLAGS=$MOZ_OPT_FLAGS export LDFLAGS=$MOZ_LINK_FLAGS export PREFIX='%{_prefix}' export LIBDIR='%{_libdir}' - -# Hack for missing shell when building in brew on RHEL6 and RHEL5 -%if 0%{?rhel} <= 6 -export SHELL=/bin/sh -%endif +export CC=gcc +export CXX=g++ MOZ_SMP_FLAGS=-j1 -# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel, -# however builds tend to fail on other arches when building in parallel. +# More than two build tasks can lead to OOM gcc crash. +%if 0%{?rhel} < 8 +[ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" +[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 +%else %ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64 [ -z "$RPM_BUILD_NCPUS" ] && \ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" @@ -706,6 +831,7 @@ MOZ_SMP_FLAGS=-j1 [ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 [ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 %endif +%endif %if 0%{?bundle_gtk3} # gtk3-private-setup-flags-env.inc @@ -715,9 +841,6 @@ MOZ_SMP_FLAGS=-j1 export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" #export MOZ_SERVICES_SYNC="1" export STRIP=/bin/true -%if 0%{?rhel} == 8 -export LLVM_CONFIG=/usr/bin/llvm-config-64 -%endif ./mach build -v #--------------------------------------------------------------------- @@ -889,6 +1012,8 @@ rm -rf %{_srcrpmdir}/gtk3-private-%{gtk3_nvr}*.src.rpm find %{_rpmdir} -name "gtk3-private-*%{gtk3_nvr}*.rpm" -delete rm -rf %{_srcrpmdir}/libffi*.src.rpm find %{_rpmdir} -name "libffi*.rpm" -delete +rm -rf %{_srcrpmdir}/openssl*.src.rpm +find %{_rpmdir} -name "openssl*.rpm" -delete %post update-desktop-database &> /dev/null || : @@ -937,8 +1062,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries -%dir %{mozappdir}/extensions -%{mozappdir}/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi %{mozappdir}/greprefs %{mozappdir}/isp %{mozappdir}/thunderbird-bin @@ -963,7 +1086,8 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/dependentlibs.list %{mozappdir}/distribution %{mozappdir}/chrome.manifest -%{mozappdir}/fonts/EmojiOneMozilla.ttf +%{mozappdir}/fonts/TwemojiMozilla.ttf + %if !%{?system_libicu} #%{mozappdir}/icudt*.dat %endif @@ -987,6 +1111,37 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %changelog +* Mon Dec 02 2019 Jan Horak - 68.3.0-2 +- Update to 68.3.0 build2 + +* Fri Oct 25 2019 Jan Horak - 68.2.0-2 +- Added patch for TLS 1.3 support. + +* Tue Oct 22 2019 Jan Horak - 68.2.0-1 +- Update to 68.2.0 + +* Thu Oct 3 2019 Jan Horak - 68.1.1-2 +- Update to 68.1.1 + +* Wed Sep 4 2019 Jan Horak - 60.9.0-2 +- Update to 60.9.0 + +* Thu Jul 4 2019 Martin Stransky - 60.8.0-1 +- Updated to 60.8.0 + +* Wed Jul 3 2019 Martin Stransky - 60.7.2-3 +- Rebuild to fix rhbz#1725919 - Thunderbird fails to authenticate + with gmail with ssl/tls and OAuth2. + +* Fri Jun 21 2019 Jan Horak - 60.7.2-2 +- Update to 60.7.2 build2 + +* Thu Jun 20 2019 Jan Horak - 60.7.2-1 +- Update to 60.7.2 + +* Tue Jun 18 2019 Jan Horak - 60.7.1-1 +- Update to 60.7.1 + * Mon May 27 2019 Martin Stransky - 60.7.0-1 - Update to 60.7.0