allow building without the global menubar; remove some leftover stuff from the arch build script; adjust ids in tarball scripts as well
This commit is contained in:
parent
e4852c5050
commit
e81be4dfbb
6 changed files with 338 additions and 8 deletions
4
PKGBUILD
4
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
|
||||
|
|
|
|||
324
PKGBUILD_global_menubar
Normal file
324
PKGBUILD_global_menubar
Normal file
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
if [[ ! -z "${GLOBAL_MENUBAR}" ]];then
|
||||
patch -p1 -i ${CI_PROJECT_DIR}/unity-menubar.patch
|
||||
fi
|
||||
|
||||
# Disabling Pocket
|
||||
printf "\nDisabling Pocket\n";
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue