# Maintainer: J. Peter Mugaas <jpmugaas@suddenlink.net>

_realname=stestr
pkgbase=mingw-w64-python-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}")
provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
pkgver=3.0.1
pkgrel=2
pkgdesc="A test runner runner similar to testrepository (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url='https://stestr.readthedocs.io/en/latest/'
license=('Apache')
depends=("${MINGW_PACKAGE_PREFIX}-python"
         "${MINGW_PACKAGE_PREFIX}-python-cliff"
         "${MINGW_PACKAGE_PREFIX}-python-fixtures"
         "${MINGW_PACKAGE_PREFIX}-python-future"
         "${MINGW_PACKAGE_PREFIX}-python-pbr"
         "${MINGW_PACKAGE_PREFIX}-python-six"
         "${MINGW_PACKAGE_PREFIX}-python-subunit"
         "${MINGW_PACKAGE_PREFIX}-python-testtools"
         "${MINGW_PACKAGE_PREFIX}-python-voluptuous"
         "${MINGW_PACKAGE_PREFIX}-python-yaml")
makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools")
#checkdepends=('python-hacking' 'python-sphinx' 'python-mock'
#              'python-subunit2sql' 'python-coverage' 'python-ddt')
options=('staticlibs' 'strip' '!debug')
source=("https://pypi.io/packages/source/s/stestr/stestr-${pkgver}.tar.gz")
sha512sums=('2bc3219652fa7d4c1e5852ad83561dd7282c300c530b05d67c1b3883164dcf0e258d904c9583ed627ff23b0cb783dd21e76bbc66934a6b3545fe9ebf5e418925')

# Helper macros to help make tasks easier #
apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying $_patch"
    patch -Nbp1 -i "${srcdir}/$_patch"
  done
}

del_file_exists() {
  for _fname in "$@"
  do
    if [ -f $_fname ]; then
      rm -rf $_fname
    fi
  done
}
# =========================================== #

prepare() {
  cd "${srcdir}"
#  pushd "${_realname}-${pkgver}"
#    apply_patch_with_msg 0001-A-really-important-fix.patch \
#      0002-A-less-important-fix.patch
#  popd 

  rm -rf python-build-${CARCH} | true
  cp -r "${_realname}-${pkgver}" "python-build-${CARCH}"

  # Set version for setuptools_scm
  export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver}
}

build() {
  msg "Python build for ${CARCH}"  
  cd "${srcdir}/python-build-${CARCH}"
  ${MINGW_PREFIX}/bin/python setup.py build
}

#check() {
#  msg "Python test for ${CARCH}"
#  cd "${srcdir}/python-build-${CARCH}"
#  export PYTHONPATH="$PWD/tmp_install/usr/lib/python3.8/site-packages"
#  export PATH="$PWD/tmp_install/usr/bin:$PATH"
#  stestr run || warning "Tests failed"
#}

package() {
  cd "${srcdir}/python-build-${CARCH}"
  MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
  ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \
    --root="${pkgdir}" --optimize=1 --skip-build

  install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE"

  for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do
    sed -e '1 { s/^#!.*$// }' -i ${_f}
  done
}
