1
0
mirror of https://aur.archlinux.org/firedragon.git synced 2024-12-27 05:04:14 +00:00

Major version update - Floorp-based PKGBUILD 11.9.0

This commit is contained in:
FGD-Garuda 2024-02-03 17:26:10 -05:00
parent 249f181f54
commit e65a622e5c
3 changed files with 320 additions and 380 deletions

115
.SRCINFO
View File

@ -1,89 +1,78 @@
pkgbase = firedragon pkgbase = firedragon
pkgdesc = Librewolf fork build using custom branding & settings pkgdesc = Floorp fork build using custom branding & settings
pkgver = 119.0 pkgver = 11.9.0
pkgrel = 2 pkgrel = 1
url = https://gitlab.com/dr460nf1r3/settings/ url = http://dr460nf1r3.org
install = firedragon.install install = firedragon.install
arch = x86_64 arch = x86_64
arch = x86_64_v3 license = MPL2
arch = aarch64 makedepends = cbindgen
license = MPL makedepends = clang
license = GPL
license = LGPL
makedepends = unzip
makedepends = zip
makedepends = diffutils makedepends = diffutils
makedepends = yasm makedepends = dump_syms
makedepends = mesa makedepends = imagemagick
makedepends = imake makedepends = imake
makedepends = inetutils makedepends = inetutils
makedepends = xorg-server-xvfb
makedepends = autoconf2.13
makedepends = rust
makedepends = clang
makedepends = llvm
makedepends = jack makedepends = jack
makedepends = nodejs
makedepends = cbindgen
makedepends = nasm
makedepends = mold
makedepends = gawk
makedepends = python-setuptools
makedepends = python-zstandard
makedepends = git
makedepends = binutils
makedepends = dump_syms
makedepends = lld makedepends = lld
makedepends = libxss makedepends = llvm
makedepends = wasi-compiler-rt>15 makedepends = mesa
makedepends = wasi-libc>=1:0+314+a1c7c2c makedepends = nasm
makedepends = wasi-libc++>15 makedepends = nodejs
makedepends = wasi-libc++abi>15 makedepends = python
makedepends = pciutils makedepends = rust
makedepends = unzip
makedepends = wasi-compiler-rt
makedepends = wasi-libc
makedepends = wasi-libc++
makedepends = wasi-libc++abi
makedepends = xorg-server-xvfb
makedepends = yasm
makedepends = zip
depends = dbus
depends = dbus-glib
depends = ffmpeg
depends = gtk3 depends = gtk3
depends = libevent
depends = libjpeg
depends = libpulse
depends = libvpx
depends = libwebp
depends = libxss
depends = libxt depends = libxt
depends = mime-types depends = mime-types
depends = dbus-glib
depends = nss depends = nss
depends = pipewire
depends = ttf-font depends = ttf-font
depends = libpulse depends = zlib
depends = ffmpeg optdepends = hunspell-dictionary: Spell checking
depends = xdg-desktop-portal
optdepends = firejail-git: Sandboxing the browser using the included profiles
optdepends = profile-sync-daemon: Load the browser profile into RAM
optdepends = whoogle: Searching the web using a locally running Whoogle instance
optdepends = searx: Searching the web using a locally running searX instance
optdepends = networkmanager: Location detection via available WiFi networks
optdepends = libnotify: Notification integration optdepends = libnotify: Notification integration
optdepends = networkmanager: Location detection via available WiFi networks
optdepends = profile-sync-daemon: Load the browser profile into RAM
optdepends = pulseaudio: Audio support optdepends = pulseaudio: Audio support
optdepends = searx: Searching the web using a locally running searX instance
optdepends = speech-dispatcher: Text-to-Speech optdepends = speech-dispatcher: Text-to-Speech
optdepends = hunspell-en_US: Spell checking, American English optdepends = whoogle: Searching the web using a locally running Whoogle instance
optdepends = libappindicator-gtk3: Global menu support for GTK apps optdepends = xdg-desktop-portal: Screensharing with Wayland
optdepends = appmenu-gtk-module-git: Appmenu for GTK only replaces = firedragon-next
optdepends = plasma5-applets-window-appmenu: Appmenu for Plasma only options = !debug
options = !emptydirs options = !emptydirs
options = !lto
options = !makeflags options = !makeflags
options = !strip options = !strip
options = !lto
options = !debug
backup = usr/lib/firedragon/firedragon.cfg backup = usr/lib/firedragon/firedragon.cfg
backup = usr/lib/firedragon/distribution/policies.json backup = usr/lib/firedragon/distribution/policies.json
source = https://archive.mozilla.org/pub/firefox/releases/119.0/source/firefox-119.0.source.tar.xz source = https://github.com/Floorp-Projects/Floorp/archive/refs/tags/v11.9.0.tar.gz
source = https://archive.mozilla.org/pub/firefox/releases/119.0/source/firefox-119.0.source.tar.xz.asc source = floorp-core::git+https://github.com/Floorp-Projects/Floorp-core#commit=cefaa9a0352456c45be6a917e6664f8ef054a68f
source = floorp-l10n-central::git+https://github.com/Floorp-Projects/Unified-l10n-central#commit=6915ae0005fdb1684f3b6b0731bdec1a0596f7e8
source = common::git+https://gitlab.com/garuda-linux/firedragon/common.git
source = settings::git+https://gitlab.com/garuda-linux/firedragon/settings.git
source = firedragon.desktop source = firedragon.desktop
source = git+https://gitlab.com/dr460nf1r3/common.git sha256sums = 11a7b2bfc2582220e0e0f0be90b9575249f52856fe21b55cbce9b72c516d654e
source = git+https://gitlab.com/dr460nf1r3/settings.git sha256sums = SKIP
source = librewolf-source::git+https://codeberg.org/librewolf/source.git sha256sums = SKIP
source = librewolf-settings::git+https://codeberg.org/librewolf/settings.git sha256sums = SKIP
source = cachyos-source::git+https://github.com/CachyOS/CachyOS-Browser-Common.git
validpgpkeys = 14F26682D0916CDD81E37B6D61B7B526D98F0353
sha256sums = f63e44194548f246e1396508800739a24c0517e65e920002a6f67ee099be39dd
sha256sums = SKIP sha256sums = SKIP
sha256sums = 53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560 sha256sums = 53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
pkgname = firedragon pkgname = firedragon

