# Maintainer: dr460nf1r3 # Co-Maintainer: FGD pkgname=firedragon _pkgname=FireDragon pkgver=11.9.0 _floorp_core_commit=cefaa9a0352456c45be6a917e6664f8ef054a68f _floorp_l10n_commit=6915ae0005fdb1684f3b6b0731bdec1a0596f7e8 pkgrel=4 epoch=1 pkgdesc="Floorp fork build using custom branding & settings" url='http://dr460nf1r3.org' arch=('x86_64') license=('MPL2') depends=(dbus dbus-glib ffmpeg gtk3 libevent libjpeg libpulse libvpx libwebp libxss libxt mime-types nss pipewire ttf-font zlib) 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' 'profile-sync-daemon: Load the browser profile into RAM' 'pulseaudio: Audio support' 'searx: Searching the web using a locally running searX instance' 'speech-dispatcher: Text-to-Speech' 'whoogle: Searching the web using a locally running Whoogle instance' 'xdg-desktop-portal: Screensharing with Wayland') replaces=(firedragon-next) options=(!debug !emptydirs !lto !makeflags !strip) backup=("usr/lib/${pkgname}/${pkgname}.cfg" "usr/lib/${pkgname}/distribution/policies.json") source=(https://github.com/Floorp-Projects/Floorp/archive/refs/tags/v"${pkgver}".tar.gz "floorp-core::git+https://github.com/Floorp-Projects/Floorp-core#commit=$_floorp_core_commit" "floorp-l10n-central::git+https://github.com/Floorp-Projects/Unified-l10n-central#commit=$_floorp_l10n_commit" "common::git+https://gitlab.com/garuda-linux/firedragon/common.git" "settings::git+https://gitlab.com/garuda-linux/firedragon/settings.git" "${pkgname}.desktop") sha256sums=('11a7b2bfc2582220e0e0f0be90b9575249f52856fe21b55cbce9b72c516d654e' 'SKIP' 'SKIP' 'SKIP' 'SKIP' '53d3e743f3750522318a786befa196237892c93f20571443fdf82a480e7f0560') install="${pkgname}.install" prepare() { # Floorp's shenanigan to make the build work without cloning the whole # git source (puts submodules' content in place) mv -f "${srcdir}"/floorp-core/* ./Floorp-"${pkgver}"/floorp mv -f "${srcdir}"/floorp-l10n-central/* ./Floorp-"${pkgver}"/floorp/browser/locales/l10n-central rm -rf "${srcdir}/mozbuild" mkdir "${srcdir}/mozbuild" cd Floorp-"${pkgver}" || exit cat >../mozconfig <> browser/locales/en-US/browser/preferences/preferences.ftl # Update privacy preferences -- DISABLED to test UI changes and allow user to easily change the setting # _patch "${_patches_dir}"/custom/privacy-preferences.patch rm -f "${srcdir}"/common/source_files/mozconfig cp -r "${srcdir}"/common/source_files/* ./ } build() { cd Floorp-"${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. # 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 echo "Building instrumented browser..." cat >.mozconfig ../mozconfig - <.mozconfig ../mozconfig if [[ -s merged.profdata ]]; then stat -c "Profile data found (%s bytes)" merged.profdata echo "ac_add_options --enable-profile-use=cross" >>.mozconfig echo "ac_add_options --with-pgo-profile-path='${PWD@Q}/merged.profdata'" >>.mozconfig else echo "Profile data not found." fi if [[ -s jarlog ]]; then stat -c "Jar log found (%s bytes)" jarlog echo "ac_add_options --with-pgo-jarlog='${PWD@Q}/jarlog'" >>.mozconfig else echo "Jar log not found." fi ./mach build echo "Building symbol archive..." ./mach buildsymbols } package() { cd Floorp-"${pkgver}" || exit DESTDIR="${pkgdir}" ./mach install rm "${pkgdir}/usr/lib/${pkgname}/pingsender" local vendorjs="${pkgdir}/usr/lib/${pkgname}/browser/defaults/preferences/vendor.js" install -Dvm644 /dev/stdin "${vendorjs}" <