# Maintainer: 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>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - mozconfig changes for ARM

buildarch=12
highmem=1

pkgbase=thunderbird
pkgname=(thunderbird)
pkgver=91.3.0
pkgrel=1
pkgdesc='Standalone mail and news reader from mozilla.org'
url='https://www.mozilla.org/thunderbird/'
arch=(x86_64)
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
)
makedepends=(
  unzip zip diffutils python python-setuptools yasm nasm mesa imake libpulse
  xorg-server-xvfb autoconf2.13 rust clang llvm cbindgen nodejs
  gawk perl findutils libotr
)
options=(!emptydirs !makeflags)
source=(https://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz{,.asc}
        thunderbird.desktop
        vendor-prefs.js
        distribution.ini
        mozconfig.cfg
        metainfo.patch)
validpgpkeys=(
  14F26682D0916CDD81E37B6D61B7B526D98F0353 # Mozilla Software Releases <release@mozilla.com>
  4360FE2109C49763186F8E21EBE41E90F6F12F6D # Mozilla Software Releases <release@mozilla.com>
)

# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM

# Mozilla API keys (see https://location.services.mozilla.com/api)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact heftig@archlinux.org for
# more information.
_mozilla_api_key=16674381-f021-49de-8622-3021c5942aff

prepare() {
  cd $pkgname-$pkgver

  echo "${noextract[@]}"

  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    [[ $src = *.patch ]] || continue
    echo "Applying patch $src..."
    patch -Np1 < "../$src"
  done

  printf "%s" "$_google_api_key" >google-api-key
  printf "%s" "$_mozilla_api_key" >mozilla-api-key
  cp ../mozconfig.cfg .mozconfig
  sed "s|@PWD@|${PWD@Q}|g" -i .mozconfig

  if [[ $CARCH == "armv7h" ]]; then
    echo "ac_add_options --disable-elf-hack" >> .mozconfig
    MAKEFLAGS="-j2"
    CFLAGS=`echo $CFLAGS | sed -e 's/vfpv3-d16/neon/'`
    CXXFLAGS="$CFLAGS"
  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 RUSTFLAGS="-Cdebuginfo=0"
}

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_USE_SYSTEM_PYTHON=1
  ./mach configure
  ./mach build
  ./mach buildsymbols
}

package_thunderbird() {
  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 ../thunderbird.desktop -t "$pkgdir/usr/share/applications"
  install -Dm 644 comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml \
    "$pkgdir/usr/share/metainfo/net.thunderbird.Thunderbird.appdata.xml"

  for i in 16 22 24 32 48 64 128 256; do
    install -Dm644 comm/mail/branding/thunderbird/default${i}.png \
      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
  done
  install -Dm644 comm/mail/branding/thunderbird/TB-symbolic.svg \
    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/thunderbird-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" <<END
#!/bin/sh
exec /usr/lib/$pkgname/thunderbird "\$@"
END

  # Replace duplicate binary with wrapper
  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
  ln -srf "$pkgdir/usr/bin/$pkgname" \
    "$pkgdir/usr/lib/$pkgname/thunderbird-bin"
}

_package_i18n() {
  pkgdesc="$2 language pack for Thunderbird"
  depends=("thunderbird>=$pkgver")
  install -Dm644 thunderbird-i18n-$pkgver-$1.xpi \
    "$pkgdir/usr/lib/thunderbird/extensions/langpack-$1@thunderbird.mozilla.org.xpi"
}

