blob: db90475b2ee8e604946222e62556cc49e5cb9435 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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
|