# Maintainer: David Runge <dvzrv@archlinux.org>

_name=HyperKitty
pkgname=hyperkitty
pkgver=1.3.4
pkgrel=2
pkgdesc="A web interface to access GNU Mailman v3 archives"
arch=('any')
url="https://gitlab.com/mailman/hyperkitty"
license=('GPL3')
depends=('python-dateutil' 'python-django' 'python-django-compressor'
'python-django-extensions' 'python-django-gravatar' 'python-django-haystack'
'python-django-mailman3' 'python-django-q' 'python-django-rest-framework'
'python-flufl-lock' 'python-mailmanclient' 'python-networkx' 'python-pytz'
'python-robot-detection' 'python-whoosh' 'sassc')
makedepends=('python-isort' 'python-setuptools')
checkdepends=('python-beautifulsoup4' 'python-elasticsearch' 'python-mock'
'python-pytest' 'python-whoosh')
optdepends=('python-elasticsearch: for using elasticsearch as search backend'
            'python-xapian-haystack: for using xapian as search backend'
            'uwsgi-plugin-python: for running inside uwsgi'
            'ruby-sassc: alternative to sassc')
backup=("etc/uwsgi/${pkgname}.ini"
        "etc/webapps/${pkgname}/settings_local.py"
        "etc/webapps/${pkgname}/urls.py"
)
install="${pkgname}.install"
source=("https://files.pythonhosted.org/packages/source/${_name::1}/${_name}/${_name}-${pkgver}.tar.gz"{,.asc}
        "${pkgname}-1.3.2-fonts.patch"
        "${pkgname}-1.3.2-settings.patch"
        "${pkgname}-qcluster.service"
        "${pkgname}.sysusers"
        "${pkgname}.tmpfiles"
        "${pkgname}.uwsgi")
sha512sums=('8cb0a24aa16b62f697d5d86c19a752b91b18ea228f9c3b3eb66fc4dce9e4fcb8560be7fbaa00000630e70aaff7c521fa7791f704854347e55d27c31dd12e733b'
            'SKIP'
            '27efcd1f30ab51ae61f4802bd8b06d59df09ef0807f7e92423f18390df04e0bd6f47687e191deb67e96beed8e4d5886164760b0f79d6fcb030b5624b6d7f2c6f'
            '452da2c049f0c35d27e15c16af1a6a526de79a6672b6fdaf9a4bcbdfd2110ebf608e8c5a1f5dfc3bb2febc39ecc6e69e2a657c3b2c6e1d2dc2eca2de81125380'
            'a41c938082ceee555143ddb21c3a95835f9832b9aff423142d78d3e52f12500561f80e0ce43c67a4f190065c9d045945741ac71ab3307db1419c4dc0686db09a'
            '3267427109b08b8c9336b187381ed14357a07370bdcdfc24da94555020ad0424c5bbebc09e131e981e0540c51db443ffe558209e1bca7c2a1b7b1f602ed0805b'
            'c943d82b8640a513728e3f07fa44c0ddb5a3bb8ec84a3a70990e51287ca01977887f895b901688fc4643d8fcb106d524259a86a51bccaafd77c69b241f1b23ba'
            '351f40a6bc1fd1735c883408f9941808e081206927a7c02467e03228243dd156378cac21f851b498702bd4f96fde8e4c80536dbcc6f3c384bf708bed4e988971')
b2sums=('d405b66115174f118f51abab22037556cd9050200723de75884fa68daf99bf5a8c46abcfe224f2ab138fbaea72d871acc7d040c4d9fcd181521b29de75575bab'
        'SKIP'
        '6a82643eb7628b22c33975af5bac2cc7e6969fe0c423cd92bdd7ca1cb676a1621b0ccc089afe6d2f42aae2a6494a214bed44aa2180ee8dd8c71188e07a32ed7d'
        '1eab6221db4adb1a066bde8d6c84a90d3e414d1d30c5cf55a90a4ac58d131f7c4872c85d65e98d91ee0f4cac6f71c47c829993c736617a86be8fec5d831422c8'
        'e8ae1d123e74b0c6984df3e5fff720e03dcbc3f007123718fe845024b42e5c13b7eac4da6bde04a9e1372d446bfa50ac12479730a9092e8396b73434e59663d3'
        'f4e912e75c5127897837d67626ba94a418ec408f0f3a9bcd1767633347e107600cc43825caa5737a84362273a353bf03097879ff5b9065663150f6db4b96238a'
        'e4fd83e38703d8ff9a714b238296e4e12791b8ce0c19446709e5c20b4012ed10b97504cafda66cdbe12e56a9f943c094147b6a02db3bd9c854e609adca38ff01'
        '767f334add0dd0e83b27e198415a2ef8ae3c505aa7f37d12138e37a98dc5575e43f83eb665431464ed488a5bf6b8913cd675eb112dc880cf17ff51511a3f07e6')
validpgpkeys=('541EA0448453394FF77A0ECC9D9B2BA061D0A67C') # Abhilash Raj <raj.abhilash1@gmail.com>

prepare() {
  mv -v "${_name}-${pkgver}" "$pkgname-$pkgver"
  cd "$pkgname-$pkgver"
  # do not load fonts from gstatic
  patch -Np1 -i "../${pkgname}-1.3.2-fonts.patch"
  # setting FHS compliant default paths, remove debug options
  patch -Np1 -i "../${pkgname}-1.3.2-settings.patch"
  touch settings_local.py
  # increase the maximum allowed version of django to 3.2
  # https://gitlab.com/mailman/hyperkitty/-/merge_requests/357
  sed -e 's/<3.2/<3.3/g' -i setup.py
}

build() {
  cd "$pkgname-$pkgver"
  python setup.py build
}

check() {
  cd "$pkgname-$pkgver"
  export PYTHONPATH="build:${PYTHONPATH}"
  python example_project/manage.py test --settings=hyperkitty.tests.settings_test hyperkitty
}

package() {
  cd "$pkgname-$pkgver"
  local python_stdlib_basepath="$(python -c "from sysconfig import get_path; print(get_path('stdlib'))")"
  python setup.py install --skip-build \
                          --optimize=1 \
                          --root="${pkgdir}"
  # remove example_project from top level site-packages:
  # https://gitlab.com/mailman/hyperkitty/issues/279
  rm -rfv "${pkgdir}/${python_stdlib_basepath}/site-packages/example_project"
  # doc
  install -vDm 644 README.rst -t "${pkgdir}/usr/share/doc/${pkgname}"
  # django project
  install -vDm 644 example_project/{__init__,manage,settings,wsgi}.py \
    -t "${pkgdir}/usr/share/webapps/${pkgname}"
  # symlink locale and static dirs to state dir
  ln -svf "/var/lib/${pkgname}/locale/" \
    "${pkgdir}/usr/share/webapps/${pkgname}"
  ln -svf "/var/lib/${pkgname}/static/" \
    "${pkgdir}/usr/share/webapps/${pkgname}"
  # state dir
  install -vdm 750 "${pkgdir}/var/lib/${pkgname}/data"
  install -vdm 755 "${pkgdir}/var/lib/${pkgname}/"{locale,static}
  # log dir
  install -vdm 750 "${pkgdir}/var/log/${pkgname}"
  # config
  install -vDm 640 settings_local.py example_project/urls.py \
    -t "${pkgdir}/etc/webapps/${pkgname}"
  ln -svf "/etc/webapps/${pkgname}/settings_local.py" \
    "${pkgdir}/usr/share/webapps/${pkgname}/settings_local.py"
  ln -svf "/etc/webapps/${pkgname}/urls.py" \
    "${pkgdir}/usr/share/webapps/${pkgname}/urls.py"
  # systemd service
  install -vDm 644 "../${pkgname}-qcluster.service" \
    -t "${pkgdir}/usr/lib/systemd/system"
  # uwsgi
  install -vDm 644 "../${pkgname}.uwsgi" "${pkgdir}/etc/uwsgi/${pkgname}.ini"
  # tmpfiles.d
  install -vDm 644 "../${pkgname}.tmpfiles" \
    "${pkgdir}/usr/lib/tmpfiles.d/${pkgname}.conf"
  # sysusers.d
  install -vDm 644 "../${pkgname}.sysusers" \
    "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf"
}
