# Template file for 'sagemath'
pkgname=sagemath
version=10.9
revision=1
_pypi_version=${version/.beta/b}
_pypi_version=${_pypi_version/.rc/rc}
build_style=python3-pep517
make_build_args="-C setup-args=-Dbuild-docs=false"
hostmakedepends="pkg-config python3-Cython python3-Jinja2
 python3-pkgconfig python3-setuptools python3-wheel
 python3-gmpy2 python3-memory_allocator python3-numpy ecl
 python3-cypari2 python3-cysignals python3-devel python3-meson-python"
makedepends="boost-headers brial-devel cliquer-devel ecl eclib-devel
 ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel glpk-devel
 gsl-devel iml-devel lcalc-devel libbraiding-devel libhomfly-devel libmpc-devel
 libpng-devel linbox-devel m4ri-devel m4rie-devel mpfi-devel
 mpfr-devel ntl-devel openblas-devel pari-devel planarity-devel python3-cypari2
 python3-cysignals python3-devel python3-gmpy2 python3-memory_allocator
 python3-numpy rankwidth-devel singular symmetrica-devel maxima-ecl"
depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel
 gfan gsl-devel gzip libpng-devel linbox-devel m4ri-devel maxima-ecl maxima-src
 mpfr-devel nauty ntl-devel palp pari-devel pari-elldata-small pari-galdata
 pari-galpol-small pari-seadata-small pkg-config python3-Cython python3-cypari2
 python3-cysignals python3-devel python3-fpylll python3-ipython python3-lrcalc
 python3-ipython_ipykernel python3-jupyter_ipywidgets python3-matplotlib
 python3-memory_allocator python3-networkx python3-pip python3-pkgconfig
 python3-pplpy python3-primecountpy python3-requests python3-scipy
 python3-sympy python3-traitlets sage-data-combinatorial_designs
 python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs
 sage-data-polytopes_db sympow tachyon threejs-sage
 python3-six python3-gmpy2 python3-numpy python3-pexpect python3-Sphinx
 python3-Pillow python3-mpmath python3-jupyter_client python3-ptyprocess
 python3-platformdirs"
checkdepends="${depends} python3-pytest-xdist pythran python3-Sphinx gdb"
short_desc="Open source mathematics software"
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
license="GPL-2.0-or-later"
homepage="https://www.sagemath.org/"
changelog="https://github.com/sagemath/sage/releases"
distfiles="${PYPI_SITE}/s/sagemath/sagemath-${_pypi_version}.tar.gz"
checksum=5855626668197958372403dc6fa1878750b90ac7f113f49a5bc43ddaafd60591
nocross="due to fflas-ffpack, givaro, linbox, sympow, maxima"

# parallel build
export SAGE_NUM_THREADS="${XBPS_MAKEJOBS}"

if [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then
	# skip random failures on CI
	_exclude_files+="
	 sage/matrix/matrix_mod2_dense.pyx
	 sage/matrix/matrix_integer_dense.pyx
	 "
	case "$XBPS_TARGET_MACHINE" in
		# skip failing tests on i686
		i686*) _exclude_files+="
		 sage/categories/regular_crystals.py
		 sage/dynamics/finite_dynamical_system.py
		 sage/matrix/matrix_double_dense.pyx
		 sage/rings/polynomial/real_roots.pyx
		 sage/rings/tests.py
		 sage/schemes/elliptic_curves/ell_finite_field.py
		 "
	esac
fi

do_check() {
	local testdir="${wrksrc}/.xbps-testdir/$(date +%s)"
	python3 -m installer -d "${testdir}" dist/*.whl

	# this makes for nicer (shorter) relative paths in output
	cd ${testdir}/${py3_sitelib}

	# there is a conflict between this conftest.py and the one in our builddir
	# see https://github.com/sagemath/sage/pull/41709#issuecomment-4425750767
	rm "sage/conftest.py"

	# simplify testing changes
	for f in ${XBPS_DISTDIR}/sagemath-check*.patch ; do
		[ -f "$f" ] || continue
		patch -Np2 < "$f"
	done

	if [ -f ${XBPS_DISTDIR}/sagemath-check ] ; then
		_sed='s|#.*||;/^\s*$/d;s|^\s*\([^ ]*/\)\?sage/|sage/|g' \
		_test_files=($(sed -e "$_sed" ${XBPS_DISTDIR}/sagemath-check))
	fi
	if [ -z "$_test_files" ]; then
		if [ -z "$_exclude_files" ]; then
			_test_files=(--all)
		else
			_test_files=(--all-except "$_exclude_files")
		fi
	fi
	cp ${FILESDIR}/timings2.json .
	_test_args="--stats_path=timings2.json"
	if [ "${XBPS_CHECK_PKGS}" = full ]; then
		_test_args+=" --long --warn-long 30.0"
	else
		_test_args+=" --warn-long 10.0"
	fi
	if [ "${XBPS_BUILD_ENVIRONMENT}" = "void-packages-ci" ]; then
		# for CI use a predictable random seed
		_test_args+=" --random-seed=0"
	fi

	PATH="${testdir}/usr/bin:${PATH}" PYTHONPATH="${testdir}/${py3_sitelib}" \
		python3 -m sage.doctest -p ${XBPS_MAKEJOBS} ${_test_args} "${_test_files[@]}"
}
