# Maintainer: Anatol Pomozov
# Maintainer: Carl Smedstad <carsme@archlinux.org>
# Contributor: Byron Clark <byron@theclarkfamily.name>

pkgbase=thrift
pkgname=(
  thrift
  python-thrift
)
pkgver=0.22.0
pkgrel=4
pkgdesc="Scalable cross-language services framework for IPC/RPC"
arch=(x86_64 aarch64)
url="https://thrift.apache.org"
_url="https://github.com/apache/thrift"
license=(Apache-2.0)
makedepends=(
  boost
  cmake
  emacs-nox
  gcc-libs
  git
  glib2
  glibc
  libevent
  openssl
  python
  python-build
  python-installer
  python-setuptools
  python-wheel
  qt5-base
  zlib
)
checkdepends=(
  python-tornado
  python-twisted
)
source=(
  "git+$_url.git#tag=v$pkgver?signed"
  "$pkgbase-python-adapt-tests-to-python3.patch"
  "$pkgbase-python-add-TType-UUID.patch"
  "$pkgbase-python-disable-failing-tests.patch"
  "disable_locale_tests.patch"
  "test_remainingmessagesize.patch"
)
sha512sums=('844c1c50d024c29fd76a5f3b7cf5f903656d5d80c95d621c7c52bb48653ca6c1bd5a861c04689cfd624b5e1fea36018ef3044fea1476f9f3aefe577cdb380643'
            'bd85749946b9bd2f171bd22a6265e427ed38f489dcee856b1abe46cbd5bf81f2674075b2924de63822c4bb244caf3379d37079cdbba1d4a4730aeffa7a2dfc45'
            'ca2de7a67ee45e6bc0a928bf2700d0fe235a474e3d54a4123b90f0879ce7e6b738b305a9ec6fd5a27c53a5a9295159986d9a6a92634f526914f1f67f7f3e7a0c'
            '1a1f021c000ea23c619703927ebc9833d7dceebb743101079f9c4fbab905cdbac451541e738ca7a009af9c223b25b8ce10f010139a201117ec3e77ab5d5902c8'
            'SKIP'
            'SKIP')
validpgpkeys=('8CD87F186F06E958EFCA963D76BD340FC4B75865') # Jens Geyer <jensg@apache.org>

prepare() {
  cd $pkgbase
  patch -Np1 < ../$pkgbase-python-adapt-tests-to-python3.patch
  patch -Np1 < ../$pkgbase-python-add-TType-UUID.patch
  patch -Np1 < ../$pkgbase-python-disable-failing-tests.patch
  patch -Np1 < ../disable_locale_tests.patch
  patch -Np1 < ../test_remainingmessagesize.patch
}

build() {
  cd $pkgbase
  cmake -S . -B build \
    -D CMAKE_BUILD_TYPE=None \
    -D CMAKE_INSTALL_PREFIX=/usr \
    -W no-dev \
    -D BUILD_SHARED_LIBS=ON \
    -D BUILD_JAVA=OFF \
    -D BUILD_JAVASCRIPT=OFF \
    -D BUILD_KOTLIN=OFF \
    -D BUILD_NODEJS=OFF \
    -D BUILD_PYTHON=ON
  cmake --build build
  python -m build --wheel --no-isolation lib/py
  emacs -Q --batch -f batch-byte-compile contrib/thrift.el
}

check() {
  cd $pkgbase
  local skip_tests=(
    # See https://issues.apache.org/jira/browse/THRIFT-5680
    testapplicationexception
    testfdtransport
    testthriftfdreadcheck
  )
  local skip_tests_pattern="${skip_tests[0]}$(printf '|%s' "${skip_tests[@]:1}")"
  ctest --test-dir build --output-on-failure -E "$skip_tests_pattern"
}

package_thrift() {
  depends=(
    gcc-libs
    glib2
    glibc
    libevent
    openssl
    zlib
  )
  optdepends=('qt5-base: TQTcpServer (Qt5) support')
  provides=(
    libthrift.so
    libthrift_c_glib.so
    libthriftnb.so
    libthriftqt5.so
    libthriftz.so
  )

  cd $pkgbase
  DESTDIR="$pkgdir" cmake --install build
  install -vDm644 -t "$pkgdir/usr/share/vim/vimfiles/syntax" contrib/thrift.vim
  install -vDm644 -t "$pkgdir/usr/share/emacs/site-lisp" \
    contrib/thrift.el \
    contrib/thrift.elc
}

package_python-thrift() {
  pkgdesc+=" (Python bindings)"
  depends=(
    gcc-libs
    glibc
    python
  )
  optdepends=(
    'python-tornado: for tornado backend'
    'python-twisted: for twisted backend'
    'python-zope-interface: for twisted backend'
  )

  cd $pkgbase
  python -m installer --destdir="$pkgdir" lib/py/dist/*.whl
}
