diff options
author | Joan Figueras | 2024-02-11 16:24:25 +0100 |
---|---|---|
committer | Joan Figueras | 2024-02-11 16:24:25 +0100 |
commit | 18e48fdbf59c00c277bf018b4b9d7f6b03016fcf (patch) | |
tree | da4de00e551cf0dd30e4298c0d635468ffd76ddc | |
parent | 9e6290f11f1c7a1323a241486a592651dfc1319f (diff) | |
download | aur-18e48fdbf59c00c277bf018b4b9d7f6b03016fcf.tar.gz |
115.7.0
-rw-r--r-- | .SRCINFO | 61 | ||||
-rw-r--r-- | PKGBUILD | 317 |
2 files changed, 277 insertions, 101 deletions
@@ -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 @@ -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: |