diff options
Diffstat (limited to 'PKGBUILD_global_menubar')
-rw-r--r-- | PKGBUILD_global_menubar | 324 |
1 files changed, 324 insertions, 0 deletions
diff --git a/PKGBUILD_global_menubar b/PKGBUILD_global_menubar new file mode 100644 index 0000000..b4fb0c7 --- /dev/null +++ b/PKGBUILD_global_menubar @@ -0,0 +1,324 @@ +# Maintainer: ohfp +# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Contributor: Ionut Biru <ibiru@archlinux.org> +# Contributor: Jakub Schmidtke <sjakub@gmail.com> + +pkgname=librewolf +_pkgname=LibreWolf +# how to get ci vars instead? +pkgver=85.0 +pkgrel=1 +pkgdesc="Community-maintained fork of Firefox, focused on privacy, security and freedom." +arch=(x86_64 aarch64) +license=(MPL GPL LGPL) +url="https://librewolf-community.gitlab.io/" +depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse) +makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb + rust + autoconf2.13 clang llvm jack gtk2 nodejs cbindgen nasm + python-setuptools python-psutil python-zstandard git binutils lld) +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') +options=(!emptydirs !makeflags !strip) +_arch_svn=https://git.archlinux.org/svntogit/packages.git/plain/trunk +_settings_commit=640b375dc02c5b089f678ed16b0232d1c0cc0721 +source_x86_64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz + $pkgname.desktop + "git+https://gitlab.com/${pkgname}-community/browser/common.git" + "git+https://gitlab.com/${pkgname}-community/settings.git" + "megabar.patch" + "remove_addons.patch" + "unity-menubar.patch") +source_aarch64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz + $pkgname.desktop + "git+https://gitlab.com/${pkgname}-community/browser/common.git" + "git+https://gitlab.com/${pkgname}-community/settings.git" + "megabar.patch" + "remove_addons.patch" + "unity-menubar.patch" + arm.patch + https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch) + +sha256sums_x86_64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50' + '0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2' + 'SKIP' + 'SKIP' + '682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5' + 'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6' + 'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665') +sha256sums_aarch64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50' + '0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2' + 'SKIP' + 'SKIP' + '682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5' + 'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6' + 'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665' + '6ca87d2ac7dc48e6f595ca49ac8151936afced30d268a831c6a064b52037f6b7' + '2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9') + +prepare() { + mkdir mozbuild + cd firefox-$pkgver + + cat >../mozconfig <<END +ac_add_options --enable-application=browser +mk_add_options MOZ_OBJDIR=${PWD@Q}/obj + +# This supposedly speeds up compilation (We test through dogfooding anyway) +ac_add_options --disable-tests +ac_add_options --disable-debug + +ac_add_options --prefix=/usr +ac_add_options --enable-release +ac_add_options --enable-hardening +ac_add_options --enable-rust-simd +export CC='clang' +export CXX='clang++' +export AR=llvm-ar +export NM=llvm-nm +export RANLIB=llvm-ranlib + +# Branding +ac_add_options --enable-update-channel=release +ac_add_options --with-app-name=${pkgname} +ac_add_options --with-app-basename=${_pkgname} +ac_add_options --with-branding=browser/branding/${pkgname} +ac_add_options --with-distribution-id=io.gitlab.${pkgname}-community +ac_add_options --with-unsigned-addon-scopes=app,system +ac_add_options --allow-addon-sideload +export MOZ_REQUIRE_SIGNING=0 + +# Features +ac_add_options --enable-alsa +ac_add_options --enable-jack +ac_add_options --disable-crashreporter +ac_add_options --disable-updater +ac_add_options --disable-tests + +# Disables crash reporting, telemetry and other data gathering tools +mk_add_options MOZ_CRASHREPORTER=0 +mk_add_options MOZ_DATA_REPORTING=0 +mk_add_options MOZ_SERVICES_HEALTHREPORT=0 +mk_add_options MOZ_TELEMETRY_REPORTING=0 + +# options for ci / weaker build systems +# mk_add_options MOZ_MAKE_FLAGS="-j4" +# ac_add_options --enable-linker=gold +END + +if [[ $CARCH == 'aarch64' ]]; then + cat >>../mozconfig <<END +# taken from manjaro build: +ac_add_options --enable-optimize="-g0 -O2" +# from ALARM +# ac_add_options --disable-webrtc + +END + + export MOZ_DEBUG_FLAGS=" " + export CFLAGS+=" -g0" + export CXXFLAGS+=" -g0" + export RUSTFLAGS="-Cdebuginfo=0" + + # we should have more than enough RAM on the CI spot instances. + # export LDFLAGS+=" -Wl,--no-keep-memory" + patch -p1 -i ../arm.patch + patch -p1 -i ../build-arm-libopus.patch + +else + + cat >>../mozconfig <<END +# probably not needed, enabled by default? +ac_add_options --enable-optimize +END +fi + + # Remove some pre-installed addons that might be questionable + patch -p1 -i ../remove_addons.patch + + # Disable (some) megabar functionality + # Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations + patch -p1 -i ../megabar.patch + + # Debian patch to enable global menubar + # disabled until it's updated upstream + # patch -p1 -i ../unity-menubar.patch + + # Disabling Pocket + sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build + # this one only to remove an annoying error message: + sed -i 's#SaveToPocket.init();#// SaveToPocket.init();#g' browser/components/BrowserGlue.jsm + + # Remove Internal Plugin Certificates + _cert_sed='s#if (aCert.organizationalUnit == "Mozilla [[:alpha:]]\+") {\n' + _cert_sed+='[[:blank:]]\+return AddonManager\.SIGNEDSTATE_[[:upper:]]\+;\n' + _cert_sed+='[[:blank:]]\+}#' + _cert_sed+='// NOTE: removed#g' + sed -z "$_cert_sed" -i toolkit/mozapps/extensions/internal/XPIInstall.jsm + + # allow SearchEngines option in non-ESR builds + sed -i 's#"enterprise_only": true,#"enterprise_only": false,#g' browser/components/enterprisepolicies/schemas/policies-schema.json + + _settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g' + + # stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10) + sed "$_settings_services_sed" -i browser/components/newtab/data/content/activity-stream.bundle.js + sed "$_settings_services_sed" -i modules/libpref/init/all.js + sed "$_settings_services_sed" -i services/settings/Utils.jsm + sed "$_settings_services_sed" -i toolkit/components/search/SearchUtils.jsm + + rm -f ${srcdir}/common/source_files/mozconfig + cp -r ${srcdir}/common/source_files/* ./ +} + + +build() { + cd firefox-$pkgver + + export MOZ_NOSPAM=1 + export MOZBUILD_STATE_PATH="$srcdir/mozbuild" + export MACH_USE_SYSTEM_PYTHON=1 + + # LTO needs more open files + ulimit -n 4096 + + # -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 + echo "Building instrumented browser..." + +if [[ $CARCH == 'aarch64' ]]; then + + cat >.mozconfig ../mozconfig - <<END +ac_add_options --enable-profile-generate +END + +else + + cat >.mozconfig ../mozconfig - <<END +ac_add_options --enable-profile-generate=cross +END + +fi + + ./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 + + if [[ ! -s merged.profdata ]]; then + echo "No profile data produced." + return 1 + fi + + if [[ ! -s jarlog ]]; then + echo "No jar log produced." + return 1 + fi + + echo "Removing instrumented browser..." + ./mach clobber + + echo "Building optimized browser..." + +if [[ $CARCH == 'aarch64' ]]; then + + cat >.mozconfig ../mozconfig - <<END +ac_add_options --enable-lto +ac_add_options --enable-profile-use +ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata +ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog +ac_add_options --enable-linker=lld +END + +else + + cat >.mozconfig ../mozconfig - <<END +ac_add_options --enable-lto=cross +ac_add_options --enable-profile-use=cross +ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata +ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog +ac_add_options --enable-linker=lld +ac_add_options --disable-elf-hack +END + +fi + + ./mach build + + echo "Building symbol archive..." + ./mach buildsymbols +} + +package() { + cd firefox-$pkgver + DESTDIR="$pkgdir" ./mach install + + local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" + + install -Dvm644 /dev/stdin "$vendorjs" <<END +// Use system-provided dictionaries +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); + +// Don't disable extensions in the application directory +// done in librewolf.cfg +// pref("extensions.autoDisableScopes", 11); +END + + cd ${srcdir}/settings + git checkout ${_settings_commit} + cd ${srcdir}/firefox-$pkgver + cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/ + + local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini" + install -Dvm644 /dev/stdin "$distini" <<END +[Global] +id=io.gitlab.${pkgname}-community +version=1.0 +about=LibreWolf + +[Preferences] +app.distributor="LibreWolf Community" +app.distributor.channel=$pkgname +app.partner.librewolf=$pkgname +END + + for i in 16 32 48 64 128; do + install -Dvm644 browser/branding/${pkgname}/default$i.png \ + "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" + done + install -Dvm644 browser/branding/librewolf/content/about-logo.png \ + "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png" + + # arch upstream provides a separate svg for this. we don't have that, so let's re-use 16.png + install -Dvm644 browser/branding/${pkgname}/default16.png \ + "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png" + + install -Dvm644 ../$pkgname.desktop \ + "$pkgdir/usr/share/applications/$pkgname.desktop" + + # Install a wrapper to avoid confusion about binary path + install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END +#!/bin/sh +exec /usr/lib/$pkgname/librewolf "\$@" +END + + # Replace duplicate binary with wrapper + # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/librewolf-bin" + # Use system certificates + local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so" + if [[ -e $nssckbi ]]; then + ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi" + fi +} |