# Maintainer (arch:thunderbird): Levente Polyak # Contributor: Jan Alexander Steffens (heftig) # Contributor: Ionut Biru # Contributor: Alexander Baldeck # Contributor: Dale Blount # Contributor: Anders Bostrom # Maintainer: Andreas Grapentin # Contributor: André Silva # Contributor: Márcio Silva # Contributor: Luke R. # Contributor: Isaac David # Contributor: bill-auger # parabola changes and rationale: # libre: # - rebranded to icedove # technical: # - added makedepends for branding: quilt, imagemagick # - use system python packages # privacy: # - disabled geo-location _pkgname=thunderbird pkgname=icedove epoch=1 pkgver=102.9.1 pkgrel=1 pkgrel+=.parabola1 _brandingver=102 _brandingrel=1 pkgdesc='Standalone mail and news reader from mozilla.org' url=https://wiki.parabola.nu/${pkgname} arch=(x86_64) arch+=(i686 armv7h) license=(MPL GPL LGPL) depends=( glibc gtk3 libgdk-3.so libgtk-3.so mime-types dbus libdbus-1.so dbus-glib alsa-lib nss hunspell sqlite ttf-font libvpx libvpx.so zlib bzip2 libbz2.so botan libwebp libwebp.so libwebpdemux.so libevent libjpeg-turbo libffi libffi.so nspr gcc-libs libx11 libxrender libxfixes libxext libxcomposite libxdamage pango libpango-1.0.so cairo gdk-pixbuf2 icu libicui18n.so libicuuc.so freetype2 libfreetype.so fontconfig libfontconfig.so glib2 libglib-2.0.so pixman libpixman-1.so gnupg json-c ) makedepends=( unzip zip diffutils python nasm mesa libpulse libice libsm rust clang llvm cbindgen nodejs lld gawk perl findutils libotr wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi ) makedepends+=(quilt imagemagick) replaces=(${_pkgname}) options=(!emptydirs !makeflags !lto) source=(https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz{,.asc} $pkgname.desktop vendor-prefs.js distribution.ini mozconfig.cfg metainfo.patch rustc_version-0.4.0.patch) source=( ${source[*]/metainfo.patch/} ) # branding source+=(https://repo.parabola.nu/other/icedove/${pkgname}_$_brandingver-$_brandingrel.branding.tar.xz{,.sig}) validpgpkeys=( 14F26682D0916CDD81E37B6D61B7B526D98F0353 # Mozilla Software Releases 4360FE2109C49763186F8E21EBE41E90F6F12F6D # Mozilla Software Releases ) validpgpkeys+=(BFA8008A8265677063B11BF47171986E4B745536 # Andreas Grapentin 3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40) # bill-auger ## dependency tweaks ## case "${CARCH}" in armv7h) makedepends=( ${makedepends[*]/wasi-*/} ) # armv7h has no wasi compiler ;; i686) # currently fails to build for i686 # -> rustup: error while loading shared libraries: libLLVM-14.so: cannot open shared object file: No such file or directory ;; esac prepare() { cd $_pkgname-$pkgver echo "${noextract[@]}" ## technical patching ## local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = *.patch ]] || continue [[ $src = arm-wasm-vfp.patch ]] && continue # defer parabola patches echo "Applying patch $src..." patch -Np1 < "../$src" done ## general configuration ## cp ../mozconfig.cfg .mozconfig sed "s|@PWD@|${PWD@Q}|g" -i .mozconfig ## [ARCH-SPECIFIC CONFIG] ## case ${CARCH} in aarch64|armv7h) if [[ $CARCH == "armv7h" ]]; then echo "ac_add_options --disable-elf-hack" >> .mozconfig MAKEFLAGS="-j4" # disable hard-coded LTO sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk # increase codegen-units due to RAM constraints sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk fi echo 'ac_add_options --enable-optimize="-g0 -O2"' >> .mozconfig echo "mk_add_options MOZ_MAKE_FLAGS=\"${MAKEFLAGS}\"" >> .mozconfig export MOZ_DEBUG_FLAGS=" " export CFLAGS+=" -g0" export CXXFLAGS+=" -g0" #export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" export LDFLAGS+=" -Wl,--no-keep-memory" export RUSTFLAGS="-Cdebuginfo=0" CFLAGS=${CFLAGS/-fstack-clash-protection} CXXFLAGS=${CXXFLAGS/-fstack-clash-protection} # archarm has these in mozconfig.cfg sed -i 's|with-wasi-sysroot.*|without-wasm-sandboxed-libraries|' .mozconfig echo "ac_add_options --disable-webrtc" >> .mozconfig ;; i686) sed -i 's/--enable-linker=gold/--enable-linker=bfd/' .mozconfig LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" export LDFLAGS ;; esac ## branding ## local branding_srcdir="${srcdir}"/${pkgname}-${_brandingver} local branding_destdir="${srcdir}"/${_pkgname}-${pkgver}/comm/mail/branding/${pkgname} local blank_svg='' # TODO: branding package # apply branding echo "applying parabola branding" export QUILT_PATCHES="${branding_srcdir}"/patches export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index' export QUILT_DIFF_ARGS='--no-timestamps' export QUILT_PC="${srcdir}"/.pc rm -rf -- ${branding_destdir} cp -aT -- "${branding_srcdir}"/${pkgname}-branding ${branding_destdir} quilt push -av # customize distribution.ini local branding_gui_ver="(${_brandingver}-${_brandingrel} branding)" sed -i 's|archlinux|parabola|' "${srcdir}"/distribution.ini sed -i "s|version=.*|version=${branding_gui_ver}|" "${srcdir}"/distribution.ini sed -i 's|about=.*|about=Parabola Icedove|' "${srcdir}"/distribution.ini sed -i 's|thunderbird|icedove|' "${srcdir}"/distribution.ini # customize .mozconfig sed -i 's|enable-official-branding|disable-official-branding|' .mozconfig sed -i 's|=org\.archlinux|=nu.parabola|' .mozconfig sed -i '/api-keyfile=/d' .mozconfig cat >> .mozconfig < ${branding_destdir}/${pkgname}-symbolic.svg # TODO: branding package cp "${branding_srcdir}"/preview.png comm/mail/themes/linux/mail/preview.png ## search-engines ## pushd comm/mail/components/search/extensions > /dev/null # Patch search-engines config sed -i 's|https://duckduckgo.com/|https://html.duckduckgo.com/html/|' ddg/manifest.json # Delete unused search engine configs find -mindepth 1 -maxdepth 1 \ -not -name ddg \ -not -name wikipedia \ -exec rm -frv {} \; popd > /dev/null ## libre patching ## sed -i '\|Phishing Protection|d \|UrlClassifier|d \|URLClassifier|d \|url-classifier|d ' comm/mail/installer/package-manifest.in } build() { cd $_pkgname-$pkgver if [[ -n "${SOURCE_DATE_EPOCH}" ]]; then export MOZ_BUILD_DATE=$(date --date "@${SOURCE_DATE_EPOCH}" "+%Y%m%d%H%M%S") fi export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system # parabola policy export MOZBUILD_STATE_PATH="${srcdir}/mozbuild" ./mach configure ./mach build ./mach buildsymbols } package() { optdepends=( 'libotr: OTR support for active one-to-one chats' 'libnotify: Notification integration' ) cd $_pkgname-$pkgver DESTDIR="$pkgdir" ./mach install install -Dm 644 ../vendor-prefs.js -t "$pkgdir/usr/lib/$pkgname/defaults/pref" install -Dm 644 ../distribution.ini -t "$pkgdir/usr/lib/$pkgname/distribution" install -Dm 644 ../$pkgname.desktop -t "$pkgdir/usr/share/applications" install -Dm 644 comm/mail/branding/${pkgname}/${pkgname}.appdata.xml \ "${pkgdir}/usr/share/metainfo/${pkgname}.appdata.xml" # NOTE: comm/mail/branding/${pkgname} is $branding_destdir in prepare() for i in 16 22 24 32 48 64 128 256; do install -Dm644 comm/mail/branding/${pkgname}/default${i}.png \ "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" done install -Dm644 comm/mail/branding/${pkgname}/${pkgname}-symbolic.svg \ "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg" # Use system-provided dictionaries ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" # Install a wrapper to avoid confusion about binary path install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <