From 9c8c9bb45860b220c69576988f263303b983bc19 Mon Sep 17 00:00:00 2001 From: GitLab CI Date: Wed, 15 May 2024 10:23:49 +0000 Subject: [PATCH] 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. --- .SRCINFO | 37 +++++++- PKGBUILD | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 290 insertions(+), 13 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 9717191..2112c78 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,18 +1,49 @@ pkgbase = firedragon pkgdesc = Floorp fork build using custom branding and settings pkgver = 11.12.2 - pkgrel = 2.1 + pkgrel = 2.2 epoch = 1 url = https://garudalinux.org install = firedragon.install arch = x86_64 license = MPL2 license = Floorp Shared Source License + makedepends = cbindgen + makedepends = clang + makedepends = diffutils + makedepends = dump_syms + makedepends = imagemagick + makedepends = imake + makedepends = inetutils + makedepends = git + makedepends = jack + makedepends = lld + makedepends = llvm + makedepends = mesa + makedepends = mold + makedepends = nasm + makedepends = nodejs + makedepends = python + makedepends = rust + makedepends = unzip + makedepends = wasi-compiler-rt + makedepends = wasi-libc + makedepends = wasi-libc++ + makedepends = wasi-libc++abi + makedepends = xorg-server-xvfb + makedepends = yasm + makedepends = zip + makedepends = weston + makedepends = xwayland-run depends = dbus depends = dbus-glib depends = ffmpeg depends = gtk3 + depends = libevent + depends = libjpeg depends = libpulse + depends = libvpx + depends = libwebp depends = libxss depends = libxt depends = mime-types @@ -37,10 +68,10 @@ pkgbase = firedragon options = !strip backup = usr/lib/firedragon/firedragon.cfg backup = usr/lib/firedragon/distribution/policies.json - source = https://gitlab.com/api/v4/projects/55893651/packages/generic/firedragon/11.12.2-2/firedragon-v11.12.2-2.linux-x86_64.tar.bz2 + source = https://gitlab.com/api/v4/projects/55893651/packages/generic/firedragon/11.12.2-2/firedragon-v11.12.2-2.source.tar.zst source = https://gitlab.com/garuda-linux/firedragon/settings/-/raw/master/firedragon.psd source = firedragon.desktop - sha256sums = c90102d90af653e1051aee7c064a54c09132a0aba3fe7abee8068c23adae5444 + sha256sums = 880e094a9fb72b2f4c6ee212d5b530b9fd5c72bf0a6b755af309afb4c09f151c sha256sums = 61355930cc59813e7e610ffdab8a01e32be980fffe1dfd8f9654b8f8f9f7fdc0 sha256sums = 53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560 diff --git a/PKGBUILD b/PKGBUILD index f5c8323..ab0a42f 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,10 +2,17 @@ # Co-Maintainer: FGD # Co-Maintainer: stefanwimmer128 +# 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" }