# 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 %global dictionarydir hunspell %else %global dictionarydir myspell %endif %{lua: function dist_to_rhel_minor(str, start) match = string.match(str, ".module%+el8.%d+") if match then return string.sub(match, 13) end match = string.match(str, ".el8_%d+") if match then return string.sub(match, 6) end match = string.match(str, ".el8") if match then return 9 end match = string.match(str, ".module%+el9.%d+") if match then return string.sub(match, 13) end match = string.match(str, ".el9_%d+") if match then return string.sub(match, 6) end match = string.match(str, ".el9") if match then return 3 end return -1 end} %global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} # System libraries options %global system_nss 1 %global bundle_nss 0 %if 0%{?rhel} == 8 %if %{rhel_minor_version} <= 6 %global bundle_nss 1 %global system_nss 1 %global _build_id_links none %endif %endif %if 0%{?rhel} == 9 %if %{rhel_minor_version} <= 0 %global bundle_nss 1 %global system_nss 1 %global _build_id_links none %endif %endif %global 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 # 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 nodejs_build_req nodejs %if 0%{?rhel} >= 8 %global use_rust_ts 0 %endif %if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 %ifarch aarch64 %global use_gcc_ts 1 %endif %endif %if 0%{?rhel} == 7 %global use_dts 1 %global use_llvm_ts 1 %global use_nodejs_scl 1 %global nodejs_build_req rh-nodejs10-nodejs %global llvm_version 11.0 %global use_python3_scl 1 %endif %if 0%{?disable_toolsets} %global use_dts 0 %global use_llvm_ts 0 %global use_nodejs_scl 0 %global use_rust_ts 0 %global use_python3_scl 0 %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 %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 # Exclude private libraries from autogenerated provides and requires %global __provides_exclude_from ^%{mozappdir} %global __requires_exclude ^(%%(find %{buildroot}%{mozappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -)) Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird Version: 115.4.1 Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ %if 0%{?rhel} == 9 ExcludeArch: %{ix86} %endif %if 0%{?rhel} == 8 # Started to ship on aarch64 in RHEL 8.2, on s390x in RHEL 8.3 %if %{rhel_minor_version} == 1 ExcludeArch: %{ix86} s390x aarch64 %else %if %{rhel_minor_version} == 2 ExcludeArch: %{ix86} s390x %else ExcludeArch: %{ix86} %endif %endif %endif %if 0%{?rhel} == 7 ExcludeArch: aarch64 s390 ppc ppc64 %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: thunderbird-%{version}%{?pre_version}%{?buildnum}.processed-source.tar.xz %if %{with langpacks} Source1: thunderbird-langpacks-%{version}-20231025.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball Source10: thunderbird-mozconfig Source12: thunderbird-redhat-default-prefs.js Source20: thunderbird.desktop Source21: thunderbird.sh.in Source24: mozilla-api-key Source25: thunderbird-symbolic.svg Source27: google-api-key Source32: node-stdout-nonblocking-wrapper Source35: google-loc-api-key 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 # ---- 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 # ---- Security patches ---- Patch301: CVE-2023-44488-libvpx.patch # BUILD REQURES/REQUIRES %if %{?system_nss} && !0%{?bundle_nss} BuildRequires: pkgconfig(nspr) >= %{nspr_version} BuildRequires: pkgconfig(nspr) < %{nspr_version_max} BuildRequires: pkgconfig(nss) >= %{nss_version} BuildRequires: pkgconfig(nss) < %{nss_version_max} BuildRequires: nss-static >= %{nss_version} BuildRequires: nss-static < %{nss_version_max} %endif %if %{?system_libvpx} BuildRequires: libvpx-devel >= 1.8.2 %endif BuildRequires: bzip2-devel BuildRequires: dbus-glib-devel BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: libjpeg-devel BuildRequires: libstdc++-devel BuildRequires: libstdc++-static BuildRequires: m4 BuildRequires: make BuildRequires: nasm >= 1.13 BuildRequires: %{nodejs_build_req} >= 10.21 BuildRequires: pciutils-libs BuildRequires: perl-interpreter BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(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(xt) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(zlib) BuildRequires: zip %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: llvm >= %{llvm_version} %if 0%{?disable_toolsets} == 0 BuildRequires: python38-devel BuildRequires: python38-setuptools %endif BuildRequires: rustfmt >= %{rust_version} BuildRequires: rust >= %{rust_version} %endif %if 0%{?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 %endif %if 0%{?use_llvm_ts} BuildRequires: llvm-toolset-%{llvm_version} 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} %endif # Bundled nss/nspr requirement %if 0%{?bundle_nss} BuildRequires: gawk BuildRequires: gcc-c++ BuildRequires: nss-softokn BuildRequires: perl-interpreter BuildRequires: pkgconfig BuildRequires: psmisc BuildRequires: sqlite-devel BuildRequires: xmlto BuildRequires: zlib-devel %endif %if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 %ifarch aarch64 BuildRequires: gcc-toolset-12-gcc-plugin-annobin %endif %endif %if %{?use_openssl_for_librnp} BuildRequires: pkgconfig(openssl) %endif Requires: p11-kit-trust Requires: pciutils-libs %if %{?system_nss} && !0%{?bundle_nss} Requires: nspr >= %{nspr_version} Requires: nss >= %{nss_version} %endif Obsoletes: mozilla <= 37:1.7.13 Provides: webclient # 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(kissfft) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) Provides: bundled(libdrm) Provides: bundled(libepoxy) Provides: bundled(libgbm) Provides: bundled(libjpeg) Provides: bundled(libmar) Provides: bundled(libmkv) Provides: bundled(libnestegg) Provides: bundled(libogg) Provides: bundled(libopus) Provides: bundled(libpng) Provides: bundled(libprio) Provides: bundled(libsoundtouch) Provides: bundled(libspeex_resampler) Provides: bundled(libsrtp) Provides: bundled(libtheora) Provides: bundled(libtremor) Provides: bundled(libvorbis) Provides: bundled(libvpx) Provides: bundled(libwebp) Provides: bundled(libwebrtc) Provides: bundled(libyuv) Provides: bundled(lit) Provides: bundled(mp4parse-rust) Provides: bundled(msgpack-c) Provides: bundled(mtransport) Provides: bundled(nestegg) Provides: bundled(nICEr) Provides: bundled(nimbus) Provides: bundled(openmax_dl) 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 %description Mozilla Thunderbird is a standalone mail and newsgroup client. %prep echo "Build environment" echo "--------------------------------------------" echo "dist %{?dist}" echo "RHEL minor version: %{?rhel_minor_version}" 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 "--------------------------------------------" %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 %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 %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 # ---- Security patches ---- cd media/libvpx/libvpx %patch -P301 -p1 -b .CVE-2023-44488-libvpx cd - %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig %{__cp} %{SOURCE24} mozilla-api-key %{__cp} %{SOURCE27} google-api-key %{__cp} %{SOURCE35} google-loc-api-key echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig %if %{?system_nss} echo "ac_add_options --with-system-nspr" >> .mozconfig echo "ac_add_options --with-system-nss" >> .mozconfig %else echo "ac_add_options --without-system-nspr" >> .mozconfig echo "ac_add_options --without-system-nss" >> .mozconfig %endif %if %{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig echo "ac_add_options --disable-optimize" >> .mozconfig %else %global optimize_flags "none" %ifarch s390x %global optimize_flags "-g -O1" %endif %ifarch ppc64le aarch64 %global optimize_flags "-g -O2" %endif %if %{optimize_flags} != "none" echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig %else echo 'ac_add_options --enable-optimize' >> .mozconfig %endif echo "ac_add_options --disable-debug" >> .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 echo "ac_add_options --disable-jit" >> .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) echo "ac_add_options --disable-av1" >> .mozconfig %endif # api keys full path echo "ac_add_options --with-mozilla-api-keyfile=`pwd`/mozilla-api-key" >> .mozconfig # It seems that the api key we have is for the safe browsing only echo "ac_add_options --with-google-location-service-api-keyfile=`pwd`/google-loc-api-key" >> .mozconfig echo "ac_add_options --with-google-safebrowsing-api-keyfile=`pwd`/google-api-key" >> .mozconfig # May result in empty --with-libclang-path= in earlier versions. # So far this is needed only for c8s. %if 0%{?rhel} == 8 && %{rhel_minor_version} >= 10 # Clang 17 upstream's detection fails, tell it where to look. echo "ac_add_options --with-libclang-path=`llvm-config --libdir`" >> .mozconfig %endif echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig # Remove executable bit to make brp-mangle-shebangs happy. 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}/* function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then # Hack for tps tests ARCH_STR=%{_arch} %ifarch %{ix86} ARCH_STR="i?86" %endif PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" fi for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM) do echo "$package" 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 pushd %{_buildrootdir} install_rpms_to_current_dir nspr-4*.rpm install_rpms_to_current_dir nspr-devel*.rpm popd echo "Setting nspr flags" # nss-setup-flags-env.inc sed -i 's@%{bundled_install_path}@%{_buildrootdir}%{bundled_install_path}@g' %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nspr*.pc cat %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nspr*.pc export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS" export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig pkg-config --libs-only-L nspr pkg-config --libs nspr export PATH="%{_buildrootdir}%{bundled_install_path}/bin:$PATH" 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 install_rpms_to_current_dir nss-3*.rpm install_rpms_to_current_dir nss-devel*.rpm install_rpms_to_current_dir nss-pkcs11-devel*.rpm install_rpms_to_current_dir nss-softokn-3*.rpm install_rpms_to_current_dir nss-softokn-devel*.rpm install_rpms_to_current_dir nss-softokn-freebl-3*.rpm install_rpms_to_current_dir nss-softokn-freebl-devel*.rpm install_rpms_to_current_dir nss-util-3*.rpm install_rpms_to_current_dir nss-util-devel*.rpm popd %filter_provides_in %{bundled_install_path}/%{_lib} %filter_requires_in %{bundled_install_path}/%{_lib} %filter_from_requires /libnss3.so.*/d %filter_from_requires /libsmime3.so.*/d %filter_from_requires /libssl3.so.*/d %filter_from_requires /libnssutil3.so.*/d %filter_from_requires /libnspr4.so.*/d find %{_buildrootdir} %endif # Enable toolsets set +e %if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 %ifarch aarch64 source scl_source enable gcc-toolset-12 %endif %endif %if 0%{?use_dts} source scl_source enable devtoolset-%{dts_version} %endif %if 0%{?use_rust_ts} source scl_source enable rust-toolset-%{rust_version} %endif %if 0%{?use_nodejs_scl} source scl_source enable rh-nodejs10 %endif %if 0%{?use_llvm_ts} source scl_source enable llvm-toolset-%{llvm_version} %endif %if 0%{?use_python3_scl} source scl_source enable rh-python38 %endif set -e env which gcc which c++ which g++ which ld which nasm which node which python3 # Bundled cbindgen mkdir -p my_rust_vendor cd my_rust_vendor %{__tar} xf %{SOURCE2} mkdir -p .cargo cat > .cargo/config < 30 MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive" %endif MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" %if %{?debug_build} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif %ifarch %{ix86} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') export MOZ_DEBUG_FLAGS=" " %endif %ifarch s390x aarch64 %{ix86} MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %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} export RUSTFLAGS="-Cdebuginfo=0" echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig %endif %if 0%{?bundle_nss} mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} MOZ_LINK_FLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" MOZ_LINK_FLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" MOZ_LINK_FLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" %endif # We don't want thunderbird to use CK_GCM_PARAMS_V3 in nss 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 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 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 #[ -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 [ -z "$RPM_BUILD_NCPUS" ] && \ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 [ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 [ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 [ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16 #%endif 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')} %if 0%{?bundle_nss} echo "Setting nss flags" # nss-setup-flags-env.inc %include_file %{SOURCE401} export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH echo $PKG_CONFIG_PATH %endif ./mach build -v 2>&1 || exit 1 #--------------------------------------------------------------------- %install export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then # Hack for tps tests ARCH_STR=%{_arch} %ifarch %{ix86} ARCH_STR="i?86" %endif PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" fi for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM) do echo "$package" rpm2cpio "$package" | cpio -idu done } %if 0%{?bundle_nss} pushd %{buildroot} 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 install_rpms_to_current_dir nss-softokn-freebl-3*.rpm install_rpms_to_current_dir nss-util-3*.rpm # cleanup unecessary nss files rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share rm -rf %{buildroot}/%{bundled_install_path}/share rm -rf %{buildroot}/etc/pki rm -rf %{buildroot}/usr/lib/.build-id rm -rf %{buildroot}/etc/crypto-policies popd %endif DESTDIR=%{buildroot} make -C objdir install %{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} # 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 %if 0%{?flatpak} sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/thunderbird %else sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird %endif # Run firefox under wayland only on RHEL9 and newer %if 0%{?rhel} < 9 sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%|export MOZ_DISABLE_WAYLAND=1|' %{buildroot}%{_bindir}/thunderbird %else sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/thunderbird %endif # set up our default preferences %{__cat} %{SOURCE12} | %{__sed} -e 's,THUNDERBIRD_RPM_VR,%{version}-%{release},g' \ -e 's,myspell,%{dictionarydir},g' \ > $RPM_BUILD_ROOT/rh-default-prefs %{__install} -D $RPM_BUILD_ROOT/rh-default-prefs $RPM_BUILD_ROOT/%{mozappdir}/greprefs/all-redhat.js %{__install} -D $RPM_BUILD_ROOT/rh-default-prefs $RPM_BUILD_ROOT/%{mozappdir}/defaults/pref/all-redhat.js %{__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 # own extension directories %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/mozilla/extensions/%{thunderbird_app_id} %{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/mozilla/extensions/%{thunderbird_app_id} # System config dir (#1525709) %{__mkdir_p} %{buildroot}%{_sysconfdir}/%{name}/pref # Install langpacks echo > %{name}.lang %if %{with langpacks} %{__mkdir_p} %{buildroot}%{langpackdir} %{__tar} xf %{SOURCE1} for langpack in `ls thunderbird-langpacks/*.xpi`; do language=`basename $langpack .xpi` extensionID=langpack-$language@thunderbird.mozilla.org %{__mkdir_p} $extensionID unzip -qq $langpack -d $extensionID find $extensionID -type f | xargs chmod 644 cd $extensionID zip -qq -r9mX ../${extensionID}.xpi * cd - %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir} language=`echo $language | sed -e 's/-/_/g'` echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang done %{__rm} -rf thunderbird-langpacks %endif # Get rid of devel package and its debugsymbols %{__rm} -rf $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{version} # Copy over the LICENSE install -c -m 644 LICENSE $RPM_BUILD_ROOT%{mozappdir} # Use the system hunspell dictionaries %{__rm} -rf $RPM_BUILD_ROOT/%{mozappdir}/dictionaries ln -s $(pkg-config --variable prefix hunspell)/share/%{dictionarydir} $RPM_BUILD_ROOT%{mozappdir}/dictionaries # ghost files %{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat # 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 %endif # Register as an application to be visible in the software center mkdir -p $RPM_BUILD_ROOT%{_datadir}/metainfo %{__cp} -p comm/mail/branding/%{name}/net.thunderbird.Thunderbird.appdata.xml $RPM_BUILD_ROOT%{_datadir}/metainfo/thunderbird.appdata.xml sed -i -e 's|thunderbird|' "$RPM_BUILD_ROOT%{_datadir}/metainfo/thunderbird.appdata.xml" #=============================================================================== %clean rm -rf %{_srcrpmdir}/libffi*.src.rpm find %{_rpmdir} -name "libffi*.rpm" -delete rm -rf %{_srcrpmdir}/openssl*.src.rpm find %{_rpmdir} -name "openssl*.rpm" -delete rm -rf %{_srcrpmdir}/nss*.src.rpm find %{_rpmdir} -name "nss*.rpm" -delete rm -rf %{_srcrpmdir}/nspr*.src.rpm find %{_rpmdir} -name "nspr*.rpm" -delete %post update-desktop-database &> /dev/null || : touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : %postun 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 gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %files -f %{name}.lang %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/thunderbird %{_datadir}/metainfo/*.appdata.xml %attr(644,root,root) %{_datadir}/applications/thunderbird.desktop %dir %{_sysconfdir}/%{name} %dir %{_sysconfdir}/%{name}/* %dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id} %dir %{_libdir}/mozilla/extensions/%{thunderbird_app_id} %dir %{mozappdir} %doc %{mozappdir}/LICENSE %{mozappdir}/chrome %dir %{mozappdir}/components %ghost %{mozappdir}/components/compreg.dat %ghost %{mozappdir}/components/xpti.dat %{mozappdir}/omni.ja %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries %if %{with langpacks} %dir %{langpackdir} %endif %{mozappdir}/greprefs %{mozappdir}/isp %{mozappdir}/thunderbird-bin %{mozappdir}/thunderbird %{mozappdir}/*.so %{mozappdir}/platform.ini %{mozappdir}/application.ini %exclude %{mozappdir}/removed-files %{_datadir}/icons/hicolor/16x16/apps/thunderbird.png %{_datadir}/icons/hicolor/22x22/apps/thunderbird.png %{_datadir}/icons/hicolor/24x24/apps/thunderbird.png %{_datadir}/icons/hicolor/256x256/apps/thunderbird.png %{_datadir}/icons/hicolor/32x32/apps/thunderbird.png %{_datadir}/icons/hicolor/48x48/apps/thunderbird.png %{_datadir}/icons/hicolor/64x64/apps/thunderbird.png %{_datadir}/icons/hicolor/128x128/apps/thunderbird.png %{_datadir}/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg %if !%{?system_nss} %{mozappdir}/*.chk %endif %{mozappdir}/dependentlibs.list %{mozappdir}/fonts %{mozappdir}/pingsender %if %{?use_openssl_for_librnp} %{mozappdir}/librnp.so %{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}/libsmime3* %{mozappdir}/bundled/%{_lib}/libsoftokn* %{mozappdir}/bundled/%{_lib}/libssl3* %{mozappdir}/bundled/%{_lib}/libnspr4.so %{mozappdir}/bundled/%{_lib}/libplc4.so %{mozappdir}/bundled/%{_lib}/libplds4.so %endif #=============================================================================== %changelog * Wed Oct 25 2023 Eike Rathke - 115.4.1-1 - Update to 115.4.1 build1 * Tue Oct 24 2023 Anton Bobrov - 115.4.0-3 - Update to 115.4.0 build3 * Sat Oct 21 2023 Eike Rathke - 115.4.0-2 - Update to 115.4.0 build2 * Fri Oct 20 2023 Eike Rathke - 115.4.0-1 - Update to 115.4.0 build1 * Fri Sep 29 2023 Eike Rathke - 115.3.1-1 - Update to 115.3.1 build1 * Wed Sep 27 2023 Eike Rathke - 115.3.0-1 - Update to 115.3.0 * Fri Sep 8 2023 Jan Horak - 115.2.1-5 - Update to 115.2.1 * Thu May 04 2023 Eike Rathke - 102.11.0-1 - Update to 102.11.0 build1 * Tue Apr 11 2023 Eike Rathke - 102.10.0-2 - Update to 102.10.0 build2 * Thu Apr 06 2023 Eike Rathke - 102.10.0-1 - Update to 102.10.0 build1 * Mon Mar 13 2023 Eike Rathke - 102.9.0-2 - Update to 102.9.0 build1 * Wed Feb 15 2023 Eike Rathke - 102.8.0-2 - Update to 102.8.0 build2 * Fri Feb 10 2023 Eike Rathke - 102.8.0-1 - Update to 102.8.0 build1 * Tue Jan 31 2023 Eike Rathke - 102.7.1-2 - Update to 102.7.1 build2 * Tue Jan 24 2023 Eike Rathke - 102.7.1-1 - Update to 102.7.1 build1 * Mon Jan 16 2023 Eike Rathke - 102.7.0-1 - Update to 102.7.0 build1 * Tue Dec 13 2022 Eike Rathke - 102.6.0-2 - Update to 102.6.0 build2 * Fri Dec 09 2022 Eike Rathke - 102.6.0-1 - Update to 102.6.0 build1 * Tue Nov 29 2022 Jan Horak - 102.5.0-3 - Use openssl for the librnp crypto backend to enable the openpgp encryption * Tue Nov 15 2022 Eike Rathke - 102.5.0-2 - Update to 102.5.0 build2 * Fri Nov 11 2022 Eike Rathke - 102.5.0-1 - Update to 102.5.0 build1 * Mon Oct 17 2022 Eike Rathke - 102.4.0-1 - Update to 102.4.0 build1 * Wed Oct 12 2022 Jan Horak - 102.3.0-4 - Fix for expat CVE-2022-40674 * Fri Sep 16 2022 Jan Horak - 102.3.0-3 - Update to 102.3.0 build1 * Fri Aug 19 2022 Eike Rathke - 91.13.0-1 - Update to 91.13.0 build1 * Mon Jul 25 2022 Eike Rathke - 91.12.0-1 - Update to 91.12.0 build1 * Tue Jun 28 2022 Eike Rathke - 91.11.0-2 - Update to 91.11.0 build2 * Thu Jun 23 2022 Eike Rathke - 91.11.0-1 - Update to 91.11.0 build1 * Mon May 30 2022 Eike Rathke - 91.10.0-1 - Update to 91.10.0 build1 * Mon May 23 2022 Jan Horak - 91.9.1-1 - Update to 91.9.1 build1 * Tue May 03 2022 Eike Rathke - 91.9.0-3 - Update to 91.9.0 build3 * Mon May 02 2022 Eike Rathke - 91.9.0-2 - Update to 91.9.0 build2 * Thu Apr 28 2022 Eike Rathke - 91.9.0-1 - Update to 91.9.0 * Tue Apr 05 2022 Eike Rathke - 91.8.0-1 - Update to 91.8.0 * Tue Mar 08 2022 Eike Rathke - 91.7.0-2 - Update to 91.7.0 build2 * Thu Mar 03 2022 Eike Rathke - 91.7.0-1 - Update to 91.7.0 build1 * Fri Feb 11 2022 Jan Horak - 91.6.0-2 - Move appdata to metainfo and use stock icon instead of remote * Mon Feb 07 2022 Eike Rathke - 91.6.0-1 - Update to 91.6.0 build1 * Tue Jan 18 2022 Jan Horak - 91.5.0-3 - Using upstream appdata file * Fri Jan 14 2022 Jan Horak - 91.5.0-2 - Enabled optimalization for s390x * Fri Jan 07 2022 Eike Rathke - 91.5.0-1 - Update to 91.5.0 build1 * Mon Dec 06 2021 Eike Rathke - 91.4.0-2 - Update to 91.4.0 build2 * Wed Dec 01 2021 Eike Rathke - 91.4.0-1 - Update to 91.4.0 build1 * Tue Nov 02 2021 Eike Rathke - 91.3.0-2 - Update to 91.3.0 build2 * Mon Nov 01 2021 Eike Rathke - 91.3.0-1 - Update to 91.3.0 build1 * Fri Oct 08 2021 Eike Rathke - 91.2.0-1 - Update to 91.2.0 * Tue Sep 07 2021 Eike Rathke - 78.14.0-1 - Update to 78.14.0 * Thu Aug 19 2021 Carlos O'Donell - 78.13.0-2 - Rebuilt for libffi 3.4.2 SONAME transition. Related: rhbz#1891914 * Tue Aug 10 2021 Eike Rathke - 78.13.0-1 - Update to 78.13.0 * Tue Aug 10 2021 Mohan Boddu - 78.12.0-4 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688 * Fri Jul 30 2021 Tomas Popela - 78.12.0-3 - Add script to process the official tarball to comply with PELC review - Fix the build with newer glibc * Mon Jul 12 2021 Eike Rathke - 78.12.0-2 - Update to 78.12.0 build2 * Thu Jul 08 2021 Eike Rathke - 78.12.0-1 - Update to 78.12.0 build1 * Wed Jun 30 2021 Jan Horak - 78.11.0-2 - Added bundled libraries, update to 78.11 * Tue Jun 22 2021 Mohan Boddu - 78.8.0-5 - Rebuilt for RHEL 9 BETA for openssl 3.0 Related: rhbz#1971065 * Fri Apr 16 2021 Mohan Boddu - 78.8.0-4 - Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Fixing MOZ_SMP_FLAGS * Mon Mar 01 2021 Jan Horak - 78.8.0-2 - Removed autoconf213 dependency * Mon Feb 22 2021 Jan Horak - 78.8.0-1 - Update to 78.8.0 build1 * Tue Jan 12 2021 Eike Rathke - 78.6.1-1 - Update to 78.6.1 * Tue Dec 15 2020 Eike Rathke - 78.6.0-1 - Update to 78.6.0 * Fri Dec 04 2020 Jan Horak - 78.5.1-1 - Update to 78.5.1 build1 * Wed Nov 18 2020 Eike Rathke - 78.5.0-1 - Update to 78.5.0 build3 * Thu Nov 12 2020 Eike Rathke - 78.4.3-1 - Update to 78.4.3 * Wed Oct 21 2020 Eike Rathke - 78.4.0-1 - Update to 78.4.0 build1 - Disabled telemetry * Tue Sep 29 2020 Jan Horak - 78.3.1-1 - Update to 78.3.1 build1 * Sat Sep 19 2020 Jan Horak - 78.3.0-3 - Update to 78.3.0 build1 - Remove librdp.so as long as we cannot ship it in RHEL * Tue Sep 08 2020 Jan Horak - 78.2.1-1 - Update to 78.2.1 build1 * Wed Sep 02 2020 Jan Horak - 68.12.0-1 - Update to 68.12.0 build1 * Tue Aug 04 2020 Jan Horak - 68.11.0-1 - Update to 68.11.0 build1 * Wed Jul 08 2020 Jan Horak - 68.10.0-1 - Update to 68.10.0 build1 * Fri Jun 05 2020 Jan Horak - 68.9.0-1 - Update to 68.9.0 build1 * Tue May 05 2020 Jan Horak - 68.8.0-1 - Update to 68.8.0 build2 * Tue Apr 14 2020 Jan Horak - 68.7.0-1 - Update to 68.7.0 build1 * Fri Mar 13 2020 Jan Horak - 68.6.0-1 - Update to 68.6.0 build2 * Thu Feb 13 2020 Jan Horak - 68.5.0-1 - Update to 68.5.0 build1 * Mon Jan 13 2020 Jan Horak - 68.4.1-2 - Update to 68.4.1 build1 * Mon Dec 02 2019 Jan Horak - 68.3.0-2 - Update to 68.3.0 build2 * Fri Oct 25 2019 Jan Horak - 68.2.0-2 - Added patch for TLS 1.3 support. * Tue Oct 22 2019 Jan Horak - 68.2.0-1 - Update to 68.2.0 * Thu Oct 3 2019 Jan Horak - 68.1.1-2 - Update to 68.1.1 * Wed Sep 4 2019 Jan Horak - 60.9.0-2 - Update to 60.9.0 * Thu Jul 4 2019 Martin Stransky - 60.8.0-1 - Updated to 60.8.0 * Wed Jul 3 2019 Martin Stransky - 60.7.2-3 - Rebuild to fix rhbz#1725919 - Thunderbird fails to authenticate with gmail with ssl/tls and OAuth2.