summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorGitLab CI2024-05-15 10:23:49 +0000
committerGitLab CI2024-05-15 10:23:49 +0000
commit9c8c9bb45860b220c69576988f263303b983bc19 (patch)
treefbeb9b19d5e239794d2c529831ce191505f90b5d /PKGBUILD
parent3c39aad492651831dd1fcb59682569cc0fb016b8 (diff)
downloadaur-9c8c9bb45860b220c69576988f263303b983bc19.tar.gz
chore: update firedragon
This commit was automatically generated to reflect changes to this package in another repository. The changelog for this package can be found at https://gitlab.com/garuda-linux/pkgbuilds/-/commits/main/firedragon. Logs of the corresponding pipeline run can be found here: https://gitlab.com/garuda-linux/pkgbuilds/-/pipelines/1291622005.
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD266
1 files changed, 256 insertions, 10 deletions
diff --git a/PKGBUILD b/PKGBUILD
index f5c8323971fb..ab0a42f789cf 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,10 +2,17 @@
# Co-Maintainer: FGD
# Co-Maintainer: stefanwimmer128 <info at stefanwimmer128 dot xyz>
+# Three-stage profile-guided optimization
+: ${_build_pgo:=true}
+
+# Profile with xvfb-run, if possible
+: ${_build_pgo_xvfb:=false}
+
_pkgver=11.12.2-2
-_pkgrel=1
+_pkgrel=2
pkgname=firedragon
+_pkgname=FireDragon
pkgver=${_pkgver%-*}
pkgrel=${_pkgver#*-}.${_pkgrel}
epoch=1
@@ -17,7 +24,11 @@ depends=(dbus
dbus-glib
ffmpeg
gtk3
+ libevent
+ libjpeg
libpulse
+ libvpx
+ libwebp
libxss
libxt
mime-types
@@ -25,7 +36,31 @@ depends=(dbus
pipewire
ttf-font
zlib)
-makedepends=()
+makedepends=(cbindgen
+ clang
+ diffutils
+ dump_syms
+ imagemagick
+ imake
+ inetutils
+ git
+ jack
+ lld
+ llvm
+ mesa
+ mold
+ nasm
+ nodejs
+ python
+ 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'
@@ -43,22 +78,230 @@ options=(!debug
!strip)
backup=("usr/lib/${pkgname}/${pkgname}.cfg"
"usr/lib/${pkgname}/distribution/policies.json")
-source=(https://gitlab.com/api/v4/projects/55893651/packages/generic/firedragon/${_pkgver}/firedragon-v${_pkgver}.linux-x86_64.tar.bz2
+source=(https://gitlab.com/api/v4/projects/55893651/packages/generic/firedragon/${_pkgver}/firedragon-v${_pkgver}.source.tar.zst
https://gitlab.com/garuda-linux/firedragon/settings/-/raw/master/firedragon.psd
"${pkgname}.desktop")
-sha256sums=('c90102d90af653e1051aee7c064a54c09132a0aba3fe7abee8068c23adae5444'
+sha256sums=('880e094a9fb72b2f4c6ee212d5b530b9fd5c72bf0a6b755af309afb4c09f151c'
'61355930cc59813e7e610ffdab8a01e32be980fffe1dfd8f9654b8f8f9f7fdc0'
'53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560')
install="${pkgname}.install"
+# Select the method of profiling
+if [[ "${_build_pgo::1}" == "t" ]]; then
+ if [[ "${_build_pgo_xvfb::1}" == "t" ]]; then
+ makedepends+=(xorg-server-xvfb)
+ else
+ makedepends+=(weston xwayland-run)
+ fi
+fi
+
+prepare() {
+ rm -rf "${srcdir}/mozbuild"
+ mkdir "${srcdir}/mozbuild"
+
+ cd firedragon-v"${_pkgver}" || exit
+ cat > ../mozconfig << END
+ac_add_options --with-app-basename=${_pkgname}
+ac_add_options --with-app-name=${pkgname}
+ac_add_options --with-branding=browser/branding/firedragon
+ac_add_options --with-l10n-base=${PWD@Q}/floorp/browser/locales/l10n-central
+ac_add_options --enable-application=browser
+ac_add_options --enable-private-components
+mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
+
+# Build options
+ac_add_options --disable-bootstrap
+ac_add_options --disable-elf-hack
+ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
+ac_add_options --enable-hardening
+ac_add_options --enable-linker=mold
+ac_add_options --enable-release
+ac_add_options --enable-rust-simd
+ac_add_options --enable-wasm-simd
+ac_add_options --prefix=/usr
+ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
+export MOZ_INCLUDE_SOURCE_INFO=1
+
+# Branding
+ac_add_options --allow-addon-sideload
+ac_add_options --enable-unverified-updates
+ac_add_options --enable-update-channel=release
+ac_add_options --with-distribution-id=org.garudalinux
+ac_add_options --with-unsigned-addon-scopes=app,system
+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
+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-nss
+ac_add_options --with-system-webp
+ac_add_options --with-system-zlib
+
+# Features
+ac_add_options --disable-crashreporter # (Minimize telemetry)
+ac_add_options --disable-debug
+ac_add_options --disable-debug-js-modules
+ac_add_options --disable-debug-symbols
+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-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-av1
+ac_add_options --enable-eme=widevine
+ac_add_options --enable-jack
+ac_add_options --enable-jxl
+ac_add_options --enable-proxy-bypass-protection
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-raw
+ac_add_options --enable-sandbox
+ac_add_options --enable-strip
+
+# Optimization
+ac_add_options --enable-optimize=-O3
+ac_add_options --enable-lto=cross,full
+ac_add_options OPT_LEVEL="3"
+ac_add_options RUSTC_OPT_LEVEL="3"
+
+# Other
+export AR=llvm-ar
+export CC=clang
+export CXX=clang++
+export NM=llvm-nm
+export RANLIB=llvm-ranlib
+END
+}
+
+build() {
+ cd firedragon-v"${_pkgver}" || exit
+
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
+ export MOZBUILD_STATE_PATH="${srcdir}/mozbuild"
+ export MOZ_ENABLE_FULL_SYMBOLS=1
+ export MOZ_NOSPAM=1
+ export MOZ_PROFILER_STARTUP=1 # Starts the profiler is started as early as possible during startup.
+
+ # Fix DRI/zink issues during compilation
+ export LIBGL_ALWAYS_SOFTWARE=true
+
+ # Malloc_usable_size is used in various parts of the codebase
+ CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+ CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+
+ # LTO needs more open files
+ ulimit -n 4096
+
+ # Do 3-tier PGO
+ if [[ "${_build_pgo::1}" == "t" ]]; then
+ local _old_profdata="${SRCDEST:-$startdir}/merged.profdata"
+ local _old_jarlog="${SRCDEST:-$startdir}/jarlog"
+
+ # Restore old profile
+ if [[ "${_build_pgo_reuse::1}" == "t" ]]; then
+ if [[ -s "$_old_profdata" ]]; then
+ echo "Restoring old profile data."
+ cp --reflink=auto -f "$_old_profdata" merged.profdata
+ fi
+
+ if [[ -s "$_old_jarlog" ]]; then
+ echo "Restoring old jar log."
+ cp --reflink=auto -f "$_old_jarlog" jarlog
+ fi
+ fi
+
+ # Make new profile
+ if [[ "${_build_pgo_reuse::1}" != "t" ]] || [[ ! -s merged.profdata ]]; then
+ echo "Building instrumented browser..."
+ cat > .mozconfig ../mozconfig
+ echo >> .mozconfig "ac_add_options --enable-profile-generate=cross"
+ ./mach build
+
+ echo "Profiling instrumented browser..."
+ ./mach package
+
+ if [[ "${_build_pgo_xvfb::1}" == "t" ]]; then
+ local _headless_run=(
+ xvfb-run
+ -s "-screen 0 1920x1080x24 -nolisten local"
+ )
+ else
+ local _headless_run=(
+ wlheadless-run
+ -c weston --width=1920 --height=1080
+ )
+ fi
+
+ LLVM_PROFDATA=llvm-profdata JARLOG_FILE=${PWD@Q}/jarlog \
+ "${_headless_run[@]}" -- ./mach python build/pgo/profileserver.py
+
+ echo "Removing instrumented browser..."
+ ./mach clobber
+ fi
+
+ echo "Building optimized browser..."
+ cat > .mozconfig ../mozconfig
+
+ if [[ -s merged.profdata ]]; then
+ stat -c "Profile data found (%s bytes)" merged.profdata
+ echo >> .mozconfig "ac_add_options --enable-profile-use=cross"
+ echo >> .mozconfig "ac_add_options --with-pgo-profile-path='${PWD@Q}/merged.profdata'"
+
+ # save profdata for reuse
+ cp --reflink=auto -f merged.profdata "$_old_profdata"
+ else
+ echo "Profile data not found."
+ fi
+
+ if [[ -s jarlog ]]; then
+ stat -c "Jar log found (%s bytes)" jarlog
+ echo >> .mozconfig "ac_add_options --with-pgo-jarlog='${PWD@Q}/jarlog'"
+
+ # save jarlog for reuse
+ cp --reflink=auto -f jarlog "$_old_jarlog"
+ else
+ echo "Jar log not found."
+ fi
+
+ ./mach build
+ else
+ echo "Building browser..."
+ cat > .mozconfig ../mozconfig
+ ./mach build
+ fi
+
+ echo "Building symbol archive..."
+ ./mach buildsymbols
+
+ echo "Packaging browser with locales..."
+ ./mach package
+ ./mach package-multi-locale --locales ar cs da de el en-US en-GB es-ES fr hu id it ja ko lt nl nn-NO pl pt-BR pt-PT ru sv-SE th tr uk zh-CN zh-TW
+}
+
package() {
- cd "${srcdir}/${pkgname}"
+ cd firedragon-v"${_pkgver}" || exit
install -Ddvm755 "${pkgdir}/usr/lib/${pkgname}"
- cp -rvf "${srcdir}/firedragon/." "${pkgdir}/usr/lib/${pkgname}"
+ cp -rvf "obj/dist/firedragon/." "${pkgdir}/usr/lib/${pkgname}"
install -Ddvm755 "${pkgdir}/usr/bin"
- ln -srfv "$pkgdir/usr/lib/$pkgname/${pkgname%-*}" "$pkgdir/usr/bin/${pkgname%-*}"
+ ln -srfv "$pkgdir/usr/lib/${pkgname}/${pkgname}" "$pkgdir/usr/bin/${pkgname}"
+
+ rm "${pkgdir}/usr/lib/${pkgname}/pingsender"
local vendorjs="${pkgdir}/usr/lib/${pkgname}/browser/defaults/preferences/vendor.js"
install -Dvm644 /dev/stdin "${vendorjs}" << END
@@ -112,14 +355,17 @@ END
# Application icons
for i in 16 32 48 64 128; do
- install -Dvm644 browser/chrome/icons/default/default$i.png "${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps/${pkgname}.png"
+ 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"
# Replace duplicate binary with wrapper
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/${pkgname%-*}-bin"
# All the needed configuration files
- install -Dvm644 "${srcdir}/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
- install -Dvm644 "${srcdir}/${pkgname}.psd" "${pkgdir}/usr/share/psd/browsers/${pkgname}"
+ install -Dvm644 "../${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+ install -Dvm644 "${srcdir}/firedragon.psd" "${pkgdir}/usr/share/psd/browsers/firedragon"
}