void-packages/srcpkgs/sagemath/template
Gonzalo Tornaría b34d0bbd28 sagemath: rebuild for singular update
Also fix doctests for pkg updates:
 - matplotlib 3.7
 - ipython 8.12
 - nauty 2.8.6
 - pythran 0.12.1

And add support for:
 - networkx 3.1

We use patches from upstream sagemath to fix all of these.

We also add pythran and sphinx to checkdepends to make sure doctests
pass when they are installed.
2023-05-01 00:15:47 +02:00

118 lines
4.1 KiB
Bash

# Template file for 'sagemath'
pkgname=sagemath
version=9.8
revision=2
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 pythran python3-Sphinx"
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}
}