sage: 9.2 -> 9.3.rc4
Co-authored-by: Mauricio Collares <mauricio@collares.org>
This commit is contained in:
parent
9bcbff30c3
commit
090b71f627
|
@ -19,6 +19,10 @@ let
|
||||||
linbox = pkgs.linbox.override { withSage = true; };
|
linbox = pkgs.linbox.override { withSage = true; };
|
||||||
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
|
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sage_docbuild = self.callPackage ./sage_docbuild.nix {
|
||||||
|
inherit sage-src;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,6 +59,7 @@ let
|
||||||
# the env-locations file.
|
# the env-locations file.
|
||||||
sage-env = callPackage ./sage-env.nix {
|
sage-env = callPackage ./sage-env.nix {
|
||||||
sagelib = python3.pkgs.sagelib;
|
sagelib = python3.pkgs.sagelib;
|
||||||
|
sage_docbuild = python3.pkgs.sage_docbuild;
|
||||||
inherit env-locations;
|
inherit env-locations;
|
||||||
inherit python3 singular palp flint pynac pythonEnv maxima-ecl;
|
inherit python3 singular palp flint pynac pythonEnv maxima-ecl;
|
||||||
ecl = maxima-ecl.ecl;
|
ecl = maxima-ecl.ecl;
|
||||||
|
@ -88,6 +93,7 @@ let
|
||||||
|
|
||||||
pythonRuntimeDeps = with python3.pkgs; [
|
pythonRuntimeDeps = with python3.pkgs; [
|
||||||
sagelib
|
sagelib
|
||||||
|
sage_docbuild
|
||||||
cvxopt
|
cvxopt
|
||||||
networkx
|
networkx
|
||||||
service-identity
|
service-identity
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
diff --git a/src/sage/env.py b/src/sage/env.py
|
diff --git a/src/sage/env.py b/src/sage/env.py
|
||||||
index 1ddfc7cfb9..45033d6328 100644
|
index 2908f5d04f..81dfd75c0d 100644
|
||||||
--- a/src/sage/env.py
|
--- a/src/sage/env.py
|
||||||
+++ b/src/sage/env.py
|
+++ b/src/sage/env.py
|
||||||
@@ -203,97 +203,13 @@ var('ARB_LIBRARY', 'arb')
|
@@ -218,93 +218,12 @@ NTL_LIBDIR = var("NTL_LIBDIR")
|
||||||
var('SAGE_BANNER', '')
|
SAGE_BANNER = var("SAGE_BANNER", "")
|
||||||
var('SAGE_IMPORTALL', 'yes')
|
SAGE_IMPORTALL = var("SAGE_IMPORTALL", "yes")
|
||||||
|
|
||||||
-
|
-
|
||||||
-def _get_shared_lib_filename(libname, *additional_libnames):
|
-def _get_shared_lib_path(*libnames: str) -> Optional[str]:
|
||||||
- """
|
- """
|
||||||
- Return the full path to a shared library file installed in
|
- Return the full path to a shared library file installed in
|
||||||
- ``$SAGE_LOCAL/lib`` or the directories associated with the
|
- ``$SAGE_LOCAL/lib`` or the directories associated with the
|
||||||
|
@ -25,80 +25,76 @@ index 1ddfc7cfb9..45033d6328 100644
|
||||||
- For distributions like Debian that use a multiarch layout, we also try the
|
- For distributions like Debian that use a multiarch layout, we also try the
|
||||||
- multiarch lib paths (i.e. ``/usr/lib/<arch>/``).
|
- multiarch lib paths (i.e. ``/usr/lib/<arch>/``).
|
||||||
-
|
-
|
||||||
- This returns ``None`` if the file does not exist.
|
- This returns ``None`` if no matching library file could be found.
|
||||||
-
|
-
|
||||||
- EXAMPLES::
|
- EXAMPLES::
|
||||||
-
|
-
|
||||||
- sage: import sys
|
- sage: import sys
|
||||||
- sage: from fnmatch import fnmatch
|
- sage: from fnmatch import fnmatch
|
||||||
- sage: from sage.env import _get_shared_lib_filename
|
- sage: from sage.env import _get_shared_lib_path
|
||||||
- sage: lib_filename = _get_shared_lib_filename("Singular",
|
- sage: lib_filename = _get_shared_lib_path("Singular", "singular-Singular")
|
||||||
- ....: "singular-Singular")
|
|
||||||
- sage: if sys.platform == 'cygwin':
|
- sage: if sys.platform == 'cygwin':
|
||||||
- ....: pattern = "*/cygSingular-*.dll"
|
- ....: pattern = "*/cygSingular-*.dll"
|
||||||
- ....: elif sys.platform == 'darwin':
|
- ....: elif sys.platform == 'darwin':
|
||||||
- ....: pattern = "*/libSingular.dylib"
|
- ....: pattern = "*/libSingular-*.dylib"
|
||||||
- ....: else:
|
- ....: else:
|
||||||
- ....: pattern = "*/lib*Singular.so"
|
- ....: pattern = "*/lib*Singular-*.so"
|
||||||
- sage: fnmatch(lib_filename, pattern)
|
- sage: fnmatch(str(lib_filename), pattern)
|
||||||
- True
|
- True
|
||||||
- sage: _get_shared_lib_filename("an_absurd_lib") is None
|
- sage: _get_shared_lib_path("an_absurd_lib") is None
|
||||||
- True
|
- True
|
||||||
- """
|
- """
|
||||||
-
|
-
|
||||||
- for libname in (libname,) + additional_libnames:
|
- for libname in libnames:
|
||||||
|
- search_directories: List[Path] = []
|
||||||
|
- patterns: List[str] = []
|
||||||
- if sys.platform == 'cygwin':
|
- if sys.platform == 'cygwin':
|
||||||
- # Later down we take the last matching DLL found, so search
|
- # Later down we take the first matching DLL found, so search
|
||||||
- # SAGE_LOCAL second so that it takes precedence
|
- # SAGE_LOCAL first so that it takes precedence
|
||||||
- bindirs = [
|
- search_directories = [
|
||||||
- sysconfig.get_config_var('BINDIR'),
|
- Path(SAGE_LOCAL) / 'bin',
|
||||||
- os.path.join(SAGE_LOCAL, 'bin')
|
- Path(sysconfig.get_config_var('BINDIR')),
|
||||||
- ]
|
- ]
|
||||||
- pats = ['cyg{}.dll'.format(libname), 'cyg{}-*.dll'.format(libname)]
|
- # Note: The following is not very robust, since if there are multible
|
||||||
- filenames = []
|
|
||||||
- for bindir in bindirs:
|
|
||||||
- for pat in pats:
|
|
||||||
- filenames += glob.glob(os.path.join(bindir, pat))
|
|
||||||
-
|
|
||||||
- # Note: This is not very robust, since if there are multi DLL
|
|
||||||
- # versions for the same library this just selects one more or less
|
- # versions for the same library this just selects one more or less
|
||||||
- # at arbitrary. However, practically speaking, on Cygwin, there
|
- # at arbitrary. However, practically speaking, on Cygwin, there
|
||||||
- # will only ever be one version
|
- # will only ever be one version
|
||||||
- if filenames:
|
- patterns = [f'cyg{libname}.dll', f'cyg{libname}-*.dll']
|
||||||
- return filenames[-1]
|
|
||||||
- else:
|
- else:
|
||||||
- if sys.platform == 'darwin':
|
- if sys.platform == 'darwin':
|
||||||
- ext = 'dylib'
|
- ext = 'dylib'
|
||||||
- else:
|
- else:
|
||||||
- ext = 'so'
|
- ext = 'so'
|
||||||
-
|
-
|
||||||
- libdirs = [
|
- search_directories = [Path(SAGE_LOCAL) / 'lib']
|
||||||
- os.path.join(SAGE_LOCAL, 'lib'),
|
- libdir = sysconfig.get_config_var('LIBDIR')
|
||||||
- sysconfig.get_config_var('LIBDIR')
|
- if libdir is not None:
|
||||||
- ]
|
- libdir = Path(libdir)
|
||||||
- multilib = sysconfig.get_config_var('MULTILIB')
|
- search_directories.append(libdir)
|
||||||
- if multilib:
|
|
||||||
- libdirs.insert(1, os.path.join(libdirs[0], multilib))
|
|
||||||
-
|
-
|
||||||
- for libdir in libdirs:
|
- multiarchlib = sysconfig.get_config_var('MULTIARCH')
|
||||||
- basename = 'lib{}.{}'.format(libname, ext)
|
- if multiarchlib is not None:
|
||||||
- filename = os.path.join(libdir, basename)
|
- search_directories.append(libdir / multiarchlib),
|
||||||
- if os.path.exists(filename):
|
-
|
||||||
- return filename
|
- patterns = [f'lib{libname}.{ext}']
|
||||||
|
-
|
||||||
|
- for directory in search_directories:
|
||||||
|
- for pattern in patterns:
|
||||||
|
- path = next(directory.glob(pattern), None)
|
||||||
|
- if path is not None:
|
||||||
|
- return str(path.resolve())
|
||||||
-
|
-
|
||||||
- # Just return None if no files were found
|
- # Just return None if no files were found
|
||||||
- return None
|
- return None
|
||||||
-
|
|
||||||
-
|
-
|
||||||
# locate singular shared object
|
# locate singular shared object
|
||||||
# On Debian it's libsingular-Singular so try that as well
|
# On Debian it's libsingular-Singular so try that as well
|
||||||
-SINGULAR_SO = _get_shared_lib_filename('Singular', 'singular-Singular')
|
-SINGULAR_SO = var("SINGULAR_SO", _get_shared_lib_path("Singular", "singular-Singular"))
|
||||||
+SINGULAR_SO = '/default'
|
+SINGULAR_SO = var("SINGULAR_SO", '/default')
|
||||||
var('SINGULAR_SO', SINGULAR_SO)
|
|
||||||
|
|
||||||
# locate libgap shared object
|
# locate libgap shared object
|
||||||
-GAP_SO= _get_shared_lib_filename('gap','')
|
-GAP_SO = var("GAP_SO", _get_shared_lib_path("gap", ""))
|
||||||
+GAP_SO = '/default'
|
+GAP_SO = var("GAP_SO", '/default')
|
||||||
var('GAP_SO', GAP_SO)
|
|
||||||
|
|
||||||
# post process
|
# post process
|
||||||
|
if ' ' in DOT_SAGE:
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/src/sage_setup/docbuild/__init__.py b/src/sage_setup/docbuild/__init__.py
|
diff --git a/src/sage_docbuild/__init__.py b/src/sage_docbuild/__init__.py
|
||||||
index 73a078e619..059125c59f 100644
|
index 79005b903a..fbe6fe2595 100644
|
||||||
--- a/src/sage_setup/docbuild/__init__.py
|
--- a/src/sage_docbuild/__init__.py
|
||||||
+++ b/src/sage_setup/docbuild/__init__.py
|
+++ b/src/sage_docbuild/__init__.py
|
||||||
@@ -86,27 +86,6 @@ def builder_helper(type):
|
@@ -85,27 +85,6 @@ def builder_helper(type):
|
||||||
"""
|
"""
|
||||||
Returns a function which builds the documentation for
|
Returns a function which builds the documentation for
|
||||||
output type ``type``.
|
output type ``type``.
|
||||||
|
@ -11,16 +11,16 @@ index 73a078e619..059125c59f 100644
|
||||||
-
|
-
|
||||||
- Check that :trac:`25161` has been resolved::
|
- Check that :trac:`25161` has been resolved::
|
||||||
-
|
-
|
||||||
- sage: from sage_setup.docbuild import DocBuilder, setup_parser
|
- sage: from sage_docbuild import DocBuilder, setup_parser
|
||||||
- sage: DocBuilder._options = setup_parser().parse_args([])[0] # builder_helper needs _options to be set
|
- sage: DocBuilder._options = setup_parser().parse_args([])[0] # builder_helper needs _options to be set
|
||||||
-
|
-
|
||||||
- sage: import sage_setup.docbuild.sphinxbuild
|
- sage: import sage_docbuild.sphinxbuild
|
||||||
- sage: def raiseBaseException():
|
- sage: def raiseBaseException():
|
||||||
- ....: raise BaseException("abort pool operation")
|
- ....: raise BaseException("abort pool operation")
|
||||||
- sage: original_runsphinx, sage_setup.docbuild.sphinxbuild.runsphinx = sage_setup.docbuild.sphinxbuild.runsphinx, raiseBaseException
|
- sage: original_runsphinx, sage_docbuild.sphinxbuild.runsphinx = sage_docbuild.sphinxbuild.runsphinx, raiseBaseException
|
||||||
-
|
-
|
||||||
- sage: from sage_setup.docbuild import builder_helper, build_ref_doc
|
- sage: from sage_docbuild import builder_helper, build_ref_doc
|
||||||
- sage: from sage_setup.docbuild import _build_many as build_many
|
- sage: from sage_docbuild import _build_many as build_many
|
||||||
- sage: helper = builder_helper("html")
|
- sage: helper = builder_helper("html")
|
||||||
- sage: try:
|
- sage: try:
|
||||||
- ....: build_many(build_ref_doc, [("docname", "en", "html", {})])
|
- ....: build_many(build_ref_doc, [("docname", "en", "html", {})])
|
||||||
|
@ -30,24 +30,24 @@ index 73a078e619..059125c59f 100644
|
||||||
"""
|
"""
|
||||||
def f(self, *args, **kwds):
|
def f(self, *args, **kwds):
|
||||||
output_dir = self._output_dir(type)
|
output_dir = self._output_dir(type)
|
||||||
@@ -128,10 +107,9 @@ def builder_helper(type):
|
@@ -127,10 +106,9 @@ def builder_helper(type):
|
||||||
logger.debug(build_command)
|
logger.debug(build_command)
|
||||||
|
|
||||||
# Run Sphinx with Sage's special logger
|
# Run Sphinx with Sage's special logger
|
||||||
- sys.argv = ["sphinx-build"] + build_command.split()
|
- sys.argv = ["sphinx-build"] + build_command.split()
|
||||||
- from .sphinxbuild import runsphinx
|
- from .sphinxbuild import runsphinx
|
||||||
+ args = "python3 -um sage_setup.docbuild.sphinxbuild -N".split() + build_command.split()
|
+ args = "python3 -um sage_docbuild.sphinxbuild -N".split() + build_command.split()
|
||||||
try:
|
try:
|
||||||
- runsphinx()
|
- runsphinx()
|
||||||
+ subprocess.check_call(args)
|
+ subprocess.check_call(args)
|
||||||
except Exception:
|
except Exception:
|
||||||
if ABORT_ON_ERROR:
|
if ABORT_ON_ERROR:
|
||||||
raise
|
raise
|
||||||
diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py
|
diff --git a/src/sage_docbuild/sphinxbuild.py b/src/sage_docbuild/sphinxbuild.py
|
||||||
index fe7eba43b2..463790965c 100644
|
index f58f6c61d7..ef51a55411 100644
|
||||||
--- a/src/sage_setup/docbuild/sphinxbuild.py
|
--- a/src/sage_docbuild/sphinxbuild.py
|
||||||
+++ b/src/sage_setup/docbuild/sphinxbuild.py
|
+++ b/src/sage_docbuild/sphinxbuild.py
|
||||||
@@ -321,3 +321,8 @@ def runsphinx():
|
@@ -326,3 +326,8 @@ def runsphinx():
|
||||||
sys.stderr = saved_stderr
|
sys.stderr = saved_stderr
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
diff --git a/src/sage/interfaces/sympy.py b/src/sage/interfaces/sympy.py
|
|
||||||
index cc35a42a9f..6e577d5d8d 100644
|
|
||||||
--- a/src/sage/interfaces/sympy.py
|
|
||||||
+++ b/src/sage/interfaces/sympy.py
|
|
||||||
@@ -397,7 +397,7 @@ def _sympysage_rf(self):
|
|
||||||
sage: from sympy import Symbol, rf
|
|
||||||
sage: _ = var('x, y')
|
|
||||||
sage: rfxy = rf(Symbol('x'), Symbol('y'))
|
|
||||||
- sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma')
|
|
||||||
+ sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma', piecewise=False)
|
|
||||||
sage: assert rising_factorial(x,y) == rfxy._sage_()
|
|
||||||
"""
|
|
||||||
from sage.arith.all import rising_factorial
|
|
||||||
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
|
|
||||||
index 7c18ec1efa..c2619ac42d 100644
|
|
||||||
--- a/src/sage/symbolic/expression.pyx
|
|
||||||
+++ b/src/sage/symbolic/expression.pyx
|
|
||||||
@@ -955,6 +955,6 @@ cdef class Expression(CommutativeRingElement):
|
|
||||||
sage: unicode_art(13 - I)
|
|
||||||
13 - ⅈ
|
|
||||||
sage: unicode_art(1.3 - I)
|
|
||||||
- 1.3 - 1.0⋅ⅈ
|
|
||||||
+ 1.3 - ⅈ
|
|
||||||
sage: unicode_art(cos(I))
|
|
||||||
cosh(1)
|
|
|
@ -2,6 +2,7 @@
|
||||||
, lib
|
, lib
|
||||||
, writeTextFile
|
, writeTextFile
|
||||||
, sagelib
|
, sagelib
|
||||||
|
, sage_docbuild
|
||||||
, env-locations
|
, env-locations
|
||||||
, gfortran
|
, gfortran
|
||||||
, bash
|
, bash
|
||||||
|
@ -191,6 +192,7 @@ writeTextFile rec {
|
||||||
# for find_library
|
# for find_library
|
||||||
export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
|
export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
|
||||||
'';
|
'';
|
||||||
} // {
|
} // { # equivalent of `passthru`, which `writeTextFile` doesn't support
|
||||||
lib = sagelib; # equivalent of `passthru`, which `writeTextFile` doesn't support
|
lib = sagelib;
|
||||||
|
docbuild = sage_docbuild;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,14 @@ let
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "9.2";
|
version = "9.3.rc4";
|
||||||
pname = "sage-src";
|
pname = "sage-src";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sagemath";
|
owner = "sagemath";
|
||||||
repo = "sage";
|
repo = "sage";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "103j8d5x6szl9fxaz0dvdi4y47q1af9h9y5hmjh2xayi62qmp5ql";
|
sha256 = "sha256-LDY07By2j6JagkgT9zeDJ93+m2/oXXEnDRTDzmR8ftk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Patches needed because of particularities of nix or the way this is packaged.
|
# Patches needed because of particularities of nix or the way this is packaged.
|
||||||
|
@ -53,14 +53,6 @@ stdenv.mkDerivation rec {
|
||||||
# Parallelize docubuild using subprocesses, fixing an isolation issue. See
|
# Parallelize docubuild using subprocesses, fixing an isolation issue. See
|
||||||
# https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
|
# https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
|
||||||
./patches/sphinx-docbuild-subprocesses.patch
|
./patches/sphinx-docbuild-subprocesses.patch
|
||||||
|
|
||||||
# Register sorted dict pprinter earlier (https://trac.sagemath.org/ticket/31053)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta4";
|
|
||||||
name = "register-pretty-printer-earlier.patch";
|
|
||||||
rev = "d658230ce06ca19f4a3b3a4576297ee82f2d2151";
|
|
||||||
sha256 = "sha256-9mPUV7K5PoLDH2vVaYaOfvDLDpmxU0Aj7m/eaXYotDs=";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Since sage unfortunately does not release bugfix releases, packagers must
|
# Since sage unfortunately does not release bugfix releases, packagers must
|
||||||
|
@ -70,31 +62,6 @@ stdenv.mkDerivation rec {
|
||||||
# To help debug the transient error in
|
# To help debug the transient error in
|
||||||
# https://trac.sagemath.org/ticket/23087 when it next occurs.
|
# https://trac.sagemath.org/ticket/23087 when it next occurs.
|
||||||
./patches/configurationpy-error-verbose.patch
|
./patches/configurationpy-error-verbose.patch
|
||||||
|
|
||||||
# fix intermittent errors in Sage 9.2's psage.py (this patch is
|
|
||||||
# already included in Sage 9.3): https://trac.sagemath.org/ticket/30730
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.2.rc2";
|
|
||||||
name = "fix-psage-is-locked.patch";
|
|
||||||
rev = "75df605f216ddc7b6ca719be942d666b241520e9";
|
|
||||||
sha256 = "0g9pl1wbb3sgs26d3bvv70cpa77sfskylv4kd255y1794f1fgk4q";
|
|
||||||
})
|
|
||||||
|
|
||||||
# fix intermittent errors in sagespawn.pyx: https://trac.sagemath.org/ticket/31052
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.2";
|
|
||||||
name = "sagespawn-implicit-casting.patch";
|
|
||||||
rev = "2959ac792ebd6107fe87c9af1541083de5ba02d6";
|
|
||||||
sha256 = "sha256-bWIpEGir9Kawak5CJegBMNcHm/CqhWmdru+emeSsvO0=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# fix intermittent errors in doctest/test.py: https://trac.sagemath.org/ticket/26912
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta8";
|
|
||||||
name = "set-cysignals-crash-ndebug.patch";
|
|
||||||
rev = "ca5257a5d0f32efc9f8f07e126020856270b1a18";
|
|
||||||
sha256 = "sha256-KViw63xE3O0eUiOYzoxNrr4NL+csql9GPJLDJCf/EZs=";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Patches needed because of package updates. We could just pin the versions of
|
# Patches needed because of package updates. We could just pin the versions of
|
||||||
|
@ -111,114 +78,29 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
# ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests
|
# ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests
|
||||||
./patches/ignore-cmp-deprecation.patch
|
./patches/ignore-cmp-deprecation.patch
|
||||||
|
|
||||||
# adapt sage's Image class to pillow 8.0.1 (https://trac.sagemath.org/ticket/30971)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta2";
|
|
||||||
name = "pillow-8.0.1-update.patch";
|
|
||||||
rev = "f05f2d0aac9c4b5abe68105cee2cc7f2c8461847";
|
|
||||||
sha256 = "sha256-uY2UlgSd5hhOUUukB4Xc3Gjy0/e7p/qyq9jdvz10IOs=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# don't use deprecated numpy type aliases (https://trac.sagemath.org/ticket/31364)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta7";
|
|
||||||
name = "dont-use-deprecated-numpy-type-aliases.patch";
|
|
||||||
rev = "dfdef60515d4a4269e82d91280f76a7fdf10bf97";
|
|
||||||
sha256 = "sha256-77/3LkT5J7DQN8IPlGJKB6ZcJPaF7xwje06JNns+0AE=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# fix test output with sympy 1.7 (https://trac.sagemath.org/ticket/30985)
|
|
||||||
./patches/sympy-1.7-update.patch
|
|
||||||
|
|
||||||
# upgrade arb to 2.18.1 (https://trac.sagemath.org/ticket/28623)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta3";
|
|
||||||
name = "arb-2.18.1-update.patch";
|
|
||||||
rev = "0c9c4ed35c2eaf34ae0d19387c07b7f460e4abce";
|
|
||||||
sha256 = "sha256-CjOJIsyyVCziAfvE6pWSihPO35IZMcY2/taXAsqhPLY=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# giac 1.6.0-47 update (https://trac.sagemath.org/ticket/30537)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta7";
|
|
||||||
name = "giac-1.6.0-47-update.patch";
|
|
||||||
rev = "f05720bf63dfaf33a4e3b6d3ed2c2c0ec46b5d31";
|
|
||||||
sha256 = "sha256-gDUq+84eXd5GxLBWUSI61GMJpBF2KX4LBVOt3mS1NF8=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# Make gcd/lcm interact better with pari and gmpy2 (https://trac.sagemath.org/ticket/30849)
|
|
||||||
# needed for pari 2.13.1 update, which we will do in the future
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta0";
|
|
||||||
name = "make-gcd-lcm-interact-better-with-pari-and-gmpy2.patch";
|
|
||||||
rev = "75c1516f0abb9e6f8c335e38e4031f6ef674ed30";
|
|
||||||
sha256 = "sha256-RukkieIZcXNrju904H2oyGKdtpdE+9vNzvyjN2IBNg0=";
|
|
||||||
})
|
|
||||||
|
|
||||||
# cypari 2.1.2 update (https://trac.sagemath.org/ticket/31029)
|
|
||||||
(fetchSageDiff {
|
|
||||||
base = "9.3.beta3";
|
|
||||||
name = "cypari-2.1.2-update.patch";
|
|
||||||
rev = "b9aadfd08e81d74ca7c229bb80eb853b592887d0";
|
|
||||||
sha256 = "sha256-eKaMy7kpu+YKdL8bPStgocxBCTfc2Z/10RrGy2LENFw=";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
|
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# make sure shebangs etc are fixed, but sage-python23 still works
|
|
||||||
find . -type f -exec sed \
|
|
||||||
-e 's/sage-python23/python3/g' \
|
|
||||||
-i {} \;
|
|
||||||
|
|
||||||
echo '#!${runtimeShell}
|
|
||||||
python3 "$@"' > build/bin/sage-python23
|
|
||||||
|
|
||||||
# Make sure sage can at least be imported without setting any environment
|
# Make sure sage can at least be imported without setting any environment
|
||||||
# variables. It won't be close to feature complete though.
|
# variables. It won't be close to feature complete though.
|
||||||
sed -i \
|
sed -i \
|
||||||
"s|var('SAGE_ROOT'.*|var('SAGE_ROOT', '$out')|" \
|
"s|var(\"SAGE_ROOT\".*|var(\"SAGE_ROOT\", \"$out\")|" \
|
||||||
src/sage/env.py
|
src/sage/env.py
|
||||||
|
|
||||||
# Do not use sage-env-config (generated by ./configure).
|
# src/doc/en/reference/spkg/conf.py expects index.rst in its directory,
|
||||||
# Instead variables are set manually.
|
# a list of external packages in the sage distribution (build/pkgs)
|
||||||
echo '# do nothing' > src/bin/sage-env-config
|
# generated by the bootstrap script (which we don't run). this is not
|
||||||
'';
|
# relevant for other distributions, so remove it.
|
||||||
|
rm src/doc/en/reference/spkg/conf.py
|
||||||
|
sed -i "/spkg/d" src/doc/en/reference/index.rst
|
||||||
|
|
||||||
# Test src/doc/en/reference/spkg/conf.py will fail if
|
# the bootstrap script also generates installation instructions for
|
||||||
# src/doc/en/reference/spkg/index.rst is not generated. It is
|
# arch, debian, fedora, cygwin and homebrew using data from build/pkgs.
|
||||||
# generated by src/doc/bootstrap, so I've copied the relevant part
|
# we don't run the bootstrap script, so disable including the generated
|
||||||
# here. An alternative would be to create an empty
|
# files. docbuilding fails otherwise.
|
||||||
# src/doc/en/reference/spkg/index.rst file.
|
sed -i "/literalinclude/d" src/doc/en/installation/source.rst
|
||||||
configurePhase = ''
|
|
||||||
OUTPUT_DIR="src/doc/en/reference/spkg"
|
|
||||||
mkdir -p "$OUTPUT_DIR"
|
|
||||||
OUTPUT_INDEX="$OUTPUT_DIR"/index.rst
|
|
||||||
cat > "$OUTPUT_INDEX" <<EOF
|
|
||||||
|
|
||||||
External Packages
|
|
||||||
=================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
EOF
|
|
||||||
for PKG_SCRIPTS in build/pkgs/*; do
|
|
||||||
if [ -d "$PKG_SCRIPTS" ]; then
|
|
||||||
PKG_BASE=$(basename "$PKG_SCRIPTS")
|
|
||||||
if [ -f "$PKG_SCRIPTS"/SPKG.rst ]; then
|
|
||||||
# Instead of just copying, we may want to call
|
|
||||||
# a version of sage-spkg-info to format extra information.
|
|
||||||
cp "$PKG_SCRIPTS"/SPKG.rst "$OUTPUT_DIR"/$PKG_BASE.rst
|
|
||||||
echo >> "$OUTPUT_INDEX" " $PKG_BASE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
cat >> "$OUTPUT_INDEX" <<EOF
|
|
||||||
.. include:: ../footer.txt
|
|
||||||
EOF
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = "# do nothing";
|
buildPhase = "# do nothing";
|
||||||
|
|
20
pkgs/applications/science/math/sage/sage_docbuild.nix
Normal file
20
pkgs/applications/science/math/sage/sage_docbuild.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ buildPythonPackage
|
||||||
|
, sage-src
|
||||||
|
, sphinx
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
version = src.version;
|
||||||
|
pname = "sage_docbuild";
|
||||||
|
src = sage-src;
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
sphinx
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
cd build/pkgs/sage_docbuild/src
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = false; # we will run tests in sagedoc.nix
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
|
||||||
jmol
|
jmol
|
||||||
cddlib
|
cddlib
|
||||||
] ++ (with python3.pkgs; [
|
] ++ (with python3.pkgs; [
|
||||||
|
sage_docbuild
|
||||||
psutil
|
psutil
|
||||||
future
|
future
|
||||||
sphinx
|
sphinx
|
||||||
|
@ -44,13 +45,6 @@ stdenv.mkDerivation rec {
|
||||||
chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE"
|
chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# src/doc/bootstrap generates installation instructions for
|
|
||||||
# arch, debian, fedora, cygwin and homebrew. as a hack, disable
|
|
||||||
# including the generated files.
|
|
||||||
sed -i "/literalinclude/d" $SAGE_DOC_SRC_OVERRIDE/en/installation/source.rst
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
|
export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
|
||||||
export HOME="$TMPDIR/sage_home"
|
export HOME="$TMPDIR/sage_home"
|
||||||
|
@ -59,13 +53,13 @@ stdenv.mkDerivation rec {
|
||||||
# needed to link them in the sage docs using intersphinx
|
# needed to link them in the sage docs using intersphinx
|
||||||
export PPLPY_DOCS=${python3.pkgs.pplpy.doc}/share/doc/pplpy
|
export PPLPY_DOCS=${python3.pkgs.pplpy.doc}/share/doc/pplpy
|
||||||
|
|
||||||
# adapted from src/doc/bootstrap
|
# adapted from src/doc/bootstrap (which we don't run)
|
||||||
OUTPUT_DIR="$SAGE_DOC_SRC_OVERRIDE/en/reference/repl"
|
OUTPUT_DIR="$SAGE_DOC_SRC_OVERRIDE/en/reference/repl"
|
||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
OUTPUT="$OUTPUT_DIR/options.txt"
|
OUTPUT="$OUTPUT_DIR/options.txt"
|
||||||
${sage-with-env}/bin/sage -advanced > "$OUTPUT"
|
${sage-with-env}/bin/sage -advanced > "$OUTPUT"
|
||||||
|
|
||||||
${sage-with-env}/bin/sage -python -m sage_setup.docbuild \
|
${sage-with-env}/bin/sage --docbuild \
|
||||||
--mathjax \
|
--mathjax \
|
||||||
--no-pdf-links \
|
--no-pdf-links \
|
||||||
all html
|
all html
|
||||||
|
|
|
@ -63,7 +63,6 @@ assert (!blas.isILP64) && (!lapack.isILP64);
|
||||||
# `sage-tests` and will not have html docs without `sagedoc`.
|
# `sage-tests` and will not have html docs without `sagedoc`.
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
format = "other";
|
|
||||||
version = src.version;
|
version = src.version;
|
||||||
pname = "sagelib";
|
pname = "sagelib";
|
||||||
src = sage-src;
|
src = sage-src;
|
||||||
|
@ -74,6 +73,7 @@ buildPythonPackage rec {
|
||||||
jupyter_core
|
jupyter_core
|
||||||
pkg-config
|
pkg-config
|
||||||
pip # needed to query installed packages
|
pip # needed to query installed packages
|
||||||
|
ecl
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -130,7 +130,7 @@ buildPythonPackage rec {
|
||||||
sqlite
|
sqlite
|
||||||
];
|
];
|
||||||
|
|
||||||
buildPhase = ''
|
preBuild = ''
|
||||||
export SAGE_ROOT="$PWD"
|
export SAGE_ROOT="$PWD"
|
||||||
export SAGE_LOCAL="$SAGE_ROOT"
|
export SAGE_LOCAL="$SAGE_ROOT"
|
||||||
export SAGE_SHARE="$SAGE_LOCAL/share"
|
export SAGE_SHARE="$SAGE_LOCAL/share"
|
||||||
|
@ -146,15 +146,13 @@ buildPythonPackage rec {
|
||||||
mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
|
mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
|
||||||
mkdir -p "var/lib/sage/installed"
|
mkdir -p "var/lib/sage/installed"
|
||||||
|
|
||||||
source build/bin/sage-dist-helpers
|
# src/setup.py should not be used, see https://trac.sagemath.org/ticket/31377#comment:124
|
||||||
cd src
|
cd build/pkgs/sagelib/src
|
||||||
|
|
||||||
${python.interpreter} -u setup.py --no-user-cfg build
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
postInstall = ''
|
||||||
${python.interpreter} -u setup.py --no-user-cfg install --prefix=$out
|
|
||||||
|
|
||||||
rm -r "$out/${python.sitePackages}/sage/cython_debug"
|
rm -r "$out/${python.sitePackages}/sage/cython_debug"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
doCheck = false; # we will run tests in sage-tests.nix
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue