Blob Blame History Raw
# 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 10
  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 4
  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.10.0
Release:        2%{?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:    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}-20240415.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 llvm-devel
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/c9s.
%if (0%{?rhel} == 8 && %{rhel_minor_version} >= 10) || (0%{?rhel} == 9 && %{rhel_minor_version} >= 4)
# 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 <<EOL
[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "`pwd`"
EOL

%ifarch aarch64
#export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc"
%endif

env CARGO_HOME=.cargo cargo install cbindgen
export PATH=`pwd`/.cargo/bin:$PATH
cd -

# end of Bundled cbindgen

mkdir %{_buildrootdir}/bin || :
cp %{SOURCE32} %{_buildrootdir}/bin || :

# Update the various config.guess to upstream release for aarch64 support
# Do not update config.guess in the ./third_party/rust because that would break checksums
find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'

MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
#rhbz#1037063
# -Werror=format-security causes build failures when -Wno-format is explicitly given
# for some sources
# Explicitly force the hardening flags for Firefox so it passes the checksec test;
# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
%if 0%{?fedora} < 30
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
%else
# 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

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|<icon .*|<icon type="stock">thunderbird</icon>|' "$RPM_BUILD_ROOT%{_datadir}/metainfo/thunderbird.appdata.xml"

# Clean the created bundled rpms.
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
* Mon Apr 15 2024 Eike Rathke <erack@redhat.com> - 115.10.0-2
- Update to 115.10.0 build2

* Fri Apr 12 2024 Eike Rathke <erack@redhat.com> - 115.10.0-1
- Update to 115.10.0 build1
- Revert expat CVE-2023-52425 fix

* Mon Mar 18 2024 Eike Rathke <erack@redhat.com> - 115.9.0-1
- Update to 115.9.0 build1
- Fix expat CVE-2023-52425

* Mon Feb 19 2024 Eike Rathke <erack@redhat.com> - 115.8.0-1
- Update to 115.8.0 build1

* Mon Jan 22 2024 Eike Rathke <erack@redhat.com> - 115.7.0-1
- Update to 115.7.0 build1

* Mon Dec 18 2023 Eike Rathke <erack@redhat.com> - 115.6.0-1
- Update to 115.6.0 build2

* Tue Nov 21 2023 Eike Rathke <erack@redhat.com> - 115.5.0-1
- Update to 115.5.0 build1

* Wed Oct 25 2023 Eike Rathke <erack@redhat.com> - 115.4.1-1
- Update to 115.4.1 build1

* Tue Oct 24 2023 Anton Bobrov <abobrov@redhat.com> - 115.4.0-3
- Update to 115.4.0 build3

* Sat Oct 21 2023 Eike Rathke <erack@redhat.com> - 115.4.0-2
- Update to 115.4.0 build2

* Fri Oct 20 2023 Eike Rathke <erack@redhat.com> - 115.4.0-1
- Update to 115.4.0 build1

* Fri Sep 29 2023 Eike Rathke <erack@redhat.com> - 115.3.1-1
- Update to 115.3.1 build1

* Wed Sep 27 2023 Eike Rathke <erack@redhat.com> - 115.3.0-1
- Update to 115.3.0

* Fri Sep  8 2023 Jan Horak <jhorak@redhat.com> - 115.2.1-5
- Update to 115.2.1

* Thu May 04 2023 Eike Rathke <erack@redhat.com> - 102.11.0-1
- Update to 102.11.0 build1

* Tue Apr 11 2023 Eike Rathke <erack@redhat.com> - 102.10.0-2
- Update to 102.10.0 build2

* Thu Apr 06 2023 Eike Rathke <erack@redhat.com> - 102.10.0-1
- Update to 102.10.0 build1

* Mon Mar 13 2023 Eike Rathke <erack@redhat.com> - 102.9.0-2
- Update to 102.9.0 build1

* Wed Feb 15 2023 Eike Rathke <erack@redhat.com> - 102.8.0-2
- Update to 102.8.0 build2

* Fri Feb 10 2023 Eike Rathke <erack@redhat.com> - 102.8.0-1
- Update to 102.8.0 build1

* Tue Jan 31 2023 Eike Rathke <erack@redhat.com> - 102.7.1-2
- Update to 102.7.1 build2

* Tue Jan 24 2023 Eike Rathke <erack@redhat.com> - 102.7.1-1
- Update to 102.7.1 build1

* Mon Jan 16 2023 Eike Rathke <erack@redhat.com> - 102.7.0-1
- Update to 102.7.0 build1

* Tue Dec 13 2022 Eike Rathke <erack@redhat.com> - 102.6.0-2
- Update to 102.6.0 build2

* Fri Dec 09 2022 Eike Rathke <erack@redhat.com> - 102.6.0-1
- Update to 102.6.0 build1

* Tue Nov 29 2022 Jan Horak <jhorak@redhat.com> - 102.5.0-3
- Use openssl for the librnp crypto backend to enable the openpgp encryption

* Tue Nov 15 2022 Eike Rathke <erack@redhat.com> - 102.5.0-2
- Update to 102.5.0 build2

* Fri Nov 11 2022 Eike Rathke <erack@redhat.com> - 102.5.0-1
- Update to 102.5.0 build1

* Mon Oct 17 2022 Eike Rathke <erack@redhat.com> - 102.4.0-1
- Update to 102.4.0 build1

* Wed Oct 12 2022 Jan Horak <jhorak@redhat.com> - 102.3.0-4
- Fix for expat CVE-2022-40674

* Fri Sep 16 2022 Jan Horak <jhorak@redhat.com> - 102.3.0-3
- Update to 102.3.0 build1

* Fri Aug 19 2022 Eike Rathke <erack@redhat.com> - 91.13.0-1
- Update to 91.13.0 build1

* Mon Jul 25 2022 Eike Rathke <erack@redhat.com> - 91.12.0-1
- Update to 91.12.0 build1

* Tue Jun 28 2022 Eike Rathke <erack@redhat.com> - 91.11.0-2
- Update to 91.11.0 build2

* Thu Jun 23 2022 Eike Rathke <erack@redhat.com> - 91.11.0-1
- Update to 91.11.0 build1

* Mon May 30 2022 Eike Rathke <erack@redhat.com> - 91.10.0-1
- Update to 91.10.0 build1

* Mon May 23 2022 Jan Horak <jhorak@redhat.com> - 91.9.1-1
- Update to 91.9.1 build1

* Tue May 03 2022 Eike Rathke <erack@redhat.com> - 91.9.0-3
- Update to 91.9.0 build3

* Mon May 02 2022 Eike Rathke <erack@redhat.com> - 91.9.0-2
- Update to 91.9.0 build2

* Thu Apr 28 2022 Eike Rathke <erack@redhat.com> - 91.9.0-1
- Update to 91.9.0

* Tue Apr 05 2022 Eike Rathke <erack@redhat.com> - 91.8.0-1
- Update to 91.8.0

* Tue Mar 08 2022 Eike Rathke <erack@redhat.com> - 91.7.0-2
- Update to 91.7.0 build2

* Thu Mar 03 2022 Eike Rathke <erack@redhat.com> - 91.7.0-1
- Update to 91.7.0 build1

* Fri Feb 11 2022 Jan Horak <jhorak@redhat.com> - 91.6.0-2
- Move appdata to metainfo and use stock icon instead of remote

* Mon Feb 07 2022 Eike Rathke <erack@redhat.com> - 91.6.0-1
- Update to 91.6.0 build1

* Tue Jan 18 2022 Jan Horak <jhorak@redhat.com> - 91.5.0-3
- Using upstream appdata file

* Fri Jan 14 2022 Jan Horak <jhorak@redhat.com> - 91.5.0-2
- Enabled optimalization for s390x

* Fri Jan 07 2022 Eike Rathke <erack@redhat.com> - 91.5.0-1
- Update to 91.5.0 build1

* Mon Dec 06 2021 Eike Rathke <erack@redhat.com> - 91.4.0-2
- Update to 91.4.0 build2

* Wed Dec 01 2021 Eike Rathke <erack@redhat.com> - 91.4.0-1
- Update to 91.4.0 build1

* Tue Nov 02 2021 Eike Rathke <erack@redhat.com> - 91.3.0-2
- Update to 91.3.0 build2

* Mon Nov 01 2021 Eike Rathke <erack@redhat.com> - 91.3.0-1
- Update to 91.3.0 build1

* Fri Oct 08 2021 Eike Rathke <erack@redhat.com> - 91.2.0-1
- Update to 91.2.0

* Tue Sep 07 2021 Eike Rathke <erack@redhat.com> - 78.14.0-1
- Update to 78.14.0

* Thu Aug 19 2021 Carlos O'Donell <codonell@redhat.com> - 78.13.0-2
- Rebuilt for libffi 3.4.2 SONAME transition.
  Related: rhbz#1891914

* Tue Aug 10 2021 Eike Rathke <erack@redhat.com> - 78.13.0-1
- Update to 78.13.0

* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 78.12.0-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
  Related: rhbz#1991688

* Fri Jul 30 2021 Tomas Popela <tpopela@redhat.com> - 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 <erack@redhat.com> - 78.12.0-2
- Update to 78.12.0 build2

* Thu Jul 08 2021 Eike Rathke <erack@redhat.com> - 78.12.0-1
- Update to 78.12.0 build1

* Wed Jun 30 2021 Jan Horak <jhorak@redhat.com> - 78.11.0-2
- Added bundled libraries, update to 78.11

* Tue Jun 22 2021 Mohan Boddu <mboddu@redhat.com> - 78.8.0-5
- Rebuilt for RHEL 9 BETA for openssl 3.0
  Related: rhbz#1971065

* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 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 <jhorak@redhat.com> - 78.8.0-2
- Removed autoconf213 dependency

* Mon Feb 22 2021 Jan Horak <jhorak@redhat.com> - 78.8.0-1
- Update to 78.8.0 build1

* Tue Jan 12 2021 Eike Rathke <erack@redhat.com> - 78.6.1-1
- Update to 78.6.1

* Tue Dec 15 2020 Eike Rathke <erack@redhat.com> - 78.6.0-1
- Update to 78.6.0

* Fri Dec 04 2020 Jan Horak <jhorak@redhat.com> - 78.5.1-1
- Update to 78.5.1 build1

* Wed Nov 18 2020 Eike Rathke <erack@redhat.com> - 78.5.0-1
- Update to 78.5.0 build3

* Thu Nov 12 2020 Eike Rathke <erack@redhat.com> - 78.4.3-1
- Update to 78.4.3

* Wed Oct 21 2020 Eike Rathke <erack@redhat.com> - 78.4.0-1
- Update to 78.4.0 build1
- Disabled telemetry

* Tue Sep 29 2020 Jan Horak <jhorak@redhat.com> - 78.3.1-1
- Update to 78.3.1 build1

* Sat Sep 19 2020 Jan Horak <jhorak@redhat.com> - 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 <jhorak@redhat.com> - 78.2.1-1
- Update to 78.2.1 build1

* Wed Sep 02 2020 Jan Horak <jhorak@redhat.com> - 68.12.0-1
- Update to 68.12.0 build1

* Tue Aug 04 2020 Jan Horak <jhorak@redhat.com> - 68.11.0-1
- Update to 68.11.0 build1

* Wed Jul 08 2020 Jan Horak <jhorak@redhat.com> - 68.10.0-1
- Update to 68.10.0 build1

* Fri Jun 05 2020 Jan Horak <jhorak@redhat.com> - 68.9.0-1
- Update to 68.9.0 build1

* Tue May 05 2020 Jan Horak <jhorak@redhat.com> - 68.8.0-1
- Update to 68.8.0 build2

* Tue Apr 14 2020 Jan Horak <jhorak@redhat.com> - 68.7.0-1
- Update to 68.7.0 build1

* Fri Mar 13 2020 Jan Horak <jhorak@redhat.com> - 68.6.0-1
- Update to 68.6.0 build2

* Thu Feb 13 2020 Jan Horak <jhorak@redhat.com> - 68.5.0-1
- Update to 68.5.0 build1

* Mon Jan 13 2020 Jan Horak <jhorak@redhat.com> - 68.4.1-2
- Update to 68.4.1 build1

* Mon Dec 02 2019 Jan Horak <jhorak@redhat.com> - 68.3.0-2
- Update to 68.3.0 build2

* Fri Oct 25 2019 Jan Horak <jhorak@redhat.com> - 68.2.0-2
- Added patch for TLS 1.3 support.

* Tue Oct 22 2019 Jan Horak <jhorak@redhat.com> - 68.2.0-1
- Update to 68.2.0

* Thu Oct  3 2019 Jan Horak <jhorak@redhat.com> - 68.1.1-2
- Update to 68.1.1

* Wed Sep  4 2019 Jan Horak <jhorak@redhat.com> - 60.9.0-2
- Update to 60.9.0

* Thu Jul 4 2019 Martin Stransky <stransky@redhat.com> - 60.8.0-1
- Updated to 60.8.0

* Wed Jul 3 2019 Martin Stransky <stransky@redhat.com> - 60.7.2-3
- Rebuild to fix rhbz#1725919 - Thunderbird fails to authenticate
  with gmail with ssl/tls and OAuth2.