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

411 lines
14 KiB
Bash
Raw Normal View History

2021-05-25 10:25:32 +00:00
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
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
2021-05-06 10:59:55 +00:00
pkgver=88.0.1
pkgrel=4
2021-04-22 11:09:29 +00:00
pkgdesc="Librewolf fork build using custom branding, settings & KDE patches by OpenSUSE"
2021-03-03 10:22:28 +00:00
arch=(x86_64 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)
url="https://gitlab.com/dr460nf1r3/settings/"
2021-04-22 11:09:29 +00:00
depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss nspr ttf-font libpulse
libwebp libvpx libjpeg zlib icu libevent libpipewire02 aom harfbuzz
graphite dav1d kfiredragonhelper)
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
rust ccache autoconf2.13 clang llvm jack gtk2 nodejs cbindgen nasm
2021-05-25 10:25:32 +00:00
python-setuptools python-psutil python-zstandard git binutils lld dump_syms)
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')
options=(!emptydirs !makeflags !strip)
2021-04-22 11:09:29 +00:00
conflicts=('firedragon-hg')
install=$pkgname.install
_arch_svn=https://git.archlinux.org/svntogit/packages.git/plain/trunk
2021-05-25 10:25:32 +00:00
_common_commit=5bce5285fa7046e6987ec3e5a8931ac17ca6c7c0
_settings_commit=c78c50fbefe2fcf830611e21dcc0fe79180d1e01
_mbrev=2389
2021-05-06 10:59:55 +00:00
_patchrevsuse=aedbca44a8a2958947bed31f28e3083ac0496f4a
_pfdate=20210420
2021-04-22 11:09:29 +00:00
_patchurl=https://raw.githubusercontent.com/openSUSE/firefox-maintenance/$_patchrevsuse
source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
$pkgname.desktop
"git+https://gitlab.com/dr460nf1r3/common.git"
"git+https://gitlab.com/dr460nf1r3/settings.git"
firefox-kde-$_patchrevsuse.patch::$_patchurl/firefox/firefox-kde.patch
2021-05-06 10:59:55 +00:00
mozilla-kde-$_patchrevsuse.patch::$_patchurl/mozilla-kde.patch
2021-04-22 11:09:29 +00:00
mozilla-nongnome-proxies-$_patchrevsuse.patch::$_patchurl/mozilla-nongnome-proxies.patch
fix-hidden-buttons-with-csd-menubar.patch
2021-05-25 10:25:32 +00:00
0001-Use-remoting-name-for-GDK-application-names.patch
2021-04-22 11:09:29 +00:00
0004-bmo-847568-Support-system-harfbuzz.patch
0005-bmo-847568-Support-system-graphite2.patch
0006-bmo-1559213-Support-system-av1.patch
0021-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
0029-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
reduce-rust-debuginfo.patch)
2021-05-25 10:25:32 +00:00
source_aarch64=(https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch)
2021-04-22 11:09:29 +00:00
2021-05-06 10:59:55 +00:00
sha256sums=('83df1eae0e28fe99661fd5d39d705cdab2e108b4a24ce12c2db6183c632804cc'
2021-04-22 11:09:29 +00:00
'158152bdb9ef6a83bad62ae03a3d9bc8ae693b34926e53cc8c4de07df20ab22d'
'SKIP'
'SKIP'
'0ae5bce3da13b7f58e37be6d7115bef323256d776195279592f4371179497f8a'
2021-05-06 10:59:55 +00:00
'9843662fd9b766801a70bdef22bb996a1abd9d7c3781f1fb58b7034e575350a1'
2021-04-22 11:09:29 +00:00
'fbd95cbcbc32673ef549b43b0d2de3ef0ef4fa303b6336e64993f2c8a73264e4'
'482935782429b30f5e1581347a9a798705068c40f20bf4eee9304a254fd81bc8'
2021-05-25 10:25:32 +00:00
'6ca7ff71cb4a7c72eca39769afe8e18ec81cba36d9b570df15fc243867049243'
2021-04-22 11:09:29 +00:00
'e17f631bc9b1873419ff10fef5fad6061e8695b961b6bb90616ec04444834608'
'00d3524f5361614fee7eb448a528a0b53833f0a328055e17e07ea38038e5aa70'
'be41698666dbd321884c35b661c3ac457ecc5bf699fe2374ad6ad9273c6489e4'
'82129e30512477232556e939ee8ed64b999b0e095001d043b121c5e5d334692c'
'1034a3edda8ffa889fcb4dcf57cb93f8f296f7c37e5cfcf1e5c6071a6f8f4261'
'923a9373afc019202c0c07a7cba47042e9ebc78cc2605baecd99602beeaf82ed')
2021-05-25 10:25:32 +00:00
sha256sums_aarch64=('2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')
2021-03-03 10:22:28 +00:00
prepare() {
if [[ ! -d mozbuild ]];then
mkdir mozbuild
fi
2021-04-22 11:09:29 +00:00
cd firefox-$pkgver
2021-03-03 10:22:28 +00:00
2021-05-25 10:25:32 +00:00
local _patches_dir="${srcdir}/common/patches"
2021-04-22 11:09:29 +00:00
sed -i 's/\"BrowserApplication\"\, \"firefox\"/\"BrowserApplication\"\, \"firedragon\"/g' $srcdir/firefox-kde-$_patchrevsuse.patch
2021-05-06 11:17:54 +00:00
sed -i 's/kmozillahelper/kfiredragonhelper/g' $srcdir/mozilla-kde-$_patchrevsuse.patch
2021-04-22 11:09:29 +00:00
# Arch patches
echo "---- Arch patches"
patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch
# KDE patches (W. Rosenauer)
echo "---- Patching for KDE"
patch -Np1 -i ../mozilla-nongnome-proxies-$_patchrevsuse.patch
2021-05-06 11:06:31 +00:00
patch -Np1 -i ../mozilla-kde-$_patchrevsuse.patch
2021-04-22 11:09:29 +00:00
patch -Np1 -i ../firefox-kde-$_patchrevsuse.patch
# Ubuntu patches
patch -Np1 -i ../fix-hidden-buttons-with-csd-menubar.patch
2021-04-22 11:09:29 +00:00
# Gentoo patches
echo "---- Gentoo patches"
patch -Np1 -i ../0021-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
patch -Np1 -i ../0029-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
# Use more system libs
echo "---- Patching for system libs"
patch -Np1 -i ../0004-bmo-847568-Support-system-harfbuzz.patch
patch -Np1 -i ../0005-bmo-847568-Support-system-graphite2.patch
patch -Np1 -i ../0006-bmo-1559213-Support-system-av1.patch
# Rust
patch -Np1 -i ../reduce-rust-debuginfo.patch
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
ac_add_options --prefix=/usr
ac_add_options --enable-release
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
2021-03-06 11:56:58 +00:00
ac_add_options --with-ccache
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
2021-04-22 11:09:29 +00:00
export CC='clang --target=x86_64-pc-linux-gnu'
export CXX='clang++ --target=x86_64-pc-linux-gnu'
export RANLIB=llvm-ranlib
export STRIP=llvm-strip
export AR=llvm-ar
export NM=llvm-nm
export OBJCOPY='/usr/bin/llvm-objcopy'
2021-03-03 10:22:28 +00:00
# Branding
ac_add_options --enable-update-channel=release
2021-03-03 10:22:28 +00:00
ac_add_options --with-app-name=${pkgname}
ac_add_options --with-app-basename='${_pkgname}'
2021-03-05 13:18:52 +00:00
ac_add_options --with-branding=browser/branding/firedragon
2021-03-03 10:22:28 +00:00
ac_add_options --with-distribution-id=org.garudalinux
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
2021-04-22 11:09:29 +00:00
export MOZ_REQUIRE_SIGNING=0
2021-03-24 14:24:32 +00:00
export STRIP_FLAGS="--strip-debug --strip-unneeded"
2021-03-03 10:22:28 +00:00
# System libraries
2021-04-22 11:09:29 +00:00
ac_add_options --disable-libproxy
ac_add_options --enable-system-pixman
ac_add_options --with-system-av1
ac_add_options --with-system-ffi
ac_add_options --with-system-graphite2
ac_add_options --with-system-harfbuzz
ac_add_options --with-system-icu
ac_add_options --with-system-jpeg
ac_add_options --with-system-libevent
ac_add_options --with-system-libvpx
2021-03-03 10:22:28 +00:00
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
2021-04-22 11:09:29 +00:00
ac_add_options --with-system-webp
2021-03-03 10:22:28 +00:00
ac_add_options --with-system-zlib
# Features
2021-05-25 10:25:32 +00:00
ac_add_options --disable-cdp
2021-03-03 10:22:28 +00:00
ac_add_options --disable-crashreporter
2021-03-06 11:56:58 +00:00
ac_add_options --disable-debug
ac_add_options --disable-debug-js-modules
2021-05-25 10:25:32 +00:00
ac_add_options --disable-debug-symbols
ac_add_options --disable-gpsd
ac_add_options --disable-ipdl-tests
ac_add_options --disable-necko-wifi
2021-05-25 10:25:32 +00:00
ac_add_options --disable-rust-tests
ac_add_options --disable-synth-speechd
ac_add_options --disable-tests
ac_add_options --disable-trace-logging
ac_add_options --disable-updater
ac_add_options --disable-warnings-as-errors
ac_add_options --disable-webspeech
ac_add_options --disable-webspeechtestbackend
2021-05-25 10:25:32 +00:00
ac_add_options --enable-alsa
ac_add_options --enable-jack
ac_add_options --enable-pulseaudio
ac_add_options --enable-strip
2021-03-03 10:22:28 +00:00
# Disables crash reporting, telemetry and other data gathering tools
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
# options for ci / weaker build systems
# mk_add_options MOZ_MAKE_FLAGS="-j4"
# ac_add_options --enable-linker=gold
END
if [[ $CARCH == 'aarch64' ]]; then
cat >>../mozconfig <<END
# taken from manjaro build:
ac_add_options --enable-optimize="-g0 -O2"
# from ALARM
# ac_add_options --disable-webrtc
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"
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/arm.patch
patch -Np1 -i ../${pkgver}-${pkgrel}_build-arm-libopus.patch
2021-03-03 10:22:28 +00:00
else
cat >>../mozconfig <<END
# probably not needed, enabled by default?
ac_add_options --enable-optimize
END
fi
# Remove some pre-installed addons that might be questionable
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/remove_addons.patch
# Disable (some) megabar functionality
# Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
patch -Np1 -i ${_patches_dir}/megabar.patch
2021-03-03 10:22:28 +00:00
2021-04-22 11:09:29 +00:00
# Debian patch to enable global menubar
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/unity-menubar.patch
2021-03-03 10:22:28 +00:00
# Disabling Pocket
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/sed-patches/disable-pocket.patch
2021-03-03 10:22:28 +00:00
# Remove Mozilla VPN ads
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/mozilla-vpn-ad.patch
2021-03-03 10:22:28 +00:00
# Remove Internal Plugin Certificates
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/sed-patches/remove-internal-plugin-certs.patch
2021-03-03 10:22:28 +00:00
# Allow SearchEngines option in non-ESR builds
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/sed-patches/allow-searchengines-non-esr.patch
2021-03-03 10:22:28 +00:00
# Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
2021-05-25 10:25:32 +00:00
patch -Np1 -i ${_patches_dir}/sed-patches/stop-undesired-requests.patch
# Assorted patches
patch -Np1 -i ${_patches_dir}/context-menu.patch
patch -Np1 -i ${_patches_dir}/browser-confvars.patch
patch -Np1 -i ${_patches_dir}/urlbarprovider-interventions.patch
2021-03-03 10:22:28 +00:00
rm -f ${srcdir}/common/source_files/mozconfig
cp -r ${srcdir}/common/source_files/* ./
}
2021-04-22 11:09:29 +00:00
2021-03-03 10:22:28 +00:00
build() {
2021-04-22 11:09:29 +00:00
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
2021-03-03 10:22:28 +00:00
export MACH_USE_SYSTEM_PYTHON=1
2021-04-22 11:09:29 +00:00
# LTO needs more open files
2021-03-03 10:22:28 +00:00
ulimit -n 4096
# -fno-plt with cross-LTO causes obscure LLVM errors
# LLVM ERROR: Function Import: link error
# CFLAGS="${CFLAGS/-fno-plt/}"
# CXXFLAGS="${CXXFLAGS/-fno-plt/}"
# 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
./mach build
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
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
echo "Building optimized browser..."
2021-03-03 10:22:28 +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
ac_add_options --enable-linker=lld
END
else
cat >.mozconfig ../mozconfig - <<END
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
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
END
fi
./mach build
echo "Building symbol archive..."
./mach buildsymbols
}
package() {
2021-04-22 11:09:29 +00:00
cd firefox-$pkgver
2021-03-03 10:22:28 +00:00
DESTDIR="$pkgdir" ./mach install
2021-04-22 11:09:29 +00:00
install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname"
2021-03-24 14:24:32 +00:00
2021-04-22 11:09:29 +00:00
local 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
2021-04-22 11:09:29 +00:00
// done in librewolf.cfg
2021-03-03 10:22:28 +00:00
// pref("extensions.autoDisableScopes", 11);
END
# cd ${srcdir}/settings
# git checkout ${_settings_commit}
2021-04-22 11:09:29 +00:00
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"
# Use system certificates
local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
if [[ -e $nssckbi ]]; then
ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
fi
# Delete unneeded things from settings repo
rm "$pkgdir/usr/lib/firedragon/tabliss.json"
2021-05-10 21:31:45 +00:00
rm "$pkgdir/usr/lib/firedragon/about.png"
rm "$pkgdir/usr/lib/firedragon/home.png"
rm "$pkgdir/usr/lib/firedragon/firedragon.psd"
2021-03-03 10:22:28 +00:00
}