_languages=(
  'af     "Afrikaans"'
  'ar     "Arabic"'
  'ast    "Asturian"'
  'be     "Belarusian"'
  'bg     "Bulgarian"'
  'br     "Breton"'
  'ca     "Catalan"'
  'cak    "Kaqchikel"'
  'cs     "Czech"'
  'cy     "Welsh"'
  'da     "Danish"'
  'de     "German"'
  'dsb    "Lower Sorbian"'
  'el     "Greek"'
  'en-GB  "English (British)"'
  'en-US  "English (US)"'
  'es-AR  "Spanish (Argentina)"'
  'es-ES  "Spanish (Spain)"'
  'et     "Estonian"'
  'eu     "Basque"'
  'fi     "Finnish"'
  'fr     "French"'
  'fy-NL  "Frisian"'
  'ga-IE  "Irish"'
  'gd     "Gaelic (Scotland)"'
  'gl     "Galician"'
  'he     "Hebrew"'
  'hr     "Croatian"'
  'hsb    "Upper Sorbian"'
  'hu     "Hungarian"'
  'hy-AM  "Armenian"'
  'id     "Indonesian"'
  'is     "Icelandic"'
  'it     "Italian"'
  'ja     "Japanese"'
  'ka     "Georgian"'
  'kab    "Kabyle"'
  'kk     "Kazakh"'
  'ko     "Korean"'
  'lt     "Lithuanian"'
  'ms     "Malay"'
  'nb-NO  "Norwegian (Bokmål)"'
  'nl     "Dutch"'
  'nn-NO  "Norwegian (Nynorsk)"'
  'pa-IN  "Punjabi (India)"'
  'pl     "Polish"'
  'pt-BR  "Portuguese (Brazilian)"'
  'pt-PT  "Portuguese (Portugal)"'
  'rm     "Romansh"'
  'ro     "Romanian"'
  'ru     "Russian"'
  'sk     "Slovak"'
  'sl     "Slovenian"'
  'sq     "Albanian"'
  'sr     "Serbian"'
  'sv-SE  "Swedish"'
  'th     "Thai"'
  'tr     "Turkish"'
  'uk     "Ukrainian"'
  'uz     "Uzbek"'
  'vi     "Vietnamese"'
  'zh-CN  "Chinese (Simplified)"'
  'zh-TW  "Chinese (Traditional)"'
)
_url=https://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/linux-x86_64/xpi

for _lang in "${_languages[@]}"; do
  _locale=${_lang%% *}
  _pkgname=thunderbird-i18n-${_locale,,}

  pkgname+=($_pkgname)
  source+=("thunderbird-i18n-$pkgver-$_locale.xpi::$_url/$_locale.xpi")
  eval "package_$_pkgname() {
    _package_i18n $_lang
  }"
done

# Don't extract languages
noextract=()
for _src in "${source[@]%%::*}"; do
    case "$_src" in 
      *.xpi) noextract+=("$_src") ;;
    esac
done

