2018-07-21 01:44:44 +01:00
|
|
|
{ sage-src
|
2019-06-18 10:50:41 +01:00
|
|
|
, env-locations
|
2018-04-24 22:53:36 +01:00
|
|
|
, perl
|
|
|
|
, buildPythonPackage
|
2021-12-24 14:05:37 +00:00
|
|
|
, m4
|
2018-04-24 22:53:36 +01:00
|
|
|
, arb
|
2020-03-31 15:47:18 +01:00
|
|
|
, blas
|
|
|
|
, lapack
|
2018-04-24 22:53:36 +01:00
|
|
|
, brial
|
|
|
|
, cliquer
|
|
|
|
, cypari2
|
|
|
|
, cysignals
|
|
|
|
, cython
|
2021-11-29 12:43:39 +00:00
|
|
|
, lisp-compiler
|
2018-04-24 22:53:36 +01:00
|
|
|
, eclib
|
|
|
|
, ecm
|
|
|
|
, flint
|
|
|
|
, gd
|
2020-10-22 09:20:17 +01:00
|
|
|
, giac
|
2018-04-24 22:53:36 +01:00
|
|
|
, givaro
|
|
|
|
, glpk
|
|
|
|
, gsl
|
|
|
|
, iml
|
|
|
|
, jinja2
|
|
|
|
, lcalc
|
|
|
|
, lrcalc
|
2019-01-16 23:28:37 +00:00
|
|
|
, gap
|
2018-04-24 22:53:36 +01:00
|
|
|
, linbox
|
|
|
|
, m4ri
|
|
|
|
, m4rie
|
2021-07-16 21:13:01 +01:00
|
|
|
, memory-allocator
|
2018-04-24 22:53:36 +01:00
|
|
|
, libmpc
|
|
|
|
, mpfi
|
|
|
|
, ntl
|
|
|
|
, numpy
|
|
|
|
, pari
|
2021-03-20 09:43:23 +00:00
|
|
|
, pkgconfig # the python module, not the pkg-config alias
|
2019-02-09 09:33:50 +00:00
|
|
|
, pkg-config
|
2018-04-24 22:53:36 +01:00
|
|
|
, planarity
|
|
|
|
, ppl
|
2021-09-14 02:56:34 +01:00
|
|
|
, primecountpy
|
2018-04-24 22:53:36 +01:00
|
|
|
, python
|
|
|
|
, ratpoints
|
|
|
|
, readline
|
|
|
|
, rankwidth
|
|
|
|
, symmetrica
|
|
|
|
, zn_poly
|
|
|
|
, fflas-ffpack
|
|
|
|
, boost
|
|
|
|
, singular
|
|
|
|
, pip
|
|
|
|
, jupyter_core
|
2021-09-14 02:56:34 +01:00
|
|
|
, sage-setup
|
2018-08-05 15:50:06 +01:00
|
|
|
, libhomfly
|
|
|
|
, libbraiding
|
2019-01-27 10:28:39 +00:00
|
|
|
, gmpy2
|
|
|
|
, pplpy
|
2020-10-22 09:20:17 +01:00
|
|
|
, sqlite
|
2021-12-24 14:05:37 +00:00
|
|
|
, jupyter-client
|
|
|
|
, ipywidgets
|
|
|
|
, mpmath
|
|
|
|
, rpy2
|
|
|
|
, fpylll
|
|
|
|
, scipy
|
|
|
|
, sympy
|
|
|
|
, matplotlib
|
|
|
|
, pillow
|
|
|
|
, ipykernel
|
|
|
|
, networkx
|
2022-03-19 02:16:18 +00:00
|
|
|
, ptyprocess
|
|
|
|
, lrcalc-python
|
|
|
|
, sphinx # TODO: this is in setup.cfg, should we override it?
|
2018-04-24 22:53:36 +01:00
|
|
|
}:
|
|
|
|
|
2020-04-20 21:50:55 +01:00
|
|
|
assert (!blas.isILP64) && (!lapack.isILP64);
|
2020-03-31 15:47:18 +01:00
|
|
|
|
2018-11-12 22:28:29 +00:00
|
|
|
# This is the core sage python package. Everything else is just wrappers gluing
|
|
|
|
# stuff together. It is not very useful on its own though, since it will not
|
|
|
|
# find many of its dependencies without `sage-env`, will not be tested without
|
|
|
|
# `sage-tests` and will not have html docs without `sagedoc`.
|
|
|
|
|
2018-04-24 22:53:36 +01:00
|
|
|
buildPythonPackage rec {
|
2018-11-12 22:28:29 +00:00
|
|
|
version = src.version;
|
2019-08-15 13:41:18 +01:00
|
|
|
pname = "sagelib";
|
2018-04-24 22:53:36 +01:00
|
|
|
src = sage-src;
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
iml
|
|
|
|
perl
|
|
|
|
jupyter_core
|
2019-02-09 09:33:50 +00:00
|
|
|
pkg-config
|
2021-09-14 02:56:34 +01:00
|
|
|
sage-setup
|
2019-03-03 12:25:40 +00:00
|
|
|
pip # needed to query installed packages
|
2021-11-29 12:43:39 +00:00
|
|
|
lisp-compiler
|
2021-12-24 14:05:37 +00:00
|
|
|
m4
|
2018-04-24 22:53:36 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
gd
|
|
|
|
readline
|
2019-03-03 12:25:40 +00:00
|
|
|
iml
|
2018-04-24 22:53:36 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
propagatedBuildInputs = [
|
|
|
|
cypari2
|
|
|
|
jinja2
|
|
|
|
numpy
|
2021-03-20 09:43:23 +00:00
|
|
|
pkgconfig
|
2018-04-24 22:53:36 +01:00
|
|
|
boost
|
|
|
|
arb
|
|
|
|
brial
|
|
|
|
cliquer
|
2021-11-29 12:43:39 +00:00
|
|
|
lisp-compiler
|
2018-04-24 22:53:36 +01:00
|
|
|
eclib
|
|
|
|
ecm
|
|
|
|
fflas-ffpack
|
|
|
|
flint
|
2020-10-22 09:20:17 +01:00
|
|
|
giac
|
2018-04-24 22:53:36 +01:00
|
|
|
givaro
|
|
|
|
glpk
|
|
|
|
gsl
|
|
|
|
lcalc
|
2019-01-16 23:28:37 +00:00
|
|
|
gap
|
2018-04-24 22:53:36 +01:00
|
|
|
libmpc
|
|
|
|
linbox
|
|
|
|
lrcalc
|
|
|
|
m4ri
|
|
|
|
m4rie
|
2021-07-16 21:13:01 +01:00
|
|
|
memory-allocator
|
2018-04-24 22:53:36 +01:00
|
|
|
mpfi
|
|
|
|
ntl
|
2020-03-31 15:47:18 +01:00
|
|
|
blas
|
|
|
|
lapack
|
2018-04-24 22:53:36 +01:00
|
|
|
pari
|
|
|
|
planarity
|
|
|
|
ppl
|
2021-09-14 02:56:34 +01:00
|
|
|
primecountpy
|
2018-04-24 22:53:36 +01:00
|
|
|
rankwidth
|
|
|
|
ratpoints
|
|
|
|
singular
|
|
|
|
symmetrica
|
|
|
|
zn_poly
|
|
|
|
pip
|
|
|
|
cython
|
|
|
|
cysignals
|
2018-08-05 15:50:06 +01:00
|
|
|
libhomfly
|
|
|
|
libbraiding
|
2019-01-27 10:28:39 +00:00
|
|
|
gmpy2
|
|
|
|
pplpy
|
2020-10-22 09:20:17 +01:00
|
|
|
sqlite
|
2021-12-24 14:05:37 +00:00
|
|
|
mpmath
|
|
|
|
rpy2
|
|
|
|
scipy
|
|
|
|
sympy
|
|
|
|
matplotlib
|
|
|
|
pillow
|
|
|
|
ipykernel
|
|
|
|
fpylll
|
|
|
|
networkx
|
|
|
|
jupyter-client
|
|
|
|
ipywidgets
|
2022-03-19 02:16:18 +00:00
|
|
|
ptyprocess
|
|
|
|
lrcalc-python
|
2021-12-24 14:05:37 +00:00
|
|
|
sphinx
|
2018-04-24 22:53:36 +01:00
|
|
|
];
|
|
|
|
|
2021-04-02 22:10:36 +01:00
|
|
|
preBuild = ''
|
2018-04-24 22:53:36 +01:00
|
|
|
export SAGE_ROOT="$PWD"
|
|
|
|
export SAGE_LOCAL="$SAGE_ROOT"
|
|
|
|
export SAGE_SHARE="$SAGE_LOCAL/share"
|
|
|
|
|
2019-06-18 10:50:41 +01:00
|
|
|
# set locations of dependencies (needed for nbextensions like threejs)
|
|
|
|
. ${env-locations}/sage-env-locations
|
|
|
|
|
|
|
|
export JUPYTER_PATH="$SAGE_LOCAL/jupyter"
|
2018-04-24 22:53:36 +01:00
|
|
|
export PATH="$SAGE_ROOT/build/bin:$SAGE_ROOT/src/bin:$PATH"
|
|
|
|
|
|
|
|
export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
|
|
|
|
|
|
|
|
mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
|
|
|
|
mkdir -p "var/lib/sage/installed"
|
|
|
|
|
2021-12-24 14:05:37 +00:00
|
|
|
cd build/pkgs/sagelib
|
|
|
|
|
|
|
|
# some files, like Pipfile, pyproject.toml, requirements.txt and setup.cfg
|
|
|
|
# are generated by the bootstrap script using m4. these can fetch data from
|
|
|
|
# build/pkgs, either directly or via sage-get-system-packages.
|
|
|
|
sed -i '/sage_conf/d' src/setup.cfg.m4
|
|
|
|
sed -i '/sage_conf/d' src/requirements.txt.m4
|
2022-04-07 11:16:52 +01:00
|
|
|
|
|
|
|
# version lower bounds are useful, but upper bounds are a hassle because
|
|
|
|
# Sage tests already catch any relevant API breakage.
|
|
|
|
# according to the discussion at https://trac.sagemath.org/ticket/33520,
|
|
|
|
# upper bounds will be less noisy starting from Sage 9.6.
|
2022-03-19 02:16:18 +00:00
|
|
|
sed -i 's/==0.5.1/>=0.5.1/' ../ptyprocess/install-requires.txt
|
2022-04-07 11:16:52 +01:00
|
|
|
sed -i 's/, <[^, ]*//' ../*/install-requires.txt
|
|
|
|
|
2021-12-24 14:05:37 +00:00
|
|
|
for infile in src/*.m4; do
|
|
|
|
if [ -f "$infile" ]; then
|
|
|
|
outfile="src/$(basename $infile .m4)"
|
|
|
|
m4 "$infile" > "$outfile"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
cd src
|
2018-04-24 22:53:36 +01:00
|
|
|
'';
|
|
|
|
|
2021-04-02 22:10:36 +01:00
|
|
|
postInstall = ''
|
2018-04-24 22:53:36 +01:00
|
|
|
rm -r "$out/${python.sitePackages}/sage/cython_debug"
|
|
|
|
'';
|
2021-04-02 22:10:36 +01:00
|
|
|
|
|
|
|
doCheck = false; # we will run tests in sage-tests.nix
|
2018-04-24 22:53:36 +01:00
|
|
|
}
|