Hi everyone, The attached patch does the following to the librewolf port:
* Enable PGO on builds, by re-using Firefox PGO data. LibreWolf makes extensive modification to parts of Firefox, but most of the overall codebase remains unchanged. Most files remain unchanged in LibreWolf, so this PGO data will easily improve performance on LibreWolf as well, except on those parts that may differ substantially in LibreWolf, in which case the gain/loss would probably be zero.
I'm unsure if any other project has ever tested building LibreWolf this way, but it does build, and it works perfectly. This should provide a notable performance increase depending on the user's workload. The LibreWolf port is version-matched to the FireFox port, and uses the same profile data that a corresponding FireFox version would in OpenBSD; since PGO already works there, we know it'll work in LibreWolf.
* Re-enable --enable-rust-simd build option. This caused issues in an earlier version of the port before being merged, but it should be OK so long as rustc/cargo and LibreWolf are both kept up to date in ports, which they always are.
I've built LibreWolf with both of these changes, and it works perfectly. This is built on 154.0.1-3, and I applied it on top of the recently merged other patches that I sent for LibreWolf that updated the mozconfig/policy and changed how mozconfig is patched.
With this change, LibreWolf should now be on par with Firefox in OpenBSD as it uses the same optimisations (it may actually be faster, unless Firefox also uses --enable-rust-simd in OpenBSD), the same configuration where appropriate, and it is absolutely already version-matched. If there were an OpenBSD release tomorrow, I'd be quite happy to give users pkg binaries of LibreWolf with this patch applied.
Happy hacking! -- Company director, Minifree Ltd Registered in England, No. 9361826 | VAT No. GB202190462 Registered Office: 19 Hilton Road, Canvey Island, Essex SS8 9QA, UK
From 4083aa2a33bbfa0b7fb97c2f80250ca1ca75a3a3 Mon Sep 17 00:00:00 2001 From: Leah Rowe <[email protected]> Date: Sun, 30 Aug 2026 20:51:18 +0100 Subject: [PATCH 1/1] www/librewolf: enable speed optimisations use firefox PGO data, matched to the corresponding firefox version (154.0.1) matching librewolf 154.0.1-3. although librewolf doesn't provide PGO data, the two codebases are so similar that using PGO for speed optimisation will work on areas of the code that remain untouched by librewolf, which is most of the code. i've re-added the rust simd build option, which is fine so long as you keep both librewolf and rustc/cargo up to date in the ports system. i initially removed this option during development of the port, and i was often using older versions of librewolf or its libraries, which includes rust libraries, which sometimes caused build errors that removing this option mitigated. for regular ports maintenance, it is best that this option remains enabled as it enables a nice performance boost for users in certain workloads. Signed-off-by: Leah Rowe <[email protected]> --- www/librewolf/Makefile | 9 ++++++++- www/librewolf/distinfo | 2 ++ www/librewolf/patches/patch-mozconfig | 12 ++++-------- www/mozilla/mozilla.port.mk | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/www/librewolf/Makefile b/www/librewolf/Makefile index ba70810ef68..6058e04cdf4 100644 --- a/www/librewolf/Makefile +++ b/www/librewolf/Makefile @@ -15,12 +15,19 @@ ONLY_FOR_ARCHS = amd64 aarch64 riscv64 # librewolf-149.0.2-2 (upstream) becomes librewolf-149.0.2pl2 (patch level 2) MOZILLA_DIST_VERSION = 154.0.1-3 MOZILLA_VERSION = ${MOZILLA_DIST_VERSION:C/-([0-9]+)$/pl\1/} -REVISION = 0 +REVISION = 1 MOZILLA_PROJECT = librewolf MOZILLA_CODENAME = browser MAINTAINER = Leah Rowe <[email protected]> +# LibreWolf doesn't provide PGO data, but we use the data +# provided by FireFox releases, re-using the OpenBSD distfile +MOZILLA_PROFDATA_TASKID = bR-VI2yqTky87DcaKP4BRQ +FFVERSION = ${MOZILLA_DIST_VERSION:C/-([0-9]+)$//} +FFDIST = firefox-${FFVERSION}.source +DISTFILES.profdata = ${FFDIST}-profdata.tar.xz{profdata.tar.xz} + HOMEPAGE = https://librewolf.net/ SO_VERSION = 3.0 # Bump minor ver if shlibs deleted in components dir to avoid pkg_add -r issues diff --git a/www/librewolf/distinfo b/www/librewolf/distinfo index a9b3cc0a0e6..5a98137d487 100644 --- a/www/librewolf/distinfo +++ b/www/librewolf/distinfo @@ -1,2 +1,4 @@ +SHA256 (librewolf/firefox-154.0.1.source-profdata.tar.xz) = BrlSCR20VLpGVd9ypwbr2A44WUherRdCu9EpR4ZJPT8= SHA256 (librewolf/librewolf-154.0.1-3.source.tar.gz) = /ubKrDD5r/bf2P6GjOhDYCsDwwcmCchv9/xsF8OXpsw= +SIZE (librewolf/firefox-154.0.1.source-profdata.tar.xz) = 18840512 SIZE (librewolf/librewolf-154.0.1-3.source.tar.gz) = 1175015645 diff --git a/www/librewolf/patches/patch-mozconfig b/www/librewolf/patches/patch-mozconfig index 011bd84fadf..51454968286 100644 --- a/www/librewolf/patches/patch-mozconfig +++ b/www/librewolf/patches/patch-mozconfig @@ -10,7 +10,7 @@ restored on re-builds, matching what was produced by this patch. Index: mozconfig --- mozconfig.orig +++ mozconfig -@@ -1,20 +1,29 @@ +@@ -1,9 +1,16 @@ +# %%VARIABLE%% is replaced with a string set by the +# OpenBSD port Makefile at build time. In addition to +# these changes, the LibreWolf OpenBSD port Makefile @@ -29,12 +29,8 @@ Index: mozconfig ac_add_options --disable-updater ac_add_options --disable-cargo-incremental ac_add_options --enable-hardening - ac_add_options --enable-stl-hardening - ac_add_options --enable-optimize - ac_add_options --enable-release --ac_add_options --enable-rust-simd -+# Rust SIMD option causes build errors on OpenBSD: -+# ac_add_options --enable-rust-simd +@@ -13,8 +20,9 @@ + ac_add_options --enable-rust-simd # allow replacing malloc manually, will not affect regular systems # not compatible with ac_add_options --disable-jemalloc, which only works when preloading custom malloc -ac_add_options --enable-replace-malloc @@ -45,7 +41,7 @@ Index: mozconfig ac_add_options --with-app-name=librewolf ac_add_options --with-branding=browser/branding/librewolf -@@ -33,7 +42,19 @@ +@@ -33,7 +41,19 @@ export CFLAGS="-ftrivial-auto-var-init=zero -fwrapv -Wno-backend-plugin $CFLAGS" export CXXFLAGS="-ftrivial-auto-var-init=zero -fwrapv -Wno-backend-plugin $CXXFLAGS" diff --git a/www/mozilla/mozilla.port.mk b/www/mozilla/mozilla.port.mk index b583e5af521..68e7bc78668 100644 --- a/www/mozilla/mozilla.port.mk +++ b/www/mozilla/mozilla.port.mk @@ -53,7 +53,7 @@ EXTRACT_SUFX ?= .tar.xz DIST_SUBDIR ?= mozilla .if defined(MOZILLA_PROFDATA_TASKID) -DISTFILES.profdata = ${DISTNAME}-profdata${EXTRACT_SUFX}{profdata${EXTRACT_SUFX}} +DISTFILES.profdata ?= ${DISTNAME}-profdata${EXTRACT_SUFX}{profdata${EXTRACT_SUFX}} SITES.profdata = https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/${MOZILLA_PROFDATA_TASKID}/runs/0/artifacts/public/build/ .if ${MACHINE_ARCH:Mamd64} CONFIGURE_ARGS += --enable-profile-use -- 2.55.0
OpenPGP_0x5C654067D383B1FF.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature
