aur/PKGBUILD

325 lines
11 KiB
Bash
Raw Normal View History

2021-05-25 12:25:32 +02:00
# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
2021-04-22 13:09:29 +02:00
# Contributor: torvic9 AT mailbox DOT org
# Contributor: lsf
2021-03-03 11:22:28 +01:00
pkgname=firedragon
_pkgname=FireDragon
pkgver=100.0.2
2022-05-21 15:33:09 +02:00
pkgrel=1
2021-04-22 13:09:29 +02:00
pkgdesc="Librewolf fork build using custom branding, settings & KDE patches by OpenSUSE"
2021-12-15 08:47:51 +01:00
arch=(x86_64 x86_64_v3)
2021-04-22 13:09:29 +02:00
backup=('usr/lib/firedragon/firedragon.cfg'
'usr/lib/firedragon/distribution/policies.json')
2021-03-03 11:22:28 +01:00
license=(MPL GPL LGPL)
url="https://gitlab.com/dr460nf1r3/settings/"
2022-04-20 15:34:14 +02:00
depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse
2021-12-15 08:47:51 +01:00
aom harfbuzz libvpx libjpeg zlib icu libevent pipewire
kfiredragonhelper)
2021-12-21 17:44:58 +01:00
makedepends=(unzip zip diffutils yasm mesa imake inetutils
rust xorg-server-xwayland xorg-server-xvfb ccache
2022-03-13 15:26:07 +01:00
autoconf2.13 clang llvm jack nodejs cbindgen nasm
2022-05-04 18:05:36 +02:00
python-setuptools python-zstandard git binutils
2021-12-14 07:46:53 +01:00
lld dump_syms wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi)
optdepends=('firejail-git: Sandboxing the browser using the included profiles'
2021-04-22 13:09:29 +02: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 11:22:28 +01: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 12:41:03 +01:00
options=(!emptydirs !makeflags !strip !lto !debug)
2021-04-22 13:09:29 +02:00
conflicts=('firedragon-hg')
install=$pkgname.install
source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
$pkgname.desktop
2021-12-10 06:53:42 +01:00
"git+https://gitlab.com/dr460nf1r3/common.git"
2021-06-07 12:30:59 +02:00
"git+https://gitlab.com/dr460nf1r3/settings.git")
2022-05-21 15:37:07 +02:00
sha256sums=('13bc55e1c32a6ad32b4a3b37296a0459f41b0981489fc22da491256773c51c9d'
2021-04-22 13:09:29 +02:00
'158152bdb9ef6a83bad62ae03a3d9bc8ae693b34926e53cc8c4de07df20ab22d'
'SKIP'
2021-06-07 12:30:59 +02:00
'SKIP')
2021-03-03 11:22:28 +01:00
prepare() {
if [[ ! -d mozbuild ]]; then
2021-03-03 11:22:28 +01:00
mkdir mozbuild
fi
2021-04-22 13:09:29 +02:00
cd firefox-$pkgver
2021-03-03 11:22:28 +01:00
local _patches_dir
_patches_dir="${srcdir}/common/patches"
2021-05-25 12:25:32 +02:00
# Prepare patches, then return to the source directory
cd ${_patches_dir} && sh ${srcdir}/common/rebrand.sh
cd $srcdir/firefox-$pkgver
2021-04-22 13:09:29 +02:00
# Ubuntu patches
2021-06-07 12:30:59 +02:00
echo "---- Misc patches"
patch -Np1 -i ${_patches_dir}/misc/fix-hidden-buttons-with-csd-menubar.patch
2021-06-07 12:30:59 +02:00
# Rust
patch -Np1 -i ${_patches_dir}/misc/reduce-rust-debuginfo.patch
2021-04-22 13:09:29 +02:00
# Gentoo patches
echo "---- Gentoo patches"
2022-05-07 12:06:02 +02:00
patch -Np1 -i ${_patches_dir}/gentoo/0018-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
2022-01-15 12:08:38 +01:00
2021-06-07 12:30:59 +02:00
# Remove some pre-installed addons that might be questionable
echo "---- Librewolf patches"
patch -Np1 -i ${_patches_dir}/librewolf/remove_addons.patch
2022-02-05 16:58:59 +01:00
# somewhat experimental patch to fix bus/dbus/remoting names to io.gitlab.librewolf
# should not break things, buuuuuuuuuut we'll see.
2022-02-05 17:15:41 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/dbus_name.patch
2022-02-05 16:58:59 +01:00
# add custom uBO assets (on first launch only)
2022-02-05 17:15:41 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/custom-ubo-assets-bootstrap-location.patch
2022-02-05 16:58:59 +01:00
2021-09-11 11:09:24 +02:00
# Debian patch to enable global menubar
2021-09-18 14:28:42 +02:00
patch -Np1 -i ${_patches_dir}/librewolf/unity-menubar.patch
2021-06-07 12:30:59 +02:00
2022-02-05 16:58:59 +01:00
# custom patch that does not conflict with the unity patch
2022-02-12 14:05:45 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/mozilla-kde_after_unity.patch
2022-02-05 16:58:59 +01:00
2021-06-07 12:30:59 +02:00
# Remove Mozilla VPN ads
2022-03-13 15:26:07 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/mozilla-vpn-ad2.patch
2021-06-07 12:30:59 +02:00
# Allow SearchEngines option in non-ESR builds
patch -Np1 -i ${_patches_dir}/sed-patches/allow-searchengines-non-esr.patch
# Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
2022-05-15 09:23:30 +02:00
patch -Np1 -i ${_patches_dir}/sed-patches/stop-undesired-requests.patch
2021-03-03 11:22:28 +01:00
2021-11-04 08:04:12 +01:00
echo "---- Librewolf patches - UI"
# 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 ${_patches_dir}/librewolf-ui/pref-naming.patch
2022-03-13 15:26:07 +01:00
# Privacy preferences
patch -Np1 -i ${_patches_dir}/librewolf-ui/privacy-preferences.patch
2021-11-04 08:04:12 +01:00
# Remove Firefox references in the urlbar, when suggesting opened tabs.
patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-branding-urlbar.patch
# Remove cfr UI elements, as they are disabled and locked already.
patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-cfrprefs.patch
# Do not display your browser is being managed by your organization in the settings.
patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-organization-policy-banner.patch
# Hide "snippets" section from the home page settings, as it was already locked.
patch -Np1 -i ${_patches_dir}/librewolf-ui/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 ${_patches_dir}/librewolf-ui/sanitizing-description.patch
2022-03-23 16:05:48 +01:00
patch -Np1 -i ${_patches_dir}/librewolf-ui/hide-default-browser.patch
2021-11-04 08:04:12 +01:00
2022-05-15 09:23:30 +02:00
# Misc
2022-03-30 16:20:21 +02:00
patch -Np1 -i ${_patches_dir}/librewolf-ui/remap-links.patch
2022-05-15 09:23:30 +02:00
patch -Np1 -i ${_patches_dir}/librewolf/native-messaging-registry-path.patch
2022-03-30 16:20:21 +02:00
2022-01-22 16:47:02 +01:00
# Pref pane - custom FireDragon svg
2022-03-23 16:05:48 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/librewolf-pref-pane.patch
2022-01-22 16:47:02 +01:00
patch -Np1 -i ${_patches_dir}/misc/add_firedragon_svg.patch
2022-05-04 16:53:19 +02:00
patch -Np1 -i ${_patches_dir}/librewolf-ui/website-appearance-ui-rfp.patch
2022-01-15 12:08:38 +01:00
2022-02-05 16:58:59 +01:00
# fix telemetry removal, see https://gitlab.com/librewolf-community/browser/linux/-/merge_requests/17, for example
2022-02-05 17:29:03 +01:00
patch -Np1 -i ${_patches_dir}/librewolf/disable-data-reporting-at-compile-time.patch
2022-02-05 16:58:59 +01:00
2021-03-03 11:22:28 +01:00
cat >../mozconfig <<END
ac_add_options --enable-application=browser
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
2021-12-15 08:47:51 +01:00
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
2021-03-03 11:22:28 +01:00
ac_add_options --enable-hardening
2021-12-15 08:47:51 +01:00
ac_add_options --enable-linker=lld
ac_add_options --enable-release
2021-03-03 11:22:28 +01:00
ac_add_options --enable-rust-simd
2021-12-15 08:47:51 +01:00
ac_add_options --prefix=/usr
2021-03-06 12:56:58 +01:00
ac_add_options --with-ccache
2021-12-14 07:46:53 +01:00
ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
2021-07-19 17:02:18 +02:00
export CC='clang'
export CXX='clang++'
2022-05-15 09:23:30 +02:00
#export NM=llvm-nm
#export OBJCOPY='/usr/bin/llvm-objcopy'
#export RANLIB=llvm-ranlib
#export STRIP=llvm-strip
2021-03-03 11:22:28 +01:00
# Branding
ac_add_options --enable-update-channel=release
2021-03-03 11:22:28 +01:00
ac_add_options --with-app-name=${pkgname}
2021-12-14 07:46:53 +01:00
ac_add_options --with-app-basename=${_pkgname}
ac_add_options --with-branding=browser/branding/${pkgname}
2021-03-03 11:22:28 +01: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-12-14 07:46:53 +01:00
export MOZ_REQUIRE_SIGNING=1
export MOZ_ADDON_SIGNING=1
export MOZ_APP_REMOTINGNAME=${pkgname}
2021-03-24 15:24:32 +01:00
2021-03-03 11:22:28 +01:00
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
# Features
ac_add_options --disable-crashreporter
2021-12-14 07:46:53 +01:00
ac_add_options --disable-debug
2022-05-15 09:23:30 +02:00
ac_add_options --disable-debug-js-modules
ac_add_options --disable-debug-symbols
ac_add_options --disable-gpsd
ac_add_options --disable-necko-wifi
ac_add_options --disable-rust-tests
ac_add_options --disable-synth-speechd
2021-05-25 12:25:32 +02:00
ac_add_options --disable-tests
2022-05-15 09:23:30 +02:00
ac_add_options --disable-trace-logging
2021-05-25 12:25:32 +02:00
ac_add_options --disable-updater
2022-05-15 09:23:30 +02:00
ac_add_options --disable-warnings-as-errors
ac_add_options --disable-webspeech
ac_add_options --disable-webspeechtestbackend
2021-05-25 12:25:32 +02:00
ac_add_options --enable-alsa
ac_add_options --enable-jack
2022-05-15 09:23:30 +02:00
ac_add_options --enable-pulseaudio
ac_add_options --enable-strip
2021-03-03 11:22:28 +01:00
# Disables crash reporting, telemetry and other data gathering tools
2022-03-13 15:26:07 +01:00
#mk_add_options MOZ_CRASHREPORTER=0 supposed to be obsolete
2021-03-03 11:22:28 +01:00
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
rm -f ${srcdir}/common/source_files/mozconfig
cp -r ${srcdir}/common/source_files/* ./
}
2021-04-22 13:09:29 +02:00
2021-03-03 11:22:28 +01:00
build() {
2021-04-22 13:09:29 +02:00
cd firefox-$pkgver
2021-03-03 11:22:28 +01:00
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
2022-05-15 10:39:50 +02:00
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
2021-03-03 11:22:28 +01:00
2021-04-22 13:09:29 +02:00
# LTO needs more open files
2021-03-03 11:22:28 +01:00
ulimit -n 4096
# Do 3-tier PGO
echo "Building instrumented browser..."
./mach build
echo "Profiling instrumented browser..."
2022-05-15 10:39:50 +02:00
2021-03-03 11:22:28 +01:00
./mach package
2022-05-15 10:39:50 +02:00
2021-03-03 11:22:28 +01: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 12:25:32 +02:00
stat -c "Profile data found (%s bytes)" merged.profdata
test -s merged.profdata
2021-03-03 11:22:28 +01:00
2021-05-25 12:25:32 +02:00
stat -c "Jar log found (%s bytes)" jarlog
test -s jarlog
2021-03-03 11:22:28 +01:00
echo "Removing instrumented browser..."
./mach clobber
echo "Building optimized browser..."
2021-05-25 12:25:32 +02:00
2021-03-03 11:22:28 +01:00
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
END
./mach build
echo "Building symbol archive..."
./mach buildsymbols
}
package() {
2021-04-22 13:09:29 +02:00
cd firefox-$pkgver
2021-03-03 11:22:28 +01:00
DESTDIR="$pkgdir" ./mach install
2021-12-14 07:46:53 +01:00
rm "$pkgdir"/usr/lib/${pkgname}/pingsender
2021-03-03 11:22:28 +01:00
2021-04-22 13:09:29 +02:00
install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname"
2021-03-24 15:24:32 +01:00
2021-04-22 13:09:29 +02:00
local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
2021-03-03 11:22:28 +01:00
2021-04-22 13:09:29 +02:00
install -Dvm644 /dev/stdin "$vendorjs" <<END
2021-03-03 11:22:28 +01:00
// Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
// Don't disable extensions in the application directory
2021-04-22 13:09:29 +02:00
// done in librewolf.cfg
2021-03-03 11:22:28 +01:00
// pref("extensions.autoDisableScopes", 11);
END
# cd ${srcdir}/settings
# git checkout ${_settings_commit}
2021-04-22 13:09:29 +02:00
cd ${srcdir}/firefox-$pkgver
2021-03-03 11:22:28 +01:00
cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/
2021-04-22 13:09:29 +02:00
local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
install -Dvm644 /dev/stdin "$distini" <<END
2021-03-03 11:22:28 +01: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 13:09:29 +02:00
install -Dvm644 browser/branding/${pkgname}/default$i.png \
2021-03-03 11:22:28 +01:00
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
done
2021-04-22 13:09:29 +02:00
install -Dvm644 browser/branding/${pkgname}/content/about-logo.png \
2021-03-03 11:22:28 +01: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 13:09:29 +02:00
install -Dvm644 browser/branding/${pkgname}/default16.png \
2021-03-03 11:22:28 +01:00
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"
2021-04-22 13:09:29 +02:00
install -Dvm644 ../$pkgname.desktop \
2021-03-03 11:22:28 +01:00
"$pkgdir/usr/share/applications/$pkgname.desktop"
# Install a wrapper to avoid confusion about binary path
2021-04-22 13:09:29 +02:00
install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
2021-03-03 11:22:28 +01: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 13:09:29 +02: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
2021-06-07 12:30:59 +02:00
rm "$pkgdir/usr/lib/firedragon/LICENSE.txt"
2021-05-10 23:31:45 +02:00
rm "$pkgdir/usr/lib/firedragon/about.png"
rm "$pkgdir/usr/lib/firedragon/firedragon.psd"
2021-06-07 12:30:59 +02:00
rm "$pkgdir/usr/lib/firedragon/home.png"
rm "$pkgdir/usr/lib/firedragon/tabliss.json"
2021-03-03 11:22:28 +01:00
}