description="Stand-alone mail/news client based on the Mozilla codebase."
url="https://www.mozilla.org/thunderbird"

packager="spiky <spiky@nutyx.org>"
contributors="Pierre,Fabienwang,Tnut"

license="GPL, LGPL, MPL"

makedepends=(autoconf2-13 icu alsa-lib gtk3 zip unzip libevent libvpx nspr
             nss yasm dbus-glib doxygen libnotify openjdk sqlite wireless-tools
             xorg-libx11 xorg-libxt xorg-libxrandr pulseaudio python llvm
             rustc cbindgen node)
run=(startup-notification hunspell desktop-file-utils hicolor-icon-theme
     shared-mime-info gtk-update-icon-cache pciutils)

name=thunderbird
version=115.14.0
release=2

locale_version=$version

source=(https://archive.mozilla.org/pub/thunderbird/releases/$version/source/$name-$version.source.tar.xz
	$name.desktop)

prepare() {
cd $name-$version

(for i in {43..47}; do
   sed '/ZWJ/s/}/,CLASS_CHARACTER&/' -i intl/lwbrk/LineBreaker.cpp || exit $?
 done)

sed -e "/match cursor.kind()/a                                    \
        CXCursor_LinkageSpec => return Err(ParseError::Recurse)," \
    -i third_party/rust/bindgen/ir/item.rs                        &&

sed 's/input.try/&_parse/' \
    -i servo/components/style_traits/values.rs &&
sed '0,/"Keyframe"/{//d}' -i servo/ports/geckolib/cbindgen.toml

cat >> Cargo.toml << EOF &&
[patch.crates-io.bindgen_0_64_0]
package = "bindgen"
version = "0.64.0"
path = "third_party/rust/bindgen"
EOF

sed -r '/name = "bindgen"/,+5 s/^source|^checksum/#&/' \
    -i Cargo.lock

sed 's/uint32_t timestamp/uint64_t timestamp/'                \
    -i dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp    \
       dom/media/gtest/TestGMPRemoveAndDelete.cpp             \
       dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp

sed '/mInputImageMap/s/uint32_t/uint64_t/' \
    -i dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h

sed '/cfg_attr/,/)]/d' -i gfx/qcms/src/lib.rs
}

pack_remove_locale() {

wget  https://archive.mozilla.org/pub/thunderbird/releases/$version/linux-${PKGMK_ARCH}/xpi/${1}.xpi
install -Dm644 ${1}.xpi \
$PKG/usr/lib/$name/extensions/langpack-${1}@$name.mozilla.org.xpi
rm ${1}.xpi
cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.${1}${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-${1}@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-${1}@$name.mozilla.org.xpi

}
build() {

cd $name-$version

cat > mozconfig << "EOF"

ac_add_options --without-wasm-sandboxed-libraries

# If you have installed wireless-tools comment out this line:
ac_add_options --disable-necko-wifi

ac_add_options --enable-system-ffi
ac_add_options --enable-system-pixman

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-icu
ac_add_options --with-system-jpeg
ac_add_options --with-system-png
ac_add_options --with-system-zlib

ac_add_options --prefix=/usr
ac_add_options --enable-application=comm/mail

ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --disable-tests
ac_add_options --disable-jack

# The elf-hack causes failed installs on some machines.

ac_add_options --disable-elf-hack

ac_add_options --enable-optimize=-O2
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --enable-linker=gold
ac_add_options --enable-official-branding

EOF

export SHELL=/bin/sh

export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none
export MOZBUILD_STATE_PATH=./mozbuild


./mach configure
./mach build

MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none \
DESTDIR=$PKG ./mach install

mkdir -pv $PKG/usr/bin
ln -sfv ../lib/$name/thunderbird $PKG/usr/bin

mkdir -pv $PKG/usr/share/applications 
install -Dm644 $SRC/thunderbird.desktop \
$PKG/usr/share/applications/thunderbird.desktop

for i in 16 22 24 32 48 128 256; do
   install -Dm644 comm/mail/branding/thunderbird/default${i}.png \
      $PKG/usr/share/icons/hicolor/${i}x${i}/apps/thunderbird.png
done
install -Dm644 comm/mail/branding/thunderbird/TB-symbolic.svg \
$PKG/usr/share/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg

mkdir -p $PKG/etc/ld.so.conf.d
echo "/usr/lib/$name" > $PKG/etc/ld.so.conf.d/$name.conf

mkdir -p $PKG/usr/lib/thunderbird/defaults/preferences
cat > $PKG/usr/lib/thunderbird/defaults/preferences/vendor.js << "EOF"
// Use LANG environment variable to choose locale
pref("intl.locale.requested", "");
EOF

}
locale_ar()
{
pack_remove_locale ar
}
locale_as()
{
pack_remove_locale as
}
locale_cs()
{
pack_remove_locale cs
}
locale_da()
{
pack_remove_locale da
}
locale_de()
{
pack_remove_locale de
}
locale_el()
{
pack_remove_locale el
}
locale_es()
{
for lang in es-AR es-ES
do
   wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
   install -Dm644 $lang.xpi \
   $PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
   rm $lang.xpi
done

cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.es${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-es-AR@$name.mozilla.org.xpi \
usr/lib/$name/extensions/langpack-es-ES@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-es-AR@$name.mozilla.org.xpi
rm usr/lib/$name/extensions/langpack-es-ES@$name.mozilla.org.xpi
}
locale_et()
{
pack_remove_locale et
}
locale_fa()
{
pack_remove_locale fa
}
locale_ff()
{
pack_remove_locale ff
}
locale_fi()
{
pack_remove_locale fi
}
locale_fr()
{
pack_remove_locale fr
}
locale_ga()
{
lang=ga-IE
wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
install -Dm644 $lang.xpi \
$PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
rm $lang.xpi
cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.ga${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
}
locale_gl()
{
pack_remove_locale gl
}
locale_hr()
{
pack_remove_locale hr
}
locale_hu()
{
pack_remove_locale hu
}
locale_is()
{
pack_remove_locale is
}
locale_it()
{
pack_remove_locale it
}
locale_ja()
{
pack_remove_locale ja
}
locale_ko()
{
pack_remove_locale ko
}
locale_lt()
{
pack_remove_locale lt
}
locale_nl()
{
pack_remove_locale nl
}
locale_nn()
{
lang=nn-NO
wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
install -Dm644 $lang.xpi \
$PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
rm $lang.xpi
cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.nn${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
}
locale_pl()
{
pack_remove_locale pl
}
locale_pt()
{
for lang in pt-PT pt-BR
do
  wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
  install -Dm644 $lang.xpi \
  $PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
  rm $lang.xpi
done

cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.pt${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-pt-PT@$name.mozilla.org.xpi \
usr/lib/$name/extensions/langpack-pt-BR@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-pt-BR@$name.mozilla.org.xpi
rm usr/lib/$name/extensions/langpack-pt-PT@$name.mozilla.org.xpi
}
locale_ro()
{
pack_remove_locale ro
}
locale_ru()
{
pack_remove_locale ru
}
locale_sk()
{
pack_remove_locale sk
}
locale_sl()
{
pack_remove_locale sl
}
locale_sq()
{
pack_remove_locale sq
}
locale_sr()
{
pack_remove_locale sr
}
locale_sv()
{
lang=sv-SE
wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
install -Dm644 $lang.xpi \
$PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
rm $lang.xpi
cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.sv${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
}
locale_tr()
{
pack_remove_locale tr
}
locale_uk()
{
pack_remove_locale uk
}
locale_vi()
{
pack_remove_locale vi
}
locale_zh()
{
for lang in zh-CN zh-TW
do
  wget  http://download.cdn.mozilla.net/pub/mozilla.org/$name/releases/$version/linux-$PKGMK_ARCH/xpi/$lang.xpi
  install -Dm644 $lang.xpi \
  $PKG/usr/lib/$name/extensions/langpack-$lang@$name.mozilla.org.xpi
  rm $lang.xpi
done

cd $PKG
bsdtar -cf \
$PKGMK_PACKAGE_DIR/${name}.zh${PKGMK_BUILDVER}any.$PKGMK_PACKAGE_EXT \
usr/lib/$name/extensions/langpack-zh-CN@$name.mozilla.org.xpi \
usr/lib/$name/extensions/langpack-zh-TW@$name.mozilla.org.xpi

rm usr/lib/$name/extensions/langpack-zh-CN@$name.mozilla.org.xpi
rm usr/lib/$name/extensions/langpack-zh-TW@$name.mozilla.org.xpi

}
