summaryrefslogtreecommitdiff
path: root/opt/thunderbird/MAKEPKG
diff options
context:
space:
mode:
Diffstat (limited to 'opt/thunderbird/MAKEPKG')
-rw-r--r--opt/thunderbird/MAKEPKG169
1 files changed, 169 insertions, 0 deletions
diff --git a/opt/thunderbird/MAKEPKG b/opt/thunderbird/MAKEPKG
new file mode 100644
index 0000000..db90475
--- /dev/null
+++ b/opt/thunderbird/MAKEPKG
@@ -0,0 +1,169 @@
+#!/bin/mkpkg
+# description: Mozilla Thunderbird email client
+# url: https://www.thunderbird.net/
+
+name=thunderbird
+version=153.3.1esr
+_version=153.3.1
+_patch=153esr-patches-03
+release=1
+depends=(gtk3 nss nspr libvpx libwebp pixman libffi alsa-lib ffmpeg rnp 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
+ thunderbird.desktop
+ rawnix.js
+)
+
+sha256sums=(
+ "f4684de0caebf54352f8247ea3106b3c577509a26556759f6417bdc42f7567aa"
+ "39efa65af2e5eecac09745b8d2b469a6137365a786d118100d2eb1dc28288e49"
+ "926ad4122618b29bd5424ff43fdc87e5aa006dfe7f569c8773d33ca7b693ab94"
+ "685fb14c8f35b817cc756605ba025b9a5fff4f5c9a44b42647d5cdc949c8d37a"
+)
+
+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)
+ # comm/ carries its own vendored crate set, so patch both copies if present
+ for d in third_party/rust/bindgen comm/third_party/rust/bindgen; do
+ [ -d "$d" ] || continue
+ sed -i 's/ctx\.resolve_type(inner)\.layout(ctx)/ctx.resolve_item_fallible(inner)?.kind().as_type()?.layout(ctx)/' "$d"/ir/ty.rs
+ sed -i 's/ctx\.resolve_type(data\.ty)\.layout(ctx)/ctx.resolve_item_fallible(data.ty)?.kind().as_type()?.layout(ctx)/' "$d"/ir/comp.rs
+ sed -i 's/"files":{[^}]*}/"files":{}/' "$d"/.cargo-checksum.json
+ done
+
+}
+
+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
+
+ # musl rust target
+ export RUST_TARGET="x86_64-unknown-linux-musl"
+
+ # Toolchain
+ export CC=clang CXX=clang++
+ export AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib
+ export AS="clang -c"
+
+ # Flags
+ export CFLAGS="$CFLAGS -w"
+ export CXXFLAGS="$CXXFLAGS -w"
+ export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/thunderbird,--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@/thunderbird-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=comm/mail
+ac_add_options --enable-project=comm/mail
+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
+
+# OpenPGP - use system librnp (which links against system botan)
+ac_add_options --with-system-librnp
+
+# 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-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"/thunderbird.desktop "$PKG"/usr/share/applications/thunderbird.desktop
+ mkdir -p "$PKG"/usr/share/pixmaps
+ ln -sf /usr/lib/thunderbird/chrome/icons/default/default128.png \
+ "$PKG"/usr/share/pixmaps/thunderbird.png
+
+ # System-wide privacy prefs (default prefs, user-overridable)
+ install -Dm644 "$SRC"/rawnix.js \
+ "$PKG"/usr/lib/thunderbird/defaults/pref/rawnix.js
+
+ # Cleanup
+ rm -f "$PKG"/usr/lib/thunderbird/thunderbird-bin
+ rm -rf "$PKG"/usr/lib/thunderbird/features
+ rm -f "$PKG"/usr/lib/thunderbird/removed-files
+}
+
+signify() {
+ untrusted comment: public key
+ RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3
+}
+
+# vim: filetype=sh