# $Id$ # Maintainer: Frederic Bezies # Contributor: Felix Golatofski # Contributor: Jan Alexander Steffens (heftig) # Contributor: Ionut Biru # Contributor: Jakub Schmidtke # Contributor: Luna Jernberg ## ## The following variables can be customized at build time. Use env or export to change at your wish ## ## Example: env enable_pgo=y makepkg -sc ## ## Optimized build: env enable_pgo=y enable_lto=y makepkg -sc ## Optimized build, less RAM required: env enable_pgo=y enable_lto=y enable_no_keep_memory=y makepkg -sc ## Less optimization enabled, faster compilation: env enable_pgo=n enable_lto=n makepkg -sc ## ## Enable PGO, increasing performances but makes the compilation slower. ## It builds Firefox a first time without LTO, runs the test suite to generate ## a PGO profile, then builds Firefox again (with optional LTO) using this ## profile. ## Set variable "enable_pgo" to: y to enable (increase performance, default in official firefox-beta) ## n to disable (less optimized, but faster compilation, as it will skip the profile generation) if [ -z ${enable_pgo+x} ]; then enable_pgo=y fi ## Enable LTO, increasing performances but makes the compilation slower and ## requires more RAM to build. Only affects clang, rust has LTO enabled by ## default. ## Disable it if the compilation runs out-of-memory. ## Set variable "enable_lto" to: y to enable (increase performance, default in official firefox-beta, but slower to compile) ## n to disable (less optimized, but faster to compile) if [ -z ${enable_lto+x} ]; then enable_lto=y fi ## Enable --no-keep-memory in LD when compiling with LTO enabled. Useful when ## running OOM during the compilation, as LD will consume less memory when ## ## linking. Doesn't impact the performance of the generated binary, but makes ## the compilation a bit slower. ## Set variable "enable_no_keep_memory" to: n to disable (default) ## y to enable (slower compilation, but compilation requires less memory) if [ -z ${enable_no_keep_memory+x} ]; then enable_no_keep_memory=n fi ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgname=firefox-beta _pkgname=firefox pkgver=95.0b2 _major=${pkgver/rc*} _build=${pkgver/*rc} _pkgver=95.0 pkgrel=1 pkgdesc="Standalone web browser from mozilla.org - Beta" arch=(i686 x86_64) license=(MPL GPL LGPL) url="https://www.mozilla.org/en-US/firefox/channel/#beta" depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse) makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb autoconf2.13 rust clang llvm jack nodejs cbindgen nasm python-setuptools python-psutil python-zstandard lld dump_syms) 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' 'xdg-desktop-portal: Screensharing with Wayland') provides=("firefox=$pkgver") conflicts=('firefox-beta-bin') options=(!emptydirs !makeflags !strip) source=(http://archive.mozilla.org/pub/firefox/releases/${pkgver}/source/$_pkgname-$pkgver.source.tar.xz{,.asc} 0001-Use-remoting-name-for-GDK-application-names.patch $pkgname.desktop) sha256sums=('9eb978f7573077e8c3682050ef19dbd4517d6afc4ea91d423331a7a460765914' 'SKIP' 'bb9769a8fe720abea2bba5b895c70c4fba0d44bb553399d83350268edf85cdeb' '54d93249fedc9c4cdc5eb82da498b08f08bcb089f85a138b457f3251a0913ad1') validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases # RC if [[ $_build = ? ]]; then source[0]="firefox-$pkgver.source.tar.xz::https://ftp.mozilla.org/pub/firefox/candidates/$_major-candidates/build$_build/source/firefox-$_major.source.tar.xz" source[1]="firefox-$pkgver.source.tar.xz.asc::https://ftp.mozilla.org/pub/firefox/candidates/$_major-candidates/build$_build/source/firefox-$_major.source.tar.xz.asc" fi # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact foutrelis@archlinux.org for # more information. _google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM # Mozilla API keys (see https://location.services.mozilla.com/api) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact heftig@archlinux.org for # more information. _mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a prepare() { mkdir mozbuild cd firefox-$_pkgver # https://bugzilla.mozilla.org/show_bug.cgi?id=1530052 patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch echo -n "$_google_api_key" >google-api-key echo -n "$_mozilla_api_key" >mozilla-api-key cat >../mozconfig <.mozconfig ../mozconfig - <.mozconfig ../mozconfig - <.mozconfig ../mozconfig fi if [ "$enable_lto" = "y" ]; then echo "ac_add_options --enable-lto=cross" >> .mozconfig if [ "$enable_no_keep_memory" = "y" ]; then LDFLAGS="$LDFLAGS,--no-keep-memory" fi fi ./mach build echo "Building symbol archive..." ./mach buildsymbols } package() { cd firefox-$_pkgver DESTDIR="$pkgdir" ./mach install mv "$pkgdir"/usr/lib/{firefox,$pkgname} rm "$pkgdir"/usr/bin/firefox local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" install -Dvm644 /dev/stdin "$vendorjs" <