diff --git a/.firefox.metadata b/.firefox.metadata index 1ec362a..56ecea6 100644 --- a/.firefox.metadata +++ b/.firefox.metadata @@ -1,7 +1,8 @@ 5012b69e54cbebe3b5e74011dacf3a2097f49921 SOURCES/cbindgen-vendor.tar.xz -459de5a85a512c7dcc356937af6ab02ab916cfd2 SOURCES/firefox-128.4.0esr.processed-source.tar.xz -48712bb66e1ad7d2d969a230bbe5b6476a3e6fea SOURCES/firefox-langpacks-128.4.0esr-20241022.tar.xz +2549991b68b27b820e92151e48f9f08da0cd55fb SOURCES/firefox-128.5.1esr.processed-source.tar.xz +76f0794bac607a730ea03dff8f804e09c9e0c962 SOURCES/firefox-langpacks-128.5.1esr-20241202.tar.xz 2d8a6b2b30d5496735f49ffe8c8a7ede3a78a5ca SOURCES/mochitest-python.tar.gz d744f92e874688cc4b5376477dfdd639a97a6cd4 SOURCES/nspr-4.35.0-1.el8_1.src.rpm f466d7213e85773e002c48897524eaf909480046 SOURCES/nss-3.101.0-7.el8_2.src.rpm 0413d22a58ba1bba99acec9c3c2a4db56a4100c7 SOURCES/nss-3.101.0-7.el9_2.src.rpm +0332862626d2148648ff749078c223dbd859d901 SOURCES/wasi-sdk-20.tar.gz diff --git a/.gitignore b/.gitignore index 058ed4b..1958cd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ SOURCES/cbindgen-vendor.tar.xz -SOURCES/firefox-128.4.0esr.processed-source.tar.xz -SOURCES/firefox-langpacks-128.4.0esr-20241022.tar.xz +SOURCES/firefox-128.5.1esr.processed-source.tar.xz +SOURCES/firefox-langpacks-128.5.1esr-20241202.tar.xz SOURCES/mochitest-python.tar.gz SOURCES/nspr-4.35.0-1.el8_1.src.rpm SOURCES/nss-3.101.0-7.el8_2.src.rpm SOURCES/nss-3.101.0-7.el9_2.src.rpm +SOURCES/wasi-sdk-20.tar.gz diff --git a/SOURCES/firefox-mozconfig b/SOURCES/firefox-mozconfig index 9944800..0a4e08a 100644 --- a/SOURCES/firefox-mozconfig +++ b/SOURCES/firefox-mozconfig @@ -12,9 +12,7 @@ ac_add_options --enable-official-branding ac_add_options --enable-pulseaudio ac_add_options --enable-release ac_add_options --enable-system-ffi -ac_add_options --without-sysroot ac_add_options --without-system-icu -ac_add_options --without-wasm-sandboxed-libraries ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --with-unsigned-addon-scopes=app,system diff --git a/SOURCES/wasi.patch b/SOURCES/wasi.patch new file mode 100644 index 0000000..b47b496 --- /dev/null +++ b/SOURCES/wasi.patch @@ -0,0 +1,12 @@ +diff -up firefox-121.0.1/toolkit/moz.configure.wasi firefox-121.0.1/toolkit/moz.configure +--- firefox-121.0.1/toolkit/moz.configure.wasi 2024-02-01 09:14:33.816548952 +0100 ++++ firefox-121.0.1/toolkit/moz.configure 2024-02-01 09:15:53.264684309 +0100 +@@ -2663,7 +2663,7 @@ with only_when(requires_wasm_sandboxing + def wasi_sysroot_flags(wasi_sysroot): + if wasi_sysroot: + log.info("Using wasi sysroot in %s", wasi_sysroot) +- return ["--sysroot=%s" % wasi_sysroot] ++ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "/home/jhorak/rpmbuild/BUILDROOT/usr/share/wasi-sysroot/lib/libclang_rt.builtins-wasm32.a"] + return [] + + set_config("WASI_SYSROOT", wasi_sysroot) diff --git a/SOURCES/wasi.patch.template b/SOURCES/wasi.patch.template new file mode 100644 index 0000000..aa2838e --- /dev/null +++ b/SOURCES/wasi.patch.template @@ -0,0 +1,12 @@ +diff -up firefox-121.0.1/toolkit/moz.configure.wasi firefox-121.0.1/toolkit/moz.configure +--- firefox-121.0.1/toolkit/moz.configure.wasi 2024-02-01 09:14:33.816548952 +0100 ++++ firefox-121.0.1/toolkit/moz.configure 2024-02-01 09:15:53.264684309 +0100 +@@ -2663,7 +2663,7 @@ with only_when(requires_wasm_sandboxing + def wasi_sysroot_flags(wasi_sysroot): + if wasi_sysroot: + log.info("Using wasi sysroot in %s", wasi_sysroot) +- return ["--sysroot=%s" % wasi_sysroot] ++ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "$LIBCLANG_RT"] + return [] + + set_config("WASI_SYSROOT", wasi_sysroot) diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec index f4c5851..c9b4833 100644 --- a/SPECS/firefox.spec +++ b/SPECS/firefox.spec @@ -12,6 +12,9 @@ %global run_firefox_tests 0 %endif +# wasi_sdk is for sandboxing third party c/c++ libs by using rlbox, exclude s390x on the f39. +%bcond_with wasi_sdk + %{lua: function dist_to_rhel_minor(str, start) match = string.match(str, ".module%+el8.%d+") @@ -36,7 +39,7 @@ function dist_to_rhel_minor(str, start) end match = string.match(str, ".el9") if match then - return 5 + return 6 end match = string.match(str, ".el10_%d+") if match then @@ -56,22 +59,31 @@ end} %global bundle_nss 0 %if 0%{?rhel} == 7 -%global bundle_nss 0 -%global system_nss 0 + %global bundle_nss 0 + %global system_nss 0 %endif + %if 0%{?rhel} == 8 %if %{rhel_minor_version} < 8 %global bundle_nss 1 %global system_nss 1 %endif + %if %{rhel_minor_version} >= 10 + %global with_wasi_sdk 1 + %endif %endif + %if 0%{?rhel} == 9 %if %{rhel_minor_version} < 2 %global bundle_nss 1 %global system_nss 1 %endif + %if %{rhel_minor_version} > 5 + %global with_wasi_sdk 1 + %endif %endif + %global dts_version 11 %global llvm_version 7.0 %global nspr_version 4.35 @@ -137,7 +149,7 @@ end} Summary: Mozilla Firefox Web browser Name: firefox -Version: 128.4.0 +Version: 128.5.1 Release: 1%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ @@ -168,7 +180,7 @@ ExcludeArch: aarch64 s390 ppc # 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}-20241022.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20241202.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball @@ -189,6 +201,11 @@ Source34: firefox-search-provider.ini Source35: google-loc-api-key Source36: testing.sh Source37: mochitest-python.tar.gz +Source38: wasi.patch.template +# Created by: +# git clone --recursive https://github.com/WebAssembly/wasi-sdk.git +# cd wasi-sdk && git-archive-all --force-submodules wasi-sdk-20.tar.gz +Source50: wasi-sdk-20.tar.gz # Bundled libraries Source401: nss-setup-flags-env.inc @@ -240,7 +257,7 @@ Patch155: rhbz-1354671.patch Patch200: webrtc-128.0.patch.patch Patch201: D224587.1728128070.diff Patch202: D224588.1728128098.diff - +Patch203: wasi.patch # ---- Test patches ---- # Generate without context by @@ -359,6 +376,11 @@ BuildRequires: xmlto BuildRequires: zlib-devel %endif +%if %{with wasi_sdk} +BuildRequires: lld +BuildRequires: clang cmake ninja-build +%endif + %if !0%{?flatpak} #TODO BuildRequires: system-bookmarks @@ -1123,10 +1145,15 @@ echo "system_nss %{?system_nss}" echo "use_dts %{?use_dts}" echo "use_nodejs_scl %{?use_nodejs_scl}" echo "use_python3_scl %{?use_python3_scl}" +echo "with_wasi_sdk %{?with_wasi_sdk}" echo "--------------------------------------------" #clang -print-search-dirs %setup -q -n %{name}-%{version} +%if %{with wasi_sdk} +%setup -q -T -D -a 50 +%endif + # ---- RHEL specific patches --- # -- Downstream only -- %patch -P1 -p1 -b .disable-elfhack @@ -1152,6 +1179,12 @@ echo "--------------------------------------------" %patch -P9 -p1 -b .rhbz-2131158-webrtc-nss-fix %patch -P10 -p1 -b .build-ffvpx +# We need to create the wasi.patch with the correct path to the wasm libclang_rt. +%if %{with wasi_sdk} +export LIBCLANG_RT=`pwd`/wasi-sdk-20/build/compiler-rt/lib/wasi/libclang_rt.builtins-wasm32.a; cat %{SOURCE38} | envsubst > %{_sourcedir}/wasi.patch +%patch -P203 -p1 -b .wasi +%endif + # -- Upstreamed patches -- %patch -P51 -p1 -b .mozilla-bmo1170092 @@ -1183,7 +1216,6 @@ echo "--------------------------------------------" %patch -P202 -p1 -b .D224588 %endif - # ---- Security patches ---- %{__rm} -f .mozconfig @@ -1264,6 +1296,13 @@ echo "ac_add_options --with-google-safebrowsing-api-keyfile=`pwd`/google-api-key # Clang 17 upstream's detection fails, tell it where to look. echo "ac_add_options --with-libclang-path=`llvm-config --libdir`" >> .mozconfig +%if %{with wasi_sdk} +echo "ac_add_options --with-wasi-sysroot=`pwd`/wasi-sdk-20/build/install/opt/wasi-sdk/share/wasi-sysroot" >> .mozconfig +%else +echo "ac_add_options --without-sysroot" >> .mozconfig +echo "ac_add_options --without-wasm-sandboxed-libraries" >> .mozconfig +%endif + echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig # Remove executable bit to make brp-mangle-shebangs happy. @@ -1279,6 +1318,15 @@ chmod a-x third_party/rust/ash/src/extensions/nv/*.rs # Disable LTO to work around rhbz#1883904 %define _lto_cflags %{nil} +#WASI SDK +%if %{with wasi_sdk} +pushd wasi-sdk-20 +sed -i -e "s|VERSION=.*|VERSION=20|g" tar_from_installation.sh +cat tar_from_installation.sh +NINJA_FLAGS=-v CC=clang CXX=clang++ env -u CFLAGS -u CXXFLAGS -u FFLAGS -u VALFLAGS -u RUSTFLAGS -u LDFLAGS -u LT_SYS_LIBRARY_PATH make package +popd +%endif + export PATH="%{_buildrootdir}/bin:$PATH" # Cleanup buildroot for existing rpms from bundled nss/nspr and other packages rm -rf %{_buildrootdir}/* @@ -1871,6 +1919,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Mon Dec 02 2024 Eike Rathke - 128.5.1-1 +- Update to 128.5.1 + +* Tue Nov 19 2024 Eike Rathke - 128.5.0-1 +- Update to 128.5.0 build1 + * Tue Oct 22 2024 Eike Rathke - 128.4.0-1 - Update to 128.4.0 build1