diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-01-15 10:30:44 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-01-15 10:30:44 +0000 |
commit | e0794be8a0d11e90461e5a9c85012a36b93ec976 (patch) | |
tree | efd9cbc55ea3322867bf601c4d536758a3dd5fcc /nixpkgs/pkgs/applications/science/math/sage/sage-src.nix | |
parent | 3538874082ded7647b1ccec0343c7c1e882cfef3 (diff) | |
parent | 1a57d96edd156958b12782e8c8b6a374142a7248 (diff) | |
download | nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.gz nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.bz2 nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.lz nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.xz nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.zst nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.zip |
Merge commit '1a57d96edd156958b12782e8c8b6a374142a7248'
Diffstat (limited to 'nixpkgs/pkgs/applications/science/math/sage/sage-src.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/science/math/sage/sage-src.nix | 136 |
1 files changed, 63 insertions, 73 deletions
diff --git a/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix b/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix index 4791d12450a9..8948621a025a 100644 --- a/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix +++ b/nixpkgs/pkgs/applications/science/math/sage/sage-src.nix @@ -10,44 +10,23 @@ # all get the same sources with the same patches applied. stdenv.mkDerivation rec { - version = "8.9"; + version = "9.2"; pname = "sage-src"; src = fetchFromGitHub { owner = "sagemath"; repo = "sage"; rev = version; - sha256 = "1bwga58x3s8z42w5h51c232f91ndsc1861dlb1glhax3pn0rhn3a"; + sha256 = "103j8d5x6szl9fxaz0dvdi4y47q1af9h9y5hmjh2xayi62qmp5ql"; }; # Patches needed because of particularities of nix or the way this is packaged. # The goal is to upstream all of them and get rid of this list. nixPatches = [ - # https://trac.sagemath.org/ticket/25358 - (fetchpatch { - name = "safe-directory-test-without-patch.patch"; - url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=dc673c17555efca611f68398d5013b66e9825463"; - sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7"; - }) - - # `is_unitary` test in `matrix_double_dense.pyx` fails with some BLAS implementations - # https://trac.sagemath.org/ticket/29297 should be included in 9.1 - (fetchpatch { - name = "is_unitary-special-case.patch"; - url = "https://git.sagemath.org/sage.git/patch?id=cc3eb9ffa991e328b09028d32aab7e7cc2ddbb6a"; - sha256 = "0jq4w8hnp5c9q99011ldr4n3knvm1rx2g85z0hidv3i9x868p0ay"; - }) - - # Unfortunately inclusion in upstream sage was rejected. Instead the bug was - # fixed in python, but of course not backported to 2.7. So we'll probably - # have to keep this around until 2.7 is deprecated. - # https://trac.sagemath.org/ticket/25316 - # https://github.com/python/cpython/pull/7476 - ./patches/python-5755-hotpatch.patch - # Make sure py2/py3 tests are only run when their expected context (all "sage" # tests) are also run. That is necessary to test dochtml individually. See # https://trac.sagemath.org/ticket/26110 for an upstream discussion. + # TODO: Determine if it is still necessary. ./patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch # Fixes a potential race condition which can lead to transient doctest failures. @@ -61,10 +40,17 @@ stdenv.mkDerivation rec { # https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE ./patches/sphinx-docbuild-subprocesses.patch - # Fix doctest failures with docutils 0.15: - # https://nix-cache.s3.amazonaws.com/log/dzmzrb2zvardsmpy7idg7djkizmkzdhs-sage-tests-8.9.drv - # https://trac.sagemath.org/ticket/28856#comment:19 - ./patches/docutils-0.15.patch + # Sage's workaround to pretty print dicts (in + # src/sage/doctest/forker.py:init_sage) runs too late (after + # controller.load_environment(), which imports sage.all.*) to to + # affect sage.sandpiles.Sandpile{Config,Divisor}'s pretty printer. + # Due to the sandpiles module being lazily loaded, this only + # affects the first run (subsequent runs read from an import cache + # at ~/.sage/cache and are not affected), which is probably why + # other distributions don't hit this bug. This breaks two sandpile + # tests, so do the workaround a little bit earlier. + # https://trac.sagemath.org/ticket/31053 + ./patches/register-pretty-printer-earlier.patch ]; # Since sage unfortunately does not release bugfix releases, packagers must @@ -74,6 +60,17 @@ stdenv.mkDerivation rec { # To help debug the transient error in # https://trac.sagemath.org/ticket/23087 when it next occurs. ./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 + (fetchpatch { + name = "fix-psage-is-locked.patch"; + url = "https://git.sagemath.org/sage.git/patch/?id=75df605f216ddc7b6ca719be942d666b241520e9"; + sha256 = "0g9pl1wbb3sgs26d3bvv70cpa77sfskylv4kd255y1794f1fgk4q"; + }) + + # fix intermittent errors in sagespawn.pyx: https://trac.sagemath.org/ticket/31052 + ./patches/sagespawn-implicit-casting.patch ]; # Patches needed because of package updates. We could just pin the versions of @@ -96,55 +93,16 @@ stdenv.mkDerivation rec { } // builtins.removeAttrs args [ "rev" "base" ]) ); in [ - # New glpk version has new warnings, filter those out until upstream sage has found a solution - # Should be fixed with glpk > 4.65. - # https://trac.sagemath.org/ticket/24824 - ./patches/pari-stackwarn.patch # not actually necessary since the pari upgrade, but necessary for the glpk patch to apply - (fetchpatch { - url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/dt-version-glpk-4.65-ignore-warnings.patch"; - sha256 = "0b9293v73wb4x13wv5zwyjgclc01zn16msccfzzi6znswklgvddp"; - stripLen = 1; - }) - # After updating smypow to (https://trac.sagemath.org/ticket/3360) we can # now set the cache dir to be withing the .sage directory. This is not # strictly necessary, but keeps us from littering in the user's HOME. ./patches/sympow-cache.patch - # https://trac.sagemath.org/ticket/28472 - (fetchpatch { - name = "eclib-20190909.patch"; - url = "https://git.sagemath.org/sage.git/patch?id=d27dc479a5772d59e4bc85d805b6ffd595284f1d"; - sha256 = "1nf1s9y7n30lhlbdnam7sghgaq9nasmv96415gl5jlcf7a3hlxk3"; - }) - # ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests ./patches/ignore-cmp-deprecation.patch - # Werkzeug has deprecated ImmutableDict, but it is still used in legacy - # sagenb. That's no big issue since sagenb will be removed soon anyways. - ./patches/ignore-werkzeug-immutable-dict-deprecation.patch - - # threejs r109 (#28560) - (fetchpatch { - name = "threejs-r109.patch"; - url = "https://git.sagemath.org/sage.git/patch?id=fcc11d6effa39f375bc5f4ea5831fb7a2f2767da"; - sha256 = "0hnmc8ld3bblks0hcjvjjaydkgwdr1cs3dbl2ys4gfq964pjgqwc"; - }) - - # https://trac.sagemath.org/ticket/28911 - (fetchpatch { - name = "sympy-1.5.patch"; - url = "https://git.sagemath.org/sage.git/patch/?h=c6d0308db15efd611211d26cfcbefbd180fc0831"; - sha256 = "0nwai2jr22h49km4hx3kwafs3mzsc5kwsv7mqwjf6ibwfx2bbgyq"; - }) - - # https://trac.sagemath.org/ticket/29313 (patch from ArchLinux) - (fetchpatch { - name = "pari-2.11.3.patch"; - url = "https://aur.archlinux.org/cgit/aur.git/plain/sagemath-pari-2.11.3.patch?h=sagemath-git&id=02e1d58bd1cd70935d69a4990469d18be6bd2c43"; - sha256 = "0z07444zvijyw96d11q7j81pvg7ysd6ycf1bbbjr6za9y74hv7d2"; - }) + # adapt sage's Image class to pillow 8.0.1 (https://trac.sagemath.org/ticket/30971) + ./patches/pillow-update.patch ]; patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches; @@ -152,16 +110,16 @@ stdenv.mkDerivation rec { postPatch = '' # make sure shebangs etc are fixed, but sage-python23 still works find . -type f -exec sed \ - -e 's/sage-python23/python/g' \ + -e 's/sage-python23/python3/g' \ -i {} \; echo '#!${runtimeShell} - python "$@"' > build/bin/sage-python23 + python3 "$@"' > build/bin/sage-python23 # Make sure sage can at least be imported without setting any environment # variables. It won't be close to feature complete though. sed -i \ - "s|var('SAGE_LOCAL',.*|var('SAGE_LOCAL', '$out/src')|" \ + "s|var('SAGE_ROOT'.*|var('SAGE_ROOT', '$out')|" \ src/sage/env.py # Do not use sage-env-config (generated by ./configure). @@ -169,7 +127,39 @@ stdenv.mkDerivation rec { echo '# do nothing' > src/bin/sage-env-config ''; - configurePhase = "# do nothing"; + # Test src/doc/en/reference/spkg/conf.py will fail if + # src/doc/en/reference/spkg/index.rst is not generated. It is + # generated by src/doc/bootstrap, so I've copied the relevant part + # here. An alternative would be to create an empty + # src/doc/en/reference/spkg/index.rst file. + 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"; |