diff options
author | ohfp <1813007-ohfp@users.noreply.gitlab.com> | 2021-01-31 11:51:25 +0100 |
---|---|---|
committer | ohfp <1813007-ohfp@users.noreply.gitlab.com> | 2021-01-31 11:51:25 +0100 |
commit | e81be4dfbb6eac35bdda76c963d4bf7c36f96536 (patch) | |
tree | 94685975e9e1d220cd749d7748344278de6cf92b | |
parent | 85.0-1 – get Arch build ready (diff) | |
download | librewolf-linux-e81be4dfbb6eac35bdda76c963d4bf7c36f96536.tar.gz librewolf-linux-e81be4dfbb6eac35bdda76c963d4bf7c36f96536.tar.bz2 librewolf-linux-e81be4dfbb6eac35bdda76c963d4bf7c36f96536.zip |
allow building without the global menubar; remove some leftover stuff from the arch build script; adjust ids in tarball scripts as well
-rw-r--r-- | PKGBUILD | 4 | ||||
-rw-r--r-- | PKGBUILD_global_menubar | 324 | ||||
-rwxr-xr-x | arch/01_build.sh | 8 | ||||
-rwxr-xr-x | binary_tarball/scripts/3_Configure_Source_Code.sh | 6 | ||||
-rwxr-xr-x | binary_tarball/scripts/4_Build_Binary_Tarball.sh | 2 | ||||
-rwxr-xr-x | binary_tarball/scripts/5_Configure_Binary_Tarball.sh | 2 |
6 files changed, 338 insertions, 8 deletions
@@ -144,7 +144,9 @@ fi patch -p1 -i ../megabar.patch # Debian patch to enable global menubar - patch -p1 -i ../unity-menubar.patch + # disabled until it's updated upstream + # also disabled for the default build, as it seems to cause issues in some configurations + # patch -p1 -i ../unity-menubar.patch # Disabling Pocket sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build diff --git a/PKGBUILD_global_menubar b/PKGBUILD_global_menubar new file mode 100644 index 0000000..f4859ca --- /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' + '6ca4d5a50a6645ff35da0bd2e9b606172f55123ddaec3ed1f87416c18f9800ff') +sha256sums_aarch64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50' + '0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2' + 'SKIP' + 'SKIP' + '682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5' + 'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6' + '6ca4d5a50a6645ff35da0bd2e9b606172f55123ddaec3ed1f87416c18f9800ff' + '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 +} diff --git a/arch/01_build.sh b/arch/01_build.sh index 1faceaa..3ddab39 100755 --- a/arch/01_build.sh +++ b/arch/01_build.sh @@ -1,5 +1,6 @@ #!/bin/bash +PKGBUILD_NAME=${PKGBUILD_NAME:-'PKGBUILD'} pacman --noconfirm -Syu --needed base-devel # this is a very ugly fix for recent makepkg-5.1-chmod-shenanigans, which mess up the build process in docker sed -E -i 's/^chmod a-s \"\$BUILDDIR\"$/# chmod a-s \"\$BUILDDIR\"/' `which makepkg` @@ -9,7 +10,8 @@ usermod -d /home/nobody nobody # we need to un-expire the account, otherwise PAM will complain usermod -e '' nobody chown -R nobody . -# temporary workaround for rust / packed_simd build issue: -pacman --noconfirm -U https://archive.archlinux.org/packages/r/rust/rust-1%3A1.47.0-4-x86_64.pkg.tar.zst +if [[ ! -z "${GLOBAL_MENUBAR}" ]];then + PKGBUILD_NAME='PKGBUILD_global_menubar' +fi # makepkg will not run as root -sudo -u nobody -E -H makepkg --noconfirm --nosign --syncdeps --cleanbuild +sudo -u nobody -E -H makepkg --noconfirm --nosign --syncdeps --cleanbuild -p "${PKGBUILD_NAME}" diff --git a/binary_tarball/scripts/3_Configure_Source_Code.sh b/binary_tarball/scripts/3_Configure_Source_Code.sh index c46efcc..829c803 100755 --- a/binary_tarball/scripts/3_Configure_Source_Code.sh +++ b/binary_tarball/scripts/3_Configure_Source_Code.sh @@ -41,7 +41,7 @@ ac_add_options --enable-update-channel=release ac_add_options --with-app-name=librewolf ac_add_options --with-app-basename=LibreWolf ac_add_options --with-branding=browser/branding/librewolf -ac_add_options --with-distribution-id=io.gitlab.librewolf +ac_add_options --with-distribution-id=io.gitlab.librewolf-community ac_add_options --with-unsigned-addon-scopes=app,system ac_add_options --allow-addon-sideload export MOZ_REQUIRE_SIGNING=0 @@ -131,7 +131,9 @@ patch -p1 -i ${CI_PROJECT_DIR}/remove_addons.patch patch -p1 -i ${CI_PROJECT_DIR}/megabar.patch # Debian patch to enable global menubar -patch -p1 -i ${CI_PROJECT_DIR}/unity-menubar.patch +if [[ ! -z "${GLOBAL_MENUBAR}" ]];then + patch -p1 -i ${CI_PROJECT_DIR}/unity-menubar.patch +fi # Disabling Pocket printf "\nDisabling Pocket\n"; diff --git a/binary_tarball/scripts/4_Build_Binary_Tarball.sh b/binary_tarball/scripts/4_Build_Binary_Tarball.sh index bfd536c..4e1a9e4 100755 --- a/binary_tarball/scripts/4_Build_Binary_Tarball.sh +++ b/binary_tarball/scripts/4_Build_Binary_Tarball.sh @@ -64,7 +64,7 @@ rm -f mozconfig # source /root/.cargo/env # install cbindgen -cargo install --version 0.15.0 cbindgen +cargo install --version 0.16.0 cbindgen if [[ $CARCH == 'aarch64' ]]; then diff --git a/binary_tarball/scripts/5_Configure_Binary_Tarball.sh b/binary_tarball/scripts/5_Configure_Binary_Tarball.sh index 706126b..56d33ad 100755 --- a/binary_tarball/scripts/5_Configure_Binary_Tarball.sh +++ b/binary_tarball/scripts/5_Configure_Binary_Tarball.sh @@ -42,7 +42,7 @@ distini="$_EXTRACTED_TARBALL_FOLDER/distribution/distribution.ini" install -Dvm644 /dev/stdin "$distini" <<END [Global] -id=io.gitlab.LibreWolf +id=io.gitlab.librewolf-community version=1.0 about=LibreWolf |