sha512sums=('938de817ed2cad90f665559da1dfc266f34b6ca2e688ee364112edfdb1167183a8225132ed50b672ceb14402be933be82fd1ef8b46f103cdf1534a403fb472d9'
            'SKIP'
            'a0061fcb2a7f66061e336a8d95948592f56f4752e56467f14ba63846720ebf845cce7511d1a2637e3b80d5a1ffdaa2fb783fa37195103425ef65222d45372012'
            '6918c0de63deeddc6f53b9ba331390556c12e0d649cf54587dfaabb98b32d6a597b63cf02809c7c58b15501720455a724d527375a8fb9d757ccca57460320734'
            '5cd3ac4c94ef6dcce72fba02bc18b771a2f67906ff795e0e3d71ce7db6d8a41165bd5443908470915bdbdb98dddd9cf3f837c4ba3a36413f55ec570e6efdbb9f'
            'd6d08cfa221cbc4ab8ad3426eea860348e9fdc5b7545cb220484315a05fe1d475fafe60888b8ba16ca281ce08ac3d39bed85a40b8952a19923c9fc995c9602e8'
            '7e43b1f25827ddae615ad43fc1e11c6ba439d6c2049477dfe60e00188a70c0a76160c59a97cc01d1fd99c476f261c7cecb57628b5be48874be7cf991c22db290'
            '7f6cefe5d3db2bbf4aa640ab4b68b7b0189d67932821b53eb73a1a2ed274e816e4fce0b6dbf20da4f9ef4d5be8faa58bff40cf9ecdba7322aeb3d22de7c2870c'
            'b79d8b4479fd5142a6d3428d501143ffd93706abf73dc26692218e937e207fb0dc488041cd57d8064c2f350de1cac5fc4d806b2a72405fb92b2c519422f12256'
            'fcfa5b390a42b8b6291ca9857d7d739ca008519f5806fa398abe1adb4e56c31138009cfc601ebc059662c94ea0cc9017333331ec82ea3a635a5ef398b0bf1b70'
            'bcf93fa2301040b1748a13e4646b97d05bb0c10e9025fd2342174d590b477320af97d86ef6042d8d96657d56c1ec9cbf6090105570622d404719c24e2dbb552e'
            'ed60f6c43626f95dd93d2faa253c9a2ebde3dbe704029a0d04c74f185724cdfb5c2feea8ff48402804c1028041bcbf9adf17b9d446a31daf52a9aa4bcab5175e'
            '1571fab57c770d79fbb6988e16c871355c8526d7048c55b456d03ec6b4ee39fe1acd20c2b11396418288e2369aa76cf5bed2f3911a064bc9cb5ee2265aeaa2cc'
            '2c80e53b5095466a29cb82e4b5bdbc20ac8dd8074cc84aff2331326b763192a9a255b24f9e8c3cdfc99af390524e8c7f4e6e193f5d8f69d677d6f59826ca503e'
            '43889478b3570491190228d166a6b7815f944b2d2e77d0ec8f70d00b32665b5c812e5479a027a1a947f151e94da9573f0b8704ccbf30419adeb804d6a4fe200e'
            '829b66b45283ca27e6fa941c20e88590c0733d464bb36e770533a480f3697dce4303dfefcba7934b20bb93e7458d948e379f0da0ac9d6b50093f3f75872a51f7'
            'd1507df70b85fad42c6fa06fdffa9dd99c5622e458a1032711cf1ffd4b80fd19d42962baa20975dea8115baf85f192b5c5e6a6de8a52a08abefcb21a16b9ada7'
            '4a78713f8aa026eb75225c227f707ebc77f4e4ba9135532de5721bb79e6d060b6c7d805ee8ce8da504627efc4e342623ae6b8117ed77058835f1a7da7f925be0'
            '2c75fac16e2038b698dc07ce92193d458d183f809437a507a61a0c93673e665f6b3e94370f7572252878bba26959c58415a55faa8b2a7aff31a0b0b59e4654c9'
            'fb8c4a01f40963af8ce7678143ca47ad8b23e310bdd7d0b667d23b04256144f626d9eb387ee3a3f63ae38cff952058c898d2cd4f97c63f9f0e1260cce98c2c4f'
            '29b11326cdb9c1c094142ffe4d6db9e2ca3f1f55357934216f7bf20f2fb3faa651c6307a4f11d96fbb02bf3840f7e6270cab77bca4a63ef98694ff422b667f4b'
            'a67bd60d6604cfd72c59fc763860166d914d96e5b338368f6072ad1968394173d814516d99e4562a52f7bdbd8f2a5eb0939d4042c58eee22b4c33967e3055bb9'
            'c0c962e9ad8c54ef2ee1ec853400e74b872e7bce20b6fc0ab875cffc50a2d3ddbcbf2803651e35d0251905c5fb6381e0a81903cdd5e9fdf8379ac2e04b477158'
            '934886472adaebe4d7495f73addeeef63be15e20f5c1132373246ff89487713e2b2e39d7570cfe119bc65efdd0325b77b996101c6d0b427006ce7047902b27d7'
            'f9c66c33618b106048848a590acf8c13550d47d118fa3c1b71509f46130e95ea9670558fe2f80aba1842a78a06664db4cc1c043780e3b920951086e74e52e5ee'
            '3e0d2902af192234c0c84407d45c3f7d25bf55a8d02a56d6c016f5381305c599bab74f9f0e859fdf47ff87a458f10479f6e3d0b1d8a97ff1e406e68382e23259'
            '009f0fa7d365c3b58dc5aeb36dddfd8ff799abddb015f8e6303673c1ed3a717f3f9f03ceeb6e325675e58d0d3b3bbf430b7e6b7022fadc1fb712c613888b0604'
            '8bd7aac9c47314870b6c9fc7c655bfc1ffbbbc6652a8052504a3104bbcf7994a0b26c63a65e516027ef3417ebe908fbfb8b583366a499b1550a86d8fe307e30e'
            'd10e28b8eeed85da5f8c36c8332e65e1028a9243cec4eba414bc3439a9bc40893618a7e85cfb9746f0c6871402a085c197a4d953329da48e5bef023b047d11aa'
            '3e63f969f2ad8161d748f53652ab9616fb74b71571e6a655df4b9a5e7ab7dc55d5906d24b875f0b975976da22f7f627284afdea2b2a046a05e6144dc72520872'
            'b884915a7a363ac8b919ea29581c0a5eee952b42b8446b1e13a21dec218eb7706c172df79f53021934aa831cc2be6bff9017fb6c1c3ead20f9b41061849ecf46'
            '3d91ff2128d0709da4c46f3fc28807542193b0274cd8e2aaa30ce78afb459cf1f24ed79de4450135396d4f77eb22dee8a8ad719dd6e7b5fa853555d3a69f4045'
            '26c84b7e95420772c46bd613505aba7674e698cb7ddb2ca6bfed196f125cdb59ba02d8153d85f68b47168781072793702639b3400c14629b7eb9f730a3afa8e0'
            '6d16c298bc14033207bc529cb537745c817193355b73e01b380e2ed218c0152a8bb493087e0a2b46afc36e9415362e59b86731aa098a2461d8a365d089a318a9'
            '02f09bc15ab2e83ae612fc7c30a9ccc4724fe53b2178cdf5ffd434a646e72bf2082d6867442b627f97df66b72a337850735e50640fd0db1da9b6775119ab0c18'
            'e601fc09ce1b2b6ce899aa2653ed38c6dcee5ba481bbe91f709ac963fadbb8bfce7aa83bbab052484995a0a54d90c18e298df0f09e42d090232f09cc4d8ccfd7'
            'c3c2525ba759c93ee10d9534a7b6142f11282ce32c9379887a3ab8bce4740c72cf8424ecde67787e8968ff13bd0a2e885b24b97a986a632fa5005d7320b4e5fd'
            '80f53c34609fb434af7b3e2af3a00c5233dc85bafc850f97b51fd5aa36761ababecb577a3081ab5825906986d6064870096d90adbab6f6804a99d97d9d102451'
            'ecd58d868b2c18c8a118b3bf232fc069ac657e868088d94b2c854b9ee30324a33e79e52405aecf70c83673484e07bf2fa0f65ed630471f601dd5467a74505b9b'
            '88bffc408815c9a11816b7a95845bbc12f16c8b84d0d1b8513a4712e897e5f1597e95bd7d5531af5a3a2aa70cf3a57e64010139050dd7250a2b4bb57f9d8adec'
            '804729f19ad0132c9a6b6167495ee4ee783c0d376f3116ee1f9efe4f65f6f3d63b330133ac089c415cdd7927c786e925adce3c65d2d61050be6bba6a30b27fe0'
            '5daf35119196264acea64ebd1487cc862edc9dba8992d4ad34f2392b685d595aa186b62a573005753e5fb5b9717ccbe38d38490d5f33229a627d19976ee22b7d'
            '16d59413d470ee92d0b6a373df7f243d2e14389fbfbb20b432e4eb9938c11ee276898d00a036c60a2beaa85cbb0c894050ee201aa07074157661fd5d9a23c169'
            '34a2efe01cc8d3e39e17ec647fb9ce4fe2caed73cbe890fe5658778a649e7ef6c284ac82961ab163d565f4c02b02b4433c561dde33b60a8dbb6cce9c1a744a61'
            'e069c3b5fa2674c8dc3eee46956c829bd2bd60d4611013da8918950447b99b00a55c25ea099c08b61f6851fdb8e33b9a2493bcfca413a813dfe2e253cafb0321'
            '72ea1b67ef18144e847059c90e6caef3f7c1e527c458dfc66a56d706cba9f3a6cf185c738c8c5bdc441f9d91cfb94c5a1f3baf618388c519e53843a83237dd36'
            '752ef9b1a413fa585672d1e759b77bb0215c913acd1464cc3e1d9471d2e4541aa12ea1e3b697cdb61aa26d090b74cdce901b2029fac83024053b5cce587c7ccd'
            'cf7ea2e2071d0d26c6b0558723132767facee1ba7c0997d7bc8d35b32ce0197faa3ee0d57776b776b62df4b998042667039511c86d3aac23b67194422d36fbe8'
            '0dfcac57d8f9bdadabc1d9dbe000a852ab2769825dbddf215cfc9f18252c1c583e94c9867f41f77f7ee24cff9063eeaf91fdf5254e4d1320c98dd950f5554a38'
            'b0fecbc04f611c43d844b6dcaf671ff254548b9893731124a09cabd90e15f960e23fc1cdefca0c0b337f114e0990d35050ddc6f3a96868803badc14d7e809b74'
            'ea71f465424cec5347a5dcee6644d80c441e5c7cb4ab51bcaa458a8da108080d99c9bd64e363f72407d6a5feb86fdc67f7296eb115f524bda896fdcc10939b5c'
            'a24711a523955c3d4e52742c37939a97ad0831bcf6e81bf58626f749867ebe7efc15472698b4fd8290a3b08213aca3e4a45b474a797d3c570e2fbf8a881c5f2d'
            'd8f89fac2cc8ebb08e4c5acda4178b07cfcce1d41aa8be2f4a5996186039ed3a84f35e22ef176c43d6781621aabc2665170864f487c9b5ce09215deab163fb0a'
            'da831d06ccfcd3493b70d614240e5d8cfa83dc3e93c3b6867ccc0b2354b98929c0f72a2017aa8801cc2b152fa3f87f4fc2178e2625f1419acdbcfbfe391196aa'
            '2929806aa95834ead922b0adfeff3b16dc155edff0c3479cf9e587b8f6a268bf1aeaaba25c6d415bdba383c7ac346c72c2588f3a2f4b549b455c830de19b92ef'
            '97adf81600b9ff067062a4697bd71962a03db9221470c102a61af3e29e4276daa755852ad71a540e4d0fe8f4fd6d82beb06724af7d00214c164cd51122be4c2d'
            'ded27b8487498fc0ddc5c15b66abe6f27a61b762f2933765e8ae2cf36f7c452b457cd0f5b1531782aad29510261a2e7ea2c7b87a6ed5a2706ed6ecebd3a1d4c3'
            '65d4e61e529da7f7e1cffc8413fa10eaf86ffa4efdedbc90bdaf45704bd6761c955698e94b7d2adf03b2ebb608ca5ccdc6d7a0643cec7b2d834ad6766f7937a6'
            '1f15e7716151f6dee469d8a1f1f5104a77a72b9ff0746d30fa484f5338cdde7679b3141a395715cc649df16e6d5b48fee234a21e31458f724194e587be32b098'
            '5cce8c69e3e6fafa784aeffba1d0d4515be697a11557ce9a04d814bd32c41e2d4a1ef88867b7f50b5e0b38cc0519bcec054f793ec27d3e159e14ac11f0fea8fd'
            '1613ed8f74cd721ef497bf8b68e5e6ad07558e46057c3ba4ac40b39b55f45f3e21737c401caa5bb118c560e50c117eee11ad71c01a367cca339c5d3da654f660'
            '03fd59e6d3410298458c8131b8f09b7cff8869e82dd2fda935f5ebaf3b517633d1cc0e997bef009714b2f95388ff25cfb5c7f354fd81fa2afe819132b24604d7'
            '0463dacf3a2c9392243e3716390b2764ff9e0b78a42c5b727740e0696fa008d665f408b9e0d7a72b4b6a91817ff9c2cea2a22fc3044f64dfe83e5b265d809750'
            '57f0d36b5d16464ce6bbb634bd1f604c9df3ba7f05d23f92921d8c38e4ad8fde65af25836e9d357d9efb397e3054832a551e869e9494125a7862c2eca5a218f8'
            '46802ce4488eea3464656e92b3f7682269647f166c29c76d0ab46e0f31231ad2ff87125b511d232b53718adf7f22dbb20a462838abca83060b93d8045b689e27'
            '5ff3bcec5e1a47ec0c352ca24da81432823d33e8ccd972cafa78fdcfd6813dabd2628511b3d65ed90e55b6126016d9fc123729f5664a0611c32684cd05e0e8a3'
            'dbb5afdcfbdacdf644387626557bc8d88622a3709d454efb1471fc5a7d0a426a32ff1923996d22bd0ed62fb386ca226e82ec7e192f7c47b82e6df8830e51efd1'
            '688f34b648974085d70906886a612176ff92e9cc9a7629b5ed23ff2216dc57a41bfb32218113bbf0acc11271b8838aa4fa300673d3cf23614015d82e9a50ada1'
            'b9b48a34d9606afcdea5a982d545bf516faa8f76659380918a8f05904e38f4a43bfb01ed4ea5b6d36c420fb1a0515acabc253a02fe656d2da63d338aac8de113'
            'b8bc40cfc3cb7dc6fb2206d485ef602b725cb2346f5ef6c5223f9b2bb3a0a93800eae494163018b44bb2e4c9581f90039fba7cdae7ebee849ab68d02cc70d4b7')

# vim:set sw=2 et: