summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoan Figueras2024-02-11 16:24:25 +0100
committerJoan Figueras2024-02-11 16:24:25 +0100
commit18e48fdbf59c00c277bf018b4b9d7f6b03016fcf (patch)
treeda4de00e551cf0dd30e4298c0d635468ffd76ddc
parent9e6290f11f1c7a1323a241486a592651dfc1319f (diff)
downloadaur-18e48fdbf59c00c277bf018b4b9d7f6b03016fcf.tar.gz
115.7.0
-rw-r--r--.SRCINFO61
-rw-r--r--PKGBUILD317
2 files changed, 277 insertions, 101 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 79e03167e08a..40a88b94b669 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,63 +1,56 @@
pkgbase = icecat
pkgdesc = GNU version of the Firefox browser.
- pkgver = 115.6.0
+ pkgver = 115.7.0
pkgrel = 1
- url = http://www.gnu.org/software/gnuzilla/
arch = x86_64
- license = GPL
- license = MPL
- license = LGPL
- makedepends = m4
- makedepends = unzip
- makedepends = zip
+ license = MPL-2.0
+ makedepends = cbindgen
+ makedepends = clang
makedepends = diffutils
- makedepends = python-setuptools
- makedepends = python-jsonschema
- makedepends = yasm
- makedepends = mesa
makedepends = imake
makedepends = inetutils
- makedepends = xorg-server-xvfb
- makedepends = autoconf2.13
- makedepends = rust
- makedepends = clang
- makedepends = llvm
makedepends = jack
- makedepends = gtk2
- makedepends = python
- makedepends = nodejs
- makedepends = python-psutil
- makedepends = cbindgen
- makedepends = nasm
- makedepends = wget
- makedepends = mercurial
- makedepends = git
makedepends = lld
+ makedepends = llvm
+ makedepends = mesa
+ 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 = mercurial
+ makedepends = wget
+ makedepends = python-jsonschema
+ makedepends = dbus-glib
+ depends = dbus
+ depends = ffmpeg
depends = gtk3
+ depends = libpulse
+ depends = libxss
depends = libxt
depends = mime-types
- depends = dbus-glib
- depends = ffmpeg
depends = nss
depends = ttf-font
- depends = libpulse
- optdepends = networkmanager: Location detection via available WiFi networks
+ optdepends = hunspell-en_US: Spell checking, American English
optdepends = libnotify: Notification integration
+ optdepends = networkmanager: Location detection via available WiFi networks
optdepends = pulseaudio: Audio support
optdepends = speech-dispatcher: Text-to-Speech
- optdepends = hunspell-en_US: Spell checking, American English
optdepends = xdg-desktop-portal: Screensharing with Wayland
options = !emptydirs
+ options = !lto
options = !makeflags
- options = !strip
- source = https://git.savannah.gnu.org/cgit/gnuzilla.git/snapshot/gnuzilla-6a76a10682b6e63f562e4b9f26f3ef12f88bd839.tar.gz
+ source = https://git.savannah.gnu.org/cgit/gnuzilla.git/snapshot/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf.tar.gz
source = icecat.desktop
source = icecat-safe.desktop
- sha256sums = 08f361dee1d1e0660c7665b06b7e2b00035f3803d118348832c2af0c0c32d86d
+ sha256sums = 5aa10b4d7d886730e236a2289e32479322d336b96fe650842fad478f69596c9c
sha256sums = e00dbf01803cdd36fd9e1c0c018c19bb6f97e43016ea87062e6134bdc172bc7d
sha256sums = 33dd309eeb99ec730c97ba844bf6ce6c7840f7d27da19c82389cdefee8c20208
diff --git a/PKGBUILD b/PKGBUILD
index 9f76fdf9cc22..313673b2b6ce 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,34 +1,78 @@
-# Maintainer: Figue <ffigue at gmail>
+# Maintainer: Joan Figueras <ffigue at gmail>
# Contributor (Parabola): fauno <fauno@kiwwwi.com.ar>
-# Thank you very much to the older contributors:
-# Contributor: evr <evanroman at gmail>
-# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com>
+# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub@gmail.com>
+# Contributor: xiota
+## options
+: ${_build_pgo:=true}
+: ${_build_pgo_reuse:=true}
+
+## basic info
pkgname=icecat
-pkgver=115.6.0
+pkgver=115.7.0
pkgrel=1
-_commit=6a76a10682b6e63f562e4b9f26f3ef12f88bd839
+_commit=dbe6da400cf4f28e5e893d0acb5022e23cf3afcf
pkgdesc="GNU version of the Firefox browser."
arch=(x86_64)
-url="http://www.gnu.org/software/gnuzilla/"
-license=('GPL' 'MPL' 'LGPL')
-depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse)
-makedepends=(m4 unzip zip diffutils python-setuptools python-jsonschema yasm mesa imake inetutils
- xorg-server-xvfb autoconf2.13 rust clang llvm jack gtk2
- python nodejs python-psutil cbindgen nasm wget mercurial git lld
- wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi)
-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')
-options=(!emptydirs !makeflags !strip)
+license=(MPL-2.0)
+depends=(
+ dbus
+ ffmpeg
+ gtk3
+ libpulse
+ libxss
+ libxt
+ mime-types
+ nss
+ ttf-font
+)
+makedepends=(
+ cbindgen
+ clang
+ diffutils
+ imake
+ inetutils
+ jack
+ lld
+ llvm
+ mesa
+ nasm
+ nodejs
+ python
+ rust
+ unzip
+ wasi-compiler-rt
+ wasi-libc
+ wasi-libc++
+ wasi-libc++abi
+ xorg-server-xvfb
+ yasm
+ zip
+ mercurial
+ wget
+ python-jsonschema
+ dbus-glib
+)
+optdepends=(
+ 'hunspell-en_US: Spell checking, American English'
+ 'libnotify: Notification integration'
+ 'networkmanager: Location detection via available WiFi networks'
+ 'pulseaudio: Audio support'
+ 'speech-dispatcher: Text-to-Speech'
+ 'xdg-desktop-portal: Screensharing with Wayland'
+)
+options=(
+ !emptydirs
+ !lto
+ !makeflags
+)
source=(https://git.savannah.gnu.org/cgit/gnuzilla.git/snapshot/gnuzilla-${_commit}.tar.gz
icecat.desktop icecat-safe.desktop)
-sha256sums=('08f361dee1d1e0660c7665b06b7e2b00035f3803d118348832c2af0c0c32d86d'
+sha256sums=('5aa10b4d7d886730e236a2289e32479322d336b96fe650842fad478f69596c9c'
'e00dbf01803cdd36fd9e1c0c018c19bb6f97e43016ea87062e6134bdc172bc7d'
'33dd309eeb99ec730c97ba844bf6ce6c7840f7d27da19c82389cdefee8c20208')
@@ -38,46 +82,56 @@ prepare() {
# Uncomment if you have issues with gpg download... WITH PROXY gpg doesn't work!!!!!!
#sed -e 's/^verify_sources$//g' -i makeicecat
- mkdir output || rm -rf output/* # Clean output just in case is already an old build there
- if [ -f "${SRCDEST}/firefox-${pkgver}esr.source.tar.xz" ] && [ -f "${SRCDEST}/firefox-${pkgver}esr.source.tar.xz.asc" ]; then cp -f "${SRCDEST}"/firefox-${pkgver}esr.source.tar.xz{,.asc} output/ ; fi
-
- # Patches to avoid download sources if you have in your $startdir
- sed -e '/rm -rf output/d' -i makeicecat
- sed -e 's/wget -N/wget -nv -Nc/g' -i makeicecat
-
- # Other patches
- sed '/^finalize_sourceball$/d' -i makeicecat
-
- # If we want to avoid all locales, we can use variable _SPEED=y to build it with only 1 locale. Use variable _LOCALE to define it
- if [[ $_SPEED =~ [y|Y] ]]; then
- msg2 "Building without all locales..."
- sed -e 's/DEVEL=0/DEVEL=1/g' -i makeicecat
- # Also you can choose your locale using external variable _LOCALE. By default in upstream script this locale is es-ES
- [ -z "$_LOCALE" ] || sed -e "s/es-ES/$_LOCALE/g" -i makeicecat && echo "$_LOCALE" > custom-shipped-locales
- rm -rf data/files-to-append/l10n/*
+ if [ "${_only-compile}q" = q ]; then
+ mkdir output || rm -rf output/* # Clean output just in case is already an old build there
+ if [ -f "${SRCDEST}/firefox-${pkgver}esr.source.tar.xz" ] && [ -f "${SRCDEST}/firefox-${pkgver}esr.source.tar.xz.asc" ]; then cp -f "${SRCDEST}"/firefox-${pkgver}esr.source.tar.xz{,.asc} output/ ; fi
+
+ # Patches to avoid download sources if you have in your $startdir
+ sed -e '/rm -rf output/d' -i makeicecat
+ sed -e 's/wget -N/wget -nv -Nc/g' -i makeicecat
+
+ # Other patches
+ sed '/^finalize_sourceball$/d' -i makeicecat
+
+ # If we want to avoid all locales, we can use variable _SPEED=y to build it with only 1 locale. Use variable _LOCALE to define it
+ if [[ $_SPEED =~ [y|Y] ]]; then
+ msg2 "Building without all locales..."
+ sed -e 's/DEVEL=0/DEVEL=1/g' -i makeicecat
+ # Also you can choose your locale using external variable _LOCALE. By default in upstream script this locale is es-ES
+ [ -z "$_LOCALE" ] || sed -e "s/es-ES/$_LOCALE/g" -i makeicecat && echo "$_LOCALE" > custom-shipped-locales
+ rm -rf data/files-to-append/l10n/*
+ fi
+
+ # Thanks to cysp74 to report this bug
+ sed -e 's;find l10n -wholename '\''\*/brand.dtd'\'' | xargs;find l10n -wholename '\''\*/brand.dtd'\'' | xargs -r;g' -i makeicecat
+
+ # Produce IceCat sources
+ bash makeicecat
+ cd output/icecat-${pkgver}
+
+ # Patch to move files directly to /usr/lib/icecat. No more symlinks.
+ sed -e 's;$(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME);g' -i config/baseconfig.mk
+ sed -e 's;$(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME)-devel;g' -i config/baseconfig.mk
+
+ # disable extensions, otherwise profiling freezes
+ cp "browser/app/Makefile.in" "$srcdir/Makefile.in"
+ sed -E -e '/^\t.*\/extensions\/gnu\/\*.*$/d' -i "browser/app/Makefile.in"
+ cp "browser/installer/package-manifest.in" "$srcdir/package-manifest.in"
+ sed -E -e '/^.*\/browser\/extensions\/.*$/d' -i "browser/installer/package-manifest.in"
+ cp "browser/installer/allowed-dupes.mn" "$srcdir/allowed-dupes.mn"
+ sed -E -e '/^browser\/extensions\/.*$/d' -i "browser/installer/allowed-dupes.mn"
+
+ printf '%b' " \e[1;36m->\e[0m\033[1m Starting build...\n"
fi
-
- # Thanks to cysp74 to report this bug
- sed -e 's;find l10n -wholename '\''\*/brand.dtd'\'' | xargs;find l10n -wholename '\''\*/brand.dtd'\'' | xargs -r;g' -i makeicecat
-
- # Produce IceCat sources
- bash makeicecat
- cd output/icecat-${pkgver}
-
- # Patch to move files directly to /usr/lib/icecat. No more symlinks.
- sed -e 's;$(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME);g' -i config/baseconfig.mk
- sed -e 's;$(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME)-devel;g' -i config/baseconfig.mk
-
- printf '%b' " \e[1;36m->\e[0m\033[1m Starting build...\n"
- cat >./mozconfig <<END
+ cat >../mozconfig <<END
ac_add_options --enable-application=browser
ac_add_options --prefix=/usr
ac_add_options --enable-release
ac_add_options --enable-hardening
-ac_add_options --enable-optimize
ac_add_options --enable-rust-simd
+ac_add_options --enable-wasm-simd
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
ac_add_options --disable-bootstrap
@@ -89,6 +143,9 @@ ac_add_options --with-distribution-id=org.gnu
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
+ac_add_options --with-app-basename=icecat
+ac_add_options --with-app-name=icecat
+
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
@@ -101,8 +158,36 @@ ac_add_options --disable-updater
ac_add_options --disable-tests
ac_add_options --disable-eme
-ac_add_options --with-app-basename=icecat
-ac_add_options --with-app-name=icecat
+ac_add_options --disable-default-browser-agent
+ac_add_options --disable-parental-controls
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+
+# Disables Telemetry by Default
+mk_add_options MOZ_DATA_REPORTING=0
+mk_add_options MOZ_SERVICES_HEALTHREPORT=0
+mk_add_options MOZ_TELEMETRY_REPORTING=0
+
+# Debugging
+ac_add_options --disable-debug
+ac_add_options --disable-debug-symbols
+ac_add_options --disable-debug-js-modules
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+export STRIP_FLAGS="--strip-debug --strip-unneeded"
+
+# 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
}
@@ -112,13 +197,111 @@ build() {
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
- export LDFLAGS="${LDFLAGS} -lwayland-client"
+ export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)"
+
+ # 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
- ./mach build
-
+ # Do 3-tier PGO
+ if [[ "${_build_pgo::1}" == "t" ]] ; then
+ # find previous profile file...
+ local _old_profdata _old_jarlog _pkgver_old tmp_old tmp_new
+ _pkgver_prof=$(
+ cd "${SRCDEST:-$startdir}"
+ for i in *.profdata ; do [ -f "$i" ] && echo "$i" ; done \
+ | sort -rV | head -1
+ )
+
+ # new profile for new major version
+ if [ "${_pkgver_prof%%.*}" != "${pkgver%%.*}" ] ; then
+ _build_pgo_reuse=false
+ _pkgver_prof="$pkgver"
+ fi
+
+ # new profile for minor version + 3
+ _tmp_old=$(echo "${_pkgver_prof}" | cut -d'-' -f2 | cut -d'.' -f2)
+ _tmp_new=$(echo "${pkgver}" | cut -d'-' -f2 | cut -d'.' -f2)
+
+ if [ "${_tmp_new:-0}" -ge "$((_tmp_old + 3))" ] ; then
+ _build_pgo_reuse=false
+ _pkgver_prof="$pkgver"
+ fi
+
+ local _old_profdata="${SRCDEST:-$startdir}/$pkgname-$_pkgver_prof-merged.profdata"
+ local _old_jarlog="${SRCDEST:-$startdir}/$pkgname-$_pkgver_prof-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 - <<END
+ac_add_options --enable-profile-generate=cross
+END
+ ./mach build
+
+ echo "Profiling instrumented browser..."
+ ./mach package
+ LLVM_PROFDATA=llvm-profdata \
+ JARLOG_FILE="$PWD/jarlog" \
+ xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
+ ./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
+
+ # reenable extensions
+ cp "$srcdir/Makefile.in" "browser/app/Makefile.in"
+ cp "$srcdir/package-manifest.in" "browser/installer/package-manifest.in"
+ cp "$srcdir/allowed-dupes.mn" "browser/installer/allowed-dupes.mn"
+
+ ./mach build
+ else
+ echo "Building browser..."
+ cat >.mozconfig ../mozconfig
+
+ ./mach build
+ fi
}
package () {
@@ -130,8 +313,8 @@ package () {
DESTDIR="$pkgdir" ./mach install
- local _vendorjs="$pkgdir/usr/lib/${pkgname}/browser/defaults/preferences/vendor.js"
- install -Dvm644 /dev/stdin "$_vendorjs" <<END
+ local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
+ install -Dvm644 /dev/stdin "$vendorjs" <<END
// Use LANG environment variable to choose locale
pref("intl.locale.requested", "");
@@ -159,16 +342,16 @@ app.partner.archlinux=archlinux
END
printf '%b' " \e[1;36m->\e[0m\033[1m Finishing...\n"
- install -m755 -d ${pkgdir}/usr/share/applications
- install -m755 -d ${pkgdir}/usr/share/pixmaps
+ install -m755 -d "${pkgdir}/usr/share/applications"
+ install -m755 -d "${pkgdir}/usr/share/pixmaps"
- for i in 16 32 48; do
+ for i in 16 22 24 32 48 64 128 256; do
install -Dm644 browser/branding/official/default${i}.png \
"$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/icecat.png"
done
- install -Dm644 browser/branding/official/default48.png ${pkgdir}/usr/share/pixmaps/icecat.png
- install -Dm644 ${srcdir}/icecat.desktop ${pkgdir}/usr/share/applications/
- install -Dm644 ${srcdir}/icecat-safe.desktop ${pkgdir}/usr/share/applications/
+ install -Dm644 browser/branding/official/default48.png "${pkgdir}/usr/share/pixmaps/icecat.png"
+ install -Dm644 "${srcdir}/icecat.desktop" "${pkgdir}/usr/share/applications/"
+ install -Dm644 "${srcdir}/icecat-safe.desktop" "${pkgdir}/usr/share/applications/"
}
-# vim:set sw=2 et:
+# vim:set sw=2 sts=-1 et: