summaryrefslogtreecommitdiff
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD115
1 files changed, 94 insertions, 21 deletions
diff --git a/PKGBUILD b/PKGBUILD
index b4bc327..0d38826 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -14,17 +14,20 @@
# Arch version enables debug symbols
# Arch version lacks privacy and security by default
+_modclang=0
+#_modclang=1 # FIXME
+
_pkgname=firefox
pkgname=${_pkgname}-esr
-pkgver=68.1.0
+pkgver=68.2.0
_pkgver=${pkgver}esr
-pkgrel=1
+pkgrel=2
pkgdesc="Standalone web browser from mozilla.org"
arch=(x86_64)
license=(MPL GPL LGPL)
url="https://www.mozilla.org/firefox/"
-depends=(gtk3 mozilla-common libxt startup-notification mime-types dbus-glib
- ffmpeg ttf-font libpulse alsa-lib
+depends=(gtk3 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
+ ttf-font libpulse alsa-lib
bzip2 libffi icu libjpeg-turbo libevent libvpx nspr nss pixman libpng sqlite libwebp zlib)
makedepends=(unzip zip diffutils python-setuptools yasm mesa imake inetutils
xorg-server-xvfb autoconf2.13 rust clang llvm jack gtk2
@@ -40,22 +43,27 @@ options=(!emptydirs !makeflags)
conflicts=(firefox)
provides=(firefox)
source=("https://archive.mozilla.org/pub/$_pkgname/releases/$_pkgver/source/$_pkgname-$_pkgver.source.tar.xz"{,.asc}
- $_pkgname.desktop $_pkgname-symbolic.svg
+ no-relinking.patch
+ 0001-Use-remoting-name-for-GDK-application-names.patch
+ $_pkgname.desktop
distribution.ini
mozconfig.in
+ mozconfig.in.clang
+ mozconfig.in.clang.pgo
mozconfig.common.override
- 0001-Use-remoting-name-for-GDK-application-names.patch
pgo-1.patch
moz.configure.diff
package-manifest.diff)
-sha256sums=('f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac'
+sha256sums=('85f1c2eaf68ebedcbc0b78a342f6d16ef0865dedd426a1bba94b75c85f716f38'
'SKIP'
- '54dcf5e1b91db3f586a7e27814552f96578b9d9495b7b10b268e36f64b49d4d1'
- '9a1a572dc88014882d54ba2d3079a1cf5b28fa03c5976ed2cb763c93dabbd797'
+ '2dc9d1aa5eb7798c89f46478f254ae61e4122b4d1956d6044426288627d8a014'
+ 'ab07ab26617ff76fce68e07c66b8aa9b96c2d3e5b5517e51a3c3eac2edd88894'
+ 'a9e5264257041c0b968425b5c97436ba48e8d294e1a0f02c59c35461ea245c33'
'0ba4d1a619a3a5750a5a48c6bff8c6a69d3aa4be4c303032c5979ab5f68db208'
'1cc0730e0f0285f45f30feeeee6d7757931b25263b35b041abd71c2e0486210d'
+ '6bf4638134915758466a912dc909fbad165e76cc3807e9eedc659f8f346575fa'
+ 'b9833cf28af757e17a34e5c7f9db89b97d5c56b8f55cb6bccb70fc48275318af'
'dcf70d24eedab79d811974a75663f0e84c5efca420da61fc444ebe311d0cada9'
- 'ab07ab26617ff76fce68e07c66b8aa9b96c2d3e5b5517e51a3c3eac2edd88894'
'a8c15c9d54ef8b360c0932f4ccf5e74954f14e9a9c2a1ae924b6c392075b2b8c'
'ad8a270e1b2affb098440f82517c3952207b28ebf604fef695dad3e29a5ba30e'
'927e400d6920b98d2fe7db2b6498f195135909a76e0da49441223956364d8227')
@@ -65,14 +73,24 @@ prepare() {
# mkdir mozbuild
cd ${_pkgname}-${pkgver}
+ # Avoid relinking during buildsymbols
+ patch -Np1 -i ../no-relinking.patch
+
# https://bugzilla.mozilla.org/show_bug.cgi?id=1530052
patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch
- # Apply pgo patches
- patch -p0 $srcdir/${_pkgname}-${pkgver}/security/sandbox/linux/moz.build $srcdir/pgo-1.patch
+ if [ "${_modclang}" != "1" ]; then
+ # Apply gcc pgo patches
+ patch -p0 $srcdir/${_pkgname}-${pkgver}/security/sandbox/linux/moz.build $srcdir/pgo-1.patch
+ fi
- # Add the custom mozconfig
- cp $srcdir/mozconfig.in $srcdir/${_pkgname}-${pkgver}/.mozconfig
+ if [ "${_modclang}" == "1" ]; then
+ # Add the custom mozconfig for pgo
+ cp $srcdir/mozconfig.in.clang.pgo $srcdir/${_pkgname}-${pkgver}/.mozconfig
+ else
+ # Add the custom mozconfig
+ cp $srcdir/mozconfig.in $srcdir/${_pkgname}-${pkgver}/.mozconfig
+ fi
# MOZ_TELEMETRY_REPORTING only applied correctly when set in this override file
cp $srcdir/mozconfig.common.override $srcdir/${_pkgname}-${pkgver}/build/mozconfig.common.override
@@ -101,12 +119,58 @@ build() {
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
+
export CFLAGS="$CFLAGS -O3 -fstack-protector-all -fPIC"
export CXXFLAGS="$CXXFLAGS -O3 -fstack-protector-all -fPIC"
+
# LTO needs more open files
ulimit -n 4096
- msg2 "Building browser..."
- xvfb-run -a -n 97 -s "-screen 0 1600x1200x24" ./mach build
+
+ if [ "${_modclang}" == "1" ]; then
+ # clang does not support -fstack-clash-protection, so remove it
+ export CFLAGS="$(echo $CFLAGS | sed 's/ -fstack-clash-protection//' - )"
+ export CXXFLAGS="$(echo $CXXFLAGS | sed 's/ -fstack-clash-protection//' - )"
+# # -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
+ msg2 "Building instrumented browser..."
+ ./mach build
+
+ msg2 "Profiling instrumented browser..."
+ ./mach package
+ LLVM_PROFDATA=llvm-profdata \
+ JARLOG_FILE="$PWD/jarlog" \
+ xvfb-run -a -n 92 -s "-screen 0 1600x1200x24" \
+ ./mach python build/pgo/profileserver.py
+
+ if ! compgen -G '*.profraw' >&2; then
+ error "No profile data produced."
+ return 1
+ fi
+
+ if [[ ! -s jarlog ]]; then
+ error "No jar log produced."
+ return 1
+ fi
+
+ msg2 "Removing instrumented browser..."
+ ./mach clobber
+
+ msg2 "Building optimized browser..."
+ # Add the custom mozconfig
+ cp $srcdir/mozconfig.in.clang $srcdir/${_pkgname}-${pkgver}/.mozconfig
+ cat >.mozconfig - <<END
+ac_add_options --with-pgo-profile-path=${PWD@Q}
+ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
+END
+ ./mach build
+ else
+ msg2 "Building optimized browser..."
+ xvfb-run -a -n 96 -s "-screen 0 1600x1200x24" ./mach build
+ fi
msg2 "Building symbol archive..."
./mach buildsymbols
@@ -124,21 +188,30 @@ package() {
rm "$pkgdir/usr/bin/firefox"
ln -s "/usr/lib/$_pkgname/firefox" "$pkgdir/usr/bin/firefox"
+ find . -name '*crashreporter-symbols-full.zip' -exec \
+ cp -fvt "$startdir" {} +
+
# icons
+ local i
for i in 16 22 24 32 48 64 128 256; do
- install -Dm644 browser/branding/official/default$i.png \
+ install -Dvm644 browser/branding/official/default$i.png \
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$_pkgname.png"
done
- install -Dm644 browser/branding/official/content/about-logo.png \
+ install -Dvm644 browser/branding/official/content/about-logo.png \
"$pkgdir/usr/share/icons/hicolor/192x192/apps/$_pkgname.png"
- install -Dm644 browser/branding/official/content/about-logo@2x.png \
+ install -Dvm644 browser/branding/official/content/about-logo@2x.png \
"$pkgdir/usr/share/icons/hicolor/384x384/apps/$_pkgname.png"
- install -Dm644 ../$_pkgname-symbolic.svg \
+ install -Dvm644 browser/branding/official/content/identity-icons-brand.svg \
"$pkgdir/usr/share/icons/hicolor/symbolic/apps/$_pkgname-symbolic.svg"
# install desktop file
- install -Dm644 ../$_pkgname.desktop \
+ install -Dvm644 ../$_pkgname.desktop \
"$pkgdir/usr/share/applications/$_pkgname.desktop"
+ # Use system certificates
+ local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
+ if [[ -e $nssckbi ]]; then
+ ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
+ fi
}