summaryrefslogtreecommitdiff
path: root/opt/firefox/MAKEPKG
diff options
context:
space:
mode:
Diffstat (limited to 'opt/firefox/MAKEPKG')
-rw-r--r--opt/firefox/MAKEPKG168
1 files changed, 168 insertions, 0 deletions
diff --git a/opt/firefox/MAKEPKG b/opt/firefox/MAKEPKG
new file mode 100644
index 0000000..5f39ce4
--- /dev/null
+++ b/opt/firefox/MAKEPKG
@@ -0,0 +1,168 @@
+#!/bin/mkpkg
+# description: Mozilla Firefox browser
+# url: https://www.mozilla.org/firefox/
+
+name=firefox
+version=153.3.0esr
+_version=153.3.0
+_patch=153esr-patches-03
+release=1
+depends=(gtk3 nss nspr libvpx libwebp pixman libffi alsa-lib ffmpeg dbus)
+makedeps=(rust cbindgen nodejs python3 nasm)
+source=(
+ https://ftp.mozilla.org/pub/$name/releases/$version/source/$name-$version.source.tar.xz
+ https://dev.gentoo.org/~juippis/mozilla/patchsets/firefox-$_patch.tar.xz
+ firefox.desktop
+ rawnix.js
+ policies.json
+)
+
+sha256sums=(
+ "69f1335e78d2a340fc13fcf265c0a72bdce2df8774c9d4d49ee77d1726236df5"
+ "39efa65af2e5eecac09745b8d2b469a6137365a786d118100d2eb1dc28288e49"
+ "a092fddc62bf5bff0c0f7891f59278463fa9b6ec24e9d811e49cd10b2282bdee"
+ "bab0f8bba99a0f6b2a129a0767168e6af7462ccdfdf7f610690fefb8f25f06b8"
+ "14dafc23074acb8d0cb8b3f9657c80b6d172da1f5711ef1a547301d458cd9004"
+)
+
+patch() {
+ cd $name-$_version
+
+ # https://dev.gentoo.org/~juippis
+ for p in "$SRC"/firefox-patches/*.patch; do
+ [ -f "$p" ] && patch -p1 -i "$p"
+ done
+
+ # musl: allow select() syscall in all sandbox policies
+ awk '/CASES_FOR_poll:/{print; print "#ifdef __NR_select"; print " case __NR_select:"; print "#endif"; next}1' \
+ security/sandbox/linux/SandboxFilter.cpp > SandboxFilter.tmp
+ mv SandboxFilter.tmp security/sandbox/linux/SandboxFilter.cpp
+
+ # bindgen: don't panic on unresolved field types when computing union layout (libclang 23)
+ sed -i 's/ctx\.resolve_type(inner)\.layout(ctx)/ctx.resolve_item_fallible(inner)?.kind().as_type()?.layout(ctx)/' \
+ third_party/rust/bindgen/ir/ty.rs
+ sed -i 's/ctx\.resolve_type(data\.ty)\.layout(ctx)/ctx.resolve_item_fallible(data.ty)?.kind().as_type()?.layout(ctx)/' \
+ third_party/rust/bindgen/ir/comp.rs
+ sed -i 's/"files":{[^}]*}/"files":{}/' third_party/rust/bindgen/.cargo-checksum.json
+
+}
+
+build() {
+ cd $name-$_version
+
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none
+ export MOZBUILD_STATE_PATH="$PWD"/mozbuild
+ export MOZ_NOSPAM=1
+ export SHELL=/bin/bash
+
+ # Toolchain
+ export CC=clang CXX=clang++
+ export AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib
+ export AS=clang
+
+ # Flags
+ export CFLAGS="$CFLAGS -w"
+ export CXXFLAGS="$CXXFLAGS -w"
+ export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox,--enable-new-dtags"
+ export MOZ_DEBUG_FLAGS=-g0
+ export CXXSTDLIB=c++
+ export LIBCLANG_PATH=/usr/lib
+ export MOZ_MAKE_FLAGS="-j$(nproc)"
+
+ # Rustc wrapper: force -crt-static so build scripts can dlopen libclang
+ mkdir -p "$PWD"/rustc-wrap
+ printf '#!/bin/sh\nexec /usr/bin/rustc -Ctarget-feature=-crt-static -Cdebuginfo=0 "$@"\n' \
+ > "$PWD"/rustc-wrap/rustc
+ chmod +x "$PWD"/rustc-wrap/rustc
+ export PATH="$PWD/rustc-wrap:$PATH"
+
+ cat > .mozconfig << EOF
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-shared
+unset MOZ_TELEMETRY_REPORTING
+
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+ac_add_options --host=x86_64-unknown-linux-musl
+ac_add_options --target=x86_64-unknown-linux-musl
+
+ac_add_options --enable-release
+ac_add_options --enable-optimize
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+ac_add_options --enable-official-branding
+ac_add_options --enable-application=browser
+ac_add_options --enable-audio-backends=alsa
+ac_add_options --enable-dbus
+ac_add_options --enable-rust-simd
+ac_add_options --enable-default-toolkit=cairo-gtk3-wayland-only
+
+# System libraries
+ac_add_options --with-system-ffi
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-pixman
+ac_add_options --without-system-png
+ac_add_options --with-system-webp
+ac_add_options --with-system-zlib
+ac_add_options --without-wasm-sandboxed-libraries
+
+# No Mozilla/Google service keys
+ac_add_options --without-mozilla-api-keyfile
+ac_add_options --without-google-location-service-api-keyfile
+ac_add_options --without-google-safebrowsing-api-keyfile
+
+# Disable unused features
+ac_add_options --disable-jemalloc
+ac_add_options --disable-elf-hack
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --disable-crashreporter
+ac_add_options --disable-debug
+ac_add_options --disable-debug-symbols
+ac_add_options --disable-profiling
+ac_add_options --disable-necko-wifi
+ac_add_options --disable-webspeech
+ac_add_options --disable-accessibility
+ac_add_options --disable-parental-controls
+ac_add_options --disable-default-browser-agent
+ac_add_options --disable-backgroundtasks
+ac_add_options --disable-system-extension-dirs
+ac_add_options --disable-vtune
+ac_add_options --disable-callgrind
+ac_add_options --disable-eme
+ac_add_options --without-onnx-runtime
+EOF
+
+ ./mach configure
+ ./mach build
+
+ DESTDIR="$PKG" ./mach install
+
+ # Desktop integration
+ install -Dm644 "$SRC"/firefox.desktop "$PKG"/usr/share/applications/firefox.desktop
+ mkdir -p "$PKG"/usr/share/pixmaps
+ ln -sf /usr/lib/firefox/browser/chrome/icons/default/default128.png \
+ "$PKG"/usr/share/pixmaps/firefox.png
+
+ # System-wide privacy prefs (default prefs, user-overridable)
+ install -Dm644 "$SRC"/rawnix.js \
+ "$PKG"/usr/lib/firefox/browser/defaults/preferences/rawnix.js
+
+ # Enterprise policies (hard kills + locked prefs)
+ install -Dm644 "$SRC"/policies.json \
+ "$PKG"/usr/lib/firefox/distribution/policies.json
+
+ # Cleanup
+ rm -f "$PKG"/usr/lib/firefox/firefox-bin
+ rm -rf "$PKG"/usr/lib/firefox/browser/features
+ rm -f "$PKG"/usr/lib/firefox/removed-files
+}
+
+signify() {
+ untrusted comment: public key
+ RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3
+}
+
+# vim: filetype=sh