1
0
mirror of https://aur.archlinux.org/firedragon.git synced 2024-12-26 12:44:21 +00:00
firedragon/PKGBUILD

415 lines
14 KiB
Bash
Raw Normal View History

2021-05-25 10:25:32 +00:00
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
2022-10-18 06:27:43 +00:00
# Contibutor: Peter Jung <admin@ptr1337.dev>
# Contributor: vnepogodin
2021-04-22 11:09:29 +00:00
# Contributor: torvic9 AT mailbox DOT org
# Contributor: lsf
2021-03-03 10:22:28 +00:00
pkgname=firedragon
_pkgname=FireDragon
2022-10-18 06:27:43 +00:00
pkgver=106.0
pkgrel=1
2021-04-22 11:09:29 +00:00
pkgdesc="Librewolf fork build using custom branding, settings & KDE patches by OpenSUSE"
arch=(x86_64 x86_64_v3 aarch64)
2021-04-22 11:09:29 +00:00
backup=('usr/lib/firedragon/firedragon.cfg'
'usr/lib/firedragon/distribution/policies.json')
2021-03-03 10:22:28 +00:00
license=(MPL GPL LGPL)
2022-05-23 18:27:28 +00:00
url=https://gitlab.com/dr460nf1r3/settings/
2022-10-08 09:56:48 +00:00
depends=(gtk3 libxt mime-types dbus-glib nss ttf-font libpulse ffmpeg)
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
2022-10-18 06:32:45 +00:00
autoconf2.13 rust clang llvm jack nodejs cbindgen nasm mold
python-setuptools python-zstandard git binutils dump_syms
2022-08-13 16:31:42 +00:00
'wasi-compiler-rt>13' 'wasi-libc>=1:0+258+30094b6' 'wasi-libc++>13' 'wasi-libc++abi>13' pciutils) # pciutils: only to avoid some PGO warning
optdepends=('firejail-git: Sandboxing the browser using the included profiles'
2021-04-22 11:09:29 +00:00
'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'
2021-03-03 10:22:28 +00:00
'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')
2022-03-12 11:41:03 +00:00
options=(!emptydirs !makeflags !strip !lto !debug)
2021-04-22 11:09:29 +00:00
install=$pkgname.install
source=(https://archive.mozilla.org/pub/firefox/releases/"$pkgver"/source/firefox-"$pkgver".source.tar.xz{,.asc}
"$pkgname.desktop"
2021-12-10 05:53:42 +00:00
"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"
2022-06-01 20:15:10 +00:00
"librewolf-settings::git+https://gitlab.com/librewolf-community/settings.git"
"cachyos-source::git+https://github.com/CachyOS/CachyOS-Browser-Common.git")
# source_aarch64=()
2022-10-18 06:27:43 +00:00
sha256sums=('1546ebfd9d5a814f17479ed626519ed69aa3c89c22c7fb1fe5c84e4d7e5d7e18'
'SKIP'
2022-10-11 04:09:44 +00:00
'53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560'
2021-04-22 11:09:29 +00:00
'SKIP'
'SKIP'
'SKIP'
2022-06-01 20:15:10 +00:00
'SKIP'
2021-06-07 10:30:59 +00:00
'SKIP')
# sha256sums_aarch64=()
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
# change this to false if you do not want to run a PGO build for aarch64 as well
_build_profiled_aarch64=true
2021-03-03 10:22:28 +00:00
2022-08-13 16:31:42 +00:00
# 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
2021-03-03 10:22:28 +00:00
prepare() {
mkdir -p mozbuild
cd firefox-"$pkgver"
2021-03-03 10:22:28 +00:00
local _patches_dir
_patches_dir="${srcdir}/common/patches"
2021-05-25 10:25:32 +00:00
local _librewolf_patches_dir
_librewolf_patches_dir="${srcdir}/librewolf-source/patches"
2021-06-07 10:30:59 +00:00
2022-06-01 20:15:10 +00:00
local _cachyos_patches_dir
_cachyos_patches_dir="${srcdir}/cachyos-source/patches"
2021-03-03 10:22:28 +00:00
cat >../mozconfig <<END
ac_add_options --enable-application=browser
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
# This supposedly speeds up compilation (We test through dogfooding anyway)
ac_add_options --disable-debug
2022-06-30 18:20:45 +00:00
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
2022-06-30 18:20:45 +00:00
ac_add_options --disable-bootstrap
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
ac_add_options --enable-hardening
2022-10-18 06:27:43 +00:00
ac_add_options --enable-linker=mold
2022-06-30 18:20:45 +00:00
ac_add_options --enable-release
ac_add_options --enable-rust-simd
ac_add_options --prefix=/usr
2022-06-30 18:20:45 +00:00
export AR=llvm-ar
2021-07-19 15:02:18 +00:00
export CC='clang'
export CXX='clang++'
2022-05-28 13:48:28 +00:00
export NM=llvm-nm
export RANLIB=llvm-ranlib
2021-03-03 10:22:28 +00:00
# Branding
2022-06-20 18:52:56 +00:00
ac_add_options --allow-addon-sideload
ac_add_options --enable-update-channel=release
2021-03-03 10:22:28 +00:00
ac_add_options --with-app-name=${pkgname}
2021-12-14 06:46:53 +00:00
ac_add_options --with-branding=browser/branding/${pkgname}
2022-06-20 18:52:56 +00:00
ac_add_options --with-distribution-id=org.garudalinux
2021-03-03 10:22:28 +00:00
ac_add_options --with-unsigned-addon-scopes=app,system
2022-06-20 18:52:56 +00:00
export MOZ_REQUIRE_SIGNING=1
2021-03-24 14:24:32 +00:00
2021-03-03 10:22:28 +00:00
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
# Features
2021-05-25 10:25:32 +00:00
ac_add_options --enable-alsa
ac_add_options --enable-jack
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
2021-03-03 10:22:28 +00:00
# wasi
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
END
if [[ $CARCH == 'aarch64' ]]; then
cat >>../mozconfig <<END
# taken from manjaro build:
ac_add_options --enable-optimize="-g0 -O2"
END
export MOZ_DEBUG_FLAGS=" "
export CFLAGS+=" -g0"
export CXXFLAGS+=" -g0"
export RUSTFLAGS="-Cdebuginfo=0"
# we should have more than enough RAM on the CI spot instances.
# ...or maybe not?
export LDFLAGS+=" -Wl,--no-keep-memory"
# patch -Np1 -i "${_librewolf_patches_dir}"/arm.patch # not required anymore?
# patch -Np1 -i ../${pkgver}-${pkgrel}_build-arm-libopus.patch
else
cat >>../mozconfig <<END
# probably not needed, enabled by default?
ac_add_options --enable-optimize
# Arch upstream has it in their PKGBUILD, ALARM does not for aarch64:
ac_add_options --disable-elf-hack
# might help with failing x86_64 builds?
export LDFLAGS+=" -Wl,--no-keep-memory"
2021-03-03 10:22:28 +00:00
END
fi
2022-06-11 09:57:36 +00:00
# Upstream patches from gentoo
# PGO improvements
2022-06-11 10:15:09 +00:00
patch -Np1 -i "${_cachyos_patches_dir}"/gentoo/0018-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
# LibreWolf
# Remove some pre-installed addons that might be questionable
2022-10-08 09:56:48 +00:00
patch -Np1 -i "${_librewolf_patches_dir}"/remove_addons.patch
# Debian patch to enable global menubar
2022-09-10 08:21:44 +00:00
patch -Np1 -i "${_librewolf_patches_dir}"/unity-menubar.patch
# KDE menu
2022-09-10 08:29:21 +00:00
patch -Np1 -i "${_librewolf_patches_dir}"/mozilla-kde_after_unity.patch
# Disabling Pocket
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/disable-pocket.patch
2022-06-11 09:57:36 +00:00
# Allow SearchEngines option in non-ESR builds
patch -Np1 -i "${_librewolf_patches_dir}"/sed-patches/allow-searchengines-non-esr.patch
2022-06-11 09:57:36 +00:00
# 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
2022-06-11 09:57:36 +00:00
# Allow uBlockOrigin to run in private mode by default, without user intervention.
patch -Np1 -i "${_librewolf_patches_dir}"/allow-ubo-private-mode.patch
2022-06-11 09:57:36 +00:00
# Add custom uBO assets (on first launch only)
patch -Np1 -i "${_librewolf_patches_dir}"/custom-ubo-assets-bootstrap-location.patch
2022-06-11 09:57:36 +00:00
# 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
2022-06-11 09:57:36 +00:00
# Remap help links
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remap-links.patch
2022-06-11 09:57:36 +00:00
# Don't nag to set default browser
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
2022-06-11 09:57:36 +00:00
# Update privacy preferences
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/privacy-preferences.patch
2021-03-03 10:22:28 +00:00
2022-06-11 09:57:36 +00:00
# Remove firefox references in the urlbar, when suggesting opened tabs.
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-branding-urlbar.patch
2022-06-11 09:57:36 +00:00
# Remove cfr UI elements, as they are disabled and locked already.
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/remove-cfrprefs.patch
2022-06-11 09:57:36 +00:00
# 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
2022-06-11 09:57:36 +00:00
# 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
2022-06-11 09:57:36 +00:00
# Add patch to hide website appearance settings
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/website-appearance-ui-rfp.patch
2022-06-11 09:57:36 +00:00
# Update handler links
patch -Np1 -i "${_librewolf_patches_dir}"/ui-patches/handlers.patch
2022-06-11 09:57:36 +00:00
# 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
2022-06-11 09:57:36 +00:00
# Allows hiding the password manager (from the lw pref pane) / via a pref
patch -Np1 -i "${_librewolf_patches_dir}"/hide-passwordmgr.patch
2022-06-20 18:52:56 +00:00
# Faster multilocate
patch -Np1 -i "${_librewolf_patches_dir}"/faster-package-multi-locale.patch
# Pref pane - custom FireDragon svg
2022-05-23 18:42:24 +00:00
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/* ./
2021-03-03 10:22:28 +00:00
}
2021-04-22 11:09:29 +00:00
2021-03-03 10:22:28 +00:00
build() {
cd firefox-"$pkgver"
2021-03-03 10:22:28 +00:00
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?
2021-03-03 10:22:28 +00:00
2021-04-22 11:09:29 +00:00
# LTO needs more open files
2021-03-03 10:22:28 +00:00
ulimit -n 4096
# Do 3-tier PGO
echo "Building instrumented browser..."
if [[ $CARCH == 'aarch64' ]]; then
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate
END
else
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate=cross
END
fi
2021-03-03 10:22:28 +00:00
./mach build
echo "Profiling instrumented browser..."
2022-05-15 08:39:50 +00:00
2021-03-03 10:22:28 +00:00
./mach package
2022-05-15 08:39:50 +00:00
2021-03-03 10:22:28 +00:00
LLVM_PROFDATA=llvm-profdata \
JARLOG_FILE="$PWD/jarlog" \
xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
./mach python build/pgo/profileserver.py
2021-05-25 10:25:32 +00:00
stat -c "Profile data found (%s bytes)" merged.profdata
test -s merged.profdata
2021-03-03 10:22:28 +00:00
2021-05-25 10:25:32 +00:00
stat -c "Jar log found (%s bytes)" jarlog
test -s jarlog
2021-03-03 10:22:28 +00:00
echo "Removing instrumented browser..."
./mach clobber
echo "Building optimized browser..."
2021-05-25 10:25:32 +00:00
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
2021-03-03 10:22:28 +00:00
ac_add_options --enable-lto=cross
ac_add_options --enable-profile-use=cross
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
2021-03-03 10:22:28 +00:00
./mach build
echo "Building symbol archive..."
./mach buildsymbols
}
package() {
cd firefox-"$pkgver"
2021-03-03 10:22:28 +00:00
DESTDIR="$pkgdir" ./mach install
2021-12-14 06:46:53 +00:00
rm "$pkgdir"/usr/lib/${pkgname}/pingsender
2021-03-03 10:22:28 +00:00
2021-04-22 11:09:29 +00:00
install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname"
local vendorjs
vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
2021-03-03 10:22:28 +00:00
2021-04-22 11:09:29 +00:00
install -Dvm644 /dev/stdin "$vendorjs" <<END
2021-03-03 10:22:28 +00:00
// Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
// Don't disable extensions in the application directory
// done in firedragon.cfg
2021-03-03 10:22:28 +00:00
// pref("extensions.autoDisableScopes", 11);
END
# cd ${srcdir}/settings
# git checkout ${_settings_commit}
cd ${srcdir}/firefox-"$pkgver"
2021-03-03 10:22:28 +00:00
cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/
2021-04-22 11:09:29 +00:00
local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
install -Dvm644 /dev/stdin "$distini" <<END
2021-03-03 10:22:28 +00:00
[Global]
id=garudalinux
version=1.0
about=$_pkgname for Garuda Linux
[Preferences]
app.distributor=garudalinux
app.distributor.channel=$pkgname
app.partner.garudalinux=garudalinux
END
for i in 16 32 48 64 128; do
2021-04-22 11:09:29 +00:00
install -Dvm644 browser/branding/${pkgname}/default$i.png \
2021-03-03 10:22:28 +00:00
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
done
2021-04-22 11:09:29 +00:00
install -Dvm644 browser/branding/${pkgname}/content/about-logo.png \
2021-03-03 10:22:28 +00:00
"$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
2021-04-22 11:09:29 +00:00
install -Dvm644 browser/branding/${pkgname}/default16.png \
2021-03-03 10:22:28 +00:00
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"
2021-04-22 11:09:29 +00:00
install -Dvm644 ../$pkgname.desktop \
2021-03-03 10:22:28 +00:00
"$pkgdir/usr/share/applications/$pkgname.desktop"
# Install a wrapper to avoid confusion about binary path
2021-04-22 11:09:29 +00:00
install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
2021-03-03 10:22:28 +00:00
#!/bin/sh
exec /usr/lib/$pkgname/$pkgname "\$@"
END
# Replace duplicate binary with wrapper
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
2021-04-22 11:09:29 +00:00
ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/$pkgname-bin"
2021-04-22 11:09:29 +00:00
# Use system certificates
local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
if [[ -e $nssckbi ]]; then
ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
fi
# Make native messaging work
2022-07-01 15:59:05 +00:00
ln -s "/usr/lib/mozilla/native-messaging-hosts" "$pkgdir/usr/lib/firedragon/native-messaging-hosts"
# Delete unneeded things from settings repo
2022-05-25 13:46:18 +00:00
rm "$pkgdir/usr/lib/firedragon/LICENSE.txt"
rm "$pkgdir/usr/lib/firedragon/about.png"
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"
2021-03-03 10:22:28 +00:00
}