From 0581e930ff225a108a47c717f6dbe0d1dcc6f750 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Tue, 13 Oct 2026 15:05:54 +0200 Subject: [PATCH 1/4] firefox: Update version from 157.0 to 157.0.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://www.firefox.com/en-US/firefox/157.0.1/releasenotes/ The source archive matches Mozilla’s SHA256SUMS (483bedee9059df2479e4531c443b1073c6ebaed3570bda0c164eb562ee241c4c). Assisted-by: claude-opus-5.5 (Claude Code) --- firefox.be0 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firefox.be0 b/firefox.be0 index 222c7a0ce..4ffa9b154 100755 --- a/firefox.be0 +++ b/firefox.be0 @@ -2,11 +2,11 @@ #export BEE_TMP_TMPDIR=/dev/shm BEE_TMP_BUILDROOT=/dev/shm/bee-root BEE_MAKEFLAGS='-j80' -# BEE_VERSION firefox-157.0-0 +# BEE_VERSION firefox-157.0.1-0 #https://ftp.mozilla.org/pub/firefox/releases/$pkgversion/SOURCE to find the right download link #SRCURL[0]="https://ftp.mozilla.org/pub/firefox/releases/${PKGVERSION}/source/firefox-${PKGVERSION}.source.tar.xz" -SRCURL[0]="https://beehive.molgen.mpg.de/c4e23e2beff1dc001ac78a1a6c32b730/firefox-157.0.source.tar.xz" +SRCURL[0]="https://beehive.molgen.mpg.de/d9d7f1b8c6b41ddede20450ba1b18217/firefox-157.0.1.source.tar.xz" #BEE_BUILDTYPE=autotools #build_in_sourcedir From 16acd229fd0d44b6383d3e0571f6de4bd8a22092 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Tue, 13 Oct 2026 17:39:24 +0200 Subject: [PATCH 2/4] firefox: Build with cross-language ThinLTO for faster build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A bee-mxqsub build on a full 256-processor node with `-t 15m` is killed while linking the Rust part of libxul: 9:35.75 Compiling gkrust-shared v0.1.0 (…/toolkit/library/rust/shared) 13:09.84 Compiling gkrust v0.1.0 (…/toolkit/library/rust) /home/pmenzel/bee-files/scripts/bee-mxqsub: line 1: 244337 CPU time limit exceeded (core dumped) ${sandbox[@]+"${sandbox[@]}"} fakeroot beesh "${beesh_args[@]}" "${beefile}" job_threads=256 job_time=900s max_utime=24991 max_real=910 The node is busy only 11 % of the time (24991 s CPU in 910 s on 256 processors). The release source archive defaults to `--enable-release`, so `config/makefiles/rust.mk` passes `-Clto` (fat LTO) to gkrust, which runs on a single core for over ten minutes. `--enable-lto=cross`, which Mozilla’s official Linux builds use, drops `-Clto` and instead runs ThinLTO over the C++ and Rust code while linking libxul, using all processors. It needs rustc and clang to share the LLVM major version, which holds: rustc 1.97.0 uses LLVM 22.1.6, and the bootstrapped clang is 22.1.8. Timings of `mach build` with this recipe's mozconfig on full MXQ nodes (job group firefox-build-time): gkrust mach build CPU used without (baseline) 9:22 → 19:56 20:49 22 cores --enable-lto=cross 8:26 → 8:28 11:19 41 cores With `mach install` the job takes 11:34. The ThinLTO link of libxul takes about two minutes and peaks at 53 GB RSS. Assisted-by: claude-opus-5.5 (Claude Code) --- firefox.be0 | 1 + 1 file changed, 1 insertion(+) diff --git a/firefox.be0 b/firefox.be0 index 4ffa9b154..f3b8f2114 100755 --- a/firefox.be0 +++ b/firefox.be0 @@ -30,6 +30,7 @@ mee_configure() { ac_add_options --without-system-nspr ac_add_options --disable-tests ac_add_options --enable-optimize + ac_add_options --enable-lto=cross ac_add_options --disable-crashreporter ac_add_options --disable-updater ac_add_options --enable-bootstrap From c3b71d44f0131f3cc209adf8a9daa2bbb7f305b5 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Tue, 13 Oct 2026 23:03:35 +0200 Subject: [PATCH 3/4] =?UTF-8?q?firefox:=20Keep=20fakeroot=E2=80=99s=20/usr?= =?UTF-8?q?/lib=20from=20overriding=20the=20bootstrapped=20clang's=20libra?= =?UTF-8?q?ries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bootstrapped clang loads the system libclang-cpp instead of its own copy: 2:07.27 checking whether the target C compiler can be used... …/build/mozbuild/clang/bin/clang: /usr/lib/libclang-cpp.so.22.1: no version information available (required by …/build/mozbuild/clang/bin/clang) 3:09.23 W …/build/mozbuild/clang/bin/clang: /usr/lib/libclang-cpp.so.22.1: no version information available (required by …/build/mozbuild/clang/bin/clang) bee-mxqsub runs beesh under fakeroot, which sets LD_LIBRARY_PATH to `/usr/lib:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot` followed by the caller’s value. The dynamic loader searches LD_LIBRARY_PATH before DT_RUNPATH, so `/usr/lib` wins over the clang’s `$ORIGIN/../lib`. It only works because both copies are 22.1.x; a system LLVM of another minor version would break the build or miscompile. The rustc profile is not the cause. The same clang 22.1.8 with the same profile, but without fakeroot, as in the firefox-build-time timing runs, shows no warning, and under fakeroot the warning appears with or without the profile. Removing `/usr/lib` from LD_LIBRARY_PATH fixes it and keeps fakeroot working, because `libfakeroot.so` lies in `/usr/lib`, which the loader searches by default anyway. Checked by running `mee_configure()` under fakeroot: clang 22.1.8 starts without the warning, and chown(2) in a child process is still faked. Assisted-by: claude-opus-5.5 (Claude Code) --- firefox.be0 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/firefox.be0 b/firefox.be0 index f3b8f2114..9dc49049a 100755 --- a/firefox.be0 +++ b/firefox.be0 @@ -16,6 +16,9 @@ mee_configure() { p=/pkg/node-24.18.0-0/profile; [ -e $p ] && . $p p=/pkg/rustc-1.97.0-0/profile; [ -e $p ] && . $p + # fakeroot prepends /usr/lib, which overrides the RUNPATH of the bootstrapped clang + LD_LIBRARY_PATH=$(tr : '\n' <<<"$LD_LIBRARY_PATH" | grep -vx /usr/lib | paste -sd:) + if [[ ${BEE_MAKEFLAGS:: 2} == "-j" ]]; then BEE_MAKEFLAGS=${BEE_MAKEFLAGS: 2} fi From 36c9244fd0715569af74b243429967db0a285edc Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Wed, 14 Oct 2026 07:53:12 +0200 Subject: [PATCH 4/4] firefox: Build outside of fakeroot for faster build Even with cross-language ThinLTO, the bee-mxqsub build on a full 256-processor node with `-t 15m` is killed, now while packaging after libxul is linked: 11:18.27 toolkit/library/build/libxul.so 13:21.72 ipc/app/plugin-container 14:38.60 E make[2]: *** Waiting for unfinished jobs.... /home/pmenzel/bee-files/scripts/bee-mxqsub: line 1: 222979 CPU time limit exceeded (core dumped) ${sandbox[@]+"${sandbox[@]}"} fakeroot beesh "${beesh_args[@]}" "${beefile}" bee-mxqsub runs beesh under fakeroot, so every process of `mach build` inherits `LD_PRELOAD=libfakeroot.so`, and their stat, chmod and chown calls are all served by the one faked daemon. This slows down the file-heavy parts of the build: Python code generation, cargo checking the vendored crates, and the final copying into `dist/`. Timings of the same `mach build` (with `--enable-lto=cross`) on full MXQ nodes (job group firefox-build-time): configured gkrust-shared libxul total fakeroot (like bee-mxqsub) 2:44 8:41 11:18 17:37 fakeroot, without LD_PRELOAD 2:23 6:02 8:41 11:34 no fakeroot 2:04 5:35 8:38 11:30 The bee log above matches the first row (2:38, 8:41, 11:18). The build directory does not need faked ownership. `mach install`, which fills the image directory, still runs under fakeroot, and with `FAKED_MODE=unknown-is-root` the files created outside of fakeroot are reported as owned by root, too. Assisted-by: claude-opus-5.5 (Claude Code) --- firefox.be0 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firefox.be0 b/firefox.be0 index 9dc49049a..0c17e56e3 100755 --- a/firefox.be0 +++ b/firefox.be0 @@ -47,7 +47,8 @@ mee_configure() { mee_build() { export CARGO_HOME=$B/.cargo - ${S}/mach build + # Under fakeroot, the file calls of all build processes go through the one faked daemon + env -u LD_PRELOAD ${S}/mach build } mee_build_post() {