From a9a5bc3d57726c924ccea03c27660026243410b5 Mon Sep 17 00:00:00 2001 From: yangxianzhao Date: Fri, 10 Nov 2023 15:19:52 +0800 Subject: [PATCH] update to thunderbird-102.15.1-1 fix build error rebrand to anolis --- 0001-GLIBCXX-fix-for-GCC-12.patch | 44 + D158770.diff | 25 + README.debrand | 2 - build-aarch64-skia.patch | 45 + build-arm-libaom.patch | 12 + build-arm-libopus.patch | 12 + build-ascii-decode-fail-rhel7.patch | 45 + build-disable-elfhack.patch | 20 +- build-ppc64-abiv2.patch | 12 - build-remove-dav1d-from-wayland-dep.patch | 49 + build-rhel7-lower-node-min-version.patch | 8 +- build-tb-rnp-openssl.patch | 12 - disable-openh264-download.patch | 39 + download | 13 +- fedora-shebang-build.patch | 9 + firefox-nss-version.patch | 11 + ...-bmo1170092.patch => mozilla-1170092.patch | 58 +- mozilla-1516803.patch | 15 + mozilla-1669639.patch | 14 + ...-bmo1670333.patch => mozilla-1670333.patch | 41 +- mozilla-1775202.patch | 17 + mozilla-bmo1005535.patch | 30 + mozilla-bmo1504834-part1.patch | 90 +- mozilla-bmo1504834-part3.patch | 57 +- mozilla-bmo1789216-disable-av1.patch | 89 -- mozilla-bmo849632.patch | 19 +- mozilla-build-arm.patch | 14 + mozilla-s390-context.patch | 53 + mozilla-s390x-skia-gradient.patch | 51 + ...atch => one_swizzle_to_rule_them_all.patch | 0 pgo.patch | 115 ++ rhbz-1219542-s390-build.patch | 23 + ...mo1716707-svg.patch => svg-rendering.patch | 0 thunderbird-mozconfig | 38 +- thunderbird.sh.in | 10 +- thunderbird.spec | 1398 +++++++---------- 36 files changed, 1442 insertions(+), 1048 deletions(-) create mode 100644 0001-GLIBCXX-fix-for-GCC-12.patch create mode 100644 D158770.diff delete mode 100644 README.debrand create mode 100644 build-aarch64-skia.patch create mode 100644 build-arm-libaom.patch create mode 100644 build-arm-libopus.patch create mode 100644 build-ascii-decode-fail-rhel7.patch delete mode 100644 build-ppc64-abiv2.patch create mode 100644 build-remove-dav1d-from-wayland-dep.patch delete mode 100644 build-tb-rnp-openssl.patch create mode 100644 disable-openh264-download.patch create mode 100644 fedora-shebang-build.patch create mode 100644 firefox-nss-version.patch rename mozilla-bmo1170092.patch => mozilla-1170092.patch (55%) create mode 100644 mozilla-1516803.patch create mode 100644 mozilla-1669639.patch rename mozilla-bmo1670333.patch => mozilla-1670333.patch (52%) create mode 100644 mozilla-1775202.patch create mode 100644 mozilla-bmo1005535.patch delete mode 100644 mozilla-bmo1789216-disable-av1.patch create mode 100644 mozilla-build-arm.patch create mode 100644 mozilla-s390-context.patch create mode 100644 mozilla-s390x-skia-gradient.patch rename mozilla-bmo1716707-swizzle.patch => one_swizzle_to_rule_them_all.patch (100%) create mode 100644 pgo.patch create mode 100644 rhbz-1219542-s390-build.patch rename mozilla-bmo1716707-svg.patch => svg-rendering.patch (100%) diff --git a/0001-GLIBCXX-fix-for-GCC-12.patch b/0001-GLIBCXX-fix-for-GCC-12.patch new file mode 100644 index 0000000..37d6f50 --- /dev/null +++ b/0001-GLIBCXX-fix-for-GCC-12.patch @@ -0,0 +1,44 @@ +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/D158770.diff b/D158770.diff new file mode 100644 index 0000000..1d76995 --- /dev/null +++ b/D158770.diff @@ -0,0 +1,25 @@ +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/README.debrand b/README.debrand deleted file mode 100644 index 01c46d2..0000000 --- a/README.debrand +++ /dev/null @@ -1,2 +0,0 @@ -Warning: This package was configured for automatic debranding, but the changes -failed to apply. diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch new file mode 100644 index 0000000..a63e3e8 --- /dev/null +++ b/build-aarch64-skia.patch @@ -0,0 +1,45 @@ +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/build-arm-libaom.patch b/build-arm-libaom.patch new file mode 100644 index 0000000..985f01d --- /dev/null +++ b/build-arm-libaom.patch @@ -0,0 +1,12 @@ +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/build-arm-libopus.patch b/build-arm-libopus.patch new file mode 100644 index 0000000..1b3f31b --- /dev/null +++ b/build-arm-libopus.patch @@ -0,0 +1,12 @@ +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/build-ascii-decode-fail-rhel7.patch b/build-ascii-decode-fail-rhel7.patch new file mode 100644 index 0000000..1bc1630 --- /dev/null +++ b/build-ascii-decode-fail-rhel7.patch @@ -0,0 +1,45 @@ +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/build-disable-elfhack.patch b/build-disable-elfhack.patch index 67bb731..04d49f2 100644 --- a/build-disable-elfhack.patch +++ b/build-disable-elfhack.patch @@ -1,12 +1,12 @@ -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 +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", + ) - set_config("USE_ELF_HACK", use_elf_hack) +- set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: True)) ++ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False)) + + @depends(build_environment) diff --git a/build-ppc64-abiv2.patch b/build-ppc64-abiv2.patch deleted file mode 100644 index 7a68390..0000000 --- a/build-ppc64-abiv2.patch +++ /dev/null @@ -1,12 +0,0 @@ -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/build-remove-dav1d-from-wayland-dep.patch b/build-remove-dav1d-from-wayland-dep.patch new file mode 100644 index 0000000..d073acd --- /dev/null +++ b/build-remove-dav1d-from-wayland-dep.patch @@ -0,0 +1,49 @@ +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/build-rhel7-lower-node-min-version.patch b/build-rhel7-lower-node-min-version.patch index 2bb39c8..3dce244 100644 --- a/build-rhel7-lower-node-min-version.patch +++ b/build-rhel7-lower-node-min-version.patch @@ -1,11 +1,11 @@ ---- 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 +--- 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 @@ -13,7 +13,7 @@ from mozboot.util import get_tools_dir from mozfile import which from six import PY3 --NODE_MIN_VERSION = StrictVersion("12.22.12") +-NODE_MIN_VERSION = StrictVersion("10.24.1") +NODE_MIN_VERSION = StrictVersion("10.24.0") - NPM_MIN_VERSION = StrictVersion("6.14.16") + NPM_MIN_VERSION = StrictVersion("6.14.12") diff --git a/build-tb-rnp-openssl.patch b/build-tb-rnp-openssl.patch deleted file mode 100644 index d0d9346..0000000 --- a/build-tb-rnp-openssl.patch +++ /dev/null @@ -1,12 +0,0 @@ -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/disable-openh264-download.patch b/disable-openh264-download.patch new file mode 100644 index 0000000..028b730 --- /dev/null +++ b/disable-openh264-download.patch @@ -0,0 +1,39 @@ +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/download b/download index 3f8e601..76a3f73 100644 --- a/download +++ b/download @@ -1,7 +1,6 @@ -9b999bdcf031e29a4d8ce2b6f17e778e cbindgen-vendor.tar.xz -7b35b9a003996b1f1dbc3cd936a609f2 nspr-4.35.0-1.el8_1.src.rpm -d9c9dd9619daeb43820de97b04bede45 nss-3.90.0-2.el8_1.src.rpm -5c2f6d790957733c5f0d06f8caea3b0d nss-3.90.0-3.el9_0.src.rpm -40f4da60cccbcd0c64bd45589b792313 thunderbird-115.3.1.processed-source.tar.xz -98f64f514116f7cca93ba5976c90000c thunderbird-langpacks-115.3.1-20230929.tar.xz -6611e41665de11dd80b2ff5f1f40ee03 rust-cbindgen.tar.gz +a9f32342fcac2b79f76860ee742d6ff1 cbindgen-vendor.tar.xz +93ecd1396b43a979f0696d281e345991 thunderbird-102.15.1.processed-source.tar.xz +981eb1672d8f897f7ef22cd74ecea96c thunderbird-langpacks-102.15.1-20230913.tar.xz +75157f5e77e1a4f460645a57ff54e552 nspr-4.34.0-3.el8_1.src.rpm +b603172c3f4cbb1d8197328087ca3972 nss-3.79.0-11.el8_1.src.rpm +f5186eae0d0728e2cdcb6c26cd7d658e rust-cbindgen.tar.gz diff --git a/fedora-shebang-build.patch b/fedora-shebang-build.patch new file mode 100644 index 0000000..9ade86c --- /dev/null +++ b/fedora-shebang-build.patch @@ -0,0 +1,9 @@ +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/firefox-nss-version.patch b/firefox-nss-version.patch new file mode 100644 index 0000000..73eafc6 --- /dev/null +++ b/firefox-nss-version.patch @@ -0,0 +1,11 @@ +--- 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/mozilla-bmo1170092.patch b/mozilla-1170092.patch similarity index 55% rename from mozilla-bmo1170092.patch rename to mozilla-1170092.patch index 36d2b00..d4cd582 100644 --- a/mozilla-bmo1170092.patch +++ b/mozilla-1170092.patch @@ -1,7 +1,7 @@ -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 +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 if (NS_FAILED(rv)) return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -23,10 +23,10 @@ diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -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 +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 // // 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-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2 nsresult rv = NS_ERROR_FAILURE; UniquePtr find; -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 @@ +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 @@ #endif #ifdef XP_UNIX # include @@ -47,11 +47,13 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. #endif #ifdef XP_IOS # include "UIKitDirProvider.h" -@@ -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)) { +@@ -552,6 +553,21 @@ nsXREDirProvider::GetFile(const char* aP + } + } + } ++ ++#if defined(XP_UNIX) ++ 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) @@ -60,12 +62,14 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. + appInfo->GetName(appName); + ToLowerCase(appName); + sysConfigDir.Append(appName); -+ 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 ++ 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 } #endif @@ -82,10 +86,10 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. 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-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 @@ +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 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ "PrefDOverride" // Directory for per-profile defaults diff --git a/mozilla-1516803.patch b/mozilla-1516803.patch new file mode 100644 index 0000000..5053e51 --- /dev/null +++ b/mozilla-1516803.patch @@ -0,0 +1,15 @@ +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/mozilla-1669639.patch b/mozilla-1669639.patch new file mode 100644 index 0000000..cd04aab --- /dev/null +++ b/mozilla-1669639.patch @@ -0,0 +1,14 @@ +--- 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/mozilla-bmo1670333.patch b/mozilla-1670333.patch similarity index 52% rename from mozilla-bmo1670333.patch rename to mozilla-1670333.patch index 7126d43..1c5c476 100644 --- a/mozilla-bmo1670333.patch +++ b/mozilla-1670333.patch @@ -1,7 +1,7 @@ -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 +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 DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ __func__, ##__VA_ARGS__) @@ -9,8 +9,8 @@ diff -up firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-115.0/dom/me + namespace mozilla { - using TimeUnit = media::TimeUnit; -@@ -404,6 +406,12 @@ already_AddRefed MP4TrackD + DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer); +@@ -394,6 +396,12 @@ already_AddRefed MP4TrackD [[fallthrough]]; case H264::FrameType::OTHER: { bool keyframe = type == H264::FrameType::I_FRAME; @@ -23,19 +23,19 @@ diff -up firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-115.0/dom/me if (sample->mKeyframe != keyframe) { NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " "@ pts:%" PRId64 " dur:%" PRId64 -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 @@ +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 @@ #include +bool gUseKeyframeFromContainer = false; + - using DecodeSupport = mozilla::media::DecodeSupport; - using DecodeSupportSet = mozilla::media::DecodeSupportSet; - using MediaCodec = mozilla::media::MediaCodec; -@@ -562,7 +564,7 @@ void PDMFactory::CreateRddPDMs() { + namespace mozilla { + + #define PDM_INIT_LOG(msg, ...) \ +@@ -495,7 +497,7 @@ void PDMFactory::CreateRddPDMs() { #ifdef MOZ_FFMPEG if (StaticPrefs::media_ffmpeg_enabled() && StaticPrefs::media_rdd_ffmpeg_enabled() && @@ -44,22 +44,21 @@ diff -up firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-115.0/ mFailureFlags += GetFailureFlagBasedOnFFmpegStatus( FFmpegRuntimeLinker::LinkStatusCode()); } -@@ -738,9 +740,10 @@ void PDMFactory::CreateDefaultPDMs() { +@@ -602,8 +604,9 @@ void PDMFactory::CreateDefaultPDMs() { CreateAndStartupPDM(); - if (StaticPrefs::media_gmp_decoder_enabled() && + if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed && - !StartupPDM(GMPDecoderModule::Create(), - StaticPrefs::media_gmp_decoder_preferred())) { + !CreateAndStartupPDM()) { + gUseKeyframeFromContainer = true; mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup; } } -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 { +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 { RefPtr mNullPDM; DecoderDoctorDiagnostics::FlagsSet mFailureFlags; diff --git a/mozilla-1775202.patch b/mozilla-1775202.patch new file mode 100644 index 0000000..b1748de --- /dev/null +++ b/mozilla-1775202.patch @@ -0,0 +1,17 @@ +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/mozilla-bmo1005535.patch b/mozilla-bmo1005535.patch new file mode 100644 index 0000000..d20d812 --- /dev/null +++ b/mozilla-bmo1005535.patch @@ -0,0 +1,30 @@ +# 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/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch index cc66dd4..1afe3aa 100644 --- a/mozilla-bmo1504834-part1.patch +++ b/mozilla-bmo1504834-part1.patch @@ -1,34 +1,43 @@ # HG changeset patch -# Parent 9fcbd287056a40084b1e679f787bf683b291f323 +# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a 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 -@@ -156,7 +156,8 @@ static IntRect CalculateSurfaceBounds(co +@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co + Rect sampledBounds = inverse.TransformBounds(*aBounds); + if (!sampledBounds.ToIntRect(&bounds)) { + return surfaceBounds; + } + + return surfaceBounds.Intersect(bounds); } - static const int kARGBAlphaOffset = +-static const int kARGBAlphaOffset = - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; -+ 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == -+ // SurfaceFormat::B8G8R8A8 ? 3 : 0; ++static const int kARGBAlphaOffset = 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 -@@ -89,18 +89,11 @@ enum class SurfaceFormat : int8_t { +@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t { + Depth, + // This represents the unknown format. - UNKNOWN, // TODO: Replace uses with Maybe. + UNKNOWN, --// 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() @@ -40,10 +49,20 @@ diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h // The following values are OS and endian-independent synonyms. // -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 @@ + // 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 #include #include #endif @@ -51,21 +70,30 @@ diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/ + #define SKCMS_PORTABLE #endif - static bool runtime_cpu_detection = true; -@@ -324,20 +326,28 @@ enum { + // 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 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 -- return __builtin_bswap16(be); ++#else + #if defined(_MSC_VER) -+ return _byteswap_ushort(be); + return _byteswap_ushort(be); +-#else + #else -+ return __builtin_bswap16(be); + return __builtin_bswap16(be); + #endif #endif } @@ -74,16 +102,20 @@ diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/ 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 -- return __builtin_bswap32(be); ++#else + #if defined(_MSC_VER) -+ return _byteswap_ulong(be); + return _byteswap_ulong(be); +-#else + #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/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch index 9c2ece0..d07702e 100644 --- a/mozilla-bmo1504834-part3.patch +++ b/mozilla-bmo1504834-part3.patch @@ -1,17 +1,64 @@ # HG changeset patch -# Parent 09cd4ac2cc607e85aa572425b824fbab386af607 +# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48 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 -@@ -210,6 +210,8 @@ namespace SK_OPTS_NS { +@@ -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) // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) -+ // 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})) ++ ++ // 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 + d.approxMulDiv255(aa.inv()); }; + while (h --> 0) { + Sk4px::MapDstAlpha(w, dst, mask, fn); + dst += dstRB / sizeof(*dst); + mask += maskRB / sizeof(*mask); + } + } diff --git a/mozilla-bmo1789216-disable-av1.patch b/mozilla-bmo1789216-disable-av1.patch deleted file mode 100644 index ce91a12..0000000 --- a/mozilla-bmo1789216-disable-av1.patch +++ /dev/null @@ -1,89 +0,0 @@ -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/mozilla-bmo849632.patch b/mozilla-bmo849632.patch index 913d6bc..9de64b9 100644 --- a/mozilla-bmo849632.patch +++ b/mozilla-bmo849632.patch @@ -6,11 +6,15 @@ 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 -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 +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) { BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); @@ -24,3 +28,8 @@ Index: firefox-115.0/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/mozilla-build-arm.patch b/mozilla-build-arm.patch new file mode 100644 index 0000000..e390a28 --- /dev/null +++ b/mozilla-build-arm.patch @@ -0,0 +1,14 @@ +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/mozilla-s390-context.patch b/mozilla-s390-context.patch new file mode 100644 index 0000000..34b2357 --- /dev/null +++ b/mozilla-s390-context.patch @@ -0,0 +1,53 @@ +# 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/mozilla-s390x-skia-gradient.patch b/mozilla-s390x-skia-gradient.patch new file mode 100644 index 0000000..a5e5d95 --- /dev/null +++ b/mozilla-s390x-skia-gradient.patch @@ -0,0 +1,51 @@ +# 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/mozilla-bmo1716707-swizzle.patch b/one_swizzle_to_rule_them_all.patch similarity index 100% rename from mozilla-bmo1716707-swizzle.patch rename to one_swizzle_to_rule_them_all.patch diff --git a/pgo.patch b/pgo.patch new file mode 100644 index 0000000..eec103c --- /dev/null +++ b/pgo.patch @@ -0,0 +1,115 @@ +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/rhbz-1219542-s390-build.patch b/rhbz-1219542-s390-build.patch new file mode 100644 index 0000000..f94e43a --- /dev/null +++ b/rhbz-1219542-s390-build.patch @@ -0,0 +1,23 @@ +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/mozilla-bmo1716707-svg.patch b/svg-rendering.patch similarity index 100% rename from mozilla-bmo1716707-svg.patch rename to svg-rendering.patch diff --git a/thunderbird-mozconfig b/thunderbird-mozconfig index c7b2c9e..c8e9d53 100644 --- a/thunderbird-mozconfig +++ b/thunderbird-mozconfig @@ -1,35 +1,31 @@ ac_add_options --enable-application=comm/mail -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 --prefix="$PREFIX" +ac_add_options --libdir="$LIBDIR" +ac_add_options --with-system-zlib 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 --enable-system-ffi -ac_add_options --libdir="$LIBDIR" -ac_add_options --prefix="$PREFIX" +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 --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 --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 +ac_add_options --disable-crashreporter +ac_add_options --enable-official-branding +ac_add_options --disable-bootstrap export BUILD_OFFICIAL=1 export MOZILLA_OFFICIAL=1 diff --git a/thunderbird.sh.in b/thunderbird.sh.in index 88024b3..84ed613 100644 --- a/thunderbird.sh.in +++ b/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/thunderbird.spec b/thunderbird.spec index 786f772..88b0023 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -3,18 +3,14 @@ # Set for local builds only %global disable_toolsets 0 -# Produce debug (non-optimized) package build. Suitable for debugging only -# as the build is *very* slow. -%global debug_build 0 - -%if 0%{?rhel} > 9 +%if 0%{?fedora} > 35 || 0%{?rhel} > 9 %global dictionarydir hunspell %else %global dictionarydir myspell %endif %{lua: -function dist_to_rhel_minor(str, start) +function dist_to_rhel8_minor(str, start) match = string.match(str, ".module%+el8.%d+") if match then return string.sub(match, 13) @@ -27,6 +23,11 @@ function dist_to_rhel_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) @@ -42,93 +43,141 @@ function dist_to_rhel_minor(str, start) return -1 end} -%global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} +%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 -# System libraries options %global system_nss 1 %global bundle_nss 0 +%global build_langpacks 1 -%if 0%{?rhel} == 8 - %if %{rhel_minor_version} <= 6 - %global bundle_nss 1 - %global system_nss 1 - %global _build_id_links none - %endif +# 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} == 9 - %if %{rhel_minor_version} <= 0 + +%if 0%{?rhel} == 8 + %if %{rhel8_minor_version} <= 4 %global bundle_nss 1 %global system_nss 1 - %global _build_id_links none %endif %endif -%global dts_version 10 -%global llvm_version 7.0 -%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 +%global build_with_asan 0 -# 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 +%global use_llvmts 0 +%global use_nodejsts 0 +%if 0%{?rhel} < 8 +%global use_llvmts 1 +%global use_nodejsts 1 +%endif -%global nodejs_build_req nodejs -%if 0%{?rhel} >= 8 - %global use_rust_ts 0 +%global nodejs_rb nodejs +%global llvm_version 7.0 +%if "%{toolchain}" == "clang" +%global build_with_clang 1 +%else +%global build_with_clang 0 %endif -%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 - %ifarch aarch64 -%global use_gcc_ts 1 - %endif +%ifarch armv7hl +%global create_debuginfo 0 %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 + %global use_dts 1 + %global nodejs_rb rh-nodejs10-nodejs + %global llvm_version 11.0 +%endif + +# Temporary disabled due to +# https://bugzilla.redhat.com/show_bug.cgi?id=1951606 +%global enable_mozilla_crashreporter 0 + +%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 +%endif +%if 0%{?flatpak} +%global build_with_pgo 0 %endif %if 0%{?disable_toolsets} +%global use_rustts 0 %global use_dts 0 -%global use_llvm_ts 0 -%global use_nodejs_scl 0 -%global use_rust_ts 0 -%global use_python3_scl 0 +%global use_llvmts 0 +%global use_nodejsts 0 +%global nodejs_rb nodejs %endif -# 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 +# Big endian platforms +%ifarch ppc64 s390x +%global big_endian 1 %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\} -%define mozappdir %{_libdir}/thunderbird %global langpackdir %{mozappdir}/extensions -%define bundled_install_path %{mozappdir}/bundled -##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 +# 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 + +%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')} # Exclude private libraries from autogenerated provides and requires %global __provides_exclude_from ^%{mozappdir} @@ -136,33 +185,35 @@ end} Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 115.3.1 +Version: 102.15.1 Release: 1%{anolis_release}%{?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 %{rhel_minor_version} == 1 + %if %{rhel8_minor_version} == 1 ExcludeArch: %{ix86} aarch64 s390x %else ExcludeArch: %{ix86} %endif %endif %if 0%{?rhel} == 7 -ExcludeArch: s390 ppc +ExcludeArch: s390 ppc %endif -# 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: 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 %{with langpacks} -Source1: thunderbird-langpacks-%{version}-20230929.tar.xz +%if %{build_langpacks} +Source1: thunderbird-langpacks-%{version}-20230913.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball @@ -175,220 +226,300 @@ 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.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 -Source405: rust-cbindgen.tar.gz - -# ---- 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} +Source402: nspr-4.34.0-3.el8_1.src.rpm +Source404: rust-cbindgen.tar.gz + + +# 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} 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: bzip2-devel -BuildRequires: dbus-glib-devel -BuildRequires: desktop-file-utils -BuildRequires: libappstream-glib +BuildRequires: pkgconfig(libpng) +%if %{?system_jpeg} 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) +%endif +BuildRequires: zip +BuildRequires: bzip2-devel +BuildRequires: pkgconfig(zlib) 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(xrender) +BuildRequires: pkgconfig(freetype2) >= %{freetype_version} BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(zlib) -BuildRequires: zip +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) +%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: clang-devel >= %{llvm_version} -BuildRequires: clang >= %{llvm_version} -BuildRequires: llvm-devel >= %{llvm_version} +BuildRequires: rust >= %{rust_version} BuildRequires: llvm >= %{llvm_version} - %if 0%{?disable_toolsets} == 0 -BuildRequires: python38-devel -BuildRequires: python38-setuptools - %endif +BuildRequires: llvm-devel >= %{llvm_version} +BuildRequires: clang >= %{llvm_version} +BuildRequires: clang-devel >= %{llvm_version} BuildRequires: rustfmt >= %{rust_version} -BuildRequires: rust >= %{rust_version} -%endif - -%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_dts} -BuildRequires: devtoolset-%{dts_version}-gcc -BuildRequires: devtoolset-%{dts_version}-gcc-c++ -BuildRequires: devtoolset-%{dts_version}-libatomic-devel +%if 0%{?use_rustts} +#BuildRequires: rust-toolset-%{rust_version} %endif -%if 0%{?use_llvm_ts} +%if 0%{?use_llvmts} 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%{?use_rust_ts} -#BuildRequires: rust-toolset-%{rust_version} + +%if 0%{?rhel} > 7 +BuildRequires: pipewire-devel +%endif + +%if !0%{?use_bundled_cbindgen} +BuildRequires: cbindgen %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: perl-interpreter +BuildRequires: sqlite-devel +BuildRequires: zlib-devel BuildRequires: pkgconfig +BuildRequires: gawk BuildRequires: psmisc -BuildRequires: sqlite-devel +BuildRequires: perl-interpreter +BuildRequires: gcc-c++ BuildRequires: xmlto -BuildRequires: zlib-devel %endif -%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 - %ifarch aarch64 -BuildRequires: gcc-toolset-12-gcc-plugin-annobin - %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 %{?use_openssl_for_librnp} -BuildRequires: pkgconfig(openssl) %endif +BuildRequires: python3-devel +BuildRequires: python3-setuptools -Requires: p11-kit-trust -Requires: pciutils-libs +BuildRequires: desktop-file-utils +%if %{?system_ffi} +BuildRequires: pkgconfig(libffi) +%endif -%if %{?system_nss} && !0%{?bundle_nss} -Requires: nspr >= %{nspr_version} -Requires: nss >= %{nss_version} +%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 %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(irregexp) -Provides: bundled(jpeg-xl) +Provides: bundled(json-c) Provides: bundled(kissfft) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) -Provides: bundled(libdrm) -Provides: bundled(libepoxy) -Provides: bundled(libgbm) +Provides: bundled(libgcrypt) +Provides: bundled(libgpg-error) 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) @@ -401,555 +532,145 @@ 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(nestegg) -Provides: bundled(nICEr) -Provides: bundled(nimbus) +Provides: bundled(niwcompat) 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) = %{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 - +Provides: bundled(nss) = 3.79.0 +Provides: bundled(nspr) = 4.34.0 +%endif %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: %{?rhel_minor_version}" +echo "RHEL 8 minor version: %{?rhel8_minor_version}" +echo "RHEL 9 minor version: %{?rhel9_minor_version}" +echo "use_bundled_ffi %{?use_bundled_ffi}" echo "bundle_nss %{?bundle_nss}" echo "system_nss %{?system_nss}" -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 "--------------------------------------------" +echo "use_rustts %{?use_rustts}" %setup -q -# ---- 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 +# 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 + %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 -%patch -P7 -p1 -b .build-rhel7-nasm-dwarf +# -F dwarf not available in RHEL7's nasm +%patch1008 -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 @@ -965,6 +686,14 @@ 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 @@ -984,22 +713,47 @@ 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 s390x +%ifarch s390 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 && %{rhel_minor_version} < 4) +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} < 4) echo "ac_add_options --disable-av1" >> .mozconfig %endif @@ -1017,10 +771,8 @@ 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}/* @@ -1044,9 +796,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 @@ -1068,11 +820,7 @@ 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 @@ -1096,28 +844,24 @@ function install_rpms_to_current_dir() { find %{_buildrootdir} %endif -# Enable toolsets set +e -%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 - %ifarch aarch64 +%if 0%{?rhel} == 8 && %{rhel8_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_rust_ts} +%if 0%{?use_rustts} source scl_source enable rust-toolset-%{rust_version} %endif -%if 0%{?use_nodejs_scl} +%if 0%{?use_nodejsts} source scl_source enable rh-nodejs10 %endif -%if 0%{?use_llvm_ts} +%if 0%{?use_llvmts} source scl_source enable llvm-toolset-%{llvm_version} %endif -%if 0%{?use_python3_scl} -source scl_source enable rh-python38 -%endif set -e env @@ -1127,15 +871,14 @@ which g++ which ld which nasm which node -which python3 -# Bundled cbindgen +%if 0%{?use_bundled_cbindgen} mkdir -p my_rust_vendor cd my_rust_vendor %{__tar} xf %{SOURCE2} cd .. mkdir rust-cbindgen cd rust-cbindgen -%{__tar} xf %{SOURCE405} +%{__tar} xf %{SOURCE404} mkdir -p %{_buildrootdir}/cargo export CACHE_DIR=%{_buildrootdir}/cargo CARGO_HOME=$CACHE_DIR RUSTUP_HOME=$CACHE_DIR @@ -1163,8 +906,7 @@ EOL #env CARGO_HOME=.cargo cargo install cbindgen #export PATH=`pwd`/.cargo/bin:$PATH cd - - -# end of Bundled cbindgen +%endif mkdir %{_buildrootdir}/bin || : cp %{SOURCE32} %{_buildrootdir}/bin || : @@ -1185,34 +927,53 @@ 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 %{ix86} +%ifarch %{arm} %{ix86} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') export MOZ_DEBUG_FLAGS=" " %endif - -%ifarch s390x aarch64 %{ix86} +%if !%{build_with_clang} +%ifarch s390x ppc 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 %{ix86} %{s390x} +%ifarch %{arm} %{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} @@ -1227,21 +988,35 @@ 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 aarch64 ppc64le +#%ifarch %{ix86} s390x %{arm} 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 ppc64 ppc64le +#%ifarch x86_64 ppc ppc64 ppc64le [ -z "$RPM_BUILD_NCPUS" ] && \ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 @@ -1253,11 +1028,7 @@ 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 - -# 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')} +#export MACH_USE_SYSTEM_PYTHON=1 %if 0%{?bundle_nss} echo "Setting nss flags" @@ -1267,11 +1038,14 @@ echo "export STRIP=/bin/true" >> .mozconfig echo $PKG_CONFIG_PATH %endif -./mach build -v 2>&1 || exit 1 + +export MACH_USE_SYSTEM_PYTHON=1 +./mach build -v || exit 1 + #--------------------------------------------------------------------- %install -export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system +export MACH_USE_SYSTEM_PYTHON=1 function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} @@ -1294,6 +1068,7 @@ 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 @@ -1301,8 +1076,11 @@ 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 @@ -1313,21 +1091,26 @@ function install_rpms_to_current_dir() { DESTDIR=%{buildroot} make -C objdir install -%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} -desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} +# 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 -# set up the thunderbird start script -%{__rm} -rf %{buildroot}%{_bindir}/thunderbird -%{__sed} -e 's,__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird -%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird +# Install high contrast icon +%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%{__cp} -p %{SOURCE25} \ + %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps -%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 +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 # 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 @@ -1344,19 +1127,6 @@ 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 @@ -1369,8 +1139,10 @@ done %{__mkdir_p} %{buildroot}%{_sysconfdir}/%{name}/pref # Install langpacks -echo > %{name}.lang -%if %{with langpacks} +%{__rm} -f %{name}.lang # Delete for --short-circuit option +touch %{name}.lang + +%if 0%{?build_langpacks} %{__mkdir_p} %{buildroot}%{langpackdir} %{__tar} xf %{SOURCE1} for langpack in `ls thunderbird-langpacks/*.xpi`; do @@ -1407,6 +1179,12 @@ 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 @@ -1438,7 +1216,6 @@ 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 @@ -1464,7 +1241,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries -%if %{with langpacks} +%if %{build_langpacks} %dir %{langpackdir} %endif %{mozappdir}/greprefs @@ -1484,6 +1261,11 @@ 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 @@ -1495,12 +1277,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}/libnss* +%{mozappdir}/bundled/%{_lib}/libnss3* +%{mozappdir}/bundled/%{_lib}/libnssdbm3* +%{mozappdir}/bundled/%{_lib}/libnssutil3* %{mozappdir}/bundled/%{_lib}/libsmime3* %{mozappdir}/bundled/%{_lib}/libsoftokn* %{mozappdir}/bundled/%{_lib}/libssl3* @@ -1512,18 +1294,36 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %changelog -* Wed Oct 11 2023 yangxianzhao - 115.3.1-1.0.1 -- rebrand to anolis +* Fri Nov 10 2023 yangxianzhao - 102.15.1-1.0.1 +- rebuild for anolis - fix build error -* Fri Sep 29 2023 Eike Rathke - 115.3.1-1 -- Update to 115.3.1 build1 +* Mon Sep 18 2023 CentOS Sources - 102.15.1-1.el7.centos +- rebrand default prefs + +* 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 -* Wed Sep 27 2023 Eike Rathke - 115.3.0-1 -- Update to 115.3.0 +* Wed Jul 05 2023 Eike Rathke - 102.13.0-1 +- Update to 102.13.0 build1 -* Fri Sep 8 2023 Jan Horak - 115.2.1-5 -- Update to 115.2.1 +* Mon Jun 05 2023 Eike Rathke - 102.12.0-1 +- Update to 102.12.0 build1 * Thu May 04 2023 Eike Rathke - 102.11.0-1 - Update to 102.11.0 build1 -- Gitee