569
PKGBUILD
View File

@ -1,406 +1,349 @@
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org> # Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
# Co-Maintainer: FGD # Co-Maintainer: FGD
# Contributor: Peter Jung <admin@ptr1337.dev>
# Contributor: vnepogodin
# Contributor: torvic9 AT mailbox DOT org
# Contributor: lsf
pkgname=firedragon pkgname=firedragon
_pkgname=FireDragon _pkgname=FireDragon
pkgver=119.0 pkgver=11.9.0
pkgrel=2 _floorp_core_commit=cefaa9a0352456c45be6a917e6664f8ef054a68f
pkgdesc="Librewolf fork build using custom branding & settings" _floorp_l10n_commit=6915ae0005fdb1684f3b6b0731bdec1a0596f7e8
arch=(x86_64 x86_64_v3 aarch64) pkgrel=1
backup=('usr/lib/firedragon/firedragon.cfg' pkgdesc="Floorp fork build using custom branding & settings"
'usr/lib/firedragon/distribution/policies.json') url='http://dr460nf1r3.org'
license=(MPL GPL LGPL) arch=('x86_64')
url=https://gitlab.com/dr460nf1r3/settings/ license=('MPL2')
_arch_git=https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/firefox/trunk depends=(dbus
_arch_git_blob=https://raw.githubusercontent.com/archlinux/svntogit-packages dbus-glib
depends=(gtk3 libxt mime-types dbus-glib nss ttf-font libpulse ffmpeg xdg-desktop-portal) ffmpeg
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb gtk3
autoconf2.13 rust clang llvm jack nodejs cbindgen nasm mold gawk libevent
python-setuptools python-zstandard git binutils dump_syms lld libxss libjpeg
'wasi-compiler-rt>15' 'wasi-libc>=1:0+314+a1c7c2c' 'wasi-libc++>15' 'wasi-libc++abi>15' pciutils) # pciutils: only to avoid some PGO warning libpulse
optdepends=('firejail-git: Sandboxing the browser using the included profiles' libvpx
'profile-sync-daemon: Load the browser profile into RAM' libwebp
'whoogle: Searching the web using a locally running Whoogle instance' libxss
'searx: Searching the web using a locally running searX instance' libxt
'networkmanager: Location detection via available WiFi networks' mime-types
'libnotify: Notification integration' nss
'pulseaudio: Audio support' pipewire
'speech-dispatcher: Text-to-Speech' ttf-font
'hunspell-en_US: Spell checking, American English' zlib)
'libappindicator-gtk3: Global menu support for GTK apps' makedepends=(cbindgen
'appmenu-gtk-module-git: Appmenu for GTK only' clang
'plasma5-applets-window-appmenu: Appmenu for Plasma only') diffutils
options=(!emptydirs !makeflags !strip !lto !debug) dump_syms
install=$pkgname.install imagemagick
source=(https://archive.mozilla.org/pub/firefox/releases/"$pkgver"/source/firefox-"$pkgver".source.tar.xz{,.asc} imake
"$pkgname.desktop" inetutils
"git+https://gitlab.com/dr460nf1r3/common.git" jack
"git+https://gitlab.com/dr460nf1r3/settings.git" lld
"librewolf-source::git+https://codeberg.org/librewolf/source.git" llvm
"librewolf-settings::git+https://codeberg.org/librewolf/settings.git" mesa
"cachyos-source::git+https://github.com/CachyOS/CachyOS-Browser-Common.git") nasm
sha256sums=('f63e44194548f246e1396508800739a24c0517e65e920002a6f67ee099be39dd' nodejs
'SKIP' python
'53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560' rust
unzip
wasi-compiler-rt
wasi-libc
wasi-libc++
wasi-libc++abi
xorg-server-xvfb
yasm
zip)
optdepends=('hunspell-dictionary: Spell checking'
'libnotify: Notification integration'
'networkmanager: Location detection via available WiFi networks'
'profile-sync-daemon: Load the browser profile into RAM'
'pulseaudio: Audio support'
'searx: Searching the web using a locally running searX instance'
'speech-dispatcher: Text-to-Speech'
'whoogle: Searching the web using a locally running Whoogle instance'
'xdg-desktop-portal: Screensharing with Wayland')
replaces=(firedragon-next)
options=(!debug
!emptydirs
!lto
!makeflags
!strip)
backup=("usr/lib/${pkgname}/${pkgname}.cfg"
"usr/lib/${pkgname}/distribution/policies.json")
source=(https://github.com/Floorp-Projects/Floorp/archive/refs/tags/v"${pkgver}".tar.gz
"floorp-core::git+https://github.com/Floorp-Projects/Floorp-core#commit=$_floorp_core_commit"
"floorp-l10n-central::git+https://github.com/Floorp-Projects/Unified-l10n-central#commit=$_floorp_l10n_commit"
"common::git+https://gitlab.com/garuda-linux/firedragon/common.git"
"settings::git+https://gitlab.com/garuda-linux/firedragon/settings.git"
"${pkgname}.desktop")
sha256sums=('11a7b2bfc2582220e0e0f0be90b9575249f52856fe21b55cbce9b72c516d654e'
'SKIP' 'SKIP'
'SKIP' 'SKIP'
'SKIP' 'SKIP'
'SKIP' 'SKIP'
'SKIP') '53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560')
# sha256sums_aarch64=() install="${pkgname}.install"
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
# change this to false if you do not want to run a PGO build for aarch64 or x86_64
_build_profiled_aarch64=true
_build_profiled_x86_64=true
# Fix some potential Python and a Rust error
if [ "${CC}" != "gcc" ] || [ "${CXX}" != "g++" ]; then
export CC=gcc
export CXX=g++
export LD=ld
export AS=""
export NM=""
export AR=""
export RANLIB=""
export OBJCOPY=""
export LDFLAGS="${LDFLAGS/-static/}"
fi
prepare() { prepare() {
mkdir -p mozbuild # Floorp's shenanigan to make the build work without cloning the whole
cd firefox-"$pkgver" # git source (puts submodules' content in place)
mv -f "${srcdir}"/floorp-core/* ./Floorp-"${pkgver}"/floorp
mv -f "${srcdir}"/floorp-l10n-central/* ./Floorp-"${pkgver}"/floorp/browser/locales/l10n-central
local _patches_dir rm -rf "${srcdir}/mozbuild"
_patches_dir="${srcdir}/common/patches" mkdir "${srcdir}/mozbuild"
local _librewolf_patches_dir cd Floorp-"${pkgver}" || exit
_librewolf_patches_dir="${srcdir}/librewolf-source/patches" cat >../mozconfig <<END
ac_add_options --with-app-basename=${_pkgname}
local _cachyos_patches_dir ac_add_options --with-app-name=${pkgname}
_cachyos_patches_dir="${srcdir}/cachyos-source/patches" ac_add_options --with-branding=browser/branding/firedragon
ac_add_options --with-l10n-base=${PWD@Q}/floorp/browser/locales/l10n-central
cat >../mozconfig <<END
ac_add_options --enable-application=browser ac_add_options --enable-application=browser
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
# This supposedly speeds up compilation (We test through dogfooding anyway) # Build options
ac_add_options --disable-debug
ac_add_options --disable-tests
# TODO: use source/assets/moczonfig in the future
# NOTE: let us use it for one last build, otherwise, there might be some conflicts
mk_add_options MOZ_CRASHREPORTER=0
mk_add_options MOZ_DATA_REPORTING=0
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
mk_add_options MOZ_TELEMETRY_REPORTING=0
ac_add_options --disable-bootstrap ac_add_options --disable-bootstrap
ac_add_options --disable-elf-hack
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
ac_add_options --enable-hardening ac_add_options --enable-hardening
ac_add_options --enable-linker=lld ac_add_options --enable-linker=lld
ac_add_options --enable-lto=cross,full
ac_add_options --enable-optimize="-O3"
ac_add_options --enable-release ac_add_options --enable-release
ac_add_options --enable-rust-simd ac_add_options --enable-rust-simd
ac_add_options --enable-wasm-simd
ac_add_options --prefix=/usr ac_add_options --prefix=/usr
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
export AR=llvm-ar export MOZ_INCLUDE_SOURCE_INFO=1
export CC='clang' export RUSTC_OPT_LEVEL=2
export CXX='clang++'
export NM=llvm-nm
export RANLIB=llvm-ranlib
# Branding # Branding
ac_add_options --allow-addon-sideload ac_add_options --allow-addon-sideload
ac_add_options --enable-unverified-updates
ac_add_options --enable-update-channel=release ac_add_options --enable-update-channel=release
ac_add_options --with-app-name=${pkgname}
ac_add_options --with-branding=browser/branding/${pkgname}
ac_add_options --with-distribution-id=org.garudalinux ac_add_options --with-distribution-id=org.garudalinux
ac_add_options --with-unsigned-addon-scopes=app,system ac_add_options --with-unsigned-addon-scopes=app,system
export MOZ_REQUIRE_SIGNING=1 export MOZILLA_OFFICIAL=1
export MOZ_APP_REMOTINGNAME=${pkgname}
export MOZ_CRASHREPORTER=
export MOZ_DATA_REPORTING=
export MOZ_REQUIRE_SIGNING=
export MOZ_SERVICES_HEALTHREPORT=
export MOZ_TELEMETRY_REPORTING=
# System libraries # System libraries
ac_add_options --with-system-jpeg
ac_add_options --with-system-libevent
ac_add_options --with-system-libvpx
ac_add_options --with-system-nspr ac_add_options --with-system-nspr
ac_add_options --with-system-nss ac_add_options --with-system-nss
ac_add_options --with-system-webp
ac_add_options --with-system-zlib
# Features # Features
ac_add_options --enable-jxl ac_add_options --disable-crashreporter # (Minimize telemetry)
ac_add_options --enable-alsa ac_add_options --disable-debug
ac_add_options --enable-jack ac_add_options --disable-debug-js-modules
ac_add_options --disable-crashreporter ac_add_options --disable-debug-symbols
ac_add_options --disable-updater
ac_add_options --disable-default-browser-agent ac_add_options --disable-default-browser-agent
ac_add_options --disable-gpsd
ac_add_options --disable-necko-wifi
ac_add_options --disable-parental-controls # (Disable local/OS MTIM)
ac_add_options --disable-rust-tests
ac_add_options --disable-synth-speechd
ac_add_options --disable-tests
# ac_add_options --disable-update-agent # (Might have to wait for a more recent version of Firefox. The setting is not availabe on v115)
ac_add_options --disable-updater
ac_add_options --disable-warnings-as-errors
ac_add_options --disable-webspeech
ac_add_options --disable-webspeechtestbackend
ac_add_options --enable-alsa
ac_add_options --enable-bundled-fonts # (CSS system fonts are normalized, to hide any customization at the OS level, or the defaults that different locales might have)
ac_add_options --enable-jack
ac_add_options --enable-jxl
ac_add_options --enable-proxy-bypass-protection
ac_add_options --enable-strip
# WASI # Other
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot export AR=llvm-ar
export CC=clang
export CXX=clang++
export NM=llvm-nm
export RANLIB=llvm-ranlib
END END
if [[ $CARCH == 'aarch64' ]]; then local _patches_dir
cat >>../mozconfig <<END _patches_dir="${srcdir}/common/patches"
# taken from manjaro build:
ac_add_options --enable-optimize="-g0 -O2"
END
export MOZ_DEBUG_FLAGS=" " local _floorp_patches_dir
export CFLAGS+=" -g0" _floorp_patches_dir="${srcdir}/common/patches/floorp/"
export CXXFLAGS+=" -g0"
export RUSTFLAGS="-Cdebuginfo=0"
# we should have more than enough RAM on the CI spot instances. _patch() {
# ...or maybe not? printf 'Patching %s ...\n' "$1"
export LDFLAGS+=" -Wl,--no-keep-memory" patch -Np1 -i "$1"
# patch -Np1 -i "${_librewolf_patches_dir}"/arm.patch # not required anymore? }
# patch -Np1 -i ../${pkgver}-${pkgrel}_build-arm-libopus.patch
else # Remove some pre-installed addons that might be questionable
_patch "${_floorp_patches_dir}"/remove_addons.patch
cat >>../mozconfig <<END # Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
# probably not needed, enabled by default? _patch "${_floorp_patches_dir}"/sed-patches/stop-undesired-requests.patch
ac_add_options --enable-optimize
# Arch upstream has it in their PKGBUILD, ALARM does not for aarch64: # Assorted patches
ac_add_options --disable-elf-hack _patch "${_floorp_patches_dir}"/urlbarprovider-interventions.patch
# might help with failing x86_64 builds? # Allow uBlockOrigin to run in private mode by default, without user intervention.
export LDFLAGS+=" -Wl,--no-keep-memory" _patch "${_floorp_patches_dir}"/allow-ubo-private-mode.patch
END
fi
# Upstream patches from gentoo/CachyOS # Add custom uBO assets (on first launch only)
# Harfbuzz builder fixes (POSSIBLE FUTURE USE) _patch "${_floorp_patches_dir}"/custom-ubo-assets-bootstrap-location.patch
# patch -Np1 -i "${_cachyos_patches_dir}"/gentoo/0003-bmo-847568-Support-system-harfbuzz.patch
# Remove some pre-installed addons that might be questionable # Allows hiding the password manager (from the lw pref pane) / via a pref
patch -Np1 -i "${_librewolf_patches_dir}"/remove_addons.patch _patch "${_floorp_patches_dir}"/hide-passwordmgr.patch
# OpenSUSE KDE patches --> These seem to be DEPRECATED as of 2023-09-29 # Add Firedragon Preferences Pane
# patch -Np1 -i "${_patches_dir}"/kde-upstream/firefox-kde.patch _patch "${_patches_dir}"/pref-pane/pref-pane-small.patch
# patch -Np1 -i "${_patches_dir}"/kde-upstream/mozilla-kde.patch cp "${_patches_dir}/pref-pane/category-firedragon.svg" browser/themes/shared/preferences/category-firedragon.svg
cp "${_patches_dir}/pref-pane/firedragon.css" browser/themes/shared/preferences/firedragon.css
cp "${_patches_dir}/pref-pane/firedragon.inc.xhtml" browser/components/preferences/firedragon.inc.xhtml
cp "${_patches_dir}/pref-pane/firedragon.js" browser/components/preferences/firedragon.js
cat < "${_patches_dir}/pref-pane/preferences.ftl" >> browser/locales/en-US/browser/preferences/preferences.ftl
# Disabling Pocket # Update privacy preferences -- DISABLED to test UI changes and allow user to easily change the setting
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/disable-pocket.patch # _patch "${_patches_dir}"/custom/privacy-preferences.patch
# Allow SearchEngines option in non-ESR builds rm -f "${srcdir}"/common/source_files/mozconfig
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/allow-searchengines-non-esr.patch cp -r "${srcdir}"/common/source_files/* ./
# 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
# 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
# Don't nag to set default browser
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/hide-default-browser.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
# Update handler links
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
# Hide Firefox view --> Broken as of 2023-10-30
# patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/firefox-view.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
# Update privacy preferences
patch -Np1 -i "${_patches_dir}"/custom/privacy-preferences.patch
rm -f "${srcdir}"/common/source_files/mozconfig
cp -r "${srcdir}"/common/source_files/* ./
} }
build() { build() {
cd firefox-"$pkgver" cd Floorp-"${pkgver}" || exit
export MOZ_NOSPAM=1 export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
export MOZBUILD_STATE_PATH="$srcdir/mozbuild" export MOZBUILD_STATE_PATH="${srcdir}/mozbuild"
# export MOZ_ENABLE_FULL_SYMBOLS=1 export MOZ_ENABLE_FULL_SYMBOLS=1
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip export MOZ_NOSPAM=1
export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach # let us hope this is a working _new_ workaround for the pip env issues? export MOZ_PROFILER_STARTUP=1 # Starts the profiler is started as early as possible during startup.
# LTO needs more open files # Malloc_usable_size is used in various parts of the codebase
ulimit -n 4096 CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
# Do 3-tier PGO # LTO needs more open files
echo "Building instrumented browser..." ulimit -n 4096
if [[ $CARCH == 'aarch64' ]]; then
# Do 3-tier PGO
echo "Building instrumented browser..."
cat >.mozconfig ../mozconfig - <<END cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate ac_add_options --enable-profile-generate=cross
END END
./mach build
else echo "Profiling instrumented browser..."
./mach package
LLVM_PROFDATA=llvm-profdata \
JARLOG_FILE="${PWD}/jarlog" \
xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
./mach python build/pgo/profileserver.py
cat >.mozconfig ../mozconfig - <<END echo "Removing instrumented browser..."
ac_add_options --enable-profile-generate ./mach clobber
END
fi echo "Building optimized browser..."
cat >.mozconfig ../mozconfig
./mach build if [[ -s merged.profdata ]]; then
stat -c "Profile data found (%s bytes)" merged.profdata
echo "ac_add_options --enable-profile-use=cross" >>.mozconfig
echo "ac_add_options --with-pgo-profile-path='${PWD@Q}/merged.profdata'" >>.mozconfig
else
echo "Profile data not found."
fi
echo "Profiling instrumented browser..." if [[ -s jarlog ]]; then
stat -c "Jar log found (%s bytes)" jarlog
echo "ac_add_options --with-pgo-jarlog='${PWD@Q}/jarlog'" >>.mozconfig
else
echo "Jar log not found."
fi
./mach package ./mach build
LLVM_PROFDATA=llvm-profdata \ echo "Building symbol archive..."
JARLOG_FILE="$PWD/jarlog" \ ./mach buildsymbols
xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
./mach python build/pgo/profileserver.py
stat -c "Profile data found (%s bytes)" merged.profdata
test -s merged.profdata
stat -c "Jar log found (%s bytes)" jarlog
test -s jarlog
echo "Removing instrumented browser..."
./mach clobber
echo "Building optimized browser..."
if [[ $CARCH == 'aarch64' ]]; then
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-lto
ac_add_options --enable-profile-use
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
END
else
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-lto
ac_add_options --enable-profile-use
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
END
fi
# cat >>.mozconfig <<END
# ac_add_options --enable-linker=lld
# ac_add_options --disable-bootstrap
# END
./mach build
echo "Building symbol archive..."
./mach buildsymbols
} }
package() { package() {
cd firefox-"$pkgver" cd Floorp-"${pkgver}" || exit
DESTDIR="$pkgdir" ./mach install
rm "$pkgdir"/usr/lib/${pkgname}/pingsender DESTDIR="${pkgdir}" ./mach install
install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname" rm "${pkgdir}/usr/lib/${pkgname}/pingsender"
local vendorjs local vendorjs="${pkgdir}/usr/lib/${pkgname}/browser/defaults/preferences/vendor.js"
vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" install -Dvm644 /dev/stdin "${vendorjs}" <<END
// Use LANG environment variable to choose locale
pref("intl.locale.requested", "");
install -Dvm644 /dev/stdin "$vendorjs" <<END
// Use system-provided dictionaries // Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell"); pref("spellchecker.dictionary_path", "/usr/share/hunspell");
// Disable default browser checking.
pref("browser.shell.checkDefaultBrowser", false);
// Don't disable extensions in the application directory // Don't disable extensions in the application directory
// done in firedragon.cfg pref("extensions.autoDisableScopes", 11);
// pref("extensions.autoDisableScopes", 11);
// Enable GNOME Shell search provider
pref("browser.gnome-search-provider.enabled", true);
END END
# cd ${srcdir}/settings local distini="${pkgdir}/usr/lib/${pkgname}/distribution/distribution.ini"
# git checkout ${_settings_commit} install -Dvm644 /dev/stdin "${distini}" <<END
cd ${srcdir}/firefox-"$pkgver"
cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/
local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
install -Dvm644 /dev/stdin "$distini" <<END
[Global] [Global]
id=garudalinux id=${pkgname}
version=1.0 version=${pkgver}-${pkgrel}
about=$_pkgname for Garuda Linux about=${pkgdesc}
[Preferences] [Preferences]
app.distributor=garudalinux app.distributor=garudalinux
app.distributor.channel=$pkgname app.distributor.channel=${pkgname}
app.partner.garudalinux=garudalinux app.partner.garudalinux=garudalinux
END END
for i in 16 32 48 64 128; do # Use system certificates
install -Dvm644 browser/branding/${pkgname}/default$i.png \ local nssckbi="${pkgdir}/usr/lib/${pkgname}/libnssckbi.so"
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" if [[ -e "${nssckbi}" ]]; then
done ln -srfv "${pkgdir}/usr/lib/libnssckbi.so" "${nssckbi}"
install -Dvm644 browser/branding/${pkgname}/content/about-logo.png \ fi
"$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"
# Arch upstream provides a separate svg for this. we don't have that, so let's re-use 16.png # Make native messaging work
install -Dvm644 browser/branding/${pkgname}/default16.png \ ln -s "/usr/lib/mozilla/native-messaging-hosts" "${pkgdir}/usr/lib/${pkgname}/native-messaging-hosts"
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"
install -Dvm644 ../$pkgname.desktop \ # GNOME search provider
"$pkgdir/usr/share/applications/$pkgname.desktop" local sprovider="$pkgdir/usr/share/gnome-shell/search-providers/$pkgname.search-provider.ini"
install -Dvm644 /dev/stdin "$sprovider" <<END
# Install a wrapper to avoid confusion about binary path [Shell Search Provider]
install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END DesktopId=$pkgname.desktop
#!/bin/sh BusName=org.mozilla.${pkgname//-/}.SearchProvider
exec /usr/lib/$pkgname/$pkgname "\$@" ObjectPath=/org/mozilla/${pkgname//-/}/SearchProvider
Version=2
END END
# Replace duplicate binary with wrapper # Application icons
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850 for i in 16 32 48 64 128; do
ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/$pkgname-bin" install -Dvm644 browser/branding/firedragon/default$i.png \
"${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps/${pkgname}.png"
done
install -Dvm644 browser/branding/firedragon/content/about-logo.png \
"${pkgdir}/usr/share/icons/hicolor/192x192/apps/${pkgname}.png"
# Use system certificates # Replace duplicate binary with wrapper
local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so" # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
if [[ -e $nssckbi ]]; then ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/${pkgname%-*}-bin"
ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
fi
# Make native messaging work # All the needed configuration files
ln -s "/usr/lib/mozilla/native-messaging-hosts" "$pkgdir/usr/lib/firedragon/native-messaging-hosts" install -Dvm644 "../${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
install -Dvm644 "${srcdir}/settings/firedragon.cfg" "${pkgdir}/usr/lib/${pkgname}/firedragon.cfg"
# Delete unneeded things from settings repo install -Dvm644 "${srcdir}/settings/firedragon.psd" "${pkgdir}/usr/share/psd/browsers/firedragon"
rm "$pkgdir/usr/lib/firedragon/LICENSE.txt" install -Dvm644 "${srcdir}/settings/defaults/pref/local-settings.js" "${pkgdir}/usr/lib/${pkgname}/defaults/pref/local-settings.js"
rm "$pkgdir/usr/lib/firedragon/about.png" install -Dvm644 "${srcdir}/settings/distribution/policies.json" "${pkgdir}/usr/lib/${pkgname}/distribution/policies.json"
rm "$pkgdir/usr/lib/firedragon/firedragon.psd"
rm "$pkgdir/usr/lib/firedragon/home.png"
rm "$pkgdir/usr/lib/firedragon/package.json"
rm "$pkgdir/usr/lib/firedragon/tabliss.json"
rm "$pkgdir/usr/lib/firedragon/yarn.lock"
} }

View File

@ -1,4 +1,12 @@
post_install() { RED='\033[0;31m'
echo "To use profile-sync-daemon add firedragon to ~/.config/psd/psd.conf" NC='\033[0m'
echo "If you prefer strict hardened settings execute 'mkdir ~/.firedragon && cp /usr/lib/firedragon/firedragon.overrides.cfg ~/.firedragon/'"
post_upgrade() {
echo -e "⚠️ This update contains a rebase to the Floorp browser's source! ⚠️
This means we no longer use Librewolf as base, though settings and
privacy aware feature set were kept as close to our previous setup
as possible.
${RED}To prevent potential issues, we strongly recommend to create a
fresh browser profile. This can be done by running \"firedragon -P\"
in the terminal.${NC}"
} }