db784d883c
Those were removed because they were added to openblas itself. There was an error with that however and it will take some time until the fix makes its way through staging. For the time being, reverting this part of26d5d030fe
will fix the sage build. This commit should be reverted once408eacbc89
is in master.
163 lines
3.2 KiB
Nix
163 lines
3.2 KiB
Nix
{ stdenv
|
|
, lib
|
|
, writeTextFile
|
|
, python
|
|
, sage-src
|
|
, sagelib
|
|
, env-locations
|
|
, gfortran
|
|
, bash
|
|
, coreutils
|
|
, gnused
|
|
, gnugrep
|
|
, binutils
|
|
, pythonEnv
|
|
, python3
|
|
, pkg-config
|
|
, pari
|
|
, gap-libgap-compatible
|
|
, libgap
|
|
, ecl
|
|
, maxima-ecl
|
|
, singular
|
|
, giac
|
|
, palp
|
|
, rWrapper
|
|
, gfan
|
|
, cddlib
|
|
, jmol
|
|
, tachyon
|
|
, glpk
|
|
, eclib
|
|
, sympow
|
|
, nauty
|
|
, sqlite
|
|
, ppl
|
|
, ecm
|
|
, lcalc
|
|
, rubiks
|
|
, flintqs
|
|
, openblas-cblas-pc
|
|
, flint
|
|
, gmp
|
|
, mpfr
|
|
, pynac
|
|
, zlib
|
|
, gsl
|
|
, ntl
|
|
}:
|
|
|
|
let
|
|
runtimepath = (lib.makeBinPath ([
|
|
"@sage-local@"
|
|
"@sage-local@/build"
|
|
pythonEnv
|
|
# empty python env to add python wrapper that clears PYTHONHOME (see
|
|
# wrapper.nix). This is necessary because sage will call the python3 binary
|
|
# (from python2 code). The python2 PYTHONHOME (again set in wrapper.nix)
|
|
# will then confuse python3, if it is not overwritten.
|
|
python3.buildEnv
|
|
gfortran # for inline fortran
|
|
stdenv.cc # for cython
|
|
bash
|
|
coreutils
|
|
gnused
|
|
gnugrep
|
|
binutils.bintools
|
|
pkg-config
|
|
pari
|
|
gap-libgap-compatible
|
|
libgap
|
|
ecl
|
|
maxima-ecl
|
|
singular
|
|
giac
|
|
palp
|
|
rWrapper
|
|
gfan
|
|
cddlib
|
|
jmol
|
|
tachyon
|
|
glpk
|
|
eclib
|
|
sympow
|
|
nauty
|
|
sqlite
|
|
ppl
|
|
ecm
|
|
lcalc
|
|
rubiks
|
|
flintqs
|
|
]
|
|
));
|
|
in
|
|
writeTextFile rec {
|
|
name = "sage-env";
|
|
destination = "/${name}";
|
|
text = ''
|
|
export PKG_CONFIG_PATH='${lib.concatStringsSep ":" (map (pkg: "${pkg}/lib/pkgconfig") [
|
|
# This is only needed in the src/sage/misc/cython.py test and I'm not sure if there's really a use-case
|
|
# for it outside of the tests. However since singular and openblas are runtime dependencies anyways
|
|
# and openblas-cblas-pc is tiny, it doesn't really hurt to include.
|
|
singular
|
|
openblas-cblas-pc
|
|
])
|
|
}'
|
|
export SAGE_ROOT='${sage-src}'
|
|
export SAGE_LOCAL='@sage-local@'
|
|
export SAGE_SHARE='${sagelib}/share'
|
|
orig_path="$PATH"
|
|
export PATH='${runtimepath}'
|
|
|
|
# set dependent vars, like JUPYTER_CONFIG_DIR
|
|
source "${sage-src}/src/bin/sage-env"
|
|
export PATH="${runtimepath}:$orig_path" # sage-env messes with PATH
|
|
|
|
export SAGE_LOGS="$TMPDIR/sage-logs"
|
|
export SAGE_DOC="''${SAGE_DOC_OVERRIDE:-doc-placeholder}"
|
|
export SAGE_DOC_SRC="''${SAGE_DOC_SRC_OVERRIDE:-${sage-src}/src/doc}"
|
|
|
|
# set locations of dependencies
|
|
. ${env-locations}/sage-env-locations
|
|
|
|
# needed for cython
|
|
export CC='${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc'
|
|
# cython needs to find these libraries, otherwise will fail with `ld: cannot find -lflint` or similar
|
|
export LDFLAGS='${
|
|
lib.concatStringsSep " " (map (pkg: "-L${pkg}/lib") [
|
|
flint
|
|
libgap
|
|
glpk
|
|
gmp
|
|
mpfr
|
|
pari
|
|
pynac
|
|
zlib
|
|
eclib
|
|
gsl
|
|
ntl
|
|
jmol
|
|
sympow
|
|
])
|
|
}'
|
|
export CFLAGS='${
|
|
lib.concatStringsSep " " (map (pkg: "-isystem ${pkg}/include") [
|
|
singular
|
|
gmp.dev
|
|
glpk
|
|
flint
|
|
libgap
|
|
pynac
|
|
mpfr.dev
|
|
])
|
|
}'
|
|
|
|
export SAGE_LIB='${sagelib}/${python.sitePackages}'
|
|
|
|
export SAGE_EXTCODE='${sage-src}/src/ext'
|
|
|
|
# for find_library
|
|
export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}:$DYLD_LIBRARY_PATH"
|
|
'';
|
|
}
|