# Maintainer: dr460nf1r3 # Contributor: torvic9 AT mailbox DOT org # Contributor: lsf pkgname=firedragon _pkgname=FireDragon pkgver=100.0.2 pkgrel=2 pkgdesc="Librewolf fork build using custom branding, settings & KDE patches by OpenSUSE" arch=(x86_64 x86_64_v3 aarch64) backup=('usr/lib/firedragon/firedragon.cfg' 'usr/lib/firedragon/distribution/policies.json') license=(MPL GPL LGPL) url=https://gitlab.com/dr460nf1r3/settings/ depends=(gtk3 libxt mime-types dbus-glib nss ttf-font libpulse ffmpeg kfiredragonhelper) makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb autoconf2.13 rust clang llvm jack nodejs cbindgen nasm python-setuptools python-zstandard git binutils lld dump_syms wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi pciutils) # pciutils: only to avoid some PGO warning optdepends=('firejail-git: Sandboxing the browser using the included profiles' 'profile-sync-daemon: Load the browser profile into RAM' 'whoogle: Searching the web using a locally running Whoogle instance' 'searx: Searching the web using a locally running searX instance' 'networkmanager: Location detection via available WiFi networks' 'libnotify: Notification integration' 'pulseaudio: Audio support' 'speech-dispatcher: Text-to-Speech' 'hunspell-en_US: Spell checking, American English' 'libappindicator-gtk3: Global menu support for GTK apps' 'appmenu-gtk-module-git: Appmenu for GTK only' 'plasma5-applets-window-appmenu: Appmenu for Plasma only') backup=('usr/lib/librewolf/librewolf.cfg' 'usr/lib/librewolf/distribution/policies.json') options=(!emptydirs !makeflags !strip !lto !debug) install=$pkgname.install source=(https://archive.mozilla.org/pub/firefox/releases/"$pkgver"/source/firefox-"$pkgver".source.tar.xz{,.asc} "$pkgname.desktop" "git+https://gitlab.com/dr460nf1r3/common.git" "git+https://gitlab.com/dr460nf1r3/settings.git" "librewolf-source::git+https://gitlab.com/librewolf-community/browser/source.git" "librewolf-settings::git+https://gitlab.com/librewolf-community/settings.git") # source_aarch64=() sha256sums=('dc109861204f6938fd8f147af89a694eb516f3d4bb64ce3f0116452d654a8417' 'SKIP' '158152bdb9ef6a83bad62ae03a3d9bc8ae693b34926e53cc8c4de07df20ab22d' 'SKIP' 'SKIP' 'SKIP' 'SKIP') # sha256sums_aarch64=() validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases # change this to false if you do not want to run a PGO build for aarch64 as well _build_profiled_aarch64=true prepare() { mkdir -p mozbuild cd firefox-"$pkgver" local _patches_dir _patches_dir="${srcdir}/common/patches" local _librewolf_patches_dir _librewolf_patches_dir="${srcdir}/librewolf-source/patches" # Prepare patches, then return to the source directory pushd "${_patches_dir}" && sh "${srcdir}/common/rebrand.sh" popd pushd "${_librewolf_patches_dir}" && sh "${srcdir}/common/rebrand.sh" popd cat >../mozconfig <>../mozconfig <>../mozconfig < breaks profiled builds since 90.0, it seems # allow SearchEngines option in non-ESR builds patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/allow-searchengines-non-esr.patch # remove search extensions (experimental) # patch -Np1 -i "${_librewolf_patches_dir}"/search-config.patch cp "${srcdir}/librewolf-source/assets/search-config.json" services/settings/dumps/main/search-config.json # stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10) patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/stop-undesired-requests.patch # Assorted patches patch -Np1 -i "${_librewolf_patches_dir}"/urlbarprovider-interventions.patch # change some hardcoded directory strings that could lead to unnecessarily # created directories patch -Np1 -i "${_librewolf_patches_dir}"/mozilla_dirs.patch # somewhat experimental patch to fix bus/dbus/remoting names to io.gitlab.librewolf # should not break things, buuuuuuuuuut we'll see. patch -Np1 -i "${_librewolf_patches_dir}"/dbus_name.patch # allow uBlockOrigin to run in private mode by default, without user intervention. patch -Np1 -i "${_librewolf_patches_dir}"/allow-ubo-private-mode.patch # add custom uBO assets (on first launch only) patch -Np1 -i "${_librewolf_patches_dir}"/custom-ubo-assets-bootstrap-location.patch # ui patches # remove references to firefox from the settings UI, change text in some of the links, # explain that we force en-US and suggest enabling history near the session restore checkbox. patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/pref-naming.patch # patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remap-links.patch # patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/hide-default-browser.patch # Add LibreWolf logo to Debugging Page patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/lw-logo-devtools.patch # patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/privacy-preferences.patch # remove firefox references in the urlbar, when suggesting opened tabs. patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-branding-urlbar.patch # remove cfr UI elements, as they are disabled and locked already. patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-cfrprefs.patch # do not display your browser is being managed by your organization in the settings. patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-organization-policy-banner.patch # hide "snippets" section from the home page settings, as it was already locked. patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-snippets-from-home.patch # add warning that sanitizing exceptions are bypassed by the options in History > Clear History when LibreWolf closes > Settings patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/sanitizing-description.patch # add patch to hide website appearance settings patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/website-appearance-ui-rfp.patch # patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/handlers.patch # fix telemetry removal, see https://gitlab.com/librewolf-community/browser/linux/-/merge_requests/17, for example patch -Np1 -i "${_librewolf_patches_dir}"/disable-data-reporting-at-compile-time.patch # allows hiding the password manager (from the lw pref pane) / via a pref patch -Np1 -i "${_librewolf_patches_dir}"/hide-passwordmgr.patch # Pref pane - custom FireDragon svg patch -Np1 -i "${_patches_dir}"/custom/librewolf-pref-pane.patch patch -Np1 -i "${_patches_dir}"/custom/add_firedragon_svg.patch rm -f "${srcdir}"/common/source_files/mozconfig cp -r "${srcdir}"/common/source_files/* ./ } build() { cd firefox-"$pkgver" export MOZ_NOSPAM=1 export MOZBUILD_STATE_PATH="$srcdir/mozbuild" # export MOZ_ENABLE_FULL_SYMBOLS=1 export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach # let us hope this is a working _new_ workaround for the pip env issues? # LTO needs more open files ulimit -n 4096 # Do 3-tier PGO echo "Building instrumented browser..." if [[ $CARCH == 'aarch64' ]]; then cat >.mozconfig ../mozconfig - <.mozconfig ../mozconfig - <.mozconfig ../mozconfig - <.mozconfig ../mozconfig - <>.mozconfig <