mirror of
https://aur.archlinux.org/firedragon.git
synced 2024-12-27 05:04:14 +00:00
353 lines
12 KiB
Bash
353 lines
12 KiB
Bash
|
# Maintainer: dr460nf1r3 <dr460nf1r3@garudalinux.org>
|
||
|
# Maintainer: vnepogodin
|
||
|
# Contributor: Kyle De'Vir (QuartzDragon) <kyle[dot]devir[at]mykolab[dot]com>
|
||
|
# Contributor: Jonas Heinrich <onny@project-insanity.org>
|
||
|
# Contributor: Maxwell Anselm <silverhammermba+aur@gmail.com>
|
||
|
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
|
||
|
# Contributor: Ionut Biru <ibiru@archlinux.org>
|
||
|
# Contributor: Jakub Schmidtke <sjakub@gmail.com>
|
||
|
|
||
|
pkgname=firedragon
|
||
|
_pkgname=FireDragon
|
||
|
pkgver=88.0a1.r636493+
|
||
|
pkgrel=1
|
||
|
pkgdesc="Librewolf fork build using Nightly sources with custom branding, Proton UI rework & Fission enabled."
|
||
|
arch=(x86_64 aarch64)
|
||
|
license=(MPL GPL LGPL)
|
||
|
url="https://gitlab.com/dr460nf1r3/settings/"
|
||
|
depends=(gtk3 libxt mime-types dbus-glib
|
||
|
ffmpeg nss-hg ttf-font libpulse
|
||
|
libvpx libjpeg zlib icu libevent libpipewire02)
|
||
|
makedepends=(unzip zip diffutils yasm mesa imake inetutils
|
||
|
rust mozilla-common xorg-server-xwayland xorg-server-xvfb
|
||
|
autoconf2.13 mercurial clang llvm jack gtk2 nodejs cbindgen nasm
|
||
|
python-setuptools python-psutil python-zstandard git binutils lld)
|
||
|
optdepends=('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')
|
||
|
options=(!emptydirs !makeflags !strip)
|
||
|
_linux_commit=e123b80f7df1ad9043435f345c426717ca323579
|
||
|
_settings_commit=c5c75a39dd91a8772255a78493853be6553262b2
|
||
|
_repo=https://hg.mozilla.org/mozilla-unified
|
||
|
source_x86_64=("hg+$_repo#revision=autoland"
|
||
|
$pkgname.desktop
|
||
|
"git+https://gitlab.com/dr460nf1r3/common.git"
|
||
|
"git+https://gitlab.com/dr460nf1r3/settings.git"
|
||
|
"remove_addons.patch::https://gitlab.com/librewolf-community/browser/linux/-/raw/${_linux_commit}/remove_addons.patch"
|
||
|
"context-menu.patch::https://gitlab.com/librewolf-community/browser/linux/-/raw/${_linux_commit}/context-menu.patch")
|
||
|
source_aarch64=("hg+$_repo#revision=autoland"
|
||
|
$pkgname.desktop
|
||
|
"git+https://gitlab.com/dr460nf1r3/common.git"
|
||
|
"git+https://gitlab.com/dr460nf1r3/settings.git"
|
||
|
"remove_addons.patch::https://gitlab.com/librewolf-community/browser/linux/-/raw/${_linux_commit}/remove_addons.patch"
|
||
|
"context-menu.patch::https://gitlab.com/librewolf-community/browser/linux/-/raw/${_linux_commit}/context-menu.patch"
|
||
|
"arm.patch::https://gitlab.com/librewolf-community/browser/linux/-/raw/${_linux_commit}/arm.patch"
|
||
|
build-arm-libopus.patch)
|
||
|
|
||
|
sha512sums_x86_64=('SKIP'
|
||
|
'1688d8696f0a4451bc1211707362ca79d302ae0e8153be8326392b5617cb3944344e9d8fe17d0b1d5fe7df6d38fd44d4d33e3eb84e7b8763c37aeab4b2c26290'
|
||
|
'SKIP'
|
||
|
'SKIP'
|
||
|
'8a8ae3276914cd8812feb99acac8c2363f5530656593bebaed5cf67defec19153c30409b6fba418162c7e7f2876554202bbcf5f356d7e785488859879161d921'
|
||
|
'a4274739be161710d90fdb674315ef4b0696ce6e092641a62f7a18c5a773de959a38fe52e0c8683821753a99e4337ea3e448579937d684e22345f7d936161061')
|
||
|
sha512sums_aarch64=('SKIP'
|
||
|
'1688d8696f0a4451bc1211707362ca79d302ae0e8153be8326392b5617cb3944344e9d8fe17d0b1d5fe7df6d38fd44d4d33e3eb84e7b8763c37aeab4b2c26290'
|
||
|
'SKIP'
|
||
|
'SKIP'
|
||
|
'8a8ae3276914cd8812feb99acac8c2363f5530656593bebaed5cf67defec19153c30409b6fba418162c7e7f2876554202bbcf5f356d7e785488859879161d921'
|
||
|
'a4274739be161710d90fdb674315ef4b0696ce6e092641a62f7a18c5a773de959a38fe52e0c8683821753a99e4337ea3e448579937d684e22345f7d936161061'
|
||
|
'179d922764a959c3eccd1ff98e16c629516d04c9a3a8fe6d199f8de88ad7163a026e4415836728a01a89703f1f31247addcead2da2b341b1849e4627a742c5b9'
|
||
|
'6d464cce32cb2e440fb137666aeefec1240bcbdfdef0e8633e0fbe22e2214446b2c992ee2c8716c682a42fcd1d66d9fdf1d6d5b40f8ec3b0eeec5ca9e3f1aa35')
|
||
|
|
||
|
pkgver() {
|
||
|
cd mozilla-unified
|
||
|
printf "88.0a1.r%s" "$(hg identify -n)"
|
||
|
}
|
||
|
|
||
|
prepare() {
|
||
|
if [[ ! -d mozbuild ]];then
|
||
|
mkdir mozbuild
|
||
|
fi
|
||
|
cd mozilla-unified
|
||
|
|
||
|
#
|
||
|
# If you want to disable LTO/PGO (compile too long), delete the lines below beginning with
|
||
|
# `ac_add_options --enable-lto' and ending with 'export RANLIB=llvm-ranlib`
|
||
|
#
|
||
|
|
||
|
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-tests
|
||
|
ac_add_options --disable-debug
|
||
|
|
||
|
ac_add_options --prefix=/usr
|
||
|
ac_add_options --enable-release
|
||
|
ac_add_options --enable-hardening
|
||
|
ac_add_options --enable-rust-simd
|
||
|
export CC='clang'
|
||
|
export CXX='clang++'
|
||
|
export AR=llvm-ar
|
||
|
export NM=llvm-nm
|
||
|
export RANLIB=llvm-ranlib
|
||
|
|
||
|
# Branding
|
||
|
ac_add_options --enable-update-channel=nightly
|
||
|
ac_add_options --with-app-name=${pkgname}
|
||
|
ac_add_options --with-app-basename='${_pkgname}'
|
||
|
ac_add_options --with-branding=browser/branding/firedragon
|
||
|
ac_add_options --with-distribution-id=org.garudalinux
|
||
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||
|
ac_add_options --allow-addon-sideload
|
||
|
export MOZ_REQUIRE_SIGNING=0
|
||
|
export MOZ_APP_REMOTINGNAME=${pkgname//-/}
|
||
|
|
||
|
# System libraries
|
||
|
ac_add_options --with-system-nspr
|
||
|
ac_add_options --with-system-nss
|
||
|
ac_add_options --with-system-libvpx
|
||
|
ac_add_options --with-system-libevent
|
||
|
ac_add_options --with-system-icu
|
||
|
ac_add_options --with-system-zlib
|
||
|
ac_add_options --with-system-jpeg
|
||
|
|
||
|
# Features
|
||
|
ac_add_options --enable-pulseaudio
|
||
|
ac_add_options --enable-alsa
|
||
|
ac_add_options --enable-jack
|
||
|
ac_add_options --disable-crashreporter
|
||
|
ac_add_options --disable-updater
|
||
|
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
|
||
|
|
||
|
# 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"
|
||
|
patch -p1 -i ../arm.patch
|
||
|
patch -p1 -i ../build-arm-libopus.patch
|
||
|
|
||
|
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
|
||
|
patch -p1 -i ../remove_addons.patch
|
||
|
|
||
|
# To enable global menubar
|
||
|
# Set these to true:
|
||
|
# browser.proton.enabled
|
||
|
# browser.proton.appmenu.enabled
|
||
|
|
||
|
# Disabling Pocket
|
||
|
sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build
|
||
|
|
||
|
patch -p1 -i ../context-menu.patch
|
||
|
|
||
|
# this one only to remove an annoying error message:
|
||
|
sed -i 's#SaveToPocket.init();#// SaveToPocket.init();#g' browser/components/BrowserGlue.jsm
|
||
|
|
||
|
# Remove Internal Plugin Certificates
|
||
|
_cert_sed='s#if (aCert.organizationalUnit == "Mozilla [[:alpha:]]\+") {\n'
|
||
|
_cert_sed+='[[:blank:]]\+return AddonManager\.SIGNEDSTATE_[[:upper:]]\+;\n'
|
||
|
_cert_sed+='[[:blank:]]\+}#'
|
||
|
_cert_sed+='// NOTE: removed#g'
|
||
|
sed -z "$_cert_sed" -i toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||
|
|
||
|
# allow SearchEngines option in non-ESR builds
|
||
|
sed -i 's#"enterprise_only": true,#"enterprise_only": false,#g' browser/components/enterprisepolicies/schemas/policies-schema.json
|
||
|
|
||
|
_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
|
||
|
|
||
|
# stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
||
|
sed "$_settings_services_sed" -i browser/components/newtab/data/content/activity-stream.bundle.js
|
||
|
sed "$_settings_services_sed" -i modules/libpref/init/all.js
|
||
|
sed "$_settings_services_sed" -i services/settings/Utils.jsm
|
||
|
sed "$_settings_services_sed" -i toolkit/components/search/SearchUtils.jsm
|
||
|
|
||
|
rm -f ${srcdir}/common/source_files/mozconfig
|
||
|
cp -r ${srcdir}/common/source_files/* ./
|
||
|
}
|
||
|
|
||
|
build() {
|
||
|
cd mozilla-unified
|
||
|
|
||
|
export MOZ_SOURCE_REPO="$_repo"
|
||
|
export MOZ_NOSPAM=1
|
||
|
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
|
||
|
export MACH_USE_SYSTEM_PYTHON=1
|
||
|
|
||
|
# LTO/PGO needs more open files
|
||
|
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
|
||
|
|
||
|
if [[ ! -s merged.profdata ]]; then
|
||
|
echo "No profile data produced."
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
if [[ ! -s jarlog ]]; then
|
||
|
echo "No jar log produced."
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
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
|
||
|
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() {
|
||
|
cd mozilla-unified
|
||
|
DESTDIR="$pkgdir" ./mach install
|
||
|
|
||
|
_vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
|
||
|
|
||
|
install -Dm644 /dev/stdin "$_vendorjs" <<END
|
||
|
// Use LANG environment variable to choose locale
|
||
|
pref("intl.locale.requested", "");
|
||
|
|
||
|
// Use system-provided dictionaries
|
||
|
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
|
||
|
|
||
|
// Don't disable extensions in the application directory
|
||
|
// done in dragonwolf.cfg
|
||
|
// pref("extensions.autoDisableScopes", 11);
|
||
|
END
|
||
|
|
||
|
# cd ${srcdir}/settings
|
||
|
# git checkout ${_settings_commit}
|
||
|
cd ${srcdir}/mozilla-unified
|
||
|
cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/
|
||
|
|
||
|
_distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
|
||
|
install -Dm644 /dev/stdin "$_distini" <<END
|
||
|
[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
|
||
|
install -Dm644 browser/branding/${pkgname}/default$i.png \
|
||
|
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
|
||
|
done
|
||
|
install -Dm644 browser/branding/official/content/about-logo.png \
|
||
|
"$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
|
||
|
install -Dm644 browser/branding/${pkgname}/default16.png \
|
||
|
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"
|
||
|
|
||
|
install -Dm644 ../$pkgname.desktop \
|
||
|
"$pkgdir/usr/share/applications/$pkgname.desktop"
|
||
|
|
||
|
# Install a wrapper to avoid confusion about binary path
|
||
|
install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
|
||
|
#!/bin/sh
|
||
|
exec /usr/lib/$pkgname/$pkgname "\$@"
|
||
|
END
|
||
|
|
||
|
# Replace duplicate binary with wrapper
|
||
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
|
||
|
ln -srf "$pkgdir/usr/bin/$pkgname" \
|
||
|
"$pkgdir/usr/lib/$pkgname/$pkgname-bin"
|
||
|
}
|