# Maintainer: Bruno Pagani <archange@archlinux.org>
# Contributor: Anatol Pomozov
# Contributor: Tim Hütz <tim@huetz.biz>
# Contributor: Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: Sebastien Binet <binet@cern.ch>

_pkg=mpi4py
pkgname=python-${_pkg}
pkgver=3.1.5
pkgrel=2
pkgdesc="Python bindings for the Message Passing Interface (MPI) standard"
arch=(x86_64 aarch64)
url="https://github.com/mpi4py/mpi4py"
license=(BSD)
depends=(python openmpi)
makedepends=(python-setuptools cython)
checkdepends=(inetutils)
source=(https://files.pythonhosted.org/packages/source/${_pkg::1}/${_pkg}/${_pkg}-${pkgver}.tar.gz)
sha256sums=('a706e76db9255135c2fb5d1ef54cb4f7b0e4ad9e33cbada7de27626205f2a153')

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

check() {
    # This is required starting with OpenMPI 3.0 when trying to run more
    # processes than the number of available cores
    export OMPI_MCA_rmaps_base_oversubscribe=yes
    # We don’t have CUDA by default
    export OMPI_MCA_opal_warn_on_missing_libcuda=0

    cd ${_pkg}-${pkgver}
    local python_version=$(python -c 'import sys; print(".".join(map(str, sys.version_info[:2])))')
    local pythonpath="${PWD}"/build/lib.linux-$CARCH-cpython-${python_version/./}
    # run tests via mpiexec according to upstream:
    # https://github.com/mpi4py/mpi4py/blob/3.1.5/.github/workflows/ci.yml#L114-L117
    PYTHONPATH="${pythonpath}" mpiexec -n 1 python test/runtests.py -v
    PYTHONPATH="${pythonpath}" mpiexec -n 2 python test/runtests.py -v -e spawn
}

package() {
    cd ${_pkg}-${pkgver}
    python setup.py install --root="${pkgdir}" --skip-build --optimize=1
    install -Dm644 LICENSE.rst -t "${pkgdir}"/usr/share/licenses/${pkgname}/
}
