aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorohfp <1813007-ohfp@users.noreply.gitlab.com>2021-01-31 11:51:25 +0100
committerohfp <1813007-ohfp@users.noreply.gitlab.com>2021-01-31 11:51:25 +0100
commite81be4dfbb6eac35bdda76c963d4bf7c36f96536 (patch)
tree94685975e9e1d220cd749d7748344278de6cf92b
parent85.0-1 – get Arch build ready (diff)
downloadlibrewolf-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--PKGBUILD4
-rw-r--r--PKGBUILD_global_menubar324
-rwxr-xr-xarch/01_build.sh8
-rwxr-xr-xbinary_tarball/scripts/3_Configure_Source_Code.sh6
-rwxr-xr-xbinary_tarball/scripts/4_Build_Binary_Tarball.sh2
-rwxr-xr-xbinary_tarball/scripts/5_Configure_Binary_Tarball.sh2
6 files changed, 338 insertions, 8 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 5f58b54..f00c7bd 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
bgstack15