# Template file for 'sagemath'
pkgname=sagemath
version=9.8
revision=1
build_wrksrc=pkgs/sagemath-standard
build_style=python3-module
_bindir=/usr/lib/sagemath/$version/bin
make_install_args="--install-scripts=$_bindir"
hostmakedepends="m4 pkg-config python3-Cython python3-Jinja2 python3-pkgconfig
 python3-setuptools"
makedepends="arb-devel boost-devel brial-devel cliquer-devel ecl eclib-devel
 ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-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"
depends="FlintQS eclib-devel fflas-ffpack flintlib-devel gcc-fortran gd-devel
 gfan giac gsl-devel gzip libpng-devel linbox-devel m4ri-devel maxima-ecl
 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
 sage-data-conway_polynomials sage-data-elliptic_curves sage-data-graphs
 sage-data-polytopes_db sympow tachyon threejs-sage"
checkdepends="$depends"
short_desc="Open source mathematics software"
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
license="GPL-2.0-or-later"
homepage="http://sagemath.org/"
distfiles="https://github.com/sagemath/sage/archive/refs/tags/$version.tar.gz"
checksum=2aff28bd1d18c2d526581f5298acb8336f5b92db5675a7403dec8eaf9a86bc4c

do_configure() {
	# git tree needs bootstrapping
	( cd $wrksrc/build/pkgs/sagelib &&
	  PATH=../../bin:$PATH \
	  BOOTSTRAP_QUIET=no \
	  ./bootstrap )
}

pre_build() {
	export PYTHONPATH=../sage-setup
	export PYTHONDONTWRITEBYTECODE=yes
	export SAGE_NUM_THREADS="$XBPS_MAKEJOBS"
}

post_build() {
	_lib=$(cd build/lib* && pwd)
	_scripts=$(cd build/scripts* && pwd)

	# configuration files
	cp ${FILESDIR}/sage_conf.py $_lib
	cp ${FILESDIR}/sage-env-config $_scripts
}

pre_install() {
	export PYTHONPATH=../sage-setup
	export PYTHONDONTWRITEBYTECODE=yes
	export SAGE_NUM_THREADS="$XBPS_MAKEJOBS"
}

post_install() {
	# fix jupyter kernel spec
	vsed -i -e 's|"/usr/bin/sage"|"'${_bindir}'/sage"|' \
		${DESTDIR}/usr/share/jupyter/kernels/sagemath/kernel.json

	# replace broken symlinks by good copies (sagemath logo images)
	for file in $(ls sage/ext_data/notebook-ipython); do
		rm ${DESTDIR}/usr/share/jupyter/kernels/sagemath/$file
		cp -a sage/ext_data/notebook-ipython/$file \
			${DESTDIR}/usr/share/jupyter/kernels/sagemath
	done

	# we don't have docs here
	rm ${DESTDIR}/usr/share/jupyter/kernels/sagemath/doc
	# this symlink is shipped in threejs-sage pkg
	rm ${DESTDIR}/usr/share/jupyter/nbextensions/threejs-sage

	# symlink main binary
	vmkdir usr/bin
	ln -s $_bindir/sage ${DESTDIR}/usr/bin/sage-${version}
	ln -s sage-${version} ${DESTDIR}/usr/bin/sage
}

do_check() {
	_lib=$(cd build/lib* && pwd)
	_scripts=$(cd build/scripts* && pwd)

	export PYTHONPATH=$_lib
	export PYTHONDONTWRITEBYTECODE=yes

	# get out of $build_wrksrc, otherwise python picks the wrong sage module
	cd $(mktemp -dp build)

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