diff options
Diffstat (limited to 'libre/icedove/PKGBUILD')
-rw-r--r-- | libre/icedove/PKGBUILD | 386 |
1 files changed, 198 insertions, 188 deletions
diff --git a/libre/icedove/PKGBUILD b/libre/icedove/PKGBUILD index f2f596731..d857d877c 100644 --- a/libre/icedove/PKGBUILD +++ b/libre/icedove/PKGBUILD @@ -1,9 +1,9 @@ -# Maintainer (Arch): Levente Polyak <anthraxx[at]archlinux[dot]org> -# Contributor (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> -# Contributor (Arch): Ionut Biru <ibiru@archlinux.org> -# Contributor (Arch): Alexander Baldeck <alexander@archlinux.org> -# Contributor (Arch): Dale Blount <dale@archlinux.org> -# Contributor (Arch): Anders Bostrom <anders.bostrom@home.se> +# Maintainer (arch:thunderbird): Levente Polyak <anthraxx[at]archlinux[dot]org> +# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Contributor: Ionut Biru <ibiru@archlinux.org> +# Contributor: Alexander Baldeck <alexander@archlinux.org> +# Contributor: Dale Blount <dale@archlinux.org> +# Contributor: Anders Bostrom <anders.bostrom@home.se> # Maintainer: Andreas Grapentin <andreas@grapentin.org> # Contributor: André Silva <emulatorman@hyperbola.info> # Contributor: Márcio Silva <coadde@hyperbola.info> @@ -11,252 +11,250 @@ # Contributor: Isaac David <isacdaavid@isacdaavid.info> # Contributor: bill-auger <bill-auger@programmer.net> + # parabola changes and rationale: +# libre: # - rebranded to icedove -# - added makedepends: quilt mozilla-searchplugins python2-blessings -# - added replaces, conflicts: thunderbird -# - disabled tests, they break in an environment without network access. +# technical: +# - added makedepends for branding: quilt, imagemagick +# - use system python packages +# privacy: # - disabled geo-location + _pkgname=thunderbird pkgname=icedove -replaces=("$_pkgname") epoch=1 -pkgver=68.9.0 +pkgver=102.9.1 pkgrel=1 pkgrel+=.parabola1 -_brandingver=68.6 +_brandingver=102 _brandingrel=1 -pkgdesc='Standalone mail and news reader based on Mozilla Thunderbird' -url="https://wiki.parabola.nu/$pkgname" +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=(gtk3 libxt startup-notification mime-types dbus-glib alsa-lib - nss hunspell sqlite ttf-font) # libvpx -depends+=(libicui18n.so libicuuc.so) -makedepends=(unzip zip diffutils python python2 yasm nasm mesa imake libpulse inetutils xorg-server-xvfb - autoconf2.13 rust clang llvm gtk2 cbindgen nodejs) -makedepends+=(quilt mozilla-searchplugins imagemagick) -optdepends=('libcanberra: sound support') -options=(!emptydirs !makeflags) -source=(https://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz{,.asc} - $pkgname.desktop) -source+=(https://repo.parabola.nu/other/icedove/${pkgname}_$_brandingver-$_brandingrel.branding.tar.xz{,.sig} - libre-searchengines.patch - mozilla-1338795-regression.patch) -source_armv7h=(arm-wasm-vfp.patch) -sha512sums=('891472c95ba6ff46061131504e89010da512a84b0e1dea0482e603fd4c87f11e099280a245c7dd9fc9320c48229c26602565c089d86f1a1f4271b29b6fc606f0' - 'SKIP' - 'a3c9815491d9bed0440c60f35867a5b8a2a1343521f288035fcc46e651a11b926c75a9eca2d262b43d510a7a7119709b53637f1b00ddbbee8e5b0a4b33d7b8fd' - '5784493253f9b2b231a7f18d7c3c4a4bb9aec7ac4fa801772ac223342676e388ae0c094b95d89d92c1bd38c2f19feb6f51e074d0ea20228a256b6240ecf34832' - 'SKIP' - '3f3160441aa17a50b8bf9f95a0fed8e3428864901d7368409903289f069f51fa94e24b6140bf17981b91b55df77c7c29adb870dda9f1596a77ce1a54a62cac00' - 'f4e892fc7af85877ef6cedd82313f6c0f335cb676cfb30badaa127c51aed00773212b99f1598f5709d6f481f12264463d6334bcde8e8da38ec1ea666622d28a1') -sha512sums_armv7h=('c25883c4860e511a99d9fbfba5b824145c0862729101721605725f609ca2a41848b741dd100eff390f57031dc5f14af3ea30133de30f75cb20197c420ae20972') -validpgpkeys=(14F26682D0916CDD81E37B6D61B7B526D98F0353) # Mozilla Software Releases <release@mozilla.com> -validpgpkeys+=(BFA8008A8265677063B11BF47171986E4B745536) # Andreas Grapentin +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 <release@mozilla.com> + 4360FE2109C49763186F8E21EBE41E90F6F12F6D # Mozilla Software Releases <release@mozilla.com> +) +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 - # see: https://labs.parabola.nu/issues/2267 - # upstream BR: https://bugzilla.mozilla.org/show_bug.cgi?id=1628296 - patch -Np1 -i "$srcdir"/mozilla-1338795-regression.patch - - cat >.mozconfig <<END -ac_add_options --enable-application=comm/mail -ac_add_options --enable-calendar - -ac_add_options --prefix=/usr -ac_add_options --enable-release -ac_add_options --enable-linker=gold -ac_add_options --enable-hardening -ac_add_options --enable-optimize -# https://bugzilla.mozilla.org/show_bug.cgi?id=1521249 -#ac_add_options --enable-rust-simd -# https://bugzilla.mozilla.org/show_bug.cgi?id=1423822 -ac_add_options --disable-elf-hack - -# Branding -ac_add_options --disable-official-branding -ac_add_options --enable-update-channel=release -ac_add_options --with-distribution-id=nu.parabola -ac_add_options --with-branding=comm/mail/branding/icedove - -# System libraries -ac_add_options --with-system-zlib -ac_add_options --with-system-bz2 -ac_add_options --with-system-icu -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 --enable-system-sqlite -ac_add_options --enable-system-ffi - -# Features -ac_add_options --enable-alsa -ac_add_options --disable-jack -ac_add_options --enable-startup-notification -ac_add_options --disable-crashreporter -ac_add_options --disable-updater -ac_add_options --disable-gconf -# tests require network access. -ac_add_options --disable-tests -END + 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 - if [[ $CARCH = arm* ]]; then - patch -Np1 -i "$srcdir"/arm-wasm-vfp.patch - sed -i '/--enable-linker=gold/d' .mozconfig - sed -i '/--enable-hardening/d' .mozconfig - sed -i '/--enable-optimize/d' .mozconfig + ## 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 -Wl,--reduce-memory-overheads" + export LDFLAGS+=" -Wl,--no-keep-memory" export RUSTFLAGS="-Cdebuginfo=0" - - cat >> .mozconfig <<END -ac_add_options --disable-webrtc -ac_add_options --disable-elf-hack -ac_add_options --enable-optimize="-g0 -O2" -END - fi - - if [[ $CARCH = i686 ]]; then + 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 - fi + ;; + esac + + + ## branding ## - # perform rebranding - local brandingdir="$srcdir/$pkgname-$_brandingver" - rm -rf -- comm/mail/branding/$pkgname - cp -aT -- $brandingdir/$pkgname-branding/ comm/mail/branding/$pkgname + local branding_srcdir="${srcdir}"/${pkgname}-${_brandingver} + local branding_destdir="${srcdir}"/${_pkgname}-${pkgver}/comm/mail/branding/${pkgname} + local blank_svg='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"></svg>' # TODO: branding package - export QUILT_PATCHES=$brandingdir/patches + # 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 - # produce icons + # 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 <<EOF +ac_add_options --with-branding=${branding_destdir} +ac_add_options --disable-crashreporter +ac_add_options --disable-updater +EOF + + # stage "appdata" file + cp "${branding_srcdir}"/${pkgname}.appdata.xml ${branding_destdir}/ + + # generate icons, logos, banners for i in 16 22 24 32; do - rsvg-convert -w $i -h $i "$brandingdir/app-icons/${pkgname}_small.svg" \ - -o "comm/mail/branding/$pkgname/default$i.png" + rsvg-convert -w ${i} -h ${i} "${branding_srcdir}"/app-icons/${pkgname}_small.svg \ + -o "${branding_destdir}/default${i}.png" done for i in 48 64 128 256; do - rsvg-convert -w $i -h $i "$brandingdir/app-icons/${pkgname}_big.svg" \ - -o "comm/mail/branding/$pkgname/default$i.png" + rsvg-convert -w ${i} -h ${i} "${branding_srcdir}"/app-icons/${pkgname}_big.svg \ + -o "${branding_destdir}/default${i}.png" done - cp "$brandingdir/logo/icedove_icon.svg" "comm/mail/branding/$pkgname/" + echo "${blank_svg}" > ${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 ## - # Patch and remove anything that's left - patch -Np1 -i "$srcdir/libre-searchengines.patch" sed -i '\|Phishing Protection|d \|UrlClassifier|d \|URLClassifier|d \|url-classifier|d ' comm/mail/installer/package-manifest.in - sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g; - \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g; - \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g; - \|extensions[.]webservice[.]discoverURL| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g; - ' comm/mail/app/profile/all-thunderbird.js - - cp -av $srcdir/$pkgname-$_brandingver/preview.png \ - comm/mail/themes/linux/mail/preview.png - - # Load our searchplugins - rm -rv comm/suite/locales/en-US/searchplugins - cp -av /usr/lib/mozilla/searchplugins comm/suite/locales/en-US/ } build() { cd $_pkgname-$pkgver - # clang-10: error: unknown argument: '-fvar-tracking-assignments' - CFLAGS="${CFLAGS/-fvar-tracking-assignments/}" - CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}" - - if [[ $CARCH = armv7h ]]; then - export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" - sed -i "s/\(cargo_rustc_flags += -C lto\)/#\1/" config/rules.mk - sed -i "s/debug_info = '2'/debug_info = '1'/" build/moz.configure/toolchain.configure - export MOZ_MAKE_FLAGS=-j1 + if [[ -n "${SOURCE_DATE_EPOCH}" ]]; then + export MOZ_BUILD_DATE=$(date --date "@${SOURCE_DATE_EPOCH}" "+%Y%m%d%H%M%S") fi - - if [[ $CARCH = i686 ]]; then - sed -i "s/\(cargo_rustc_flags += -C lto\)/#\1/" config/rules.mk - sed -i "s/debug_info = '2'/debug_info = '1'/" build/moz.configure/toolchain.configure - export MOZ_MAKE_FLAGS=-j1 - 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 - _vendorjs="$pkgdir/usr/lib/$pkgname/defaults/preferences/vendor.js" - install -Dm644 /dev/stdin "$_vendorjs" <<END -// 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); - -// Disable Social API for content -pref("social.remote-install.enabled", false); -pref("social.toast-notifications.enabled", false); - -// Make sure that whitelisted and directory installs are empty -pref("social.whitelist", ""); -pref("social.directories", ""); - -// Disable the GeoLocation API for content -pref("geo.enabled", false); - -// TODO: this "whats new" page should be in the branding package or abslibre -// Pointing the "Help -> What's new" menu entry to mozilla.debian.net -//pref("mailnews.start_page.override_url", "http://wiki.debian.org/Icedove/WhatsNew45"); -END - - _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini" - install -Dm644 /dev/stdin "$_distini" <<END -[Global] -id=parabola -version=1.0 -about=Icedove for Parabola GNU/Linux-libre - -[Preferences] -app.distributor=parabola -app.distributor.channel=$pkgname -app.partner.parabola=parabola -END + 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 \ + 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}_icon.svg \ + install -Dm644 comm/mail/branding/${pkgname}/${pkgname}-symbolic.svg \ "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg" - install -Dm644 ../$pkgname.desktop \ - "$pkgdir/usr/share/applications/$pkgname.desktop" - # Use system-provided dictionaries ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" @@ -273,3 +271,15 @@ END "$pkgdir/usr/lib/$pkgname/$pkgname-bin" } +# checksums are here to reduce the diff against arch (arch bundles the lang-packs split-packages into this one) +sha512sums=('0a4aa344387d19ab6e8e70a08f27ea0e47e74f90e8cf47545870b7ef30b08babfae9be229b13bee31b6797c45683859ba54ecbc0d1e31c40f780851ae0c0a84b' + 'SKIP' + 'a3c9815491d9bed0440c60f35867a5b8a2a1343521f288035fcc46e651a11b926c75a9eca2d262b43d510a7a7119709b53637f1b00ddbbee8e5b0a4b33d7b8fd' + '6918c0de63deeddc6f53b9ba331390556c12e0d649cf54587dfaabb98b32d6a597b63cf02809c7c58b15501720455a724d527375a8fb9d757ccca57460320734' + '5cd3ac4c94ef6dcce72fba02bc18b771a2f67906ff795e0e3d71ce7db6d8a41165bd5443908470915bdbdb98dddd9cf3f837c4ba3a36413f55ec570e6efdbb9f' + 'a34dd97954f415a5ffe956ca1f10718bd164950566ceba328805c2ccbb54ed9081df07f2e063479bf932c4a443bb5b7443cca2f82eea3914465ed6e4863e0c0e' + # metainfo.patch (over-ridden by branding package) + '36d9662fc94cbf7dcf371adc13a9cda679bc75df961d86de019d3c8ebb0be3062d5ef762d175fab58696db74758100a65de45d7832e0e2bd4e15c901f72d8349' +) +sha512sums+=('c424e546b007bfd944f2cefcc73a5a98212a44e7ad54904a7d05dbc494664583af6d50eae8228101671575f3a5df1e79be31fabe1c26c3eec07cef90583691d0' + 'SKIP') |