diff options
Diffstat (limited to 'opt/firefox/MAKEPKG')
| -rw-r--r-- | opt/firefox/MAKEPKG | 168 |
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 |
