%global disable_toolsets 0 # Produce a build suitable for release, i.e. use PGO/LTO. You can turn it off # when building locally to reduce build time. %global release_build 1 # Run Mozilla test suite as a part of compile rpm section. Turn off when # building locally and don't want to spend 24 hours waiting for results. %global run_firefox_tests 0 %ifarch x86_64 %{ix86} %global run_firefox_tests 0 %endif # Don't create debuginfo rpm packages. It reduces build time as # exctracting debuginfo takes long time. %global create_debuginfo 1 %{lua: function dist_to_rhel8_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 return -1 end} %{lua: function dist_to_rhel9_minor(str, start) match = string.match(str, ".module%+el9.%d+") if match then return string.sub(match, 13) 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 rhel8_minor_version %{lua:print(dist_to_rhel8_minor(rpm.expand("%dist")))} %global rhel9_minor_version %{lua:print(dist_to_rhel9_minor(rpm.expand("%dist")))} # Produce debug (non-optimized) package build. Suitable for debugging only # as the build is *very* slow. %global debug_build 0 %global system_nss 1 %global bundle_nss 0 %if 0%{?rhel} == 8 %if %{rhel8_minor_version} <= 4 %global bundle_nss 1 %global system_nss 1 %endif %endif %global build_with_asan 0 %global use_llvmts 0 %global use_nodejsts 0 %if 0%{?rhel} < 8 %global use_llvmts 1 %global use_nodejsts 1 %endif %if %{run_firefox_tests} %global test_on_wayland 1 %endif %global nodejs_rb nodejs %global llvm_version 7.0 %if "%{toolchain}" == "clang" %global build_with_clang 1 %else %global build_with_clang 0 %endif %ifarch armv7hl %global create_debuginfo 0 %endif %if 0%{?rhel} == 7 %global use_dts 1 %global nodejs_rb rh-nodejs10-nodejs %global llvm_version 11.0 %endif # Temporary disabled due to # https://bugzilla.redhat.com/show_bug.cgi?id=1951606 %global enable_mozilla_crashreporter 0 %global system_ffi 1 %ifarch armv7hl %global system_libvpx 1 %else %global system_libvpx 0 %endif %global hardened_build 1 %global system_jpeg 1 %global disable_elfhack 1 %global use_bundled_cbindgen 1 %if %{debug_build} %global release_build 0 %endif # Build PGO+LTO on x86_64 only due to build issues # on other arches. %global build_with_pgo 0 %ifarch x86_64 %if %{release_build} %global build_with_pgo 0 %endif %endif %global use_rustts 1 %global dts_version 10 %global rust_version 1.62 %if 0%{?rhel} >= 8 %global use_rustts 0 %endif %if 0%{?flatpak} %global build_with_pgo 0 %endif %if 0%{?disable_toolsets} %global use_rustts 0 %global use_dts 0 %global use_llvmts 0 %global use_nodejsts 0 %global nodejs_rb nodejs %endif # Big endian platforms %ifarch ppc64 s390x %global big_endian 1 %endif %if 0%{?build_with_pgo} %global use_xvfb 1 %global build_tests 1 %endif %if 0%{?run_firefox_tests} %global use_xvfb 1 %global build_tests 1 %endif %global launch_wayland_compositor 0 %if %{build_with_pgo} && 0%{?test_on_wayland} %global launch_wayland_compositor 1 %endif %if %{run_firefox_tests} && 0%{?test_on_wayland} %global launch_wayland_compositor 1 %endif # We need to use full path because of flatpak where datadir is /app/share %global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html %global firefox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} # Minimal required versions %global cairo_version 1.13.1 %global freetype_version 2.1.9 %global libnotify_version 0.7.0 %if %{?system_libvpx} %global libvpx_version 1.8.2 %endif %if %{?system_nss} %global nspr_version 4.34 %global nspr_build_version %{nspr_version} %global nss_version 3.79 %global nss_build_version %{nss_version} %endif %global mozappdir %{_libdir}/firefox %global mozappdirdev %{_libdir}/firefox-devel-%{version} %global langpackdir %{mozappdir}/browser/extensions %global tarballdir firefox-%{version} %define bundled_install_path %{mozappdir}/bundled %global official_branding 1 # We could use %%include, but in %%files, %%post and other sections, but in these # sections it could lead to syntax errors about unclosed %%if. Work around it by # using the following macro %define include_file() %{expand:%(cat '%1')} %bcond_without langpacks %global pre_version esr %if !%{release_build} %global pre_tag .npgo %endif %if %{build_with_clang} %global pre_tag .clang %endif %if %{build_with_asan} %global pre_tag .asan %global build_with_pgo 0 %endif %if !%{system_nss} %global nss_tag .nss %endif %if %{debug_build} %global pre_tag .debug %endif # 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 Firefox Web browser Name: firefox Version: 102.12.0 Release: 1%{?dist}.alma.1 URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ # Workaround the dreaded "upstream source file changed content" rpminspect failure. # If set to .b2 or .b3 ... the processed source file needs to be renamed before upload, e.g. # firefox-102.8.0esr.b2.processed-source.tar.xz # When unset use processed source file name as is. #%%global buildnum .b2 %if 0%{?rhel} == 9 ExcludeArch: %{ix86} %endif %if 0%{?rhel} == 8 %if %{rhel8_minor_version} == 1 ExcludeArch: %{ix86} aarch64 s390x %else ExcludeArch: %{ix86} %endif %endif %if 0%{?rhel} == 7 ExcludeArch: aarch64 s390 ppc %endif # We can't use the official tarball as it contains some test files that use # licenses that are rejected by Red Hat Legal. # The official tarball has to be always processed by the process-official-tarball # script # Link to original tarball: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz Source0: firefox-%{version}%{?pre_version}%{?buildnum}.processed-source.tar.xz %if %{with langpacks} Source1: firefox-langpacks-%{version}%{?pre_version}-20230531.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball Source10: firefox-mozconfig Source12: firefox-almalinux-default-prefs.js Source20: firefox.desktop Source21: firefox.sh.in Source23: firefox.1 Source24: mozilla-api-key Source25: firefox-symbolic.svg Source26: distribution.ini Source27: google-api-key Source30: firefox-x11.sh.in Source31: firefox-x11.desktop Source32: node-stdout-nonblocking-wrapper Source33: firefox.appdata.xml.in Source34: firefox-search-provider.ini Source35: google-loc-api-key Source37: mochitest-python.tar.gz Source38: print_results Source39: print-errors Source40: run-tests-x11 Source41: run-tests-wayland Source42: psummary Source43: print_failures Source44: print-error-reftest Source45: run-wayland-compositor Source403: nss-3.79.0-11.el8_1.src.rpm Source401: nss-setup-flags-env.inc Source402: nspr-4.34.0-3.el8_1.src.rpm # Build patches Patch3: mozilla-build-arm.patch Patch25: rhbz-1219542-s390-build.patch # Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x) Patch40: build-aarch64-skia.patch Patch41: build-disable-elfhack.patch Patch44: build-arm-libopus.patch Patch47: fedora-shebang-build.patch Patch49: build-arm-libaom.patch Patch53: firefox-gcc-build.patch Patch54: mozilla-1669639.patch Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch Patch72: build-remove-dav1d-from-wayland-dep.patch Patch73: build-ascii-decode-fail-rhel7.patch Patch75: build-big-endian-errors.patch Patch76: firefox-nss-version.patch Patch77: mozilla-1775202.patch Patch78: build-rhel7-lower-node-min-version.patch # Test patches # Generate without context by # GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-xpcshell # GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-reftest Patch102: firefox-tests-xpcshell-freeze.patch # Fedora specific patches Patch215: firefox-enable-addons.patch Patch219: rhbz-1173156.patch Patch224: mozilla-1170092.patch #ARM run-time patch Patch226: rhbz-1354671.patch Patch229: firefox-nss-addon-hack.patch Patch230: D110204-fscreen.diff Patch231: webrtc-nss-fix.patch # Backported WebRTC changes for PipeWire/Wayland screen sharing support Patch232: libwebrtc-screen-cast-sync.patch # Upstream patches Patch415: mozilla-1670333.patch Patch416: mozilla-bmo1005535.patch Patch417: mozilla-bmo1504834-part1.patch Patch418: mozilla-bmo1504834-part3.patch Patch419: mozilla-bmo849632.patch Patch420: mozilla-bmo998749.patch Patch421: mozilla-s390x-skia-gradient.patch Patch422: one_swizzle_to_rule_them_all.patch Patch423: svg-rendering.patch Patch424: D158770.diff Patch425: mozilla-1833330.patch # With clang LLVM 16 rust-bindgen 0.56.0 is too old, combined # https://github.com/rust-lang/rust-bindgen/pull/2319 # https://github.com/rust-lang/rust-bindgen/pull/2339 Patch427: rust-bindgen-2319-2339.patch # Needed with rust 1.70 # https://github.com/mozilla/mp4parse-rust/commit/8b5b652d38e007e736bb442ccd5aa5ed699db100 Patch428: mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch # PGO/LTO patches Patch600: pgo.patch Patch602: mozilla-1516803.patch Patch1008: build-rhel7-nasm-dwarf.patch %if %{?system_nss} %if !0%{?bundle_nss} BuildRequires: pkgconfig(nspr) >= %{nspr_version} BuildRequires: pkgconfig(nss) >= %{nss_version} BuildRequires: nss-static >= %{nss_version} %endif %endif BuildRequires: pkgconfig(libpng) %if %{?system_jpeg} BuildRequires: libjpeg-devel %endif BuildRequires: zip BuildRequires: bzip2-devel BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(krb5) BuildRequires: pkgconfig(pango) BuildRequires: pkgconfig(freetype2) >= %{freetype_version} BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(libnotify) >= %{libnotify_version} BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(alsa) BuildRequires: libstdc++-devel BuildRequires: libstdc++-static BuildRequires: dbus-glib-devel %if %{?system_libvpx} BuildRequires: libvpx-devel >= %{libvpx_version} %endif BuildRequires: m4 BuildRequires: pkgconfig(libpulse) %if 0%{?use_dts} BuildRequires: devtoolset-%{dts_version}-gcc-c++ BuildRequires: devtoolset-%{dts_version}-gcc BuildRequires: devtoolset-%{dts_version}-libatomic-devel %endif %if 0%{?rhel} == 9 BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cargo BuildRequires: rust BuildRequires: clang clang-libs llvm %endif BuildRequires: %{nodejs_rb} >= 10.21 %if 0%{?rhel} == 7 BuildRequires: scl-utils BuildRequires: findutils %endif %if 0%{?rhel} == 8 BuildRequires: cargo BuildRequires: rust >= %{rust_version} BuildRequires: llvm >= %{llvm_version} BuildRequires: llvm-devel >= %{llvm_version} BuildRequires: clang >= %{llvm_version} BuildRequires: clang-devel >= %{llvm_version} BuildRequires: rustfmt >= %{rust_version} %endif %if 0%{?use_rustts} BuildRequires: rust-toolset-%{rust_version} %endif %if 0%{?use_llvmts} BuildRequires: llvm-toolset-%{llvm_version} BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel BuildRequires: llvm-toolset-%{llvm_version}-clang BuildRequires: llvm-toolset-%{llvm_version}-clang-devel %endif %if 0%{?rhel} > 7 BuildRequires: pipewire-devel %endif %if !0%{?use_bundled_cbindgen} BuildRequires: cbindgen %endif BuildRequires: nasm >= 1.13 BuildRequires: libappstream-glib %if 0%{?big_endian} BuildRequires: icu %endif # Bundled nss/nspr requirement %if 0%{?bundle_nss} BuildRequires: nss-softokn BuildRequires: sqlite-devel BuildRequires: zlib-devel BuildRequires: pkgconfig BuildRequires: gawk BuildRequires: psmisc BuildRequires: perl-interpreter BuildRequires: gcc-c++ BuildRequires: xmlto %endif Requires: mozilla-filesystem #not known or rhel7 #Recommends: mozilla-openh264 >= 2.1.1 #Recommends: libva Requires: p11-kit-trust Requires: pciutils-libs %if %{?system_nss} %if !0%{?bundle_nss} Requires: nspr >= %{nspr_build_version} Requires: nss >= %{nss_build_version} %endif %endif BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: desktop-file-utils Requires: redhat-indexhtml %if !0%{?flatpak} #TODO BuildRequires: system-bookmarks %endif %if %{?system_ffi} BuildRequires: pkgconfig(libffi) %endif %if 0%{?use_xvfb} BuildRequires: xorg-x11-server-Xvfb %endif %if %{build_with_asan} BuildRequires: libasan BuildRequires: libasan-static %endif BuildRequires: perl-interpreter #BuildRequires: fdk-aac-free-devel not on rhel8 %if 0%{?test_on_wayland} BuildRequires: mutter BuildRequires: gsettings-desktop-schemas BuildRequires: gnome-settings-daemon BuildRequires: mesa-dri-drivers BuildRequires: xorg-x11-server-Xwayland BuildRequires: dbus-x11 BuildRequires: gnome-keyring %endif %if 0%{?run_firefox_tests} BuildRequires: procps-ng BuildRequires: nss-tools BuildRequires: dejavu-sans-mono-fonts BuildRequires: dejavu-sans-fonts BuildRequires: dejavu-serif-fonts BuildRequires: dbus-x11 BuildRequires: gnome-keyring BuildRequires: mesa-dri-drivers # ---------------------------------------- BuildRequires: liberation-fonts-common BuildRequires: liberation-mono-fonts BuildRequires: liberation-sans-fonts BuildRequires: liberation-serif-fonts # ---------------------------------- # Missing on f32 %if 0%{?fedora} > 33 BuildRequires: google-carlito-fonts %endif BuildRequires: google-droid-sans-fonts BuildRequires: google-noto-fonts-common BuildRequires: google-noto-cjk-fonts-common BuildRequires: google-noto-sans-cjk-ttc-fonts BuildRequires: google-noto-sans-gurmukhi-fonts BuildRequires: google-noto-sans-fonts BuildRequires: google-noto-emoji-color-fonts BuildRequires: google-noto-sans-sinhala-vf-fonts # ----------------------------------- BuildRequires: thai-scalable-fonts-common BuildRequires: thai-scalable-waree-fonts BuildRequires: khmeros-base-fonts BuildRequires: jomolhari-fonts # ---------------------------------- BuildRequires: lohit-tamil-fonts BuildRequires: lohit-telugu-fonts # ---------------------------------- BuildRequires: paktype-naskh-basic-fonts # faild to build in Koji / f32 %if 0%{?fedora} > 33 BuildRequires: pt-sans-fonts %endif BuildRequires: smc-meera-fonts BuildRequires: stix-fonts BuildRequires: abattis-cantarell-fonts BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi BuildRequires: xorg-x11-fonts-misc %endif BuildRequires: make BuildRequires: pciutils-libs Obsoletes: mozilla <= 37:1.7.13 Provides: webclient %if 0%{?rhel} == 8 && %{rhel8_minor_version} < 6 %ifarch aarch64 BuildRequires: gcc-toolset-12-annobin-plugin-gcc %endif %endif # Bundled libraries Provides: bundled(angle) Provides: bundled(audioipc-2) Provides: bundled(brotli) Provides: bundled(cairo) Provides: bundled(cfworker) Provides: bundled(d3.js) Provides: bundled(double-conversion) Provides: bundled(expat) Provides: bundled(fdlibm) Provides: bundled(ffvpx) Provides: bundled(freetype2) Provides: bundled(graphite2) Provides: bundled(harfbuzz) Provides: bundled(highway) Provides: bundled(intgemm) Provides: bundled(kissfft) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) Provides: bundled(libjpeg) Provides: bundled(libjxl) Provides: bundled(libjxl) Provides: bundled(libmar) Provides: bundled(libmkv) Provides: bundled(libnestegg) Provides: bundled(libogg) Provides: bundled(libopus) Provides: bundled(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(mp4parse-rust) Provides: bundled(mp4parse-rust) Provides: bundled(msgpack-c) Provides: bundled(msgpack-c) Provides: bundled(mtransport) Provides: bundled(openmax_dl) Provides: bundled(openmax_il) Provides: bundled(openmax_il) Provides: bundled(ots) Provides: bundled(qcms) Provides: bundled(rlbox_sandboxing_api) Provides: bundled(sfntly) Provides: bundled(sipcc) Provides: bundled(skia) Provides: bundled(sqlite3) Provides: bundled(thebes) Provides: bundled(wasm2c) Provides: bundled(WebRender) Provides: bundled(woff2) Provides: bundled(xz-embedded) Provides: bundled(ycbcr) Provides: bundled(zlib) %if 0%{?bundle_nss} Provides: bundled(nss) = 3.79.0 Provides: bundled(nspr) = 4.34.0 %endif %description Mozilla Firefox is an open-source web browser, designed for standards compliance, performance and portability. %if 0%{?run_firefox_tests} %global testsuite_pkg_name %{name}-testresults %package -n %{testsuite_pkg_name} Summary: Results of testsuite %description -n %{testsuite_pkg_name} This package contains results of tests executed during build. %files -n %{testsuite_pkg_name} /%{version}-%{release}/test_results /%{version}-%{release}/test_summary.txt /%{version}-%{release}/failures-* %endif %if 0%{?rhel} >= 9 %package x11 Summary: Firefox X11 launcher. Requires: %{name} = %{version}-%{release} %description x11 The firefox-x11 package contains launcher and desktop file to run Firefox explicitly on X11. %files x11 %{_bindir}/firefox-x11 %{_datadir}/applications/firefox-x11.desktop %endif #--------------------------------------------------------------------- %prep echo "Build environment" echo "dist %{?dist}" echo "RHEL 8 minor version: %{?rhel8_minor_version}" echo "RHEL 9 minor version: %{?rhel9_minor_version}" echo "use_bundled_ffi %{?use_bundled_ffi}" echo "bundle_nss %{?bundle_nss}" echo "system_nss %{?system_nss}" echo "use_rustts %{?use_rustts}" %setup -q -n %{tarballdir} # Build patches, can't change backup suffix from default because during build # there is a compare of config and js/config directories and .orig suffix is # ignored during this compare. %ifarch s390 %patch25 -p1 -b .rhbz-1219542-s390 %endif %patch40 -p1 -b .aarch64-skia %if 0%{?disable_elfhack} %patch41 -p1 -b .disable-elfhack %endif %patch3 -p1 -b .arm %patch44 -p1 -b .build-arm-libopus %patch47 -p1 -b .fedora-shebang %patch49 -p1 -b .build-arm-libaom %patch53 -p1 -b .firefox-gcc-build %patch54 -p1 -b .1669639 %patch71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12 %patch72 -p1 -b .build-remove-dav1d-from-wayland-dep %patch75 -p1 -b .build-big-endian-errors %patch76 -p1 -b .firefox-nss-version #ppc64le build failure because of webrtc %patch77 -p1 -b .mozilla-1775202 %patch73 -p1 -b .build-ascii-decode-fail-rhel7 %if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} >= 9) %patch78 -p1 -b .build-rhel7-lower-node-min-version %endif # Test patches %patch102 -p1 -b .firefox-tests-xpcshell-freeze # Fedora patches %patch215 -p1 -b .addons %patch219 -p1 -b .rhbz-1173156 %patch224 -p1 -b .1170092 #ARM run-time patch %ifarch aarch64 %patch226 -p1 -b .1354671 %endif %patch229 -p1 -b .firefox-nss-addon-hack %patch230 -p1 -b .D110204-fscreen.diff %patch231 -p1 -b .webrtc-nss-fix %patch232 -p1 -b .libwebrtc-screen-cast-sync %patch415 -p1 -b .1670333 %patch416 -p1 -b .mozilla-bmo1005535 %patch417 -p1 -b .mozilla-bmo1504834-part1 %patch418 -p1 -b .mozilla-bmo1504834-part3 %patch419 -p1 -b .mozilla-bmo849632 %patch420 -p1 -b .mozilla-bmo998749 %patch421 -p1 -b .mozilla-s390x-skia-gradient %patch422 -p1 -b .one_swizzle_to_rule_them_all %patch423 -p1 -b .svg-rendering %patch424 -p1 -b .D158770.diff %patch425 -p1 -b .mozilla-1833330 %if 0%{?fedora} >= 38 || (0%{?rhel} == 9 && %{rhel9_minor_version} >= 3) || (0%{?rhel} == 8 && %{rhel8_minor_version} >= 9) # MUST ONLY be applied for building against clang LLVM 16. # Would crash with earlier clang. %patch -P 427 -p1 -b .rust-bindgen-2319-2339 # Needed with rust 1.70 %patch -P 428 -p1 -b .mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100 %endif # PGO patches %if %{build_with_pgo} %if !%{build_with_clang} %patch600 -p1 -b .pgo %patch602 -p1 -b .1516803 %endif %endif %if 0%{?rhel} == 7 %ifarch %{ix86} # -F dwarf not available in RHEL7's nasm %patch1008 -p1 -b .build-rhel7-nasm-dwarf %endif %endif %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig %if %{official_branding} echo "ac_add_options --enable-official-branding" >> .mozconfig %endif %{__cp} %{SOURCE24} mozilla-api-key %{__cp} %{SOURCE27} google-api-key %{__cp} %{SOURCE35} google-loc-api-key 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 %{?system_ffi} echo "ac_add_options --enable-system-ffi" >> .mozconfig %endif %ifarch %{arm} echo "ac_add_options --disable-elf-hack" >> .mozconfig %endif %if %{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig echo "ac_add_options --disable-optimize" >> .mozconfig %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 # Second arches fail to start with jemalloc enabled %ifnarch %{ix86} x86_64 echo "ac_add_options --disable-jemalloc" >> .mozconfig %endif %if 0%{?build_tests} echo "ac_add_options --enable-tests" >> .mozconfig %else echo "ac_add_options --disable-tests" >> .mozconfig %endif %if !%{?system_jpeg} echo "ac_add_options --without-system-jpeg" >> .mozconfig %else echo "ac_add_options --with-system-jpeg" >> .mozconfig %endif %if %{?system_libvpx} echo "ac_add_options --with-system-libvpx" >> .mozconfig %else echo "ac_add_options --without-system-libvpx" >> .mozconfig %endif %ifarch s390 s390x echo "ac_add_options --disable-jit" >> .mozconfig %endif %if %{build_with_asan} echo "ac_add_options --enable-address-sanitizer" >> .mozconfig echo "ac_add_options --disable-jemalloc" >> .mozconfig %endif %if !%{enable_mozilla_crashreporter} echo "ac_add_options --disable-crashreporter" >> .mozconfig %endif # AV1 requires newer nasm that was rebased in 8.4 %if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_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 echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig # Remove executable bit to make brp-mangle-shebangs happy. chmod -x third_party/rust/itertools/src/lib.rs chmod a-x third_party/rust/ash/src/extensions/ext/*.rs chmod a-x third_party/rust/ash/src/extensions/khr/*.rs chmod a-x third_party/rust/ash/src/extensions/nv/*.rs #--------------------------------------------------------------------- %build # 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 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 rpm -ivh %{SOURCE403} 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 set +e %if 0%{?rhel} == 8 && %{rhel8_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_rustts} source scl_source enable rust-toolset-%{rust_version} %endif %if 0%{?use_nodejsts} source scl_source enable rh-nodejs10 %endif %if 0%{?use_llvmts} source scl_source enable llvm-toolset-%{llvm_version} %endif set -e env which gcc which c++ which g++ which ld which nasm which node %if 0%{?use_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 %if %{?hardened_build} MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" %endif %if %{?debug_build} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif %ifarch s390 MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') # If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which # overrides the -g1 from line above and breaks building on s390/arm # (OOM when linking, rhbz#1238225) export MOZ_DEBUG_FLAGS=" " %endif %ifarch %{arm} %{ix86} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') export MOZ_DEBUG_FLAGS=" " %endif %if !%{build_with_clang} %ifarch s390x ppc aarch64 %{ix86} MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif %ifarch %{arm} MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" echo "ac_add_options --enable-linker=gold" >> .mozconfig %endif %endif %if 0%{?flatpak} # Make sure the linker can find libraries in /app/lib64 as we don't use # __global_ldflags that normally sets this. MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}" %endif %ifarch %{arm} %{ix86} %{s390x} export RUSTFLAGS="-Cdebuginfo=0" echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig %endif #%ifarch aarch64 #export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc" #echo 'export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc"' >> .mozconfig #%endif %if %{build_with_asan} MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc" MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl" %endif %if 0%{?bundle_nss} mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} 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 wantfirefox 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 %if %{build_with_clang} echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig echo "export AR=\"llvm-ar\"" >> .mozconfig echo "export NM=\"llvm-nm\"" >> .mozconfig echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig echo "ac_add_options --enable-linker=lld" >> .mozconfig %else echo "export CC=gcc" >> .mozconfig echo "export CXX=g++" >> .mozconfig echo "export AR=\"gcc-ar\"" >> .mozconfig echo "export NM=\"gcc-nm\"" >> .mozconfig echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig %endif %if 0%{?build_with_pgo} echo "ac_add_options MOZ_PGO=1" >> .mozconfig # PGO build doesn't work with ccache export CCACHE_DISABLE=1 %endif MOZ_SMP_FLAGS=-j1 # On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel, # however builds tend to fail on other arches when building in parallel. #%ifarch %{ix86} s390x %{arm} aarch64 ppc64le #[ -z "$RPM_BUILD_NCPUS" ] && \ # RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" #[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 #%endif #%ifarch x86_64 ppc ppc64 ppc64le [ -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 #export MACH_USE_SYSTEM_PYTHON=1 %if %{launch_wayland_compositor} cp %{SOURCE45} . . ./run-wayland-compositor %endif %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 %if %{build_with_pgo} %if 0%{?test_on_wayland} env | grep "WAYLAND" MOZ_ENABLE_WAYLAND=1 ./mach build -v 2>&1 || exit 1 %else xvfb-run ./mach build -v 2>&1 || exit 1 %endif %else ./mach build -v 2>&1 || exit 1 %endif #--------------------------------------------------------------------- %install export MACH_USE_SYSTEM_PYTHON=1 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 nss-*.rpm install_rpms_to_current_dir nspr-4*.rpm install_rpms_to_current_dir nss-3*.rpm install_rpms_to_current_dir nss-softokn-3*.rpm 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 %{_buildrootdir}/%{bundled_install_path}/bin #rm -rf %{_buildrootdir}/%{bundled_install_path}/include rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss #rm -rf %{_buildrootdir}/%{bundled_install_path}/%{_lib}/pkgconfig rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share rm -rf %{buildroot}/%{bundled_install_path}/share rm -rf %{buildroot}/etc/pki rm -rf %{buildroot}/usr/lib/.build-id rm -rf %{buildroot}/etc/crypto-policies popd %endif # run Firefox test suite %if %{launch_wayland_compositor} cp %{SOURCE45} . . ./run-wayland-compositor %endif %if 0%{?run_firefox_tests} mkdir -p objdir/_virtualenvs/init_py3 %{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF [global] find-links=`pwd`/mochitest-python no-index=true EOF tar xf %{SOURCE37} cp %{SOURCE40} %{SOURCE41} %{SOURCE42} %{SOURCE38} %{SOURCE39} %{SOURCE43} %{SOURCE44} . mkdir -p test_results %if %{?test_on_wayland} ./run-tests-wayland || true %else ./run-tests-x11 || true %endif ./print_results > test_summary.txt 2>&1 || true ./print_failures || true %endif # set up our default bookmarks %if !0%{?flatpak} %{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html %endif # Make sure locale works for langpacks %{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF pref("general.useragent.locale", "chrome://global/locale/intl.properties"); EOF DESTDIR=%{buildroot} make -C objdir install %{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} %if 0%{?rhel} >= 9 desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE31} %endif # set up the firefox start script %{__rm} -rf %{buildroot}%{_bindir}/firefox %{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/firefox %{__chmod} 755 %{buildroot}%{_bindir}/firefox %if 0%{?flatpak} sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/firefox %else sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/firefox %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}/firefox %else sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/firefox # firefox-x11 launch script for RHEL9 only %{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/firefox-x11 %{__chmod} 755 %{buildroot}%{_bindir}/firefox-x11 %endif %{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1 %{__rm} -f %{buildroot}/%{mozappdir}/firefox-config %{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini for s in 16 22 24 32 48 256; do %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps %{__cp} -p browser/branding/official/default${s}.png \ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png done # Install hight contrast icon %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps %{__cp} -p %{SOURCE25} \ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps echo > %{name}.lang %if %{with langpacks} # Extract langpacks, make any mods needed, repack the langpack, and install it. %{__mkdir_p} %{buildroot}%{langpackdir} %{__tar} xf %{SOURCE1} for langpack in `ls firefox-langpacks/*.xpi`; do language=`basename $langpack .xpi` extensionID=langpack-$language@firefox.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'` %if 0%{?flatpak} echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang %else echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang %endif done %{__rm} -rf firefox-langpacks # Install langpack workaround (see #707100, #821169) function create_default_langpack() { language_long=$1 language_short=$2 cd %{buildroot}%{langpackdir} ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi cd - echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang } # Table of fallbacks for each language # please file a bug at bugzilla.redhat.com if the assignment is incorrect #create_default_langpack "bn-IN" "bn" create_default_langpack "es-AR" "es" create_default_langpack "fy-NL" "fy" create_default_langpack "ga-IE" "ga" create_default_langpack "gu-IN" "gu" create_default_langpack "hi-IN" "hi" create_default_langpack "hy-AM" "hy" create_default_langpack "nb-NO" "nb" create_default_langpack "nn-NO" "nn" create_default_langpack "pa-IN" "pa" create_default_langpack "pt-PT" "pt" create_default_langpack "sv-SE" "sv" create_default_langpack "zh-TW" "zh" %endif # Keep compatibility with the old preference location. %{__mkdir_p} %{buildroot}%{mozappdir}/defaults/preferences %{__mkdir_p} %{buildroot}%{mozappdir}/browser/defaults ln -s %{mozappdir}/defaults/preferences $RPM_BUILD_ROOT/%{mozappdir}/browser/defaults/preferences # Default preferences %{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js sed -i -e 's|%PREFIX%|%{_prefix}|' %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js # Enable modern crypto for the key export on the RHEL9 only (rhbz#1764205) %if 0%{?rhel} == 9 echo 'pref("security.pki.use_modern_crypto_with_pkcs12", true);' >> %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js %endif %ifarch s390x echo 'pref("gfx.webrender.force-disabled", true);' >> %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js %endif %ifarch s390x ppc64 echo 'pref("gfx.webrender.force-disabled", true);' >> %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js %endif # System config dir %{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref # System extensions %{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id} %{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id} # Copy over the LICENSE %{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir} # Use the system hunspell dictionaries %{__rm} -rf %{buildroot}%{mozappdir}/dictionaries ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries %if 0%{?run_firefox_tests} %{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results %{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results %{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/ %{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true %endif # Copy over run-mozilla.sh %{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir} # Add distribution.ini %{__mkdir_p} %{buildroot}%{mozappdir}/distribution %{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution # Install appdata file mkdir -p %{buildroot}%{_datadir}/metainfo %{__sed} -e "s/__VERSION__/%{version}/" \ -e "s/__DATE__/$(date '+%Y-%m-%d')/" \ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml # Install Gnome search provider files mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers %{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers # Remove gtk2 support as flash plugin is no longer supported rm -rf %{buildroot}%{mozappdir}/gtk2/ # Remove copied libraries to speed up build rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so # Create a symlink to replace libnssckbi.so with p11-kit-client.so # instead of p11-kit-trust.so, so that Firefox can see the system # trust store on the host through the p11-kit RPC protocol. A symlink # to libnss3.so is also needed, because Firefox tries to load # libnssckbi.so from the same directory where libnss3.so is loaded (as # of Firefox 89). %if 0%{?flatpak} ln -sf /usr/lib64/libnss3.so %{buildroot}%{_libdir}/libnss3.so ln -sf /usr/lib64/pkcs11/p11-kit-client.so %{buildroot}%{_libdir}/libnssckbi.so %endif #--------------------------------------------------------------------- %check appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml %preun # is it a final removal? if [ $1 -eq 0 ]; then %{__rm} -rf %{mozappdir}/components %{__rm} -rf %{mozappdir}/extensions %{__rm} -rf %{mozappdir}/plugins fi %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 %{_bindir}/firefox %{mozappdir}/firefox %{mozappdir}/firefox-bin %doc %{_mandir}/man1/* %dir %{_sysconfdir}/%{name} %dir %{_sysconfdir}/%{name}/* %dir %{_datadir}/mozilla/extensions/* %dir %{_libdir}/mozilla/extensions/* %{_datadir}/applications/%{name}.desktop %{_datadir}/metainfo/*.appdata.xml %{_datadir}/gnome-shell/search-providers/*.ini %dir %{mozappdir} %license %{mozappdir}/LICENSE %{mozappdir}/browser/chrome %{mozappdir}/defaults/preferences/* %{mozappdir}/browser/defaults/preferences %{mozappdir}/browser/features/*.xpi %{mozappdir}/distribution/distribution.ini # That's Windows only %ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi %if %{with langpacks} %dir %{langpackdir} %endif %{mozappdir}/browser/omni.ja %{mozappdir}/run-mozilla.sh %{mozappdir}/application.ini %{mozappdir}/pingsender %exclude %{mozappdir}/removed-files %if 0%{?flatpak} %{_libdir}/libnss3.so %{_libdir}/libnssckbi.so %endif %{_datadir}/icons/hicolor/16x16/apps/firefox.png %{_datadir}/icons/hicolor/22x22/apps/firefox.png %{_datadir}/icons/hicolor/24x24/apps/firefox.png %{_datadir}/icons/hicolor/256x256/apps/firefox.png %{_datadir}/icons/hicolor/32x32/apps/firefox.png %{_datadir}/icons/hicolor/48x48/apps/firefox.png %{_datadir}/icons/hicolor/symbolic/apps/firefox-symbolic.svg %if %{enable_mozilla_crashreporter} %{mozappdir}/crashreporter %{mozappdir}/crashreporter.ini %{mozappdir}/minidump-analyzer %{mozappdir}/Throbber-small.gif %{mozappdir}/browser/crashreporter-override.ini %endif %{mozappdir}/*.so %{mozappdir}/defaults/pref/channel-prefs.js %{mozappdir}/dependentlibs.list %{mozappdir}/dictionaries %{mozappdir}/omni.ja %{mozappdir}/platform.ini %{mozappdir}/plugin-container %{mozappdir}/gmp-clearkey %{mozappdir}/fonts/TwemojiMozilla.ttf %if !%{?system_nss} %exclude %{mozappdir}/libnssckbi.so %endif %if %{build_with_asan} %{mozappdir}/llvm-symbolizer %endif %if 0%{?bundle_nss} %{mozappdir}/bundled/%{_lib}/libfreebl* %{mozappdir}/bundled/%{_lib}/libnss3* %{mozappdir}/bundled/%{_lib}/libnssdbm3* %{mozappdir}/bundled/%{_lib}/libnssutil3* %{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 Jul 03 2023 Eduard Abdullin - 102.12.0-2.alma.1 - Fix debrand * Tue Jun 20 2023 Eduard Abdullin - 102.12.0-2.alma - Debrand for AlmaLinux * Wed May 31 2023 Eike Rathke - 102.12.0-1 - Update to 102.12.0 build1 * Tue May 23 2023 Anton Bobrov 102.11.0-2 - Do not import cert to certdb on override exception: rhbz#2118991 mzbz@1833330 * Thu May 04 2023 Eike Rathke - 102.11.0-2 - Update to 102.11.0 build2 * Tue May 02 2023 Eike Rathke - 102.11.0-1 - Update to 102.11.0 build1 * Tue Apr 04 2023 Eike Rathke - 102.10.0-1 - Update to 102.10.0 build1 * Fri Mar 10 2023 Eike Rathke - 102.9.0-4 - Update to 102.9.0 build2 * Thu Mar 09 2023 Jan Horak - 102.9.0-2 - removed disable-openh264-download * Tue Mar 07 2023 Eike Rathke - 102.9.0-1 - Update to 102.9.0 build1 * Tue Feb 14 2023 Eike Rathke - 102.8.0-2 - Update to 102.8.0 build2 * Tue Feb 07 2023 Eike Rathke - 102.8.0-1 - Update to 102.8.0 build1 * Tue Jan 10 2023 Eike Rathke - 102.7.0-1 - Update to 102.7.0 build1 * Mon Jan 02 2023 Jan Horak - 102.6.0-2 - Add firefox-x11 subpackage to allow explicit run of firefox under x11 on RHEL9 * Tue Dec 06 2022 Eike Rathke - 102.6.0-1 - Update to 102.6.0 build1 * Fri Nov 25 2022 Jan Horak - 102.5.0-2 - Added libwebrtc screencast patch for newer features * Wed Nov 09 2022 Eike Rathke - 102.5.0-1 - Update to 102.5.0 build1 * Wed Oct 12 2022 Eike Rathke - 102.4.0-1 - Update to 102.4.0 build1 * Tue Oct 11 2022 Jan Horak - 102.3.0-7 - Fix for expat CVE-2022-40674 and non functional webrtc * Tue Sep 13 2022 Jan Horak - 102.3.0-6 - Update to 102.3.0 build1 * Thu Jul 21 2022 Eike Rathke - 91.12.0-1 - Update to 91.12.0 build1 * Thu Jun 23 2022 Eike Rathke - 91.11.0-2 - Update to 91.11.0 build2 * Tue Jun 21 2022 Eike Rathke - 91.11.0-1 - Update to 91.11.0 build1 * Tue May 24 2022 Eike Rathke - 91.10.0-1 - Update to 91.10.0 build1 * Fri May 20 2022 Jan Horak - 91.9.1-1 - Update to 91.9.1 build1 * Tue Apr 26 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 * Mon Mar 07 2022 Eike Rathke - 91.7.0-3 - Update to 91.7.0 build3 * Wed Mar 02 2022 Jan Horak - 91.7.0-2 - Added expat backports of CVE-2022-25235, CVE-2022-25236 and CVE-2022-25315 * Tue Mar 01 2022 Eike Rathke - 91.7.0-1 - Update to 91.7.0 build2 * Fri Feb 25 2022 Jan Horak - 91.6.0-2 - Install langpacks to the browser/extensions to make them available in UI: rhbz#2030190 * Wed Feb 02 2022 Eike Rathke - 91.6.0-1 - Update to 91.6.0 build1 * Wed Feb 02 2022 Jan Horak - 91.5.0-2 - Use default update channel to fix non working enterprise policies: rhbz#2044667 * Thu Jan 06 2022 Eike Rathke - 91.5.0-1 - Update to 91.5.0 build1 * Mon Dec 13 2021 Jan Horak - 91.4.0-2 - Added fix for failing addons signatures. * Wed Dec 01 2021 Eike Rathke - 91.4.0-1 - Update to 91.4.0 build1 * Mon Nov 01 2021 Eike Rathke - 91.3.0-1 - Update to 91.3.0 build1 * Thu Oct 21 2021 Jan Horak - 91.2.0-5 - Fixed crashes when FIPS is enabled. * Mon Oct 04 2021 Jan Horak - 91.2.0-4 - Disable webrender on the s390x due to wrong colors: rhbz#2009503 * Wed Sep 29 2021 Jan Horak - 91.2.0-3 - Update to 91.2.0 build1 * Wed Sep 15 2021 Jan Horak - 91.1.0-1 - Update to 91.1.0 build1 * Tue Aug 17 2021 Jan Horak - Update to 91.0.1 build1 * Tue Aug 10 2021 Jan Horak - 91.0-1 - Update to 91.0 ESR * Thu Jul 29 2021 Jan Horak - 91.0-1 - Update to 91.0b8 * Fri Jul 16 2021 Jan Horak - 78.12.0-2 - Rebuild to pickup older nss * Wed Jul 07 2021 Eike Rathke - 78.12.0-1 - Update to 78.12.0 build1 * Mon May 31 2021 Eike Rathke - 78.11.0-3 - Update to 78.11.0 build2 (release) * Thu May 27 2021 Eike Rathke - 78.11.0-2 - Fix rhel_minor_version for dist .el8_4 and .el8 * Tue May 25 2021 Eike Rathke - 78.11.0-1 - Update to 78.11.0 build1 * Tue Apr 20 2021 Eike Rathke - 78.10.0-1 - Update to 78.10.0 * Wed Mar 17 2021 Eike Rathke - 78.9.0-1 - Update to 78.9.0 build1 * Wed Feb 17 2021 Eike Rathke - 78.8.0-1 - Update to 78.8.0 build2 * Tue Feb 09 2021 Eike Rathke - 78.7.1-1 - Update to 78.7.1 * Tue Feb 09 2021 Jan Horak - 78.7.0-3 - Fixing install prefix for the homepage * Fri Jan 22 2021 Eike Rathke - 78.7.0-2 - Update to 78.7.0 build2 * Wed Jan 20 2021 Eike Rathke - 78.7.0-1 - Update to 78.7.0 build1 * Wed Jan 6 2021 Eike Rathke - 78.6.1-1 - Update to 78.6.1 build1 * Thu Dec 10 2020 Jan Horak - 78.6.0-1 - Update to 78.6.0 build1 * Wed Nov 18 2020 Jan Horak - 78.5.0-1 - Update to 78.5.0 build1 * Tue Nov 10 2020 erack@redhat.com - 78.4.1-1 - Update to 78.4.1 * Tue Nov 10 2020 Jan Horak - 78.4.0-3 - Fixing flatpak build, fixing firefox.sh.in to not disable langpacks loading * Thu Oct 29 2020 Jan Horak - 78.4.0-2 - Enable addon sideloading * Fri Oct 16 2020 Jan Horak - 78.4.0-1 - Update to 78.4.0 build2 * Fri Sep 18 2020 Jan Horak - Update to 78.3.0 build1 * Tue Aug 18 2020 Jan Horak - 78.2.0-3 - Update to 78.2.0 build1 * Fri Jul 24 2020 Jan Horak - Update to 68.11.0 build1 * Fri Jun 26 2020 Jan Horak - Update to 68.10.0 build1 * Fri May 29 2020 Jan Horak - Update to 68.9.0 build1 - Added patch for pipewire 0.3 * Mon May 11 2020 Jan Horak - Added s390x specific patches * Wed Apr 29 2020 Jan Horak - Update to 68.8.0 build1 * Thu Apr 23 2020 Martin Stransky - 68.7.0-3 - Added fix for rhbz#1821418 * Tue Apr 07 2020 Jan Horak - 68.7.0-2 - Update to 68.7.0 build3 * Mon Apr 6 2020 Jan Horak - 68.6.1-1 - Update to 68.6.1 ESR * Wed Mar 04 2020 Jan Horak - Update to 68.6.0 build1 * Mon Feb 24 2020 Martin Stransky - 68.5.0-3 - Added fix for rhbz#1805667 - Enabled mzbz@1170092 - Firefox prefs at /etc * Fri Feb 07 2020 Jan Horak - Update to 68.5.0 build2 * Wed Feb 05 2020 Jan Horak - Update to 68.5.0 build1 * Wed Jan 08 2020 Jan Horak - Update to 68.4.1esr build1 * Fri Jan 03 2020 Jan Horak - Update to 68.4.0esr build1 * Wed Dec 18 2019 Jan Horak - Fix for wrong intl.accept_lang when using non en-us langpack * Wed Nov 27 2019 Martin Stransky - 68.3.0-1 - Update to 68.3.0 ESR * Thu Oct 24 2019 Martin Stransky - 68.2.0-4 - Added patch for TLS 1.3 support. * Wed Oct 23 2019 Martin Stransky - 68.2.0-3 - Rebuild * Mon Oct 21 2019 Martin Stransky - 68.2.0-2 - Rebuild * Thu Oct 17 2019 Martin Stransky - 68.2.0-1 - Update to 68.2.0 ESR * Thu Oct 10 2019 Martin Stransky - 68.1.0-6 - Enable system nss on RHEL6 * Thu Sep 5 2019 Jan Horak - 68.1.0-2 - Enable building langpacks * Wed Aug 28 2019 Jan Horak - 68.1.0-1 - Update to 68.1.0 ESR * Mon Aug 5 2019 Martin Stransky - 68.0.1-4 - Enable system nss * Mon Jul 29 2019 Martin Stransky - 68.0.1-3 - Enable official branding * Fri Jul 26 2019 Martin Stransky - 68.0.1-2 - Enabled PipeWire on RHEL8 * Fri Jul 26 2019 Martin Stransky - 68.0.1-1 - Updated to 68.0.1 ESR * Tue Jul 16 2019 Jan Horak - 68.0-0.11 - Update to 68.0 ESR * Tue Jun 25 2019 Martin Stransky - 68.0-0.10 - Updated to 68.0 alpha 13 - Enabled second arches * Fri Mar 22 2019 Martin Stransky - 68.0-0.1 - Updated to 68.0 alpha * Fri Mar 15 2019 Martin Stransky - 60.6.0-3 - Added Google API keys (mozbz#1531176) * Thu Mar 14 2019 Martin Stransky - 60.6.0-2 - Update to 60.6.0 ESR (Build 2) * Wed Mar 13 2019 Martin Stransky - 60.6.0-1 - Update to 60.6.0 ESR (Build 1) * Wed Feb 13 2019 Jan Horak - 60.5.1-1 - Update to 60.5.1 ESR * Wed Feb 6 2019 Martin Stransky - 60.5.0-3 - Added fix for rhbz#1672424 - Firefox crashes on NFS drives. * Fri Jan 25 2019 Martin Stransky - 60.5.0-2 - Updated to 60.5.0 ESR build2 * Tue Jan 22 2019 Martin Stransky - 60.5.0-1 - Updated to 60.5.0 ESR build1 * Thu Jan 10 2019 Jan Horak - 60.4.0-3 - Fixing fontconfig warnings (rhbz#1601475) * Wed Jan 9 2019 Jan Horak - 60.4.0-2 - Added pipewire patch from Tomas Popela (rhbz#1664270) * Wed Dec 5 2018 Jan Horak - 60.4.0-1 - Update to 60.4.0 ESR * Tue Dec 4 2018 Jan Horak - 60.3.0-2 - Added firefox-gnome-shell-extension * Fri Oct 19 2018 Jan Horak - 60.3.0-1 - Update to 60.3.0 ESR * Wed Oct 10 2018 Jan Horak - 60.2.2-2 - Added patch for rhbz#1633932 * Tue Oct 2 2018 Jan Horak - 60.2.2-1 - Update to 60.2.2 ESR * Mon Sep 24 2018 Jan Horak - 60.2.1-1 - Update to 60.2.1 ESR * Fri Aug 31 2018 Jan Horak - 60.2.0-1 - Update to 60.2.0 ESR * Tue Aug 28 2018 Jan Horak - 60.1.0-9 - Do not set user agent (rhbz#1608065) - GTK dialogs are localized now (rhbz#1619373) - JNLP association works again (rhbz#1607457) * Thu Aug 16 2018 Jan Horak - 60.1.0-8 - Fixed homepage and bookmarks (rhbz#1606778) - Fixed missing file associations in RHEL6 (rhbz#1613565) * Thu Jul 12 2018 Jan Horak - 60.1.0-7 - Run at-spi-bus if not running already (for the bundled gtk3) * Mon Jul 9 2018 Jan Horak - 60.1.0-6 - Fix for missing schemes for bundled gtk3 * Mon Jun 25 2018 Martin Stransky - 60.1.0-5 - Added mesa-libEGL dependency to gtk3/rhel6 * Sun Jun 24 2018 Martin Stransky - 60.1.0-4 - Disabled jemalloc on all second arches * Fri Jun 22 2018 Martin Stransky - 60.1.0-3 - Updated to 60.1.0 ESR build2 * Thu Jun 21 2018 Martin Stransky - 60.1.0-2 - Disabled jemalloc on second arches * Wed Jun 20 2018 Martin Stransky - 60.1.0-1 - Updated to 60.1.0 ESR * Wed Jun 13 2018 Jan Horak - 60.0-12 - Fixing bundled libffi issues - Readded some requirements * Mon Jun 11 2018 Martin Stransky - 60.0-10 - Added fix for mozilla BZ#1436242 - IPC crashes. * Mon Jun 11 2018 Jan Horak - 60.0-9 - Bundling libffi for the sec-arches - Added openssl-devel for the Python - Fixing bundled gtk3 * Fri May 18 2018 Martin Stransky - 60.0-8 - Added fix for mozilla BZ#1458492 * Wed May 16 2018 Martin Stransky - 60.0-7 - Added patch from rhbz#1498561 to fix ppc64(le) crashes. * Wed May 16 2018 Martin Stransky - 60.0-6 - Disabled jemalloc on second arches * Sun May 6 2018 Jan Horak - 60.0-4 - Update to 60.0 ESR * Thu Mar 8 2018 Jan Horak - 52.7.0-1 - Update to 52.7.0 ESR * Mon Jan 29 2018 Martin Stransky - 52.6.0-2 - Build Firefox for desktop arches only (x86_64 and ppc64le) * Thu Jan 18 2018 Martin Stransky - 52.6.0-1 - Update to 52.6.0 ESR * Thu Nov 9 2017 Jan Horak - 52.5.0-1 - Update to 52.5.0 ESR * Mon Sep 25 2017 Jan Horak - 52.4.0-1 - Update to 52.4.0 ESR * Thu Aug 3 2017 Jan Horak - 52.3.0-3 - Update to 52.3.0 ESR (b2) - Require correct nss version * Tue Jun 13 2017 Jan Horak - 52.2.0-1 - Update to 52.2.0 ESR * Wed May 24 2017 Jan Horak - 52.1.2-1 - Update to 52.1.2 ESR * Wed May 24 2017 Jan Horak - 52.0-7 - Added fix for accept language (rhbz#1454322) * Wed Mar 22 2017 Jan Horak - 52.0-6 - Removing patch required for older NSS from RHEL 7.3 - Added patch for rhbz#1414564 * Fri Mar 17 2017 Martin Stransky - 52.0-5 - Added fix for mozbz#1348168/CVE-2017-5428 * Mon Mar 6 2017 Jan Horak - 52.0-4 - Update to 52.0 ESR (b4) * Thu Mar 2 2017 Martin Stransky - 52.0-3 - Added fix for rhbz#1423012 - ppc64 gfx crashes * Wed Mar 1 2017 Jan Horak - 52.0-2 - Enable system nss * Tue Feb 28 2017 Martin Stransky - 52.0-1 - Update to 52.0ESR (B1) - Build RHEL7 package for Gtk3 * Mon Feb 27 2017 Martin Stransky - 52.0-0.13 - Added fix for rhbz#1414535 * Tue Feb 21 2017 Jan Horak - 52.0-0.12 - Update to 52.0b8 * Tue Feb 7 2017 Jan Horak - 52.0-0.11 - Readded addons patch * Mon Feb 6 2017 Jan Horak - 52.0-0.10 - Update to 52.0b3 * Tue Jan 31 2017 Jan Horak - 52.0-0.9 - Update to 52.0b2 * Fri Jan 27 2017 Jan Horak - 52.0-0.8 - Update to 52.0b1 * Thu Dec 8 2016 Jan Horak - 52.0-0.5 - Firefox Aurora 52 testing build