#!/bin/sh NAME="thunderbird" DESC="Thunderbird email client" MAKEDEPS=" alsa-lib automake botan cargo cbindgen llvm libclang clang dbus-glib gettext gtk3 icu json-c libevent libffi libjpeg-turbo libnotify libogg libtheora libtool libvorbis libvpx libwebp libxcomposite libxt llvm m4 mesa nasm nodejs nspr nss pipewire pulseaudio python sed wireless-tools zip" PKG_VER=102.6.1 SOURCE="https://ftp.mozilla.org/pub/thunderbird/releases/$PKG_VER/source/thunderbird-$PKG_VER.source.tar.xz" ADDITIONAL=" allow-custom-rust-vendor.patch avoid-redefinition.patch cbindgen-0.24.patch disable-moz-stackwalk.patch disable-neon-in-aom.patch distribution.ini fix-fortify-system-wrappers.patch fix-libresolv-path.patch fix-rust-target.patch fix-tools.patch fix-webrtc-glibcisms.patch mallinfo.patch metainfo.patch psutil.patch sandbox-fork.patch sandbox-largefile.patch sandbox-sched_setscheduler.patch stab.h thunderbird.desktop vendor-prefs.js zstandard.patch " mozappdir=/usr/lib/thunderbird _clear_vendor_checksums() { sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json } export CC="gcc" export CXX="g++" export SHELL=/bin/sh export BUILD_OFFICIAL=1 export MOZILLA_OFFICIAL=1 export USE_SHORT_LIBNAME=1 export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none export MOZBUILD_STATE_PATH="$srcdir"/mozbuild # disable desktop notifications export MOZ_NOSPAM=1 # set rpath so linker finds the libs export LDFLAGS="$LDFLAGS -Wl,-rpath,$_mozappdir" # let firefox do this itself. unset CARGO_PROFILE_RELEASE_OPT_LEVEL unset CARGO_PROFILE_RELEASE_LTO export CFLAGS="$CFLAGS -O2 -fno-plt" export CXXFLAGS="$CXXFLAGS -O2 -fno-plt" prepare() { apply_patches cp "$BUILD_ROOT"/stab.h toolkit/crashreporter/google-breakpad/src/ _clear_vendor_checksums audio_thread_priority _clear_vendor_checksums packed_simd_2 _clear_vendor_checksums target-lexicon-0.9.0 cat > base-mozconfig <<-EOF # disable unwanted things ac_add_options --disable-bootstrap ac_add_options --disable-cargo-incremental ac_add_options --disable-crashreporter ac_add_options --disable-debug ac_add_options --disable-debug-symbols ac_add_options --disable-install-strip ac_add_options --disable-jemalloc ac_add_options --disable-strip ac_add_options --disable-tests ac_add_options --disable-updater # features ac_add_options --enable-alsa ac_add_options --enable-application=comm/mail ac_add_options --enable-dbus ac_add_options --enable-default-toolkit=cairo-gtk3-wayland ac_add_options --enable-ffmpeg ac_add_options --enable-hardening ac_add_options --enable-linker=lld ac_add_options --enable-necko-wifi ac_add_options --enable-official-branding ac_add_options --enable-optimize="$CFLAGS" ac_add_options --enable-pulseaudio ac_add_options --enable-release ac_add_options --enable-update-channel=release # system libs ac_add_options --enable-system-pixman ac_add_options --with-system-ffi ac_add_options --with-system-icu ac_add_options --with-system-jpeg ac_add_options --with-system-libevent ac_add_options --with-system-libvpx ac_add_options --with-system-nspr ac_add_options --with-system-nss ac_add_options --with-system-png ac_add_options --with-system-webp ac_add_options --with-system-zlib # misc ac_add_options --prefix=/usr ac_add_options --with-libclang-path=/usr/lib ac_add_options --with-unsigned-addon-scopes=app,system ac_add_options --without-wasm-sandboxed-libraries # objdir mk_add_options MOZ_OBJDIR="$BUILD_ROOT/obj" ac_add_options --enable-sandbox ac_add_options --disable-elf-hack mk_add_options AUTOCLOBBER=1 ac_add_options --host=x86_64-unknown-linux-musl EOF } build() { cat > .mozconfig base-mozconfig export MOZ_BUILD_DATE="$(date ${SOURCE_DATE_EPOCH:+ -d@${SOURCE_DATE_EPOCH}} "+%Y%m%d%H%M%S")" # for lto ulimit -n 4096 ./mach build } package() { DESTDIR="$PKG_DEST" MOZ_MAKE_FLAGS="$MAKEOPTS" ./mach install install -m755 -d "$PKG_DEST"/usr/share/applications install -m755 -d "$PKG_DEST"/usr/share/pixmaps local _png for _png in "$BUILD_ROOT"/comm/mail/branding/thunderbird/default*.png; do local i=${_png%.png} i=${i##*/default} install -D -m644 "$_png" "$PKG_DEST"/usr/share/icons/hicolor/"$i"x"$i"/apps/thunderbird.png done install -Dm644 "$BUILD_ROOT"/comm/mail/branding/thunderbird/TB-symbolic.svg \ "$PKG_DEST/usr/share/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg" install -Dm644 "$BUILD_ROOT"/comm/mail/branding/thunderbird/default48.png \ $PKG_DEST/usr/share/pixmaps/thunderbird.png install -m644 "$BUILD_ROOT"/thunderbird.desktop "$PKG_DEST"/usr/share/applications/thunderbird.desktop # Add StartupWMClass=firefox on the .desktop files so Desktop Environments # correctly associate the window with their icon, the correct fix is to have # thunderbird sets its own AppID but this will work for the meantime # See: https://bugzilla.mozilla.org/show_bug.cgi?id=1607399 echo "StartupWMClass=thunderbird" >> "$PKG_DEST"/usr/share/applications/thunderbird.desktop # install our vendor prefs install -d "$PKG_DEST"/$mozappdir/defaults/preferences cat >> "$PKG_DEST"/$mozappdir/defaults/preferences/vendor.js <<- EOF // Use LANG environment variable to choose locale pref("intl.locale.requested", ""); // Use system-provided dictionaries pref("spellchecker.dictionary_path", "/usr/share/hunspell"); // Disable default mailer checking. pref("mail.shell.checkDefaultMail", false); // Don't disable our bundled extensions in the application directory pref("extensions.autoDisableScopes", 11); pref("extensions.shownSelectionUI", true); EOF install -d "$PKG_DEST"/$mozappdir/distribution cat >> "$PKG_DEST"/$mozappdir/distribution/distribution.ini <<- EOF [Global] id=xilinux version=1.0 about=Mozilla Thunderbird for XiLinux [Preferences] app.distributor=xilinux app.distributor.channel=thunderbird EOF # Replace duplicate binary with wrapper # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 ln -sf thunderbird "$PKG_DEST/$mozappdir/thunderbird-bin" }