diff --git a/.gitignore b/.gitignore index a71abd2..a71d8b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ SOURCES/cbindgen-vendor.tar.xz -SOURCES/nspr-4.34.0-3.el8_1.src.rpm -SOURCES/nss-3.79.0-11.el8_1.src.rpm -SOURCES/thunderbird-102.15.1.processed-source.tar.xz -SOURCES/thunderbird-langpacks-102.15.1-20230913.tar.xz +SOURCES/nspr-4.35.0-1.el8_1.src.rpm +SOURCES/nss-3.90.0-2.el8_1.src.rpm +SOURCES/nss-3.90.0-3.el9_0.src.rpm +SOURCES/thunderbird-115.3.1.processed-source.tar.xz +SOURCES/thunderbird-langpacks-115.3.1-20230929.tar.xz diff --git a/.thunderbird.metadata b/.thunderbird.metadata index f07edab..9dfde8f 100644 --- a/.thunderbird.metadata +++ b/.thunderbird.metadata @@ -1,5 +1,6 @@ -2a430d6252dbea45482ba316a6e9fa605c15e747 SOURCES/cbindgen-vendor.tar.xz -af58b3c87a8b5491dde63b07efaeb3d7f1ec56c1 SOURCES/nspr-4.34.0-3.el8_1.src.rpm -a9dd43799ab2ccbc248cfbba1cc5639c1ab18769 SOURCES/nss-3.79.0-11.el8_1.src.rpm -d0810f989e325cd666650fb2917874e6c39803fb SOURCES/thunderbird-102.15.1.processed-source.tar.xz -b48034523269fd13c8a425884912ee57aaac350c SOURCES/thunderbird-langpacks-102.15.1-20230913.tar.xz +b963b16f6879c5dbe6e33a3a3da058b494453922 SOURCES/cbindgen-vendor.tar.xz +d744f92e874688cc4b5376477dfdd639a97a6cd4 SOURCES/nspr-4.35.0-1.el8_1.src.rpm +39d1004f8948186cdaa33bbb90423f6f994bdf6c SOURCES/nss-3.90.0-2.el8_1.src.rpm +df0dd588680f6ade6728a1fd3ff2d71e7a46255d SOURCES/nss-3.90.0-3.el9_0.src.rpm +f7fb65ec6b54fd7c652e5ef7f90b2975f6ea47e1 SOURCES/thunderbird-115.3.1.processed-source.tar.xz +6c731bd5d70d3c84d92848dcf91117307be64418 SOURCES/thunderbird-langpacks-115.3.1-20230929.tar.xz diff --git a/SOURCES/0001-GLIBCXX-fix-for-GCC-12.patch b/SOURCES/0001-GLIBCXX-fix-for-GCC-12.patch deleted file mode 100644 index 37d6f50..0000000 --- a/SOURCES/0001-GLIBCXX-fix-for-GCC-12.patch +++ /dev/null @@ -1,44 +0,0 @@ -From efd5bc0715e5477318be95a76811cda0a89e8289 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= -Date: Fri, 4 Mar 2022 12:00:26 +0100 -Subject: [PATCH] GLIBCXX fix for GCC 12? - ---- - build/unix/stdc++compat/stdc++compat.cpp | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/build/unix/stdc++compat/stdc++compat.cpp b/build/unix/stdc++compat/stdc++compat.cpp -index 0180f6bcfa998..8d7a542ff11f0 100644 ---- a/build/unix/stdc++compat/stdc++compat.cpp -+++ b/build/unix/stdc++compat/stdc++compat.cpp -@@ -24,6 +24,7 @@ - GLIBCXX_3.4.27 is from gcc 10 - GLIBCXX_3.4.28 is from gcc 10 - GLIBCXX_3.4.29 is from gcc 11 -+ GLIBCXX_3.4.30 is from gcc 12 - - This file adds the necessary compatibility tricks to avoid symbols with - version GLIBCXX_3.4.20 and bigger, keeping binary compatibility with -@@ -69,6 +70,19 @@ void __attribute__((weak)) __throw_bad_array_new_length() { MOZ_CRASH(); } - } // namespace std - #endif - -+#if _GLIBCXX_RELEASE >= 12 -+namespace std { -+ -+/* This avoids the GLIBCXX_3.4.30 symbol version. */ -+void __attribute__((weak)) -+__glibcxx_assert_fail(const char* __file, int __line, const char* __function, -+ const char* __condition) { -+ MOZ_CRASH(); -+} -+ -+} // namespace std -+#endif -+ - /* While we generally don't build with exceptions, we have some host tools - * that do use them. libstdc++ from GCC 5.0 added exception constructors with - * char const* argument. Older versions only have a constructor with --- -2.35.1 - diff --git a/SOURCES/D158770.diff b/SOURCES/D158770.diff deleted file mode 100644 index 1d76995..0000000 --- a/SOURCES/D158770.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/parser/expat/lib/xmlparse.c b/parser/expat/lib/xmlparse.c ---- a/parser/expat/lib/xmlparse.c -+++ b/parser/expat/lib/xmlparse.c -@@ -5652,12 +5652,18 @@ - else - #endif /* XML_DTD */ - { - processor = contentProcessor; - /* see externalEntityContentProcessor vs contentProcessor */ -- return doContent(parser, parentParser ? 1 : 0, encoding, s, end, -- nextPtr, (XML_Bool)!ps_finalBuffer); -+ result = doContent(parser, parser->m_parentParser ? 1 : 0, -+ parser->m_encoding, s, end, nextPtr, -+ (XML_Bool)! parser->m_parsingStatus.finalBuffer); -+ if (result == XML_ERROR_NONE) { -+ if (! storeRawNames(parser)) -+ return XML_ERROR_NO_MEMORY; -+ } -+ return result; - } - } - - static enum XML_Error PTRCALL - errorProcessor(XML_Parser parser, - diff --git a/SOURCES/build-aarch64-skia.patch b/SOURCES/build-aarch64-skia.patch deleted file mode 100644 index a63e3e8..0000000 --- a/SOURCES/build-aarch64-skia.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h ---- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100 -+++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100 -@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_ - - static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) { - Sk4h hs = Sk4h::Load(&rgba); --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t fs; - asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...) - : [fs] "=w" (fs) // =w: write-only NEON register -@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_ - } - - static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) { --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t vec = fs.fVec; - asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec) - : [vec] "+w" (vec)); // +w: read-write NEON register -diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h ---- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100 -@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) { - } - - SI U16 to_half(F f) { --#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ -+#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ - && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. - return vcvt_f16_f32(f); - -diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h ---- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100 -@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) { - SI U16 Half_from_F(F f) { - #if defined(USING_NEON_FP16) - return bit_pun(f); --#elif defined(USING_NEON_F16C) -- return (U16)vcvt_f16_f32(f); - #elif defined(USING_AVX512F) - return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); - #elif defined(USING_AVX_F16C) diff --git a/SOURCES/build-arm-libaom.patch b/SOURCES/build-arm-libaom.patch deleted file mode 100644 index 985f01d..0000000 --- a/SOURCES/build-arm-libaom.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-73.0/media/libaom/moz.build.old firefox-73.0/media/libaom/moz.build ---- firefox-73.0/media/libaom/moz.build.old 2020-02-07 23:13:28.000000000 +0200 -+++ firefox-73.0/media/libaom/moz.build 2020-02-17 10:30:08.509805092 +0200 -@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm': - - for f in SOURCES: - if f.endswith('neon.c'): -- SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] -+ SOURCES[f].flags += CONFIG['NEON_FLAGS'] - - if CONFIG['OS_TARGET'] == 'Android': - # For cpu-features.h diff --git a/SOURCES/build-arm-libopus.patch b/SOURCES/build-arm-libopus.patch deleted file mode 100644 index 1b3f31b..0000000 --- a/SOURCES/build-arm-libopus.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old firefox-66.0/media/libopus/silk/arm/arm_silk_map.c ---- firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old 2019-03-12 21:07:35.356677522 +0100 -+++ firefox-66.0/media/libopus/silk/arm/arm_silk_map.c 2019-03-12 21:07:42.937693394 +0100 -@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE. - # include "config.h" - #endif - --#include "main_FIX.h" -+#include "fixed/main_FIX.h" - #include "NSQ.h" - #include "SigProc_FIX.h" - diff --git a/SOURCES/build-ascii-decode-fail-rhel7.patch b/SOURCES/build-ascii-decode-fail-rhel7.patch deleted file mode 100644 index 1bc1630..0000000 --- a/SOURCES/build-ascii-decode-fail-rhel7.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py ---- firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 2022-06-23 09:11:39.000000000 +0200 -+++ firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py 2022-08-16 13:24:31.697757209 +0200 -@@ -73,6 +73,8 @@ class Reader(object): - self.name = "" - self.check_printable(stream) - self.buffer = stream+'\0' -+ #self.encoding = 'utf-8' -+ #self.raw_decode = codecs.utf_8_decode - elif isinstance(stream, bytes): - self.name = "" - self.raw_buffer = stream -@@ -83,6 +85,11 @@ class Reader(object): - self.eof = False - self.raw_buffer = None - self.determine_encoding() -+ print("DEBUG_OUTPUT:") -+ print(self.name) -+ print(self.encoding) -+ print(self.stream) -+ #print(self.stream.read()) - - def peek(self, index=0): - try: -diff -up firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py ---- firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 2022-08-16 14:16:33.432529817 +0200 -+++ firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py 2022-08-17 08:01:38.175878171 +0200 -@@ -37,7 +37,7 @@ def generate_feature_manifest(fd, input_ - write_fm_js_headers(fd) - nimbus_dir_path = pathlib.Path(input_file).parent - try: -- with open(input_file, "r") as yaml_input: -+ with open(input_file, "r", encoding="utf-8") as yaml_input: - data = yaml.safe_load(yaml_input) - with pathlib.Path(nimbus_dir_path, FEATURE_MANIFEST_SCHEMA).open() as f: - schema = json.load(f) -@@ -92,7 +92,7 @@ def generate_platform_feature_manifest(f - ) - - try: -- with open(input_file, "r") as yaml_input: -+ with open(input_file, "r", encoding="utf-8") as yaml_input: - data = yaml.safe_load(yaml_input) - fd.write(file_structure(data)) - except (IOError) as e: diff --git a/SOURCES/build-disable-elfhack.patch b/SOURCES/build-disable-elfhack.patch index 04d49f2..67bb731 100644 --- a/SOURCES/build-disable-elfhack.patch +++ b/SOURCES/build-disable-elfhack.patch @@ -1,12 +1,12 @@ -diff -up firefox-97.0/toolkit/moz.configure.disable-elfhack firefox-97.0/toolkit/moz.configure ---- firefox-97.0/toolkit/moz.configure.disable-elfhack 2022-02-08 09:58:47.518047952 +0100 -+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:17:49.552945956 +0100 -@@ -1273,7 +1273,7 @@ with only_when("--enable-compile-environ - help="{Enable|Disable} elf hacks", - ) +diff -up firefox-115.0.2/toolkit/moz.configure.disable-elfhack firefox-115.0.2/toolkit/moz.configure +--- firefox-115.0.2/toolkit/moz.configure.disable-elfhack 2023-07-18 12:21:22.507358334 +0200 ++++ firefox-115.0.2/toolkit/moz.configure 2023-07-18 12:52:55.972727498 +0200 +@@ -1520,7 +1520,7 @@ with only_when("--enable-compile-environ + "Cannot enable elfhack with lld." + " Use --enable-linker=bfd, --enable-linker=gold, or --disable-elf-hack" + ) +- return True ++ return False -- set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: True)) -+ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False)) + set_config("USE_ELF_HACK", use_elf_hack) - - @depends(build_environment) diff --git a/SOURCES/build-ppc64-abiv2.patch b/SOURCES/build-ppc64-abiv2.patch new file mode 100644 index 0000000..7a68390 --- /dev/null +++ b/SOURCES/build-ppc64-abiv2.patch @@ -0,0 +1,12 @@ +diff -up firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s +--- firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 2023-07-25 09:01:42.602375809 +0200 ++++ firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s 2023-07-25 09:01:48.273373924 +0200 +@@ -3,7 +3,7 @@ + # See the full LICENSE under scripts/. + + .machine "any" +-.abiversion 2 ++.abiversion 1 + .text + + .globl sha512_block_p8 diff --git a/SOURCES/build-remove-dav1d-from-wayland-dep.patch b/SOURCES/build-remove-dav1d-from-wayland-dep.patch deleted file mode 100644 index d073acd..0000000 --- a/SOURCES/build-remove-dav1d-from-wayland-dep.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up firefox-102.0/media/ffvpx/config_common.h.dav1d-remove firefox-102.0/media/ffvpx/config_common.h ---- firefox-102.0/media/ffvpx/config_common.h.dav1d-remove 2022-08-08 12:48:33.218128539 +0200 -+++ firefox-102.0/media/ffvpx/config_common.h 2022-08-08 12:48:52.986003374 +0200 -@@ -24,15 +24,11 @@ - #undef CONFIG_VP8_VAAPI_HWACCEL - #undef CONFIG_VP9_VAAPI_HWACCEL - #undef CONFIG_AV1_VAAPI_HWACCEL --#undef CONFIG_LIBDAV1D --#undef CONFIG_AV1_DECODER - #define CONFIG_VAAPI 1 - #define CONFIG_VAAPI_1 1 - #define CONFIG_VP8_VAAPI_HWACCEL 1 - #define CONFIG_VP9_VAAPI_HWACCEL 1 - #define CONFIG_AV1_VAAPI_HWACCEL 1 --#define CONFIG_LIBDAV1D 1 --#define CONFIG_AV1_DECODER 1 - #endif - - #endif -diff -up firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove firefox-102.0/media/ffvpx/libavcodec/moz.build ---- firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove 2022-08-08 12:44:24.098710736 +0200 -+++ firefox-102.0/media/ffvpx/libavcodec/moz.build 2022-08-08 12:46:42.635828719 +0200 -@@ -104,17 +104,23 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: - ] - if CONFIG['MOZ_WAYLAND']: - LOCAL_INCLUDES += ['/media/mozva'] -+ if CONFIG['MOZ_DAV1D_ASM']: -+ SOURCES += [ -+ 'libdav1d.c', -+ ] - SOURCES += [ - 'atsc_a53.c', -- 'libdav1d.c', - 'vaapi_av1.c', - 'vaapi_decode.c', - 'vaapi_vp8.c', - 'vaapi_vp9.c', - ] -+ if CONFIG['MOZ_DAV1D_ASM']: -+ USE_LIBS += [ -+ 'dav1d', -+ 'media_libdav1d_asm', -+ ] - USE_LIBS += [ -- 'dav1d', -- 'media_libdav1d_asm', - 'mozva' - ] - diff --git a/SOURCES/build-rhel7-lower-node-min-version.patch b/SOURCES/build-rhel7-lower-node-min-version.patch index 3dce244..2bb39c8 100644 --- a/SOURCES/build-rhel7-lower-node-min-version.patch +++ b/SOURCES/build-rhel7-lower-node-min-version.patch @@ -1,11 +1,11 @@ ---- thunderbird-102.4.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version 2022-10-14 21:42:10.000000000 +0200 -+++ thunderbird-102.4.0/python/mozbuild/mozbuild/nodeutil.py 2022-10-17 18:49:44.490667820 +0200 +--- firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py.lower-node-min-version 2022-10-10 17:55:56.000000000 +0200 ++++ firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py 2022-10-17 14:57:47.476182627 +0200 @@ -13,7 +13,7 @@ from mozboot.util import get_tools_dir from mozfile import which from six import PY3 --NODE_MIN_VERSION = StrictVersion("10.24.1") +-NODE_MIN_VERSION = StrictVersion("12.22.12") +NODE_MIN_VERSION = StrictVersion("10.24.0") - NPM_MIN_VERSION = StrictVersion("6.14.12") + NPM_MIN_VERSION = StrictVersion("6.14.16") diff --git a/SOURCES/build-tb-rnp-openssl.patch b/SOURCES/build-tb-rnp-openssl.patch new file mode 100644 index 0000000..d0d9346 --- /dev/null +++ b/SOURCES/build-tb-rnp-openssl.patch @@ -0,0 +1,12 @@ +diff -up thunderbird-115.1.0/comm/third_party/rnp/moz.build.rnp-openssl thunderbird-115.1.0/comm/third_party/rnp/moz.build +--- thunderbird-115.1.0/comm/third_party/rnp/moz.build.rnp-openssl 2023-08-07 16:38:39.272780256 +0200 ++++ thunderbird-115.1.0/comm/third_party/rnp/moz.build 2023-08-07 16:38:42.822780087 +0200 +@@ -93,7 +93,7 @@ elif CONFIG["MZLA_LIBRNP_BACKEND"] == "o + # Supported, but not with RHEL's OpenSSL, disabled for now; + "ENABLE_BRAINPOOL": False, + }) +- rnp_defines["PACKAGE_STRING"] = rnp_defines["PACKAGE_STRING"][:-1] + '-openssl"' ++ #rnp_defines["PACKAGE_STRING"] = rnp_defines["PACKAGE_STRING"][:-1] + '-openssl"' + if CONFIG["MZLA_LIBRNP_OPENSSL_VERSION"][0] == "3": + rnp_defines["CRYPTO_BACKEND_OPENSSL3"] = True + diff --git a/SOURCES/disable-openh264-download.patch b/SOURCES/disable-openh264-download.patch deleted file mode 100644 index 028b730..0000000 --- a/SOURCES/disable-openh264-download.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -up firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old firefox-81.0/toolkit/modules/GMPInstallManager.jsm ---- firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old 2020-09-25 10:39:04.769458703 +0200 -+++ firefox-81.0/toolkit/modules/GMPInstallManager.jsm 2020-09-25 10:39:22.038504747 +0200 -@@ -54,10 +54,6 @@ function getScopedLogger(prefix) { - - const LOCAL_GMP_SOURCES = [ - { -- id: "gmp-gmpopenh264", -- src: "chrome://global/content/gmp-sources/openh264.json", -- }, -- { - id: "gmp-widevinecdm", - src: "chrome://global/content/gmp-sources/widevinecdm.json", - }, -diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn ---- a/toolkit/content/jar.mn -+++ b/toolkit/content/jar.mn -@@ -108,7 +108,6 @@ toolkit.jar: - #ifdef XP_MACOSX - content/global/macWindowMenu.js - #endif -- content/global/gmp-sources/openh264.json (gmp-sources/openh264.json) - content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json) - - # Third party files -diff --git a/toolkit/modules/GMPInstallManager.jsm b/toolkit/modules/GMPInstallManager.jsm ---- a/toolkit/modules/GMPInstallManager.jsm -+++ b/toolkit/modules/GMPInstallManager.jsm -@@ -238,6 +234,9 @@ GMPInstallManager.prototype = { - * downloaderr, verifyerr or previouserrorencountered - */ - installAddon(gmpAddon) { -+ if (gmpAddon.isOpenH264) { -+ return Promise.reject({ type: "disabled" }); -+ } - if (this._deferred) { - let log = getScopedLogger("GMPInstallManager.installAddon"); - log.error("previous error encountered"); - diff --git a/SOURCES/fedora-shebang-build.patch b/SOURCES/fedora-shebang-build.patch deleted file mode 100644 index 9ade86c..0000000 --- a/SOURCES/fedora-shebang-build.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh ---- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100 -+++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/usr/bin/sh - # - # This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/SOURCES/firefox-nss-version.patch b/SOURCES/firefox-nss-version.patch deleted file mode 100644 index 73eafc6..0000000 --- a/SOURCES/firefox-nss-version.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- thunderbird-102.6.0/build/moz.configure/nss.configure.firefox-nss-version 2022-12-09 19:00:45.849518718 +0100 -+++ thunderbird-102.6.0/build/moz.configure/nss.configure 2022-12-09 19:02:47.739198796 +0100 -@@ -9,7 +9,7 @@ system_lib_option("--with-system-nss", h - imply_option("--with-system-nspr", True, when="--with-system-nss") - - nss_pkg = pkg_check_modules( -- "NSS", "nss >= 3.79.2", when="--with-system-nss", config=False -+ "NSS", "nss >= 3.79", when="--with-system-nss", config=False - ) - - set_config("MOZ_SYSTEM_NSS", True, when="--with-system-nss") diff --git a/SOURCES/mozilla-1516803.patch b/SOURCES/mozilla-1516803.patch deleted file mode 100644 index 5053e51..0000000 --- a/SOURCES/mozilla-1516803.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build ---- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 -+++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 -@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") - # gcc lto likes to put the top level asm in syscall.cc in a different partition - # from the function using it which breaks the build. Work around that by - # forcing there to be only one partition. --for f in CONFIG["OS_CXXFLAGS"]: -- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": -- LDFLAGS += ["--param lto-partitions=1"] -+if CONFIG['CC_TYPE'] != 'clang': -+ LDFLAGS += ['--param', 'lto-partitions=1'] - - DEFINES["NS_NO_XPCOM"] = True - DisableStlWrapping() diff --git a/SOURCES/mozilla-1669639.patch b/SOURCES/mozilla-1669639.patch deleted file mode 100644 index cd04aab..0000000 --- a/SOURCES/mozilla-1669639.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- firefox-81.0.1/build/mach_initialize.py.old 2020-10-06 14:16:06.212974910 +0200 -+++ firefox-81.0.1/build/mach_initialize.py 2020-10-06 14:19:03.313179557 +0200 -@@ -507,7 +507,10 @@ class ImportHook(object): - # doesn't happen or because it doesn't matter). - if not os.path.exists(module.__file__[:-1]): - if os.path.exists(module.__file__): -- os.remove(module.__file__) -+ try: -+ os.remove(module.__file__) -+ except: -+ pass - del sys.modules[module.__name__] - module = self(name, globals, locals, fromlist, level) - diff --git a/SOURCES/mozilla-1775202.patch b/SOURCES/mozilla-1775202.patch deleted file mode 100644 index b1748de..0000000 --- a/SOURCES/mozilla-1775202.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build -index 8579f8bb3622..d9ca79d4fcb8 100644 ---- a/third_party/libwebrtc/moz.build -+++ b/third_party/libwebrtc/moz.build -@@ -520,7 +520,10 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"] == "Linux": - "/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn", - "/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn", - "/third_party/libwebrtc/modules/audio_coding/isac_c_gn", -- "/third_party/libwebrtc/modules/audio_coding/isac_gn" -+ "/third_party/libwebrtc/modules/audio_coding/isac_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn" - ] - - if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux": - diff --git a/SOURCES/mozilla-bmo1005535.patch b/SOURCES/mozilla-bmo1005535.patch deleted file mode 100644 index d20d812..0000000 --- a/SOURCES/mozilla-bmo1005535.patch +++ /dev/null @@ -1,30 +0,0 @@ -# HG changeset patch -# User Steve Singer -# Date 1558451540 -7200 -# Tue May 21 17:12:20 2019 +0200 -# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad -# Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf -Bug 1005535 - Get skia GPU building on big endian. - -diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h ---- a/gfx/skia/skia/src/gpu/GrColor.h -+++ b/gfx/skia/skia/src/gpu/GrColor.h -@@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un - #define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF) - #define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF) - #define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF) - - /** - * Since premultiplied means that alpha >= color, we construct a color with - * each component==255 and alpha == 0 to be "illegal" - */ --#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A)) -+#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A))) - - /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */ - static inline float GrNormalizeByteToFloat(uint8_t value) { - static const float ONE_OVER_255 = 1.f / 255.f; - return value * ONE_OVER_255; - } - - /** Used to pick vertex attribute types. */ diff --git a/SOURCES/mozilla-1170092.patch b/SOURCES/mozilla-bmo1170092.patch similarity index 55% rename from SOURCES/mozilla-1170092.patch rename to SOURCES/mozilla-bmo1170092.patch index d4cd582..36d2b00 100644 --- a/SOURCES/mozilla-1170092.patch +++ b/SOURCES/mozilla-bmo1170092.patch @@ -1,7 +1,7 @@ -diff -up firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2021-03-18 14:48:36.000000000 +0100 -+++ firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2021-03-22 19:20:02.429310184 +0100 -@@ -249,8 +249,20 @@ nsresult nsReadConfig::openAndEvaluateJS +diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2023-07-10 21:08:53.000000000 +0200 ++++ firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp 2023-07-17 10:33:23.443355156 +0200 +@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS if (NS_FAILED(rv)) return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -23,10 +23,10 @@ diff -up firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 fi } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -diff -up firefox-87.0/modules/libpref/Preferences.cpp.1170092 firefox-87.0/modules/libpref/Preferences.cpp ---- firefox-87.0/modules/libpref/Preferences.cpp.1170092 2021-03-18 14:48:54.000000000 +0100 -+++ firefox-87.0/modules/libpref/Preferences.cpp 2021-03-22 19:20:02.429310184 +0100 -@@ -4499,6 +4499,9 @@ nsresult Preferences::InitInitialObjects +diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2/modules/libpref/Preferences.cpp +--- firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 2023-07-10 21:09:00.000000000 +0200 ++++ firefox-115.0.2/modules/libpref/Preferences.cpp 2023-07-17 10:33:23.444355156 +0200 +@@ -4825,6 +4825,9 @@ nsresult Preferences::InitInitialObjects // // Thus, in the omni.jar case, we always load app-specific default // preferences from omni.jar, whether or not `$app == $gre`. @@ -36,10 +36,10 @@ diff -up firefox-87.0/modules/libpref/Preferences.cpp.1170092 firefox-87.0/modul nsresult rv = NS_ERROR_FAILURE; UniquePtr find; -diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/toolkit/xre/nsXREDirProvider.cpp ---- firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2021-03-18 14:52:00.000000000 +0100 -+++ firefox-87.0/toolkit/xre/nsXREDirProvider.cpp 2021-03-22 19:37:56.574480347 +0100 -@@ -65,6 +65,7 @@ +diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp +--- firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 2023-07-10 22:57:20.000000000 +0200 ++++ firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp 2023-07-17 10:56:25.309692121 +0200 +@@ -72,6 +72,7 @@ #endif #ifdef XP_UNIX # include @@ -47,13 +47,11 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool #endif #ifdef XP_IOS # include "UIKitDirProvider.h" -@@ -552,6 +553,21 @@ nsXREDirProvider::GetFile(const char* aP - } - } - } -+ -+#if defined(XP_UNIX) -+ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { +@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP + rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME)); + NS_ENSURE_SUCCESS(rv, rv); + rv = EnsureDirectoryExists(file); ++ } else if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { + nsCString sysConfigDir = nsLiteralCString("/etc/"); + nsCOMPtr appInfo = do_GetService("@mozilla.org/xre/app-info;1"); + if (!appInfo) @@ -62,14 +60,12 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool + appInfo->GetName(appName); + ToLowerCase(appName); + sysConfigDir.Append(appName); -+ return NS_NewNativeLocalFile(sysConfigDir, false, aFile); -+ } -+#endif -+ - if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; - - if (ensureFilePermissions) { -@@ -874,6 +890,16 @@ nsresult nsXREDirProvider::GetFilesInter ++ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file)); ++ rv = EnsureDirectoryExists(file); + } else { + // We don't know anything about this property. Fail without warning, because + // otherwise we'll get too much warning spam due to +@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a } #endif @@ -86,10 +82,10 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool 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-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h ---- firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2021-03-18 14:51:58.000000000 +0100 -+++ firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h 2021-03-22 19:20:02.430310213 +0100 -@@ -59,6 +59,7 @@ +diff -up firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2023-07-10 21:09:13.000000000 +0200 ++++ firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h 2023-07-17 10:33:23.444355156 +0200 +@@ -58,6 +58,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ "PrefDOverride" // Directory for per-profile defaults diff --git a/SOURCES/mozilla-bmo1504834-part1.patch b/SOURCES/mozilla-bmo1504834-part1.patch index 1afe3aa..cc66dd4 100644 --- a/SOURCES/mozilla-bmo1504834-part1.patch +++ b/SOURCES/mozilla-bmo1504834-part1.patch @@ -1,43 +1,34 @@ # HG changeset patch -# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a +# Parent 9fcbd287056a40084b1e679f787bf683b291f323 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp -@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co - Rect sampledBounds = inverse.TransformBounds(*aBounds); - if (!sampledBounds.ToIntRect(&bounds)) { - return surfaceBounds; - } - - return surfaceBounds.Intersect(bounds); +@@ -156,7 +156,8 @@ static IntRect CalculateSurfaceBounds(co } --static const int kARGBAlphaOffset = + static const int kARGBAlphaOffset = - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; -+static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; ++ 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == ++ // SurfaceFormat::B8G8R8A8 ? 3 : 0; static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, const int32_t aStride, SurfaceFormat aFormat) { - if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { - return true; - } - // We should've initialized the data to be opaque already - // On debug builds, verify that this is actually true. diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h -@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t { - Depth, - +@@ -89,18 +89,11 @@ enum class SurfaceFormat : int8_t { // This represents the unknown format. - UNKNOWN, + UNKNOWN, // TODO: Replace uses with Maybe. - // The following values are endian-independent synonyms. The _UINT32 suffix - // indicates that the name reflects the layout when viewed as a uint32_t - // value. +-// The following values are endian-independent synonyms. The _UINT32 suffix +-// indicates that the name reflects the layout when viewed as a uint32_t +-// value. -#if MOZ_LITTLE_ENDIAN() ++ // The following values are endian-independent synonyms. The _UINT32 suffix ++ // indicates that the name reflects the layout when viewed as a uint32_t ++ // value. A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB -#elif MOZ_BIG_ENDIAN() @@ -49,20 +40,10 @@ diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h // The following values are OS and endian-independent synonyms. // - // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we - // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. - OS_RGBA = A8R8G8B8_UINT32, - OS_RGBX = X8R8G8B8_UINT32 - }; -diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc ---- a/gfx/skia/skia/third_party/skcms/skcms.cc -+++ b/gfx/skia/skia/third_party/skcms/skcms.cc -@@ -25,16 +25,18 @@ - // it'd be a lot slower. But we want all those headers included so we - // can use their features after runtime checks later. - #include - #include - #include +diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/skcms.cc +--- a/gfx/skia/skia/modules/skcms/skcms.cc ++++ b/gfx/skia/skia/modules/skcms/skcms.cc +@@ -30,6 +30,8 @@ #include #include #endif @@ -70,30 +51,21 @@ diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_part + #define SKCMS_PORTABLE #endif - // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. - // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. - // - // Please do not use sizeof() directly, and size_t only when required. - // (We have no way of enforcing these requests...) - #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) -@@ -275,30 +277,38 @@ enum { - skcms_Signature_sf32 = 0x73663332, - // XYZ is also a PCS signature, so it's defined in skcms.h - // skcms_Signature_XYZ = 0x58595A20, - }; - + static bool runtime_cpu_detection = true; +@@ -324,20 +326,28 @@ enum { static uint16_t read_big_u16(const uint8_t* ptr) { uint16_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +- return _byteswap_ushort(be); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return be; -+#else + #else +- return __builtin_bswap16(be); + #if defined(_MSC_VER) - return _byteswap_ushort(be); --#else ++ return _byteswap_ushort(be); + #else - return __builtin_bswap16(be); ++ return __builtin_bswap16(be); + #endif #endif } @@ -102,20 +74,16 @@ diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_part uint32_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +- return _byteswap_ulong(be); +#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ + return be; -+#else + #else +- return __builtin_bswap32(be); + #if defined(_MSC_VER) - return _byteswap_ulong(be); --#else ++ return _byteswap_ulong(be); + #else - return __builtin_bswap32(be); ++ return __builtin_bswap32(be); + #endif #endif } - static int32_t read_big_i32(const uint8_t* ptr) { - return (int32_t)read_big_u32(ptr); - } - - static float read_big_fixed(const uint8_t* ptr) { diff --git a/SOURCES/mozilla-bmo1504834-part3.patch b/SOURCES/mozilla-bmo1504834-part3.patch index d07702e..9c2ece0 100644 --- a/SOURCES/mozilla-bmo1504834-part3.patch +++ b/SOURCES/mozilla-bmo1504834-part3.patch @@ -1,64 +1,17 @@ # HG changeset patch -# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48 +# Parent 09cd4ac2cc607e85aa572425b824fbab386af607 For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). -diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h ---- a/gfx/skia/skia/include/private/SkNx.h -+++ b/gfx/skia/skia/include/private/SkNx.h -@@ -233,17 +233,28 @@ struct SkNx<1,T> { - AI SkNx operator<<(int bits) const { return fVal << bits; } - AI SkNx operator>>(int bits) const { return fVal >> bits; } - - AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; } - AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; } - AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } - AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } - -+ // On Big endian the commented out variant doesn't work, -+ // and honestly, I have no idea why it exists in the first place. -+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits() -+ // which gets a 64-bit integer, and FromBits returns 32-bit, -+ // cutting off the wrong half again. -+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles). -+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system) -+#ifdef SK_CPU_BENDIAN -+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } -+#else - AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } -+#endif - AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } - AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } - - AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); } - AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); } - AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); } - AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); } - AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); } diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h --- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h +++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h -@@ -198,17 +198,23 @@ namespace SK_OPTS_NS { - const SkAlpha* mask, size_t maskRB, - int w, int h) { - auto fn = [](const Sk4px& d, const Sk4px& aa) { - // = (s + d(1-sa))aa + d(1-aa) - // = s*aa + d(1-sa*aa) +@@ -210,6 +210,8 @@ namespace SK_OPTS_NS { // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) -+ -+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 -+#ifdef SK_CPU_BENDIAN -+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) -+#else - return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) -+#endif ++ // TODO: Check this for endian-issues! ++ // Do we need to switch 255 to the front for all of those tuples? + return (aa & Sk4px(skvx::byte16{0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255})) + d.approxMulDiv255(aa.inv()); }; - while (h --> 0) { - Sk4px::MapDstAlpha(w, dst, mask, fn); - dst += dstRB / sizeof(*dst); - mask += maskRB / sizeof(*mask); - } - } diff --git a/SOURCES/mozilla-1670333.patch b/SOURCES/mozilla-bmo1670333.patch similarity index 52% rename from SOURCES/mozilla-1670333.patch rename to SOURCES/mozilla-bmo1670333.patch index 1c5c476..7126d43 100644 --- a/SOURCES/mozilla-1670333.patch +++ b/SOURCES/mozilla-bmo1670333.patch @@ -1,7 +1,7 @@ -diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/media/mp4/MP4Demuxer.cpp ---- firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/mp4/MP4Demuxer.cpp 2022-04-04 09:58:35.606351546 +0200 -@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re +diff -up firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-115.0/dom/media/mp4/MP4Demuxer.cpp +--- firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2023-06-06 23:14:43.000000000 +0200 ++++ firefox-115.0/dom/media/mp4/MP4Demuxer.cpp 2023-06-08 08:15:48.214109403 +0200 +@@ -32,6 +32,8 @@ mozilla::LogModule* GetDemuxerLog() { re DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ __func__, ##__VA_ARGS__) @@ -9,8 +9,8 @@ diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/medi + namespace mozilla { - DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer); -@@ -394,6 +396,12 @@ already_AddRefed MP4TrackD + using TimeUnit = media::TimeUnit; +@@ -404,6 +406,12 @@ already_AddRefed MP4TrackD [[fallthrough]]; case H264::FrameType::OTHER: { bool keyframe = type == H264::FrameType::I_FRAME; @@ -23,19 +23,19 @@ diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/medi if (sample->mKeyframe != keyframe) { NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " "@ pts:%" PRId64 " dur:%" PRId64 -diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/dom/media/platforms/PDMFactory.cpp ---- firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/platforms/PDMFactory.cpp 2022-04-04 10:09:57.383419125 +0200 -@@ -58,6 +58,8 @@ +diff -up firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-115.0/dom/media/platforms/PDMFactory.cpp +--- firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 2023-06-06 23:14:44.000000000 +0200 ++++ firefox-115.0/dom/media/platforms/PDMFactory.cpp 2023-06-08 08:09:33.145289602 +0200 +@@ -67,6 +67,8 @@ #include +bool gUseKeyframeFromContainer = false; + - namespace mozilla { - - #define PDM_INIT_LOG(msg, ...) \ -@@ -495,7 +497,7 @@ void PDMFactory::CreateRddPDMs() { + using DecodeSupport = mozilla::media::DecodeSupport; + using DecodeSupportSet = mozilla::media::DecodeSupportSet; + using MediaCodec = mozilla::media::MediaCodec; +@@ -562,7 +564,7 @@ void PDMFactory::CreateRddPDMs() { #ifdef MOZ_FFMPEG if (StaticPrefs::media_ffmpeg_enabled() && StaticPrefs::media_rdd_ffmpeg_enabled() && @@ -44,21 +44,22 @@ diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/do mFailureFlags += GetFailureFlagBasedOnFFmpegStatus( FFmpegRuntimeLinker::LinkStatusCode()); } -@@ -602,8 +604,9 @@ void PDMFactory::CreateDefaultPDMs() { +@@ -738,9 +740,10 @@ void PDMFactory::CreateDefaultPDMs() { CreateAndStartupPDM(); - if (StaticPrefs::media_gmp_decoder_enabled() && + if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed && - !CreateAndStartupPDM()) { + !StartupPDM(GMPDecoderModule::Create(), + StaticPrefs::media_gmp_decoder_preferred())) { + gUseKeyframeFromContainer = true; mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup; } } -diff -up firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 firefox-99.0/dom/media/platforms/PDMFactory.h ---- firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/platforms/PDMFactory.h 2022-04-04 09:58:35.606351546 +0200 -@@ -121,6 +121,7 @@ class PDMFactory final { +diff -up firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 firefox-115.0/dom/media/platforms/PDMFactory.h +--- firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 2023-06-06 23:14:42.000000000 +0200 ++++ firefox-115.0/dom/media/platforms/PDMFactory.h 2023-06-08 08:09:33.145289602 +0200 +@@ -103,6 +103,7 @@ class PDMFactory final { RefPtr mNullPDM; DecoderDoctorDiagnostics::FlagsSet mFailureFlags; diff --git a/SOURCES/svg-rendering.patch b/SOURCES/mozilla-bmo1716707-svg.patch similarity index 100% rename from SOURCES/svg-rendering.patch rename to SOURCES/mozilla-bmo1716707-svg.patch diff --git a/SOURCES/one_swizzle_to_rule_them_all.patch b/SOURCES/mozilla-bmo1716707-swizzle.patch similarity index 100% rename from SOURCES/one_swizzle_to_rule_them_all.patch rename to SOURCES/mozilla-bmo1716707-swizzle.patch diff --git a/SOURCES/mozilla-bmo1789216-disable-av1.patch b/SOURCES/mozilla-bmo1789216-disable-av1.patch new file mode 100644 index 0000000..ce91a12 --- /dev/null +++ b/SOURCES/mozilla-bmo1789216-disable-av1.patch @@ -0,0 +1,89 @@ +diff --git a/media/ffvpx/libavcodec/allcodecs.c b/media/ffvpx/libavcodec/allcodecs.c +--- a/media/ffvpx/libavcodec/allcodecs.c ++++ b/media/ffvpx/libavcodec/allcodecs.c +@@ -755,12 +755,15 @@ + extern FFCodec ff_libaom_av1_encoder; + extern const FFCodec ff_libaribb24_decoder; + extern const FFCodec ff_libcelt_decoder; + extern const FFCodec ff_libcodec2_encoder; + extern const FFCodec ff_libcodec2_decoder; ++#if CONFIG_MOZ_AV1 + extern const FFCodec ff_libdav1d_decoder; + extern const FFCodec ff_libdavs2_decoder; ++extern const FFCodec ff_libuavs3d_decoder; ++#endif + extern const FFCodec ff_libfdk_aac_encoder; + extern const FFCodec ff_libfdk_aac_decoder; + extern const FFCodec ff_libgsm_encoder; + extern const FFCodec ff_libgsm_decoder; + extern const FFCodec ff_libgsm_ms_encoder; +@@ -783,11 +786,10 @@ + extern const FFCodec ff_libspeex_encoder; + extern const FFCodec ff_libspeex_decoder; + extern const FFCodec ff_libsvtav1_encoder; + extern const FFCodec ff_libtheora_encoder; + extern const FFCodec ff_libtwolame_encoder; +-extern const FFCodec ff_libuavs3d_decoder; + extern const FFCodec ff_libvo_amrwbenc_encoder; + extern const FFCodec ff_libvorbis_encoder; + extern const FFCodec ff_libvorbis_decoder; + extern const FFCodec ff_libvpx_vp8_encoder; + extern const FFCodec ff_libvpx_vp8_decoder; +diff --git a/media/ffvpx/libavcodec/codec_list.c b/media/ffvpx/libavcodec/codec_list.c +--- a/media/ffvpx/libavcodec/codec_list.c ++++ b/media/ffvpx/libavcodec/codec_list.c +@@ -9,12 +9,14 @@ + &ff_flac_decoder, + #endif + #if CONFIG_MP3_DECODER + &ff_mp3_decoder, + #endif ++#if CONFIG_MOZ_AV1 + #if CONFIG_LIBDAV1D + &ff_libdav1d_decoder, + #endif + #if CONFIG_AV1_DECODER + &ff_av1_decoder, + #endif ++#endif + NULL }; +diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build +--- a/media/ffvpx/libavcodec/moz.build ++++ b/media/ffvpx/libavcodec/moz.build +@@ -84,11 +84,10 @@ + 'cbs.c', + 'cbs_av1.c', + 'golomb.c', + 'h264pred.c', + 'imgconvert.c', +- 'libdav1d.c', + 'mathtables.c', + 'qsv_api.c', + 'raw.c', + 'videodsp.c', + 'vp8.c', +@@ -107,14 +106,19 @@ + 'vp9mvs.c', + 'vp9prob.c', + 'vp9recon.c', + 'vpx_rac.c', + ] +- USE_LIBS += [ +- 'dav1d', +- 'media_libdav1d_asm', +- ] ++ if CONFIG['MOZ_AV1']: ++ USE_LIBS += [ ++ 'dav1d', ++ 'media_libdav1d_asm', ++ ] ++ SOURCES += [ ++ 'libdav1d.c', ++ ] ++ + if CONFIG['MOZ_WAYLAND']: + LOCAL_INCLUDES += ['/media/mozva'] + SOURCES += [ + 'vaapi_av1.c', + 'vaapi_decode.c', + diff --git a/SOURCES/mozilla-bmo849632.patch b/SOURCES/mozilla-bmo849632.patch index 9de64b9..913d6bc 100644 --- a/SOURCES/mozilla-bmo849632.patch +++ b/SOURCES/mozilla-bmo849632.patch @@ -6,15 +6,11 @@ Solution: Problem is with skia once again. Output of webgl seems endian-correct, So we swizzle the output of webgl after reading it from readpixels() Note: This does not fix all webGL sites, but is a step in the right direction -diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h ---- a/gfx/gl/GLContext.h -+++ b/gfx/gl/GLContext.h -@@ -1548,16 +1548,23 @@ class GLContext : public GenericAtomicRe - AFTER_GL_CALL; - } - - void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid* pixels) { +Index: firefox-115.0/gfx/gl/GLContext.h +=================================================================== +--- firefox-115.0.orig/gfx/gl/GLContext.h ++++ firefox-115.0/gfx/gl/GLContext.h +@@ -1560,6 +1560,13 @@ class GLContext : public GenericAtomicRe BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); @@ -28,8 +24,3 @@ diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h AFTER_GL_CALL; mHeavyGLCallsSinceLastFlush = true; } - - void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid* pixels); - - public: diff --git a/SOURCES/mozilla-build-arm.patch b/SOURCES/mozilla-build-arm.patch deleted file mode 100644 index e390a28..0000000 --- a/SOURCES/mozilla-build-arm.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h ---- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm 2017-03-03 13:53:52.480754536 +0100 -+++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h 2017-03-03 13:56:01.476018102 +0100 -@@ -203,6 +203,10 @@ - #define SK_ARM_HAS_CRC32 - #endif - -+#if defined(__aarch64__) -+ #undef SK_ARM_HAS_NEON -+#endif -+ - ////////////////////////////////////////////////////////////////////// - - #if !defined(SKIA_IMPLEMENTATION) diff --git a/SOURCES/mozilla-s390-context.patch b/SOURCES/mozilla-s390-context.patch deleted file mode 100644 index 34b2357..0000000 --- a/SOURCES/mozilla-s390-context.patch +++ /dev/null @@ -1,53 +0,0 @@ -# HG changeset patch -# User msirringhaus@suse.de -# Date 1558452408 -7200 -# Tue May 21 17:26:48 2019 +0200 -# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 -# Parent 136e1f2c44a3099b3e49a576fa62c8ad77aa431e -[mq]: mozilla-s390-context.patch - -diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp ---- a/js/src/wasm/WasmSignalHandlers.cpp -+++ b/js/src/wasm/WasmSignalHandlers.cpp -@@ -157,16 +157,20 @@ using mozilla::DebugOnly; - # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) - # endif - # if defined(__linux__) && defined(__loongarch__) - # define EPC_sig(p) ((p)->uc_mcontext.pc) - # define RRA_sig(p) ((p)->uc_mcontext.gregs[1]) - # define RSP_sig(p) ((p)->uc_mcontext.gregs[3]) - # define RFP_sig(p) ((p)->uc_mcontext.gregs[22]) - # endif -+# if defined(__linux__) && defined(__s390x__) -+# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x]) -+# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr) -+# endif - # elif defined(__NetBSD__) - # define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) - # define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP]) - # define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP]) - # define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) - # define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) - # define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) - # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) -@@ -399,16 +403,20 @@ struct macos_aarch64_context { - # define PC_sig(p) R32_sig(p) - # define SP_sig(p) R01_sig(p) - # define FP_sig(p) R01_sig(p) - # elif defined(__loongarch__) - # define PC_sig(p) EPC_sig(p) - # define FP_sig(p) RFP_sig(p) - # define SP_sig(p) RSP_sig(p) - # define LR_sig(p) RRA_sig(p) -+# elif defined(__s390x__) -+# define PC_sig(p) PSWa_sig(p) -+# define SP_sig(p) GR_sig(p, 15) -+# define FP_sig(p) GR_sig(p, 11) - # endif - - static void SetContextPC(CONTEXT* context, uint8_t* pc) { - # ifdef PC_sig - *reinterpret_cast(&PC_sig(context)) = pc; - # else - MOZ_CRASH(); - # endif diff --git a/SOURCES/mozilla-s390x-skia-gradient.patch b/SOURCES/mozilla-s390x-skia-gradient.patch deleted file mode 100644 index a5e5d95..0000000 --- a/SOURCES/mozilla-s390x-skia-gradient.patch +++ /dev/null @@ -1,51 +0,0 @@ -# HG changeset patch -# Parent acf59ea86dd1d878b43920832093f082dcfc61c0 - -diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp ---- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100 -+++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100 -@@ -7,7 +7,7 @@ - - #include "include/core/SkPaint.h" - #include "src/shaders/gradients/Sk4fLinearGradient.h" -- -+#include "src/core/SkEndian.h" - #include - #include - -@@ -28,6 +28,9 @@ - - while (n >= 4) { - DstTraits::store4x(c0, c1, c2, c3, dst, bias0, bias1); -+#ifdef SK_CPU_BENDIAN -+ SkEndianSwap32s(dst, 4); -+#endif - dst += 4; - - c0 = c0 + dc4; -@@ -37,12 +40,23 @@ - n -= 4; - } - if (n & 2) { -- DstTraits::store(c0, dst++, bias0); -- DstTraits::store(c1, dst++, bias1); -+ DstTraits::store(c0, dst, bias0); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif -+ ++dst; -+ DstTraits::store(c1, dst, bias1); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif -+ ++dst; - c0 = c0 + dc2; - } - if (n & 1) { - DstTraits::store(c0, dst, bias0); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif - } - } - diff --git a/SOURCES/pgo.patch b/SOURCES/pgo.patch deleted file mode 100644 index eec103c..0000000 --- a/SOURCES/pgo.patch +++ /dev/null @@ -1,115 +0,0 @@ -diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure ---- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200 -@@ -247,8 +247,8 @@ def lto( - cflags.append("-flto") - ldflags.append("-flto") - else: -- cflags.append("-flto=thin") -- ldflags.append("-flto=thin") -+ cflags.append("-flto") -+ ldflags.append("-flto") - - if target.os == "Android" and value == "cross": - # Work around https://github.com/rust-lang/rust/issues/90088 -@@ -264,7 +264,7 @@ def lto( - if value == "full": - cflags.append("-flto") - else: -- cflags.append("-flto=thin") -+ cflags.append("-flto") - # With clang-cl, -flto can only be used with -c or -fuse-ld=lld. - # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld. - cflags.append("-fuse-ld=lld") -diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py ---- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200 -@@ -11,7 +11,7 @@ import glob - import subprocess - - import mozcrash --from mozbuild.base import MozbuildObject, BinaryNotFoundException -+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException - from mozfile import TemporaryDirectory - from mozhttpd import MozHttpd - from mozprofile import FirefoxProfile, Preferences -@@ -87,9 +87,22 @@ if __name__ == "__main__": - locations = ServerLocations() - locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") - -- old_profraw_files = glob.glob("*.profraw") -- for f in old_profraw_files: -- os.remove(f) -+ using_gcc = False -+ try: -+ if build.config_environment.substs.get('CC_TYPE') == 'gcc': -+ using_gcc = True -+ except BuildEnvironmentNotFoundException: -+ pass -+ -+ if using_gcc: -+ for dirpath, _, filenames in os.walk('.'): -+ for f in filenames: -+ if f.endswith('.gcda'): -+ os.remove(os.path.join(dirpath, f)) -+ else: -+ old_profraw_files = glob.glob('*.profraw') -+ for f in old_profraw_files: -+ os.remove(f) - - with TemporaryDirectory() as profilePath: - # TODO: refactor this into mozprofile -@@ -212,6 +225,10 @@ if __name__ == "__main__": - print("Firefox exited successfully, but produced a crashreport") - sys.exit(1) - -+ print('Copying profile data....') -+ os.system('pwd'); -+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); -+ - llvm_profdata = env.get("LLVM_PROFDATA") - if llvm_profdata: - profraw_files = glob.glob("*.profraw") -diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix ---- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200 -@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then - CC="$MOZ_FETCHES_DIR/gcc/bin/gcc" - CXX="$MOZ_FETCHES_DIR/gcc/bin/g++" - -+ if [ -n "$MOZ_PGO" ]; then -+ if [ -z "$USE_ARTIFACT" ]; then -+ ac_add_options --enable-lto -+ fi -+ export AR="$topsrcdir/gcc/bin/gcc-ar" -+ export NM="$topsrcdir/gcc/bin/gcc-nm" -+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib" -+ fi -+ - # We want to make sure we use binutils and other binaries in the tooltool - # package. - mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH" -diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build ---- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200 -+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200 -@@ -28,3 +28,5 @@ EXPORTS.mozilla += [ - "mozInlineSpellChecker.h", - "mozSpellChecker.h", - ] -+ -+CXXFLAGS += ['-fno-devirtualize'] -diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp ---- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200 -+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200 -@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() { - } - #endif - -+ // Disable watchdog for PGO train builds - writting profile information at -+ // exit may take time and it is better to make build hang rather than -+ // silently produce poorly performing binary. -+ crashAfterMS = INT32_MAX; -+ - UniquePtr options(new Options()); - // crashAfterTicks is guaranteed to be > 0 as - // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS diff --git a/SOURCES/rhbz-1219542-s390-build.patch b/SOURCES/rhbz-1219542-s390-build.patch deleted file mode 100644 index f94e43a..0000000 --- a/SOURCES/rhbz-1219542-s390-build.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in ---- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200 -+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200 -@@ -541,7 +541,7 @@ case "$host" in - - *-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" -- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" -+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}" - ;; - - *) -@@ -617,8 +617,8 @@ case "$target" in - - *-*linux*) - if test "$GNU_CC" -o "$GNU_CXX"; then -- MOZ_PGO_OPTIMIZE_FLAGS="-O3" -- MOZ_OPTIMIZE_FLAGS="-O3" -+ MOZ_PGO_OPTIMIZE_FLAGS="-O1" -+ MOZ_OPTIMIZE_FLAGS="-O1" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig index c8e9d53..c7b2c9e 100644 --- a/SOURCES/thunderbird-mozconfig +++ b/SOURCES/thunderbird-mozconfig @@ -1,31 +1,35 @@ ac_add_options --enable-application=comm/mail -ac_add_options --prefix="$PREFIX" -ac_add_options --libdir="$LIBDIR" -ac_add_options --with-system-zlib +ac_add_options --allow-addon-sideload +ac_add_options --disable-bootstrap +ac_add_options --disable-crashreporter +#ac_add_options --disable-elf-hack +ac_add_options --disable-jemalloc ac_add_options --disable-strip ac_add_options --disable-tests -#ac_add_options --enable-libnotify -ac_add_options --enable-necko-wifi ac_add_options --disable-updater ac_add_options --enable-chrome-format=omni +ac_add_options --enable-default-toolkit=cairo-gtk3-wayland +ac_add_options --enable-js-shell +ac_add_options --enable-necko-wifi +ac_add_options --enable-official-branding +ac_add_options --enable-official-branding ac_add_options --enable-pulseaudio -ac_add_options --without-system-icu ac_add_options --enable-release -ac_add_options --allow-addon-sideload -ac_add_options --with-system-jpeg -ac_add_options --enable-js-shell -ac_add_options --with-unsigned-addon-scopes=app,system -ac_add_options --without-sysroot +ac_add_options --enable-system-ffi +ac_add_options --libdir="$LIBDIR" +ac_add_options --prefix="$PREFIX" ac_add_options --update-channel=release -# investigate this one: -ac_add_options --without-wasm-sandboxed-libraries -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 --disable-crashreporter -ac_add_options --enable-official-branding -ac_add_options --disable-bootstrap +ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key +ac_add_options --without-sysroot +ac_add_options --without-system-icu +ac_add_options --without-wasm-sandboxed-libraries +ac_add_options --with-system-jpeg +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-unsigned-addon-scopes=app,system export BUILD_OFFICIAL=1 export MOZILLA_OFFICIAL=1 diff --git a/SOURCES/thunderbird.sh.in b/SOURCES/thunderbird.sh.in index 84ed613..88024b3 100644 --- a/SOURCES/thunderbird.sh.in +++ b/SOURCES/thunderbird.sh.in @@ -10,12 +10,12 @@ MOZ_ARCH=$(uname -m) case $MOZ_ARCH in x86_64 | s390x | sparc64 ) - MOZ_LIB_DIR="%PREFIX%/lib64" - SECONDARY_LIB_DIR="%PREFIX%/lib" + MOZ_LIB_DIR="__PREFIX__/lib64" + SECONDARY_LIB_DIR="__PREFIX__/lib" ;; * ) - MOZ_LIB_DIR="%PREFIX%/lib" - SECONDARY_LIB_DIR="%PREFIX%/lib64" + MOZ_LIB_DIR="__PREFIX__/lib" + SECONDARY_LIB_DIR="__PREFIX__/lib64" ;; esac @@ -61,7 +61,7 @@ fi ## ## Set MOZ_APP_LAUNCHER for gnome-session ## -export MOZ_APP_LAUNCHER="%PREFIX%/bin/thunderbird" +export MOZ_APP_LAUNCHER="__PREFIX__/bin/thunderbird" ## ## Disable the GNOME crash dialog, Moz has it's own diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec index 2972661..170eda8 100644 --- a/SPECS/thunderbird.spec +++ b/SPECS/thunderbird.spec @@ -1,14 +1,18 @@ # Set for local builds only %global disable_toolsets 0 -%if 0%{?fedora} > 35 || 0%{?rhel} > 9 +# Produce debug (non-optimized) package build. Suitable for debugging only +# as the build is *very* slow. +%global debug_build 0 + +%if 0%{?rhel} > 9 %global dictionarydir hunspell %else %global dictionarydir myspell %endif %{lua: -function dist_to_rhel8_minor(str, start) +function dist_to_rhel_minor(str, start) match = string.match(str, ".module%+el8.%d+") if match then return string.sub(match, 13) @@ -21,11 +25,6 @@ function dist_to_rhel8_minor(str, start) if match then return 9 end - return -1 -end} - -%{lua: -function dist_to_rhel9_minor(str, start) match = string.match(str, ".module%+el9.%d+") if match then return string.sub(match, 13) @@ -41,141 +40,93 @@ function dist_to_rhel9_minor(str, start) return -1 end} -%global rhel8_minor_version %{lua:print(dist_to_rhel8_minor(rpm.expand("%dist")))} -%global rhel9_minor_version %{lua:print(dist_to_rhel9_minor(rpm.expand("%dist")))} - -# Produce debug (non-optimized) package build. Suitable for debugging only -# as the build is *very* slow. -%global debug_build 0 +%global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} +# System libraries options %global system_nss 1 %global bundle_nss 0 -%global build_langpacks 1 - -# librnp with openssl support, not available in RHEL7 because it requires openssl >= 1.1.1e, -# nor in rhel-8.1.0 or rhel-8.2.0 -%global use_openssl_for_librnp 1 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} < 4) -%global use_openssl_for_librnp 0 -%endif %if 0%{?rhel} == 8 - %if %{rhel8_minor_version} <= 4 + %if %{rhel_minor_version} <= 6 %global bundle_nss 1 %global system_nss 1 + %global _build_id_links none %endif %endif - -%global build_with_asan 0 - -%global use_llvmts 0 -%global use_nodejsts 0 -%if 0%{?rhel} < 8 -%global use_llvmts 1 -%global use_nodejsts 1 +%if 0%{?rhel} == 9 + %if %{rhel_minor_version} <= 0 + %global bundle_nss 1 + %global system_nss 1 + %global _build_id_links none + %endif %endif - -%global nodejs_rb nodejs +%global dts_version 10 %global llvm_version 7.0 -%if "%{toolchain}" == "clang" -%global build_with_clang 1 -%else -%global build_with_clang 0 -%endif +%global nspr_version 4.35 +%global nspr_version_max 4.36 +%global nss_version 3.90 +%global nss_version_max 3.91 +%global rust_version 1.66 +%global system_libvpx 0 -%ifarch armv7hl -%global create_debuginfo 0 -%endif -%if 0%{?rhel} == 7 - %global use_dts 1 - %global nodejs_rb rh-nodejs10-nodejs - %global llvm_version 11.0 -%endif +# Toolsets setup +%global use_dts 0 +%global use_gcc_ts 0 +%global use_llvm_ts 0 +%global use_nodejs_scl 0 +%global use_rust_ts 1 +%global use_python3_scl 0 -# Temporary disabled due to -# https://bugzilla.redhat.com/show_bug.cgi?id=1951606 -%global enable_mozilla_crashreporter 0 +%global nodejs_build_req nodejs -%global system_ffi 1 -%ifarch armv7hl -%global system_libvpx 1 -%else -%global system_libvpx 0 -%endif -%global hardened_build 1 -%global system_jpeg 1 -%global disable_elfhack 1 -%global use_bundled_cbindgen 1 -%if %{debug_build} -%global release_build 0 -%endif -# Build PGO+LTO on x86_64 only due to build issues -# on other arches. -%global build_with_pgo 0 -%ifarch x86_64 -%if 0%{?release_build} -%global build_with_pgo 0 -%endif -%endif -%global use_rustts 1 -%global dts_version 10 -%global rust_version 1.62 %if 0%{?rhel} >= 8 - %global use_rustts 0 + %global use_rust_ts 0 %endif -%if 0%{?flatpak} -%global build_with_pgo 0 + +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 +%global use_gcc_ts 1 + %endif +%endif + +%if 0%{?rhel} == 7 + %global use_dts 1 + %global use_llvm_ts 1 + %global use_nodejs_scl 1 + %global nodejs_build_req rh-nodejs10-nodejs + %global llvm_version 11.0 + %global use_python3_scl 1 %endif %if 0%{?disable_toolsets} -%global use_rustts 0 %global use_dts 0 -%global use_llvmts 0 -%global use_nodejsts 0 -%global nodejs_rb nodejs +%global use_llvm_ts 0 +%global use_nodejs_scl 0 +%global use_rust_ts 0 +%global use_python3_scl 0 %endif -# Big endian platforms -%ifarch ppc64 s390x -%global big_endian 1 +# librnp with openssl support, not available in RHEL7 because it requires openssl >= 1.1.1e, +# nor in rhel-8.1.0 or rhel-8.2.0 +%global use_openssl_for_librnp 1 +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} < 4) + %global use_openssl_for_librnp 0 %endif -%if 0%{?build_with_pgo} -%global use_xvfb 1 -%global build_tests 1 -%endif -# Minimal required versions -%global cairo_version 1.13.1 -%global freetype_version 2.1.9 -%global libnotify_version 0.7.0 -%if %{?system_libvpx} -%global libvpx_version 1.8.2 -%endif -%if %{?system_nss} -%global nspr_version 4.34 -%global nspr_build_version %{nspr_version} -%global nss_version 3.79 -%global nss_build_version %{nss_version} -%endif %define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\} -%global langpackdir %{mozappdir}/extensions - -# The tarball is pretty inconsistent with directory structure. -# Sometimes there is a top level directory. That goes here. -# -# IMPORTANT: If there is no top level directory, this should be -# set to the cwd, ie: '.' -%define objdir objdir %define mozappdir %{_libdir}/thunderbird - +%global langpackdir %{mozappdir}/extensions %define bundled_install_path %{mozappdir}/bundled -%define official_branding 1 -# We could use %%include, but in %%files, %%post and other sections, but in these -# sections it could lead to syntax errors about unclosed %%if. Work around it by -# using the following macro -%define include_file() %{expand:%(cat '%1')} +##global pre_version b2 +# Workaround the dreaded "upstream source file changed content" rpminspect failure. +# If set to .b2 or .b3 ... the processed source file needs to be renamed before upload, e.g. +# thunderbird-102.8.0.b2.processed-source.tar.xz +# When unset use processed source file name as is. +##global buildnum .b2 + +%bcond_without langpacks # Exclude private libraries from autogenerated provides and requires %global __provides_exclude_from ^%{mozappdir} @@ -183,22 +134,16 @@ end} Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 102.15.1 +Version: 115.3.1 Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ -# Workaround the dreaded "upstream source file changed content" rpminspect failure. -# If set to .b2 or .b3 ... the processed source file needs to be renamed before upload, e.g. -# thunderbird-102.8.0.b2.processed-source.tar.xz -# When unset use processed source file name as is. -#%%global buildnum .b2 - %if 0%{?rhel} == 9 ExcludeArch: %{ix86} %endif %if 0%{?rhel} == 8 - %if %{rhel8_minor_version} == 1 + %if %{rhel_minor_version} == 1 ExcludeArch: %{ix86} aarch64 s390x %else ExcludeArch: %{ix86} @@ -208,10 +153,14 @@ ExcludeArch: %{ix86} ExcludeArch: aarch64 s390 ppc %endif -#Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.processed-source.tar.xz +# We can't use the official tarball as it contains some test files that use +# licenses that are rejected by Red Hat Legal. +# The official tarball has to be always processed by the process-official-tarball +# script +#Source0: https://archive.mozilla.org/pub/thunderbird/releases/%%{version}%%{?pre_version}/source/thunderbird-%%{version}%%{?pre_version}.processed-source.tar.xz Source0: thunderbird-%{version}%{?pre_version}%{?buildnum}.processed-source.tar.xz -%if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}-20230913.tar.xz +%if %{with langpacks} +Source1: thunderbird-langpacks-%{version}-20230929.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball @@ -224,298 +173,219 @@ Source25: thunderbird-symbolic.svg Source27: google-api-key Source32: node-stdout-nonblocking-wrapper Source35: google-loc-api-key -Source403: nss-3.79.0-11.el8_1.src.rpm Source401: nss-setup-flags-env.inc -Source402: nspr-4.34.0-3.el8_1.src.rpm - -# Build patches -Patch3: mozilla-build-arm.patch -Patch25: rhbz-1219542-s390-build.patch -# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x) -Patch40: build-aarch64-skia.patch -Patch41: build-disable-elfhack.patch -Patch44: build-arm-libopus.patch -Patch47: fedora-shebang-build.patch -Patch49: build-arm-libaom.patch -Patch53: firefox-gcc-build.patch -Patch54: mozilla-1669639.patch -Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch -Patch72: build-remove-dav1d-from-wayland-dep.patch -Patch73: build-ascii-decode-fail-rhel7.patch -Patch75: build-big-endian-errors.patch -Patch76: firefox-nss-version.patch -Patch77: mozilla-1775202.patch -Patch78: build-rhel7-lower-node-min-version.patch - -# Fedora specific patches -Patch215: firefox-enable-addons.patch -Patch219: rhbz-1173156.patch -Patch224: mozilla-1170092.patch -#ARM run-time patch -Patch226: rhbz-1354671.patch -Patch228: disable-openh264-download.patch -Patch229: firefox-nss-addon-hack.patch -Patch230: disable-openpgp-in-thunderbird.patch - -# Upstream patches -Patch415: mozilla-1670333.patch -Patch416: mozilla-bmo1005535.patch -Patch417: mozilla-bmo1504834-part1.patch -Patch418: mozilla-bmo1504834-part3.patch -Patch419: mozilla-bmo849632.patch -Patch420: mozilla-bmo998749.patch -Patch421: mozilla-s390-context.patch -Patch422: mozilla-s390x-skia-gradient.patch -Patch423: one_swizzle_to_rule_them_all.patch -Patch424: svg-rendering.patch -Patch425: D158770.diff - -# PGO/LTO patches -Patch600: pgo.patch -Patch602: mozilla-1516803.patch - -# Backported WebRTC changes for PipeWire/Wayland screen sharing support -Patch1008: build-rhel7-nasm-dwarf.patch - -%if %{?system_nss} -%if !0%{?bundle_nss} +Source402: nspr-4.35.0-1.el8_1.src.rpm +Source403: nss-3.90.0-2.el8_1.src.rpm +Source404: nss-3.90.0-3.el9_0.src.rpm + +# ---- RHEL specific patches --- +# -- Downstream only -- +Patch01: build-disable-elfhack.patch +Patch02: firefox-gcc-build.patch +Patch03: build-big-endian-errors.patch +Patch05: build-rhel7-lower-node-min-version.patch +Patch06: build-ppc64-abiv2.patch +Patch07: build-rhel7-nasm-dwarf.patch +Patch08: build-tb-rnp-openssl.patch +Patch09: disable-openpgp-in-thunderbird.patch + +# -- Upstreamed patches -- +Patch51: mozilla-bmo1170092.patch + +# -- Submitted upstream, not merged -- +Patch101: mozilla-bmo1670333.patch +# Big endian fix +Patch102: mozilla-bmo1504834-part1.patch +Patch103: mozilla-bmo1504834-part3.patch +# Big endian fix +Patch104: mozilla-bmo849632.patch +# Big endian fix +Patch105: mozilla-bmo998749.patch +# Big endian fix +Patch106: mozilla-bmo1716707-swizzle.patch +Patch107: mozilla-bmo1716707-svg.patch +Patch108: mozilla-bmo1789216-disable-av1.patch + +# ---- Fedora specific patches ---- +Patch151: firefox-enable-addons.patch +Patch152: rhbz-1173156.patch +Patch154: firefox-nss-addon-hack.patch +# ARM run-time patch +Patch155: rhbz-1354671.patch + +# BUILD REQURES/REQUIRES +%if %{?system_nss} && !0%{?bundle_nss} BuildRequires: pkgconfig(nspr) >= %{nspr_version} +BuildRequires: pkgconfig(nspr) < %{nspr_version_max} BuildRequires: pkgconfig(nss) >= %{nss_version} +BuildRequires: pkgconfig(nss) < %{nss_version_max} BuildRequires: nss-static >= %{nss_version} +BuildRequires: nss-static < %{nss_version_max} %endif + +%if %{?system_libvpx} +BuildRequires: libvpx-devel >= 1.8.2 %endif -BuildRequires: pkgconfig(libpng) -%if %{?system_jpeg} -BuildRequires: libjpeg-devel -%endif -BuildRequires: zip + BuildRequires: bzip2-devel -BuildRequires: pkgconfig(zlib) +BuildRequires: dbus-glib-devel +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +BuildRequires: libjpeg-devel +BuildRequires: libstdc++-devel +BuildRequires: libstdc++-static +BuildRequires: m4 +BuildRequires: make +BuildRequires: nasm >= 1.13 +BuildRequires: %{nodejs_build_req} >= 10.21 +BuildRequires: pciutils-libs +BuildRequires: perl-interpreter +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gtk+-3.0) -BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(pango) -BuildRequires: pkgconfig(freetype2) >= %{freetype_version} +BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(xrender) -BuildRequires: pkgconfig(libstartup-notification-1.0) -BuildRequires: pkgconfig(libnotify) >= %{libnotify_version} -BuildRequires: pkgconfig(dri) -BuildRequires: pkgconfig(libcurl) -BuildRequires: pkgconfig(alsa) -%if %{?use_openssl_for_librnp} -BuildRequires: pkgconfig(openssl) -%endif -BuildRequires: libstdc++-devel -BuildRequires: libstdc++-static -BuildRequires: dbus-glib-devel -%if %{?system_libvpx} -BuildRequires: libvpx-devel >= %{libvpx_version} -%endif -%if %{?system_ffi} -BuildRequires: libffi-devel -%endif -BuildRequires: startup-notification-devel -BuildRequires: alsa-lib-devel -BuildRequires: m4 -BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(zlib) +BuildRequires: zip -%if 0%{?use_dts} -BuildRequires: devtoolset-%{dts_version}-gcc-c++ -BuildRequires: devtoolset-%{dts_version}-gcc -BuildRequires: devtoolset-%{dts_version}-libatomic-devel -%endif -%if 0%{?rhel} == 9 -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: cargo -BuildRequires: rust -BuildRequires: clang clang-libs llvm -%endif -BuildRequires: %{nodejs_rb} >= 10.21 %if 0%{?rhel} == 7 +%if 0%{?use_python3_scl} +BuildRequires: rh-python38-python-devel +BuildRequires: rh-python38-python-setuptools BuildRequires: scl-utils +%endif BuildRequires: findutils +%else +BuildRequires: pipewire-devel %endif + %if 0%{?rhel} == 8 BuildRequires: cargo -BuildRequires: rust >= %{rust_version} -BuildRequires: llvm >= %{llvm_version} -BuildRequires: llvm-devel >= %{llvm_version} -BuildRequires: clang >= %{llvm_version} BuildRequires: clang-devel >= %{llvm_version} +BuildRequires: clang >= %{llvm_version} +BuildRequires: llvm-devel >= %{llvm_version} +BuildRequires: llvm >= %{llvm_version} + %if 0%{?disable_toolsets} == 0 +BuildRequires: python38-devel +BuildRequires: python38-setuptools + %endif BuildRequires: rustfmt >= %{rust_version} +BuildRequires: rust >= %{rust_version} %endif -%if 0%{?use_rustts} -BuildRequires: rust-toolset-%{rust_version} +%if 0%{?rhel} == 9 +BuildRequires: cargo +BuildRequires: clang clang-libs llvm +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: rust %endif -%if 0%{?use_llvmts} +%if 0%{?use_dts} +BuildRequires: devtoolset-%{dts_version}-gcc +BuildRequires: devtoolset-%{dts_version}-gcc-c++ +BuildRequires: devtoolset-%{dts_version}-libatomic-devel +%endif + +%if 0%{?use_llvm_ts} BuildRequires: llvm-toolset-%{llvm_version} -BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel BuildRequires: llvm-toolset-%{llvm_version}-clang BuildRequires: llvm-toolset-%{llvm_version}-clang-devel +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %endif - -%if 0%{?rhel} > 7 -BuildRequires: pipewire-devel -%endif - -%if !0%{?use_bundled_cbindgen} -BuildRequires: cbindgen +%if 0%{?use_rust_ts} +BuildRequires: rust-toolset-%{rust_version} %endif -BuildRequires: nasm >= 1.13 -BuildRequires: libappstream-glib -%if 0%{?big_endian} -BuildRequires: icu -%endif # Bundled nss/nspr requirement %if 0%{?bundle_nss} +BuildRequires: gawk +BuildRequires: gcc-c++ BuildRequires: nss-softokn -BuildRequires: sqlite-devel -BuildRequires: zlib-devel +BuildRequires: perl-interpreter BuildRequires: pkgconfig -BuildRequires: gawk BuildRequires: psmisc -BuildRequires: perl-interpreter -BuildRequires: gcc-c++ +BuildRequires: sqlite-devel BuildRequires: xmlto +BuildRequires: zlib-devel %endif -# Don't require any OpenPGP backend with the librnp interface, because RHEL does not have it -#Requires: thunderbird-librnp%{?_isa} -# prefer the librnp implementation bundled with thunderbird -#Not in RHEL7 Suggests: thunderbird-librnp-rnp%{?_isa} -Requires: p11-kit-trust -Requires: pciutils-libs -%if %{?system_nss} -%if !0%{?bundle_nss} -Requires: nspr >= %{nspr_build_version} -Requires: nss >= %{nss_build_version} -%endif +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 +BuildRequires: gcc-toolset-12-gcc-plugin-annobin + %endif %endif -BuildRequires: python3-devel -BuildRequires: python3-setuptools -BuildRequires: desktop-file-utils -%if %{?system_ffi} -BuildRequires: pkgconfig(libffi) +%if %{?use_openssl_for_librnp} +BuildRequires: pkgconfig(openssl) %endif -%if 0%{?use_xvfb} -BuildRequires: xorg-x11-server-Xvfb -%endif -%if %{build_with_asan} -BuildRequires: libasan -BuildRequires: libasan-static -%endif -BuildRequires: perl-interpreter -#BuildRequires: fdk-aac-free-devel not on rhel8 -%if 0%{?test_on_wayland} -BuildRequires: mutter -BuildRequires: gsettings-desktop-schemas -BuildRequires: gnome-settings-daemon -BuildRequires: mesa-dri-drivers -BuildRequires: xorg-x11-server-Xwayland -BuildRequires: dbus-x11 -BuildRequires: gnome-keyring -%endif -%if 0%{?run_firefox_tests} -BuildRequires: procps-ng -BuildRequires: nss-tools -BuildRequires: dejavu-sans-mono-fonts -BuildRequires: dejavu-sans-fonts -BuildRequires: dejavu-serif-fonts -BuildRequires: dbus-x11 -BuildRequires: gnome-keyring -BuildRequires: mesa-dri-drivers -# ---------------------------------------- -BuildRequires: liberation-fonts-common -BuildRequires: liberation-mono-fonts -BuildRequires: liberation-sans-fonts -BuildRequires: liberation-serif-fonts -# ---------------------------------- -# Missing on f32 -%if 0%{?fedora} > 33 -BuildRequires: google-carlito-fonts -%endif -BuildRequires: google-droid-sans-fonts -BuildRequires: google-noto-fonts-common -BuildRequires: google-noto-cjk-fonts-common -BuildRequires: google-noto-sans-cjk-ttc-fonts -BuildRequires: google-noto-sans-gurmukhi-fonts -BuildRequires: google-noto-sans-fonts -BuildRequires: google-noto-emoji-color-fonts -BuildRequires: google-noto-sans-sinhala-vf-fonts -# ----------------------------------- -BuildRequires: thai-scalable-fonts-common -BuildRequires: thai-scalable-waree-fonts -BuildRequires: khmeros-base-fonts -BuildRequires: jomolhari-fonts -# ---------------------------------- -BuildRequires: lohit-tamil-fonts -BuildRequires: lohit-telugu-fonts -# ---------------------------------- -BuildRequires: paktype-naskh-basic-fonts -# faild to build in Koji / f32 -%if 0%{?fedora} > 33 -BuildRequires: pt-sans-fonts -%endif -BuildRequires: smc-meera-fonts -BuildRequires: stix-fonts -BuildRequires: abattis-cantarell-fonts -BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi -BuildRequires: xorg-x11-fonts-misc +Requires: p11-kit-trust +Requires: pciutils-libs + +%if %{?system_nss} && !0%{?bundle_nss} +Requires: nspr >= %{nspr_version} +Requires: nss >= %{nss_version} %endif -BuildRequires: make -BuildRequires: pciutils-libs Obsoletes: mozilla <= 37:1.7.13 Provides: webclient -%if 0%{?rhel} == 8 && %{rhel8_minor_version} < 6 -%ifarch aarch64 -BuildRequires: gcc-toolset-12-annobin-plugin-gcc -%endif -%endif - # Bundled libraries +#Provides: bundled(libjxl) it's used only on nightly builds Provides: bundled(angle) +Provides: bundled(aom) Provides: bundled(audioipc-2) +Provides: bundled(bergamot-translator) Provides: bundled(brotli) Provides: bundled(bzip2) Provides: bundled(cairo) Provides: bundled(cfworker) +Provides: bundled(cld2) +Provides: bundled(cubeb) Provides: bundled(d3.js) Provides: bundled(double-conversion) Provides: bundled(expat) +Provides: bundled(fastText) +Provides: bundled(fathom) Provides: bundled(fdlibm) Provides: bundled(ffvpx) Provides: bundled(freetype2) +Provides: bundled(function2) +Provides: bundled(gemmology) Provides: bundled(graphite2) Provides: bundled(harfbuzz) Provides: bundled(highway) +Provides: bundled(hunspell) Provides: bundled(intgemm) -Provides: bundled(json-c) +Provides: bundled(irregexp) +Provides: bundled(jpeg-xl) Provides: bundled(kissfft) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) -Provides: bundled(libgcrypt) -Provides: bundled(libgpg-error) +Provides: bundled(libdrm) +Provides: bundled(libepoxy) +Provides: bundled(libgbm) Provides: bundled(libjpeg) -Provides: bundled(libjxl) -Provides: bundled(libjxl) Provides: bundled(libmar) Provides: bundled(libmkv) Provides: bundled(libnestegg) Provides: bundled(libogg) Provides: bundled(libopus) -Provides: bundled(libotr) Provides: bundled(libpng) Provides: bundled(libprio) Provides: bundled(libsoundtouch) @@ -528,145 +398,555 @@ Provides: bundled(libvpx) Provides: bundled(libwebp) Provides: bundled(libwebrtc) Provides: bundled(libyuv) +Provides: bundled(lit) Provides: bundled(mp4parse-rust) -Provides: bundled(mp4parse-rust) -Provides: bundled(msgpack-c) Provides: bundled(msgpack-c) Provides: bundled(mtransport) -Provides: bundled(niwcompat) +Provides: bundled(nestegg) +Provides: bundled(nICEr) +Provides: bundled(nimbus) Provides: bundled(openmax_dl) Provides: bundled(openmax_il) -Provides: bundled(openmax_il) Provides: bundled(ots) +Provides: bundled(pdf.js) +Provides: bundled(picosha2) +Provides: bundled(PKI) Provides: bundled(qcms) +Provides: bundled(rlbox) Provides: bundled(rlbox_sandboxing_api) Provides: bundled(rnp) Provides: bundled(sfntly) Provides: bundled(sipcc) Provides: bundled(skia) +Provides: bundled(soundtouch) Provides: bundled(sqlite3) Provides: bundled(thebes) +Provides: bundled(theora) +Provides: bundled(usrsctp) +Provides: bundled(wabt) Provides: bundled(wasm2c) Provides: bundled(WebRender) +Provides: bundled(wgpu) Provides: bundled(woff2) +Provides: bundled(xsimd) Provides: bundled(xz-embedded) Provides: bundled(ycbcr) Provides: bundled(zlib) +# Thunderbird third party libraries +Provides: bundled(ANS1.js) +Provides: bundled(bzip2) +Provides: bundled(json-c) +Provides: bundled(libgcrypt) +Provides: bundled(libgpg-error) +Provides: bundled(libotr) + %if 0%{?bundle_nss} -Provides: bundled(nss) = 3.79.0 -Provides: bundled(nspr) = 4.34.0 -%endif +Provides: bundled(nss) = %{nss_version} +Provides: bundled(nspr) = %{nspr_version} +%endif + +# Rust third parties: +# List obtained by `get_rust_bundled_provides.sh build.log` script:: +Provides: bundled(crate(aa-stroke)) = 0.1.0 +Provides: bundled(crate(adler)) = 1.0.2 +Provides: bundled(crate(ahash)) = 0.7.6 +Provides: bundled(crate(aho-corasick)) = 0.7.20 +Provides: bundled(crate(alsa)) = 0.7.0 +Provides: bundled(crate(alsa-sys)) = 0.3.1 +Provides: bundled(crate(anyhow)) = 1.0.69 +Provides: bundled(crate(app_services_logger)) = 0.1.0 +Provides: bundled(crate(app_units)) = 0.7.2 +Provides: bundled(crate(arrayref)) = 0.3.6 +Provides: bundled(crate(arrayvec)) = 0.7.2 +Provides: bundled(crate(ash)) = 0.37.2+1.3.238 +Provides: bundled(crate(askama)) = 0.11.1 +Provides: bundled(crate(askama_derive)) = 0.11.2 +Provides: bundled(crate(askama_escape)) = 0.10.3 +Provides: bundled(crate(askama_shared)) = 0.12.2 +Provides: bundled(crate(async-task)) = 4.3.0 +Provides: bundled(crate(async-trait)) = 0.1.64 +Provides: bundled(crate(atomic_refcell)) = 0.1.9 +Provides: bundled(crate(audioipc2)) = 0.5.0 +Provides: bundled(crate(audioipc2-client)) = 0.5.0 +Provides: bundled(crate(audioipc2-server)) = 0.5.0 +Provides: bundled(crate(audio_thread_priority)) = 0.26.1 +Provides: bundled(crate(authenticator)) = 0.4.0-alpha.15 +Provides: bundled(crate(authrs_bridge)) = 0.1.0 +Provides: bundled(crate(autocfg)) = 1.1.0 +Provides: bundled(crate(base64)) = 0.13.999 +Provides: bundled(crate(base64)) = 0.21.0 +Provides: bundled(crate(bhttp)) = 0.3.1 +Provides: bundled(crate(binary_http)) = 0.1.0 +Provides: bundled(crate(bincode)) = 1.3.3 +Provides: bundled(crate(bindgen)) = 0.63.999 +Provides: bundled(crate(bindgen)) = 0.64.0 +Provides: bundled(crate(bitflags)) = 1.3.2 +Provides: bundled(crate(bitflags)) = 2.999.999 +Provides: bundled(crate(bitreader)) = 0.3.6 +Provides: bundled(crate(bit-set)) = 0.5.3 +Provides: bundled(crate(bit-vec)) = 0.6.3 +Provides: bundled(crate(block-buffer)) = 0.10.3 +Provides: bundled(crate(bookmark_sync)) = 0.1.0 +Provides: bundled(crate(build-parallel)) = 0.1.2 +Provides: bundled(crate(builtins-static)) = 0.1.0 +Provides: bundled(crate(byteorder)) = 1.4.3 +Provides: bundled(crate(bytes)) = 1.4.0 +Provides: bundled(crate(cache-padded)) = 1.2.0 +Provides: bundled(crate(camino)) = 1.1.2 +Provides: bundled(crate(cargo_metadata)) = 0.15.3 +Provides: bundled(crate(cargo-platform)) = 0.1.2 +Provides: bundled(crate(cascade_bloom_filter)) = 0.1.0 +Provides: bundled(crate(cc)) = 1.0.73 +Provides: bundled(crate(cert_storage)) = 0.0.1 +Provides: bundled(crate(cexpr)) = 0.6.0 +Provides: bundled(crate(cfg-if)) = 0.1.999 +Provides: bundled(crate(cfg-if)) = 1.0.0 +Provides: bundled(crate(chardetng)) = 0.1.9 +Provides: bundled(crate(chardetng_c)) = 0.1.2 +Provides: bundled(crate(chrono)) = 0.4.19 +Provides: bundled(crate(chunky-vec)) = 0.1.0 +Provides: bundled(crate(clang-sys)) = 1.6.0 +Provides: bundled(crate(cmake)) = 0.1.999 +Provides: bundled(crate(codespan-reporting)) = 0.11.1 +Provides: bundled(crate(cose)) = 0.1.4 +Provides: bundled(crate(cose-c)) = 0.1.5 +Provides: bundled(crate(cpufeatures)) = 0.2.5 +Provides: bundled(crate(crc32fast)) = 1.3.2 +Provides: bundled(crate(crossbeam-channel)) = 0.5.6 +Provides: bundled(crate(crossbeam-deque)) = 0.8.2 +Provides: bundled(crate(crossbeam-epoch)) = 0.9.14 +Provides: bundled(crate(crossbeam-queue)) = 0.3.8 +Provides: bundled(crate(crossbeam-utils)) = 0.8.14 +Provides: bundled(crate(crypto-common)) = 0.1.6 +Provides: bundled(crate(crypto_hash)) = 0.1.0 +Provides: bundled(crate(cssparser)) = 0.31.0 +Provides: bundled(crate(cssparser-macros)) = 0.6.0 +Provides: bundled(crate(cstr)) = 0.2.11 +Provides: bundled(crate(cty)) = 0.2.2 +Provides: bundled(crate(cubeb)) = 0.10.3 +Provides: bundled(crate(cubeb-backend)) = 0.10.3 +Provides: bundled(crate(cubeb-core)) = 0.10.3 +Provides: bundled(crate(cubeb-pulse)) = 0.4.1 +Provides: bundled(crate(cubeb-sys)) = 0.10.3 +Provides: bundled(crate(dap_ffi)) = 0.1.0 +Provides: bundled(crate(darling)) = 0.13.99 +Provides: bundled(crate(darling)) = 0.14.3 +Provides: bundled(crate(darling_core)) = 0.14.3 +Provides: bundled(crate(darling_macro)) = 0.14.3 +Provides: bundled(crate(data-encoding)) = 2.3.3 +Provides: bundled(crate(data-encoding-ffi)) = 0.1.0 +Provides: bundled(crate(dbus)) = 0.6.5 +Provides: bundled(crate(derive_common)) = 0.0.1 +Provides: bundled(crate(derive_more)) = 0.99.17 +Provides: bundled(crate(digest)) = 0.10.6 +Provides: bundled(crate(dirs)) = 4.0.0 +Provides: bundled(crate(dirs-sys)) = 0.3.7 +Provides: bundled(crate(displaydoc)) = 0.2.3 +Provides: bundled(crate(dns-parser)) = 0.8.0 +Provides: bundled(crate(dogear)) = 0.5.0 +Provides: bundled(crate(dom)) = 0.1.0 +Provides: bundled(crate(dtoa)) = 0.4.8 +Provides: bundled(crate(dtoa-short)) = 0.3.3 +Provides: bundled(crate(either)) = 1.8.1 +Provides: bundled(crate(encoding_c)) = 0.9.8 +Provides: bundled(crate(encoding_c_mem)) = 0.2.6 +Provides: bundled(crate(encoding_glue)) = 0.1.0 +Provides: bundled(crate(encoding_rs)) = 0.8.32 +Provides: bundled(crate(enumset)) = 1.0.12 +Provides: bundled(crate(enumset_derive)) = 0.6.1 +Provides: bundled(crate(env_logger)) = 0.10.0 +Provides: bundled(crate(env_logger)) = 0.9.999 +Provides: bundled(crate(error-chain)) = 0.12.4 +Provides: bundled(crate(error-support)) = 0.1.0 +Provides: bundled(crate(error-support-macros)) = 0.1.0 +Provides: bundled(crate(etagere)) = 0.2.7 +Provides: bundled(crate(euclid)) = 0.22.7 +Provides: bundled(crate(fallible_collections)) = 0.4.6 +Provides: bundled(crate(fallible-iterator)) = 0.2.0 +Provides: bundled(crate(fallible-streaming-iterator)) = 0.1.9 +Provides: bundled(crate(fastrand)) = 1.9.0 +Provides: bundled(crate(ffi-support)) = 0.4.4 +Provides: bundled(crate(firefox-on-glean)) = 0.1.0 +Provides: bundled(crate(flate2)) = 1.0.25 +Provides: bundled(crate(fluent)) = 0.16.0 +Provides: bundled(crate(fluent-bundle)) = 0.15.2 +Provides: bundled(crate(fluent-fallback)) = 0.7.0 +Provides: bundled(crate(fluent-ffi)) = 0.1.0 +Provides: bundled(crate(fluent-langneg)) = 0.13.0 +Provides: bundled(crate(fluent-langneg-ffi)) = 0.1.0 +Provides: bundled(crate(fluent-pseudo)) = 0.3.1 +Provides: bundled(crate(fluent-syntax)) = 0.11.0 +Provides: bundled(crate(fnv)) = 1.0.7 +Provides: bundled(crate(fog_control)) = 0.1.0 +Provides: bundled(crate(freetype)) = 0.7.0 +Provides: bundled(crate(fs-err)) = 2.9.0 +Provides: bundled(crate(futures)) = 0.3.26 +Provides: bundled(crate(futures-channel)) = 0.3.26 +Provides: bundled(crate(futures-core)) = 0.3.26 +Provides: bundled(crate(futures-executor)) = 0.3.26 +Provides: bundled(crate(futures-io)) = 0.3.26 +Provides: bundled(crate(futures-macro)) = 0.3.26 +Provides: bundled(crate(futures-sink)) = 0.3.26 +Provides: bundled(crate(futures-task)) = 0.3.26 +Provides: bundled(crate(futures-util)) = 0.3.26 +Provides: bundled(crate(fxhash)) = 0.2.1 +Provides: bundled(crate(gecko_logger)) = 0.1.0 +Provides: bundled(crate(gecko-profiler)) = 0.1.0 +Provides: bundled(crate(geckoservo)) = 0.0.1 +Provides: bundled(crate(generic-array)) = 0.14.6 +Provides: bundled(crate(getrandom)) = 0.2.9 +Provides: bundled(crate(gkrust)) = 0.1.0 +Provides: bundled(crate(gkrust-shared)) = 0.1.0 +Provides: bundled(crate(gkrust_utils)) = 0.1.0 +Provides: bundled(crate(gleam)) = 0.15.0 +Provides: bundled(crate(glean)) = 52.7.0 +Provides: bundled(crate(glean-core)) = 52.7.0 +Provides: bundled(crate(gl_generator)) = 0.14.0 +Provides: bundled(crate(glob)) = 0.3.1 +Provides: bundled(crate(glsl)) = 6.0.2 +Provides: bundled(crate(glslopt)) = 0.1.9 +Provides: bundled(crate(glsl-to-cxx)) = 0.1.0 +Provides: bundled(crate(goblin)) = 0.6.0 +Provides: bundled(crate(golden_gate)) = 0.1.0 +Provides: bundled(crate(gpu-alloc)) = 0.5.3 +Provides: bundled(crate(gpu-alloc-types)) = 0.2.0 +Provides: bundled(crate(gpu-descriptor)) = 0.2.3 +Provides: bundled(crate(gpu-descriptor-types)) = 0.1.1 +Provides: bundled(crate(half)) = 1.8.2 +Provides: bundled(crate(hashbrown)) = 0.12.3 +Provides: bundled(crate(hashlink)) = 0.8.1 +Provides: bundled(crate(heck)) = 0.4.1 +Provides: bundled(crate(hex)) = 0.4.3 +Provides: bundled(crate(hexf-parse)) = 0.2.1 +Provides: bundled(crate(http_sfv)) = 0.1.0 +Provides: bundled(crate(id-arena)) = 2.2.1 +Provides: bundled(crate(ident_case)) = 1.0.1 +Provides: bundled(crate(idna)) = 0.2.3 +Provides: bundled(crate(indexmap)) = 1.9.2 +Provides: bundled(crate(inherent)) = 1.0.4 +Provides: bundled(crate(instant)) = 0.1.12 +Provides: bundled(crate(interrupt-support)) = 0.1.0 +Provides: bundled(crate(intl-memoizer)) = 0.5.1 +Provides: bundled(crate(intl_pluralrules)) = 7.0.2 +Provides: bundled(crate(iovec)) = 0.1.4 +Provides: bundled(crate(ipcclientcerts-static)) = 0.1.0 +Provides: bundled(crate(itertools)) = 0.10.5 +Provides: bundled(crate(itoa)) = 1.0.5 +Provides: bundled(crate(jobserver)) = 0.1.25 +Provides: bundled(crate(jog)) = 0.1.0 +Provides: bundled(crate(jsrust)) = 0.1.0 +Provides: bundled(crate(jsrust_shared)) = 0.1.0 +Provides: bundled(crate(khronos_api)) = 3.1.0 +Provides: bundled(crate(kvstore)) = 0.1.0 +Provides: bundled(crate(l10nregistry)) = 0.3.0 +Provides: bundled(crate(l10nregistry-ffi)) = 0.1.0 +Provides: bundled(crate(lazycell)) = 1.3.0 +Provides: bundled(crate(lazy_static)) = 1.4.0 +Provides: bundled(crate(leb128)) = 0.2.5 +Provides: bundled(crate(libc)) = 0.2.139 +Provides: bundled(crate(libdbus-sys)) = 0.2.2 +Provides: bundled(crate(libloading)) = 0.7.4 +Provides: bundled(crate(libsqlite3-sys)) = 0.25.2 +Provides: bundled(crate(libudev)) = 0.2.0 +Provides: bundled(crate(libudev-sys)) = 0.1.3 +Provides: bundled(crate(lmdb-rkv)) = 0.14.0 +Provides: bundled(crate(lmdb-rkv-sys)) = 0.11.2 +Provides: bundled(crate(localization-ffi)) = 0.1.0 +Provides: bundled(crate(lock_api)) = 0.4.9 +Provides: bundled(crate(log)) = 0.4.17 +Provides: bundled(crate(malloc_size_of)) = 0.0.1 +Provides: bundled(crate(malloc_size_of_derive)) = 0.1.2 +Provides: bundled(crate(mapped_hyph)) = 0.4.3 +Provides: bundled(crate(matches)) = 0.1.10 +Provides: bundled(crate(md-5)) = 0.10.5 +Provides: bundled(crate(mdns_service)) = 0.1.1 +Provides: bundled(crate(memalloc)) = 0.1.0 +Provides: bundled(crate(memchr)) = 2.5.0 +Provides: bundled(crate(memmap2)) = 0.5.9 +Provides: bundled(crate(memoffset)) = 0.8.0 +Provides: bundled(crate(midir)) = 0.7.0 +Provides: bundled(crate(midir_impl)) = 0.1.0 +Provides: bundled(crate(mime)) = 0.3.16 +Provides: bundled(crate(mime_guess)) = 2.0.4 +Provides: bundled(crate(mime-guess-ffi)) = 0.1.0 +Provides: bundled(crate(minimal-lexical)) = 0.2.1 +Provides: bundled(crate(miniz_oxide)) = 0.6.2 +Provides: bundled(crate(mio)) = 0.8.0 +Provides: bundled(crate(moz_asserts)) = 0.1.0 +Provides: bundled(crate(mozbuild)) = 0.1.0 +Provides: bundled(crate(moz_cbor)) = 0.1.2 +Provides: bundled(crate(mozglue-static)) = 0.1.0 +Provides: bundled(crate(mozilla-central-workspace-hack)) = 0.1.0 +Provides: bundled(crate(moz_task)) = 0.1.0 +Provides: bundled(crate(mozurl)) = 0.0.1 +Provides: bundled(crate(mp4parse)) = 0.17.0 +Provides: bundled(crate(mp4parse_capi)) = 0.17.0 +Provides: bundled(crate(murmurhash3)) = 0.0.5 +Provides: bundled(crate(naga)) = 0.12.0 +Provides: bundled(crate(neqo-common)) = 0.6.4 +Provides: bundled(crate(neqo-crypto)) = 0.6.4 +Provides: bundled(crate(neqo_glue)) = 0.1.0 +Provides: bundled(crate(neqo-http3)) = 0.6.4 +Provides: bundled(crate(neqo-qpack)) = 0.6.4 +Provides: bundled(crate(neqo-transport)) = 0.6.4 +Provides: bundled(crate(netwerk_helper)) = 0.0.1 +Provides: bundled(crate(new_debug_unreachable)) = 1.0.4 +Provides: bundled(crate(nix)) = 0.24.99 +Provides: bundled(crate(nix)) = 0.26.2 +Provides: bundled(crate(nom)) = 7.1.3 +Provides: bundled(crate(nserror)) = 0.1.0 +Provides: bundled(crate(nss_build_common)) = 0.1.0 +Provides: bundled(crate(nss-gk-api)) = 0.2.1 +Provides: bundled(crate(nsstring)) = 0.1.0 +Provides: bundled(crate(num_cpus)) = 1.15.0 +Provides: bundled(crate(num-derive)) = 0.3.3 +Provides: bundled(crate(num-integer)) = 0.1.45 +Provides: bundled(crate(num-traits)) = 0.2.15 +Provides: bundled(crate(object)) = 0.30.3 +Provides: bundled(crate(oblivious_http)) = 0.1.0 +Provides: bundled(crate(ohttp)) = 0.3.1 +Provides: bundled(crate(once_cell)) = 1.17.1 +Provides: bundled(crate(ordered-float)) = 3.4.0 +Provides: bundled(crate(origin-trials-ffi)) = 0.1.0 +Provides: bundled(crate(origin-trial-token)) = 0.1.1 +Provides: bundled(crate(owning_ref)) = 0.4.1 +Provides: bundled(crate(parking_lot)) = 0.11.2 +Provides: bundled(crate(parking_lot)) = 0.12.999 +Provides: bundled(crate(parking_lot_core)) = 0.8.6 +Provides: bundled(crate(paste)) = 1.0.11 +Provides: bundled(crate(peeking_take_while)) = 0.1.2 +Provides: bundled(crate(peek-poke)) = 0.3.0 +Provides: bundled(crate(peek-poke-derive)) = 0.3.0 +Provides: bundled(crate(percent-encoding)) = 2.2.0 +Provides: bundled(crate(phf)) = 0.10.1 +Provides: bundled(crate(phf_codegen)) = 0.10.0 +Provides: bundled(crate(phf_generator)) = 0.10.0 +Provides: bundled(crate(phf_macros)) = 0.10.0 +Provides: bundled(crate(phf_shared)) = 0.10.0 +Provides: bundled(crate(pin-project-lite)) = 0.2.9 +Provides: bundled(crate(pin-utils)) = 0.1.0 +Provides: bundled(crate(pkcs11-bindings)) = 0.1.5 +Provides: bundled(crate(pkg-config)) = 0.3.26 +Provides: bundled(crate(plain)) = 0.2.3 +Provides: bundled(crate(plane-split)) = 0.18.0 +Provides: bundled(crate(ppv-lite86)) = 0.2.17 +Provides: bundled(crate(precomputed-hash)) = 0.1.1 +Provides: bundled(crate(prefs_parser)) = 0.0.1 +Provides: bundled(crate(prio)) = 0.9.1 +Provides: bundled(crate(processtools)) = 0.1.0 +Provides: bundled(crate(proc-macro2)) = 1.0.51 +Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated +Provides: bundled(crate(profiler_helper)) = 0.1.0 +Provides: bundled(crate(profiler-macros)) = 0.1.0 +Provides: bundled(crate(profiling)) = 1.0.7 +Provides: bundled(crate(prost)) = 0.8.0 +Provides: bundled(crate(prost-derive)) = 0.8.0 +Provides: bundled(crate(pulse)) = 0.3.0 +Provides: bundled(crate(pulse-ffi)) = 0.1.0 +Provides: bundled(crate(qcms)) = 0.2.0 +Provides: bundled(crate(qlog)) = 0.4.0 +Provides: bundled(crate(quick-error)) = 1.2.3 +Provides: bundled(crate(quote)) = 1.0.23 +Provides: bundled(crate(rand)) = 0.8.5 +Provides: bundled(crate(rand_chacha)) = 0.3.1 +Provides: bundled(crate(rand_core)) = 0.6.4 +Provides: bundled(crate(raw-window-handle)) = 0.5.0 +Provides: bundled(crate(rayon)) = 1.6.1 +Provides: bundled(crate(rayon-core)) = 1.10.2 +Provides: bundled(crate(regex)) = 1.7.1 +Provides: bundled(crate(regex-syntax)) = 0.6.28 +Provides: bundled(crate(remove_dir_all)) = 0.5.3 +Provides: bundled(crate(replace_with)) = 0.1.7 +Provides: bundled(crate(ringbuf)) = 0.2.8 +Provides: bundled(crate(rkv)) = 0.18.4 +Provides: bundled(crate(ron)) = 0.8.0 +Provides: bundled(crate(rsclientcerts)) = 0.1.0 +Provides: bundled(crate(rsdparsa_capi)) = 0.1.0 +Provides: bundled(crate(runloop)) = 0.1.0 +Provides: bundled(crate(rure)) = 0.2.2 +Provides: bundled(crate(rusqlite)) = 0.28.0 +Provides: bundled(crate(rust_cascade)) = 1.5.0 +Provides: bundled(crate(rustc-demangle)) = 0.1.21 +Provides: bundled(crate(rustc-hash)) = 1.1.0 +Provides: bundled(crate(rustc_version)) = 0.4.0 +Provides: bundled(crate(rust_decimal)) = 1.28.1 +Provides: bundled(crate(ryu)) = 1.0.12 +Provides: bundled(crate(same-file)) = 1.0.6 +Provides: bundled(crate(scopeguard)) = 1.1.0 +Provides: bundled(crate(scroll)) = 0.11.0 +Provides: bundled(crate(scroll_derive)) = 0.11.0 +Provides: bundled(crate(selectors)) = 0.22.0 +Provides: bundled(crate(self_cell)) = 0.10.2 +Provides: bundled(crate(semver)) = 1.0.16 +Provides: bundled(crate(serde)) = 1.0.152 +Provides: bundled(crate(serde_bytes)) = 0.11.9 +Provides: bundled(crate(serde_cbor)) = 0.11.2 +Provides: bundled(crate(serde_derive)) = 1.0.152 +Provides: bundled(crate(serde_json)) = 1.0.93 +Provides: bundled(crate(serde_with)) = 1.14.0 +Provides: bundled(crate(serde_with_macros)) = 1.5.2 +Provides: bundled(crate(servo_arc)) = 0.1.1 +Provides: bundled(crate(sfv)) = 0.9.3 +Provides: bundled(crate(sha1)) = 0.10.5 +Provides: bundled(crate(sha2)) = 0.10.6 +Provides: bundled(crate(shlex)) = 1.1.0 +Provides: bundled(crate(siphasher)) = 0.3.10 +Provides: bundled(crate(slab)) = 0.4.8 +Provides: bundled(crate(smallbitvec)) = 2.5.1 +Provides: bundled(crate(smallvec)) = 1.10.0 +Provides: bundled(crate(socket2)) = 0.4.7 +Provides: bundled(crate(spirv)) = 0.2.0+1.5.4 +Provides: bundled(crate(sql-support)) = 0.1.0 +Provides: bundled(crate(stable_deref_trait)) = 1.2.0 +Provides: bundled(crate(static_assertions)) = 1.1.0 +Provides: bundled(crate(static_prefs)) = 0.1.0 +Provides: bundled(crate(storage)) = 0.1.0 +Provides: bundled(crate(storage_variant)) = 0.1.0 +Provides: bundled(crate(strsim)) = 0.10.0 +Provides: bundled(crate(style)) = 0.0.1 +Provides: bundled(crate(style_derive)) = 0.0.1 +Provides: bundled(crate(style_traits)) = 0.0.1 +Provides: bundled(crate(svg_fmt)) = 0.4.1 +Provides: bundled(crate(swgl)) = 0.1.0 +Provides: bundled(crate(syn)) = 1.0.107 +Provides: bundled(crate(sync15)) = 0.1.0 +Provides: bundled(crate(sync-guid)) = 0.1.0 +Provides: bundled(crate(synstructure)) = 0.12.6 +Provides: bundled(crate(tabs)) = 0.1.0 +Provides: bundled(crate(tempfile)) = 3.3.0 +Provides: bundled(crate(termcolor)) = 1.2.0 +Provides: bundled(crate(thin-vec)) = 0.2.12 +Provides: bundled(crate(thiserror)) = 1.0.38 +Provides: bundled(crate(thiserror-impl)) = 1.0.38 +Provides: bundled(crate(threadbound)) = 0.1.5 +Provides: bundled(crate(time)) = 0.1.45 +Provides: bundled(crate(tinystr)) = 0.7.1 +Provides: bundled(crate(tinyvec)) = 1.999.999 +Provides: bundled(crate(toml)) = 0.5.11 +Provides: bundled(crate(topological-sort)) = 0.1.0 +Provides: bundled(crate(to_shmem)) = 0.0.1 +Provides: bundled(crate(to_shmem_derive)) = 0.0.1 +Provides: bundled(crate(tracy-rs)) = 0.1.2 +Provides: bundled(crate(typed-arena-nomut)) = 0.1.0 +Provides: bundled(crate(type-map)) = 0.4.0 +Provides: bundled(crate(typenum)) = 1.16.0 +Provides: bundled(crate(uluru)) = 3.0.0 +Provides: bundled(crate(unicase)) = 2.6.0 +Provides: bundled(crate(unic-langid)) = 0.9.1 +Provides: bundled(crate(unic-langid-ffi)) = 0.1.0 +Provides: bundled(crate(unic-langid-impl)) = 0.9.1 +Provides: bundled(crate(unicode-bidi)) = 0.3.8 +Provides: bundled(crate(unicode-ident)) = 1.0.6 +Provides: bundled(crate(unicode-normalization)) = 0.1.22 +Provides: bundled(crate(unicode-segmentation)) = 1.10.0 +Provides: bundled(crate(unicode-width)) = 0.1.10 +Provides: bundled(crate(unicode-xid)) = 0.2.4 +Provides: bundled(crate(uniffi)) = 0.23.0 +Provides: bundled(crate(uniffi_bindgen)) = 0.23.0 +Provides: bundled(crate(uniffi_build)) = 0.23.0 +Provides: bundled(crate(uniffi_checksum_derive)) = 0.23.0 +Provides: bundled(crate(uniffi_core)) = 0.23.0 +Provides: bundled(crate(uniffi_macros)) = 0.23.0 +Provides: bundled(crate(uniffi_meta)) = 0.23.0 +Provides: bundled(crate(uniffi_testing)) = 0.23.0 +Provides: bundled(crate(url)) = 2.1.0 +Provides: bundled(crate(uuid)) = 1.3.0 +Provides: bundled(crate(vcpkg)) = 0.2.999 +Provides: bundled(crate(version_check)) = 0.9.4 +Provides: bundled(crate(viaduct)) = 0.1.0 +Provides: bundled(crate(void)) = 1.0.2 +Provides: bundled(crate(walkdir)) = 2.3.2 +Provides: bundled(crate(wasm-encoder)) = 0.25.0 +Provides: bundled(crate(wast)) = 56.0.0 +Provides: bundled(crate(webext-storage)) = 0.1.0 +Provides: bundled(crate(webext_storage_bridge)) = 0.1.0 +Provides: bundled(crate(webrender)) = 0.62.0 +Provides: bundled(crate(webrender_api)) = 0.62.0 +Provides: bundled(crate(webrender_bindings)) = 0.1.0 +Provides: bundled(crate(webrender_build)) = 0.0.2 +Provides: bundled(crate(webrtc-sdp)) = 0.3.10 +Provides: bundled(crate(weedle2)) = 4.0.0 +Provides: bundled(crate(wgpu_bindings)) = 0.1.0 +Provides: bundled(crate(wgpu-core)) = 0.16.0 +Provides: bundled(crate(wgpu-hal)) = 0.16.0 +Provides: bundled(crate(wgpu-types)) = 0.16.0 +Provides: bundled(crate(whatsys)) = 0.3.1 +Provides: bundled(crate(wpf-gpu-raster)) = 0.1.0 +Provides: bundled(crate(wr_glyph_rasterizer)) = 0.1.0 +Provides: bundled(crate(wr_malloc_size_of)) = 0.0.2 +Provides: bundled(crate(xmldecl)) = 0.2.0 +Provides: bundled(crate(xml-rs)) = 0.8.4 +Provides: bundled(crate(xpcom)) = 0.1.0 +Provides: bundled(crate(xpcom_macros)) = 0.1.0 +Provides: bundled(crate(zeitstempel)) = 0.1.1 + %description Mozilla Thunderbird is a standalone mail and newsgroup client. -#%package librnp-rnp -#Summary: OpenPGP implementation for Thunderbird based on RNP -#Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -#Provides: thunderbird-librnp -#Provides: thunderbird-librnp%{?_isa} -#Conflicts: thunderbird-librnp%{?_isa} -#%description librnp-rnp -#The thunderbird-librnp-rnp package contains an OpenPGP implementation -#based on RNP. -#%files librnp-rnp -#%{mozappdir}/librnp.so -#%{mozappdir}/rnp-cli -#%{mozappdir}/rnpkeys - %prep echo "Build environment" +echo "--------------------------------------------" echo "dist %{?dist}" -echo "RHEL 8 minor version: %{?rhel8_minor_version}" -echo "RHEL 9 minor version: %{?rhel9_minor_version}" -echo "use_bundled_ffi %{?use_bundled_ffi}" +echo "RHEL 8 minor version: %{?rhel_minor_version}" echo "bundle_nss %{?bundle_nss}" echo "system_nss %{?system_nss}" -echo "use_rustts %{?use_rustts}" +echo "use_rust_ts %{?use_rust_ts}" +echo "use_dts %{?use_dts}" +echo "use_nodejs_scl %{?use_nodejs_scl}" +echo "use_llvm_ts %{?use_llvm_ts}" +echo "use_python3_scl %{?use_python3_scl}" +echo "--------------------------------------------" %setup -q -# Build patches -%ifarch s390 -%patch25 -p1 -b .rhbz-1219542-s390 -%endif -%patch40 -p1 -b .aarch64-skia -%if 0%{?disable_elfhack} -%patch41 -p1 -b .disable-elfhack -%endif -%patch3 -p1 -b .arm -%patch44 -p1 -b .build-arm-libopus -%patch47 -p1 -b .fedora-shebang -%patch49 -p1 -b .build-arm-libaom -%patch53 -p1 -b .firefox-gcc-build -%patch54 -p1 -b .1669639 -%patch71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12 -%patch72 -p1 -b .build-remove-dav1d-from-wayland-dep - -%patch75 -p1 -b .build-big-endian-errors -%patch76 -p1 -b .firefox-nss-version -#ppc64le build failure because of webrtc -%patch77 -p1 -b .mozilla-1775202 - -%patch73 -p1 -b .build-ascii-decode-fail-rhel7 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} >= 9) -# Also c8s/rhel-8.9.0 has only node 10.24.0, this is build-only. -%patch78 -p1 -b .build-rhel7-lower-node-min-version -%endif - -# Test patches - -# Fedora patches -%patch215 -p1 -b .addons -%patch219 -p1 -b .rhbz-1173156 -%patch224 -p1 -b .1170092 -#ARM run-time patch -%ifarch aarch64 -%patch226 -p1 -b .1354671 -%endif -%patch228 -p1 -b .disable-openh264-download -%patch229 -p1 -b .firefox-nss-addon-hack - -%patch415 -p1 -b .1670333 -%patch416 -p1 -b .mozilla-bmo1005535 -%patch417 -p1 -b .mozilla-bmo1504834-part1 -%patch418 -p1 -b .mozilla-bmo1504834-part3 -%patch419 -p1 -b .mozilla-bmo849632 -%patch420 -p1 -b .mozilla-bmo998749 -%patch421 -p1 -b .mozilla-s390-context -%patch422 -p1 -b .mozilla-s390x-skia-gradient -%patch423 -p1 -b .one_swizzle_to_rule_them_all -%patch424 -p1 -b .svg-rendering -%patch425 -p1 -b .D158770.diff - -%if !%{?use_openssl_for_librnp} -%patch230 -p1 -b .disable-openpgp-in-thunderbird -%endif - -# PGO patches -%if %{build_with_pgo} -%if !%{build_with_clang} -%patch600 -p1 -b .pgo -%patch602 -p1 -b .1516803 -%endif -%endif - +# ---- RHEL specific patches --- +# -- Downstream only -- +%patch -P1 -p1 -b .disable-elfhack +%patch -P2 -p1 -b .firefox-gcc-build +%patch -P3 -p1 -b .build-big-endian-errors %if 0%{?rhel} == 7 +%patch -P5 -p1 -b .build-rhel7-lower-node-min-version + %ifarch ppc64 + # abiv2 version not available in RHEL7 ppc + # TODO most likely not needed with system nss +%patch -P6 -p1 -b .ppc64-abiv2 + %endif %ifarch %{ix86} -# -F dwarf not available in RHEL7's nasm -%patch1008 -p1 -b .build-rhel7-nasm-dwarf + # -F dwarf not available in RHEL7's nasm +%patch -P7 -p1 -b .build-rhel7-nasm-dwarf %endif %endif - - +%patch -P8 -p1 -b .build-rnp-openssl +%if !%{?use_openssl_for_librnp} +%patch -P9 -p1 -b .disable-openpgp-in-thunderbird +%endif + +# -- Upstreamed patches -- +%patch -P51 -p1 -b .mozilla-bmo1170092 + +# -- Submitted upstream, not merged -- +%patch -P101 -p1 -b .mozilla-bmo1670333 +%patch -P102 -p1 -b .mozilla-bmo1504834-part1 +%patch -P103 -p1 -b .mozilla-bmo1504834-part3 +%patch -P104 -p1 -b .mozilla-bmo849632 +%patch -P105 -p1 -b .mozilla-bmo998749 +%patch -P106 -p1 -b .mozilla-bmo1716707-swizzle +%patch -P107 -p1 -b .mozilla-bmo1716707-svg +%patch -P108 -p1 -b .mozilla-bmo1789216-disable-av1 + +# ---- Fedora specific patches ---- +%patch -P151 -p1 -b .addons +%patch -P152 -p1 -b .rhbz-1173156 +%patch -P154 -p1 -b .addons-nss-hack +# ARM run-time patch +%ifarch aarch64 +%patch -P155 -p1 -b .rhbz-1354671 +%endif %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig -echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig -%if %{official_branding} -echo "ac_add_options --enable-official-branding" >> .mozconfig -%endif %{__cp} %{SOURCE24} mozilla-api-key %{__cp} %{SOURCE27} google-api-key %{__cp} %{SOURCE35} google-loc-api-key @@ -682,14 +962,6 @@ echo "ac_add_options --without-system-nspr" >> .mozconfig echo "ac_add_options --without-system-nss" >> .mozconfig %endif -%if %{?system_ffi} -echo "ac_add_options --enable-system-ffi" >> .mozconfig -%endif - -%ifarch %{arm} -echo "ac_add_options --disable-elf-hack" >> .mozconfig -%endif - %if %{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig echo "ac_add_options --disable-optimize" >> .mozconfig @@ -709,47 +981,22 @@ echo 'ac_add_options --enable-optimize' >> .mozconfig echo "ac_add_options --disable-debug" >> .mozconfig %endif -# Second arches fail to start with jemalloc enabled -%ifnarch %{ix86} x86_64 -echo "ac_add_options --disable-jemalloc" >> .mozconfig -%endif - -%if 0%{?build_tests} -echo "ac_add_options --enable-tests" >> .mozconfig -%else -echo "ac_add_options --disable-tests" >> .mozconfig -%endif - -%if !%{?system_jpeg} -echo "ac_add_options --without-system-jpeg" >> .mozconfig -%else -echo "ac_add_options --with-system-jpeg" >> .mozconfig -%endif - %if %{?system_libvpx} echo "ac_add_options --with-system-libvpx" >> .mozconfig %else echo "ac_add_options --without-system-libvpx" >> .mozconfig %endif -%ifarch s390 s390x +%ifarch s390x echo "ac_add_options --disable-jit" >> .mozconfig %endif -%if %{build_with_asan} -echo "ac_add_options --enable-address-sanitizer" >> .mozconfig -echo "ac_add_options --disable-jemalloc" >> .mozconfig -%endif - -%if !%{enable_mozilla_crashreporter} -echo "ac_add_options --disable-crashreporter" >> .mozconfig -%endif %if %{?use_openssl_for_librnp} echo "ac_add_options --with-librnp-backend=openssl" >> .mozconfig %endif # AV1 requires newer nasm that was rebased in 8.4 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} < 4) +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} < 4) echo "ac_add_options --disable-av1" >> .mozconfig %endif @@ -767,8 +1014,10 @@ find third_party -type f -iname "*.rs"|xargs chmod a-x #=============================================================================== %build +# TODO: causes SIGSEGV on the webrender compilation, we might remove it with newer rust version # Disable LTO to work around rhbz#1883904 %define _lto_cflags %{nil} + export PATH="%{_buildrootdir}/bin:$PATH" # Cleanup buildroot for existing rpms from bundled nss/nspr and other packages rm -rf %{_buildrootdir}/* @@ -792,9 +1041,9 @@ function install_rpms_to_current_dir() { rpm2cpio "$package" | cpio -idu done } + %if 0%{?bundle_nss} rpm -ivh %{SOURCE402} - #rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec pushd %{_buildrootdir} install_rpms_to_current_dir nspr-4*.rpm @@ -816,7 +1065,11 @@ function install_rpms_to_current_dir() { export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH echo $PKG_CONFIG_PATH +%if 0%{?rhel} == 8 rpm -ivh %{SOURCE403} +%else + rpm -ivh %{SOURCE404} +%endif rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nss.spec pushd %{_buildrootdir} #cleanup @@ -840,24 +1093,28 @@ function install_rpms_to_current_dir() { find %{_buildrootdir} %endif +# Enable toolsets set +e -%if 0%{?rhel} == 8 && %{rhel8_minor_version} < 6 -%ifarch aarch64 +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 source scl_source enable gcc-toolset-12 -%endif + %endif %endif %if 0%{?use_dts} source scl_source enable devtoolset-%{dts_version} %endif -%if 0%{?use_rustts} +%if 0%{?use_rust_ts} source scl_source enable rust-toolset-%{rust_version} %endif -%if 0%{?use_nodejsts} +%if 0%{?use_nodejs_scl} source scl_source enable rh-nodejs10 %endif -%if 0%{?use_llvmts} +%if 0%{?use_llvm_ts} source scl_source enable llvm-toolset-%{llvm_version} %endif +%if 0%{?use_python3_scl} +source scl_source enable rh-python38 +%endif set -e env @@ -867,7 +1124,8 @@ which g++ which ld which nasm which node -%if 0%{?use_bundled_cbindgen} +which python3 +# Bundled cbindgen mkdir -p my_rust_vendor cd my_rust_vendor %{__tar} xf %{SOURCE2} @@ -887,7 +1145,8 @@ EOL env CARGO_HOME=.cargo cargo install cbindgen export PATH=`pwd`/.cargo/bin:$PATH cd - -%endif + +# end of Bundled cbindgen mkdir %{_buildrootdir}/bin || : cp %{SOURCE32} %{_buildrootdir}/bin || : @@ -908,53 +1167,34 @@ MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security # Workaround for mozbz#1531309 MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//') %endif + %if 0%{?fedora} > 30 MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive" %endif -%if %{?hardened_build} + MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" -%endif %if %{?debug_build} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif -%ifarch s390 -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') -# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which -# overrides the -g1 from line above and breaks building on s390/arm -# (OOM when linking, rhbz#1238225) -export MOZ_DEBUG_FLAGS=" " -%endif -%ifarch %{arm} %{ix86} +%ifarch %{ix86} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') export MOZ_DEBUG_FLAGS=" " %endif -%if !%{build_with_clang} -%ifarch s390x ppc aarch64 %{ix86} + +%ifarch s390x aarch64 %{ix86} MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif -%ifarch %{arm} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" -echo "ac_add_options --enable-linker=gold" >> .mozconfig -%endif -%endif + %if 0%{?flatpak} # Make sure the linker can find libraries in /app/lib64 as we don't use # __global_ldflags that normally sets this. MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}" %endif -%ifarch %{arm} %{ix86} %{s390x} +%ifarch %{ix86} %{s390x} export RUSTFLAGS="-Cdebuginfo=0" echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig %endif -#%ifarch aarch64 -#export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc" -#echo 'export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc"' >> .mozconfig -#%endif -%if %{build_with_asan} -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc" -MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl" -%endif %if 0%{?bundle_nss} mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} @@ -969,35 +1209,21 @@ MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT" echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig - -%if %{build_with_clang} -echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig -echo "export AR=\"llvm-ar\"" >> .mozconfig -echo "export NM=\"llvm-nm\"" >> .mozconfig -echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig -echo "ac_add_options --enable-linker=lld" >> .mozconfig -%else echo "export CC=gcc" >> .mozconfig echo "export CXX=g++" >> .mozconfig echo "export AR=\"gcc-ar\"" >> .mozconfig echo "export NM=\"gcc-nm\"" >> .mozconfig echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig -%endif -%if 0%{?build_with_pgo} -echo "ac_add_options MOZ_PGO=1" >> .mozconfig -# PGO build doesn't work with ccache -export CCACHE_DISABLE=1 -%endif MOZ_SMP_FLAGS=-j1 # On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel, # however builds tend to fail on other arches when building in parallel. -#%ifarch %{ix86} s390x %{arm} aarch64 ppc64le +#%ifarch %{ix86} s390x aarch64 ppc64le #[ -z "$RPM_BUILD_NCPUS" ] && \ # RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" #[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 #%endif -#%ifarch x86_64 ppc ppc64 ppc64le +#%ifarch x86_64 ppc64 ppc64le [ -z "$RPM_BUILD_NCPUS" ] && \ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 @@ -1009,7 +1235,11 @@ MOZ_SMP_FLAGS=-j1 echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig echo "export STRIP=/bin/true" >> .mozconfig -#export MACH_USE_SYSTEM_PYTHON=1 + +# We could use %%include, but in %%files, %%post and other sections, but in these +# sections it could lead to syntax errors about unclosed %%if. Work around it by +# using the following macro +%define include_file() %{expand:%(cat '%1')} %if 0%{?bundle_nss} echo "Setting nss flags" @@ -1019,14 +1249,11 @@ echo "export STRIP=/bin/true" >> .mozconfig echo $PKG_CONFIG_PATH %endif - -export MACH_USE_SYSTEM_PYTHON=1 -./mach build -v || exit 1 - +./mach build -v 2>&1 || exit 1 #--------------------------------------------------------------------- %install -export MACH_USE_SYSTEM_PYTHON=1 +export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} @@ -1049,7 +1276,6 @@ function install_rpms_to_current_dir() { %if 0%{?bundle_nss} pushd %{buildroot} - #install_rpms_to_current_dir nss-*.rpm install_rpms_to_current_dir nspr-4*.rpm install_rpms_to_current_dir nss-3*.rpm install_rpms_to_current_dir nss-softokn-3*.rpm @@ -1057,11 +1283,8 @@ function install_rpms_to_current_dir() { install_rpms_to_current_dir nss-util-3*.rpm # cleanup unecessary nss files - #rm -rf %{_buildrootdir}/%{bundled_install_path}/bin - #rm -rf %{_buildrootdir}/%{bundled_install_path}/include rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss - #rm -rf %{_buildrootdir}/%{bundled_install_path}/%{_lib}/pkgconfig rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share rm -rf %{buildroot}/%{bundled_install_path}/share rm -rf %{buildroot}/etc/pki @@ -1072,26 +1295,21 @@ function install_rpms_to_current_dir() { DESTDIR=%{buildroot} make -C objdir install - -# install icons -for s in 16 22 24 32 48 64 128 256; do - %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps - %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png -done - -# Install high contrast icon -%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps -%{__cp} -p %{SOURCE25} \ - %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} # set up the thunderbird start script -rm -f $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__cat} %{SOURCE21} | %{__sed} -e 's,%PREFIX%,%{_prefix},g' > \ - $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__chmod} 755 $RPM_BUILD_ROOT/%{_bindir}/thunderbird +%{__rm} -rf %{buildroot}%{_bindir}/thunderbird +%{__sed} -e 's,__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird +%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird + +%if 0%{?flatpak} +sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/thunderbird +%else +sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird +%endif + # Run firefox under wayland only on RHEL9 and newer %if 0%{?rhel} < 9 sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%|export MOZ_DISABLE_WAYLAND=1|' %{buildroot}%{_bindir}/thunderbird @@ -1108,6 +1326,19 @@ sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/thunderbird %{__rm} $RPM_BUILD_ROOT/rh-default-prefs %{__rm} -f $RPM_BUILD_ROOT%{_bindir}/thunderbird-config +%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini + +# install icons +for s in 16 22 24 32 48 64 128 256; do + %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps + %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png +done + +# Install high contrast icon +%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%{__cp} -p %{SOURCE25} \ + %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps # own mozilla plugin dir (#135050) %{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/mozilla/plugins @@ -1120,10 +1351,8 @@ sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/thunderbird %{__mkdir_p} %{buildroot}%{_sysconfdir}/%{name}/pref # Install langpacks -%{__rm} -f %{name}.lang # Delete for --short-circuit option -touch %{name}.lang - -%if 0%{?build_langpacks} +echo > %{name}.lang +%if %{with langpacks} %{__mkdir_p} %{buildroot}%{langpackdir} %{__tar} xf %{SOURCE1} for langpack in `ls thunderbird-langpacks/*.xpi`; do @@ -1160,12 +1389,6 @@ ln -s $(pkg-config --variable prefix hunspell)/share/%{dictionarydir} $RPM_BUILD touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat -# Add debuginfo for crash-stats.mozilla.com -%if %{enable_mozilla_crashreporter} -%{__mkdir_p} $RPM_BUILD_ROOT/%{moz_debug_dir} -%{__cp} %{objdir}/dist/%{symbols_file_name} $RPM_BUILD_ROOT/%{moz_debug_dir} -%endif - # Removing librnp.so - we cannot deliver librnp with botan crypto backend RHELs %if !%{?use_openssl_for_librnp} %{__rm} -rf %{buildroot}%{mozappdir}/librnp.so %{buildroot}%{mozappdir}/rnp-cli %{buildroot}%{mozappdir}/rnpkeys @@ -1197,6 +1420,7 @@ update-desktop-database &> /dev/null || : if [ $1 -eq 0 ] ; then touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + %{__rm} -rf %{langpackdir} fi %posttrans @@ -1222,7 +1446,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries -%if %{build_langpacks} +%if %{with langpacks} %dir %{langpackdir} %endif %{mozappdir}/greprefs @@ -1242,11 +1466,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/icons/hicolor/64x64/apps/thunderbird.png %{_datadir}/icons/hicolor/128x128/apps/thunderbird.png %{_datadir}/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg -%if %{enable_mozilla_crashreporter} -%{mozappdir}/crashreporter -%{mozappdir}/crashreporter.ini -%{mozappdir}/Throbber-small.gif -%endif %if !%{?system_nss} %{mozappdir}/*.chk %endif @@ -1258,12 +1477,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/rnp-cli %{mozappdir}/rnpkeys %endif +%{mozappdir}/glxtest +%{mozappdir}/vaapitest %if 0%{?bundle_nss} %{mozappdir}/bundled/%{_lib}/libfreebl* -%{mozappdir}/bundled/%{_lib}/libnss3* -%{mozappdir}/bundled/%{_lib}/libnssdbm3* -%{mozappdir}/bundled/%{_lib}/libnssutil3* +%{mozappdir}/bundled/%{_lib}/libnss* %{mozappdir}/bundled/%{_lib}/libsmime3* %{mozappdir}/bundled/%{_lib}/libsoftokn* %{mozappdir}/bundled/%{_lib}/libssl3* @@ -1275,29 +1494,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %changelog -* Wed Sep 13 2023 Eike Rathke - 102.15.1-1 -- Update to 102.15.1 - -* Mon Aug 28 2023 Eike Rathke - 102.15.0-1 -- Update to 102.15.0 build1 - -* Wed Aug 09 2023 Eike Rathke - 102.14.0-3 -- Bump NVR to rebuild - -* Wed Aug 09 2023 Jan Horak - 102.14.0-2 -- Rebuild due to rhbz#2228948 - -* Tue Aug 01 2023 Eike Rathke - 102.14.0-1 -- Update to 102.14.0 build1 - -* Fri Jul 07 2023 Eike Rathke - 102.13.0-2 -- Update to 102.13.0 build2 +* Fri Sep 29 2023 Eike Rathke - 115.3.1-1 +- Update to 115.3.1 build1 -* Wed Jul 05 2023 Eike Rathke - 102.13.0-1 -- Update to 102.13.0 build1 +* Wed Sep 27 2023 Eike Rathke - 115.3.0-1 +- Update to 115.3.0 -* Mon Jun 05 2023 Eike Rathke - 102.12.0-1 -- Update to 102.12.0 build1 +* Fri Sep 8 2023 Jan Horak - 115.2.1-5 +- Update to 115.2.1 * Thu May 04 2023 Eike Rathke - 102.11.0-1 - Update to 102.11.0 build1