Merge pull request #140889 from collares/sage-9.5

sage: 9.4 -> 9.5
This commit is contained in:
7c6f434c 2022-01-31 13:24:26 +00:00 committed by GitHub
commit 9b76122d71
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 347 additions and 822 deletions

View file

@ -14,13 +14,17 @@ let
# `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
sagelib = self.callPackage ./sagelib.nix {
inherit flint arb;
inherit sage-src env-locations pynac singular;
inherit sage-src env-locations singular;
inherit (maxima) lisp-compiler;
linbox = pkgs.linbox.override { withSage = true; };
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
};
sage_docbuild = self.callPackage ./sage_docbuild.nix {
sage-docbuild = self.callPackage ./python-modules/sage-docbuild.nix {
inherit sage-src;
};
sage-setup = self.callPackage ./python-modules/sage-setup.nix {
inherit sage-src;
};
};
@ -58,9 +62,9 @@ let
# the env-locations file.
sage-env = callPackage ./sage-env.nix {
sagelib = python3.pkgs.sagelib;
sage_docbuild = python3.pkgs.sage_docbuild;
sage-docbuild = python3.pkgs.sage-docbuild;
inherit env-locations;
inherit python3 singular palp flint pynac pythonEnv maxima;
inherit python3 singular palp flint pythonEnv maxima;
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
};
@ -74,7 +78,7 @@ let
sage-with-env = callPackage ./sage-with-env.nix {
inherit python3 pythonEnv;
inherit sage-env;
inherit pynac singular maxima;
inherit singular maxima;
inherit three;
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
};
@ -91,7 +95,7 @@ let
pythonRuntimeDeps = with python3.pkgs; [
sagelib
sage_docbuild
sage-docbuild
cvxopt
networkx
service-identity
@ -132,9 +136,6 @@ let
};
};
# *not* to confuse with the python package "pynac"
pynac = pkgs.pynac.override { inherit singular flint; };
# With openblas (64 bit), the tests fail the same way as when sage is build with
# openblas instead of openblasCompat. Apparently other packages somehow use flints
# blas when it is available. Alternative would be to override flint to use

View file

@ -0,0 +1,46 @@
diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
index 01f32fb8e4..4d83dc7b47 100644
--- a/src/sage/doctest/control.py
+++ b/src/sage/doctest/control.py
@@ -1253,6 +1253,7 @@ class DocTestController(SageObject):
self.log("Using --optional=" + self._optional_tags_string())
available_software._allow_external = self.options.optional is True or 'external' in self.options.optional
+ available_software._autodetect_safe = self.options.optional is True or 'sage' in self.options.optional
self.log("Features to be detected: " + ','.join(available_software.detectable()))
self.add_files()
self.expand_files_into_sources()
diff --git a/src/sage/doctest/external.py b/src/sage/doctest/external.py
index 84dae19ea5..badc61466e 100644
--- a/src/sage/doctest/external.py
+++ b/src/sage/doctest/external.py
@@ -409,6 +409,7 @@ class AvailableSoftware(object):
[]
"""
self._allow_external = True
+ self._autodetect_safe = True
# For multiprocessing of doctests, the data self._seen should be
# shared among subprocesses. Thus we use Array class from the
# multiprocessing module.
@@ -430,6 +431,8 @@ class AvailableSoftware(object):
sage: 'internet' in available_software # random, optional - internet
True
"""
+ if not self._autodetect_safe:
+ return False
try:
idx = self._indices[item]
except KeyError:
diff --git a/src/sage/features/sagemath.py b/src/sage/features/sagemath.py
index 433338766d..233623b14a 100644
--- a/src/sage/features/sagemath.py
+++ b/src/sage/features/sagemath.py
@@ -12,7 +12,7 @@ class sagemath_doc_html(StaticFile):
EXAMPLES::
- sage: from sage.features.sagemath import sagemath_doc_html
+ sage: from sage.features.sagemath import sagemath_doc_html # optional - sagemath_doc_html
sage: sagemath_doc_html().is_present() # optional - sagemath_doc_html
FeatureTestResult('sagemath_doc_html', True)
"""

View file

@ -1,26 +0,0 @@
From f5ea42a7aaed7611fb55b65897b9fcf2b7bcf97e Mon Sep 17 00:00:00 2001
From: Timo Kaufmann <timokau@zoho.com>
Date: Sun, 21 Oct 2018 17:52:40 +0200
Subject: [PATCH] Only test py2/py3 optional tests when all of sage is tested
---
src/sage/doctest/control.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
index 2d93841e50..6d156e29a1 100644
--- a/src/sage/doctest/control.py
+++ b/src/sage/doctest/control.py
@@ -375,7 +375,8 @@ class DocTestController(SageObject):
if not optionaltag_regex.search(o):
raise ValueError('invalid optional tag {!r}'.format(o))
- options.optional |= auto_optional_tags
+ if "sage" in options.optional:
+ options.optional |= auto_optional_tags
self.options = options
--
2.28.0

View file

@ -1,8 +1,8 @@
diff --git a/src/sage/env.py b/src/sage/env.py
index 95980cc2df..37107a30e1 100644
index c4953cfa65..47b880f9ad 100644
--- a/src/sage/env.py
+++ b/src/sage/env.py
@@ -227,93 +227,12 @@ OPENMP_CXXFLAGS = var("OPENMP_CXXFLAGS", "")
@@ -244,81 +244,8 @@ os.environ['MPMATH_SAGE'] = '1'
SAGE_BANNER = var("SAGE_BANNER", "")
SAGE_IMPORTALL = var("SAGE_IMPORTALL", "yes")
@ -29,20 +29,12 @@ index 95980cc2df..37107a30e1 100644
-
- EXAMPLES::
-
- sage: import sys
- sage: from fnmatch import fnmatch
- sage: from sage.env import _get_shared_lib_path
- sage: lib_filename = _get_shared_lib_path("Singular", "singular-Singular")
- sage: if sys.platform == 'cygwin':
- ....: pattern = "*/cygSingular-*.dll"
- ....: elif sys.platform == 'darwin':
- ....: pattern = "*/libSingular-*.dylib"
- ....: else:
- ....: pattern = "*/lib*Singular-*.so"
- sage: fnmatch(str(lib_filename), pattern)
- sage: "gap" in _get_shared_lib_path("gap")
- True
- sage: _get_shared_lib_path("an_absurd_lib") is None
- True
-
- """
-
- for libname in libnames:
@ -87,11 +79,6 @@ index 95980cc2df..37107a30e1 100644
- # Just return None if no files were found
- return None
-
# locate singular shared object
# On Debian it's libsingular-Singular so try that as well
-SINGULAR_SO = var("SINGULAR_SO", _get_shared_lib_path("Singular", "singular-Singular"))
+SINGULAR_SO = var("SINGULAR_SO", '/default')
# locate libgap shared object
-GAP_SO = var("GAP_SO", _get_shared_lib_path("gap", ""))
+GAP_SO = var("GAP_SO", '/default')

View file

@ -0,0 +1,58 @@
diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd
index 7794c9edc3..1753277b1f 100644
--- a/src/sage/libs/linbox/conversion.pxd
+++ b/src/sage/libs/linbox/conversion.pxd
@@ -177,9 +177,8 @@ cdef inline Vector_integer_dense new_sage_vector_integer_dense(P, DenseVector_in
- v -- linbox vector
"""
cdef Vector_integer_dense res = P()
- cdef cppvector[Integer] * vec = &v.refRep()
cdef size_t i
for i in range(<size_t> res._degree):
- mpz_set(res._entries[i], vec[0][i].get_mpz_const())
+ mpz_set(res._entries[i], v.getEntry(i).get_mpz_const())
return res
diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd
index 9112d151f8..dcc482960c 100644
--- a/src/sage/libs/linbox/linbox.pxd
+++ b/src/sage/libs/linbox/linbox.pxd
@@ -32,7 +32,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_double Field
ctypedef double Element
DenseMatrix_Modular_double(Field F, size_t m, size_t n)
- DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n)
+ DenseMatrix_Modular_double(Field F, size_t m, size_t n, Element*)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)
@@ -42,7 +42,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_float Field
ctypedef float Element
DenseMatrix_Modular_float(Field F, size_t m, size_t n)
- DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n)
+ DenseMatrix_Modular_float(Field F, size_t m, size_t n, Element*)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)
@@ -101,7 +101,6 @@ cdef extern from "linbox/vector/vector.h":
DenseVector_integer (Field &F)
DenseVector_integer (Field &F, long& m)
DenseVector_integer (Field &F, cppvector[Integer]&)
- cppvector[Element]& refRep()
size_t size()
void resize(size_t)
void resize(size_t n, const Element&)
diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi
index 010365d76f..3d60726ff9 100644
--- a/src/sage/matrix/matrix_modn_dense_template.pxi
+++ b/src/sage/matrix/matrix_modn_dense_template.pxi
@@ -219,7 +219,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_
return 0,[]
cdef ModField *F = new ModField(<long>modulus)
- cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols)
+ cdef DenseMatrix *A = new DenseMatrix(F[0], <Py_ssize_t>nrows, <Py_ssize_t>ncols, <ModField.Element*>entries)
cdef Py_ssize_t r = reducedRowEchelonize(A[0])
cdef Py_ssize_t i,j
for i in range(nrows):

View file

@ -1,8 +1,8 @@
diff --git a/src/sage_docbuild/__init__.py b/src/sage_docbuild/__init__.py
index 79005b903a..fbe6fe2595 100644
index 8a5c1a19d2..21fd192642 100644
--- a/src/sage_docbuild/__init__.py
+++ b/src/sage_docbuild/__init__.py
@@ -85,27 +85,6 @@ def builder_helper(type):
@@ -89,27 +89,6 @@ def builder_helper(type):
"""
Returns a function which builds the documentation for
output type ``type``.
@ -12,7 +12,7 @@ index 79005b903a..fbe6fe2595 100644
- Check that :trac:`25161` has been resolved::
-
- 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([]) # builder_helper needs _options to be set
-
- sage: import sage_docbuild.sphinxbuild
- sage: def raiseBaseException():
@ -30,7 +30,7 @@ index 79005b903a..fbe6fe2595 100644
"""
def f(self, *args, **kwds):
output_dir = self._output_dir(type)
@@ -127,10 +106,9 @@ def builder_helper(type):
@@ -131,10 +110,9 @@ def builder_helper(type):
logger.debug(build_command)
# Run Sphinx with Sage's special logger
@ -44,10 +44,10 @@ index 79005b903a..fbe6fe2595 100644
if ABORT_ON_ERROR:
raise
diff --git a/src/sage_docbuild/sphinxbuild.py b/src/sage_docbuild/sphinxbuild.py
index f58f6c61d7..ef51a55411 100644
index d917c3e9d4..551cc8028a 100644
--- a/src/sage_docbuild/sphinxbuild.py
+++ b/src/sage_docbuild/sphinxbuild.py
@@ -326,3 +326,8 @@ def runsphinx():
@@ -327,3 +327,8 @@ def runsphinx():
sys.stderr = saved_stderr
sys.stdout.flush()
sys.stderr.flush()

View file

@ -0,0 +1,28 @@
{ lib
, buildPythonPackage
, sage-src
, sphinx
}:
buildPythonPackage rec {
version = src.version;
pname = "sage-docbuild";
src = sage-src;
propagatedBuildInputs = [
sphinx
];
preBuild = ''
cd pkgs/sage-docbuild
'';
doCheck = false; # we will run tests in sagedoc.nix
meta = with lib; {
description = "Build system of the Sage documentation";
homepage = "https://www.sagemath.org";
license = licenses.gpl2Plus;
maintainers = teams.sage.members;
};
}

View file

@ -0,0 +1,28 @@
{ lib
, buildPythonPackage
, sage-src
, pkgconfig # the python module, not the pkg-config alias
}:
buildPythonPackage rec {
version = src.version;
pname = "sage-setup";
src = sage-src;
buildInputs = [
pkgconfig
];
preBuild = ''
cd pkgs/sage-setup
'';
doCheck = false; # sagelib depends on sage-setup, but sage-setup's tests depend on sagelib
meta = with lib; {
description = "Build system of the Sage library";
homepage = "https://www.sagemath.org";
license = licenses.gpl2Plus;
maintainers = teams.sage.members;
};
}

View file

@ -2,7 +2,7 @@
, lib
, writeTextFile
, sagelib
, sage_docbuild
, sage-docbuild
, env-locations
, gfortran
, bash
@ -45,11 +45,10 @@
, flint
, gmp
, mpfr
, pynac
, zlib
, gsl
, ntl
, jdk8
, jdk
, less
}:
@ -60,8 +59,6 @@ assert (!blas.isILP64) && (!lapack.isILP64);
# dependencies.
let
jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
runtimepath = (lib.makeBinPath ([
"@sage-local@"
"@sage-local@/build"
@ -163,7 +160,6 @@ writeTextFile rec {
gmp
mpfr
pari
pynac
zlib
eclib
gsl
@ -179,7 +175,6 @@ writeTextFile rec {
glpk
flint
gap
pynac
mpfr.dev
])
}'
@ -193,5 +188,5 @@ writeTextFile rec {
'';
} // { # equivalent of `passthru`, which `writeTextFile` doesn't support
lib = sagelib;
docbuild = sage_docbuild;
docbuild = sage-docbuild;
}

View file

@ -57,24 +57,29 @@ let
);
in
stdenv.mkDerivation rec {
version = "9.4";
version = "9.5";
pname = "sage-src";
src = fetchFromGitHub {
owner = "sagemath";
repo = "sage";
rev = version;
sha256 = "sha256-jqkr4meG02KbTCMsGvyr1UbosS4ZuUJhPXU/InuS+9A=";
sha256 = "sha256-uOsLpsGpcIGs8Xr82X82MElnTB2E908gytyNJ8WVD5w=";
};
# 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 = [
# 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
# Since https://trac.sagemath.org/ticket/32174, some external features are
# marked as "safe" and get auto-detected, in which case the corresponding
# optional tests are executed. We disable auto-detection of safe features if
# we are doctesting with an "--optional" argument which does not include
# "sage", because tests from autodetected features expect context provided
# by running basic sage tests. This is necessary to test sagemath_doc_html
# separately. See https://trac.sagemath.org/ticket/26110 for a related
# upstream discussion (from the time when Sage still had optional py2/py3
# tags).
./patches/Only-test-external-software-when-all-of-sage-is.patch
# Fixes a potential race condition which can lead to transient doctest failures.
./patches/fix-ecl-race.patch
@ -117,46 +122,6 @@ stdenv.mkDerivation rec {
# Let's just assume warnings are expected until we update to 4.27.0.
./patches/fonttools-deprecation-warnings.patch
# https://trac.sagemath.org/ticket/32305
(fetchSageDiff {
base = "9.4";
name = "networkx-2.6-upgrade.patch";
rev = "9808325853ba9eb035115e5b056305a1c9d362a0";
sha256 = "sha256-gJSqycCtbAVr5qnVEbHFUvIuTOvaxFIeffpzd6nH4DE=";
})
# https://trac.sagemath.org/ticket/32420
(fetchSageDiff {
base = "9.5.beta2";
name = "sympy-1.9-update.patch";
rev = "beed4e16aff32e47d0c3b1c58cb1e2f4c38590f8";
sha256 = "sha256-3eJPfWfCrCAQ5filIn7FbzjRQeO9QyTIVl/HyRuqFtE=";
})
# https://trac.sagemath.org/ticket/32567
(fetchSageDiff {
base = "9.5.beta2";
name = "arb-2.21.0-update.patch";
rev = "eb3304dd521a3d5a9334e747a08e234bbf16b4eb";
sha256 = "sha256-XDkaY4VQGyESXI6zuD7nCNzyQOl/fmBFvAESH9+RRvk=";
})
# https://trac.sagemath.org/ticket/32797
(fetchSageDiff {
base = "9.5.beta7";
name = "pari-2.13.3-update.patch";
rev = "f5f7a86908daf60b25e66e6a189c51ada7e0a732";
sha256 = "sha256-H/caGx3q4KcdsyGe+ojV9bUTQ5y0siqM+QHgDbeEnbw=";
})
# https://trac.sagemath.org/ticket/32909
(fetchSageDiff {
base = "9.5.beta7";
name = "matplotlib-3.5-deprecation-warnings.patch";
rev = "a5127dc56fdf5c2e82f6bc781cfe78dbd04e97b7";
sha256 = "sha256-p23qUu9mgEUbdbX6cy7ArxZAtpcFjCKbgyxN4jWvj1o=";
})
# https://trac.sagemath.org/ticket/32968
(fetchSageDiff {
base = "9.5.beta8";
@ -164,6 +129,11 @@ stdenv.mkDerivation rec {
rev = "fc84f82f52b6f05f512cb359ec7c100f93cf8841";
sha256 = "sha256-bBbfdcnw/9LUOlY8rHJRbFJEdMXK4shosqTNaobTS1Q=";
})
# Upstream has not upgraded to linbox 1.7 yet because it conflicts with
# pre-4.2.1p3 versions of Singular, but we don't have this problem.
# https://trac.sagemath.org/ticket/32959
./patches/linbox-1.7-upgrade.patch
];
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;

View file

@ -18,7 +18,6 @@
, eclib
, ntl
, ecm
, pynac
, pythonEnv
}:
@ -36,7 +35,6 @@ let
blas lapack
singular
three
pynac
giac
gap
pari
@ -126,6 +124,10 @@ stdenv.mkDerivation rec {
cp -r src/bin "$out/bin"
cp -r build/bin "$out/build/bin"
# sage assumes the existence of sage-src-env-config.in means it's being executed in-tree. in this case, it
# adds SAGE_SRC/bin to PATH, breaking our wrappers
rm "$out/bin"/*.in "$out/build/bin"/*.in
cp -f '${sage-env}/sage-env' "$out/bin/sage-env"
substituteInPlace "$out/bin/sage-env" \
--subst-var-by sage-local "$out"

View file

@ -62,7 +62,8 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab";
license = licenses.gpl2;
homepage = "https://www.sagemath.org";
license = licenses.gpl2Plus;
maintainers = teams.sage.members;
};
}

View file

@ -1,20 +0,0 @@
{ 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
}

View file

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
jmol
cddlib
] ++ (with python3.pkgs; [
sage_docbuild
sage-docbuild
psutil
future
sphinx
@ -83,6 +83,6 @@ stdenv.mkDerivation rec {
doCheck = true;
checkPhase = ''
${sage-with-env}/bin/sage -t --optional=dochtml --all
${sage-with-env}/bin/sage -t --optional=sagemath_doc_html --all
'';
}

View file

@ -2,6 +2,7 @@
, env-locations
, perl
, buildPythonPackage
, m4
, arb
, blas
, lapack
@ -37,7 +38,7 @@
, pkg-config
, planarity
, ppl
, pynac
, primecountpy
, python
, ratpoints
, readline
@ -49,11 +50,24 @@
, singular
, pip
, jupyter_core
, sage-setup
, libhomfly
, libbraiding
, gmpy2
, pplpy
, sqlite
, jupyter-client
, ipywidgets
, mpmath
, rpy2
, fpylll
, scipy
, sympy
, matplotlib
, pillow
, ipykernel
, networkx
, sphinx # TODO: this is in setup.cfg, bug should we override it?
}:
assert (!blas.isILP64) && (!lapack.isILP64);
@ -73,8 +87,10 @@ buildPythonPackage rec {
perl
jupyter_core
pkg-config
sage-setup
pip # needed to query installed packages
lisp-compiler
m4
];
buildInputs = [
@ -116,7 +132,7 @@ buildPythonPackage rec {
pari
planarity
ppl
pynac
primecountpy
rankwidth
ratpoints
singular
@ -130,6 +146,18 @@ buildPythonPackage rec {
gmpy2
pplpy
sqlite
mpmath
rpy2
scipy
sympy
matplotlib
pillow
ipykernel
fpylll
networkx
jupyter-client
ipywidgets
sphinx
];
preBuild = ''
@ -148,8 +176,24 @@ buildPythonPackage rec {
mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
mkdir -p "var/lib/sage/installed"
# src/setup.py should not be used, see https://trac.sagemath.org/ticket/31377#comment:124
cd build/pkgs/sagelib/src
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 's/==2.1.0rc1/>=2.1.1/' ../gmpy2/install-requires.txt
sed -i 's/, <3.4//' ../rpy2/install-requires.txt
sed -i 's/, <4.3//' ../sphinx/install-requires.txt
sed -i '/sage_conf/d' src/setup.cfg.m4
sed -i '/sage_conf/d' src/requirements.txt.m4
for infile in src/*.m4; do
if [ -f "$infile" ]; then
outfile="src/$(basename $infile .m4)"
m4 "$infile" > "$outfile"
fi
done
cd src
'';
postInstall = ''

View file

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, gmp, bison, perl, ncurses, readline, coreutils, pkg-config
, lib
, fetchpatch
, autoreconfHook
, buildPackages
, sharutils
, file
, flint
@ -11,6 +11,7 @@
, lrcalc
, doxygen
, graphviz
, latex2html
# upstream generates docs with texinfo 4. later versions of texinfo
# use letters instead of numbers for post-appendix chapters, and we
# want it to match the upstream format because sage depends on it.
@ -22,66 +23,25 @@
stdenv.mkDerivation rec {
pname = "singular";
version = "4.2.0p2";
version = "4.3.0";
# since the tarball does not contain tests or documentation (and
# there is no separate tests tarball for 4.2.0), we fetch from
# GitHub.
# since the tarball does not contain tests, we fetch from GitHub.
src = fetchFromGitHub {
owner = "Singular";
repo = "Singular";
# 4.2.0p2 is not tagged, but the tarball matches the commit below.
rev = "6f68939ddf612d96e3caaaaa8275f77613ac1da8";
sha256 = "sha256-BJNzYylzDqD/5YjzjxPRb/c96tYiuGy9Y+A7qf3ZSG8=";
# if a release is tagged it will be in the format below.
# rev = "Release${lib.replaceStrings ["."] ["-"] version}";
# if a release is tagged (which sometimes does not happen), it will
# be in the format below.
# rev = "Release-${lib.replaceStrings ["."] ["-"] version}";
rev = "d895b0f1f543c61eb03adddad20f08655a419d4e";
sha256 = "sha256-c5Qr6VUuPKjfw8fowjJJz3oGAyUwo/K0WeMvU5djzVA=";
# the repository's .gitattributes file contains the lines "/Tst/
# export-ignore" and "/doc/ export-ignore" so some directories are
# not included in the tarball downloaded by fetchzip. setting
# fetchSubmodules works around this by using fetchgit instead of
# fetchzip.
fetchSubmodules = true;
# not included in the tarball downloaded by fetchzip.
forceFetchGit = true;
};
patches = [
# fix timeouts when docbuilding with >= 64 cpus
# https://github.com/Singular/Singular/issues/1117
./vspace-MAX_PROCESS.patch
# add aarch64 support to cpu-check.m4. copied from redhat.
./redhat-aarch64.patch
# the newest version of ax-prog-cc-for-build.m4 seems to trigger
# linker errors. see
# https://github.com/alsa-project/alsa-firmware/issues/3 for a
# related issue.
./use-older-ax-prog-cc-for-build.patch
# https://github.com/Singular/Singular/issues/1086
(fetchpatch {
name = "schubert-lib-fails-with-too-many-cpus.patch";
url = "https://github.com/Singular/Singular/commit/3cda50c00a849455efa2502e56596955491a353a.patch";
sha256 = "sha256-fgYd+2vT32w5Ki8kKx6PfZn2e4QSJcYWOwEFXtc+lSA=";
})
] ++ lib.optionals enableDocs [
# singular supports building without 4ti2, bertini, normaliz or
# topcom just fine, but the docbuilding does not skip manual pages
# tagged as depending on those binaries (probably a bug in
# doc2tex.pl::HandleLib, since it seems to ignore "-exclude"
# argumens). skip them manually.
./disable-docs-for-optional-unpackaged-deps.patch
# fix some non-ascii characters in doc/decodegb.doc
(fetchpatch {
name = "decodegb-ascii.patch";
url = "https://github.com/Singular/Singular/commit/36966d9009de572ee4dbc487f3e5744098fe91be.patch";
sha256 = "sha256-9WcEov/oOQRC584ag6WVHFwY2aCjbM75HWyvZoEwppw=";
})
];
configureFlags = [
"--with-ntl=${ntl}"
"--disable-pyobject-module"
@ -114,6 +74,7 @@ stdenv.mkDerivation rec {
] ++ lib.optionals enableGfanlib [
cddlib
];
nativeBuildInputs = [
bison
perl
@ -123,9 +84,11 @@ stdenv.mkDerivation rec {
] ++ lib.optionals enableDocs [
doxygen
graphviz
latex2html
texinfo4
texlive.combined.scheme-small
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
preAutoreconf = ''
find . -type f -readable -writable -exec sed \
@ -137,21 +100,14 @@ stdenv.mkDerivation rec {
hardeningDisable = lib.optional stdenv.isi686 "stackprotector";
# The Makefile actually defaults to `make install` anyway
buildPhase = ''
# do nothing
'';
doCheck = true; # very basic checks, does not test any libraries
installPhase = ''
mkdir -p "$out"
cp -r Singular/LIB "$out/lib"
make install
'' + lib.optionalString enableDocs ''
# Sage uses singular.hlp (which is not in the tarball)
# Sage uses singular.info, which is not installed by default
mkdir -p $out/share/info
cp doc/singular.hlp $out/share/info
cp doc/singular.info $out/share/info
'' + ''
# Make sure patchelf picks up the right libraries
rm -rf libpolys factory resources omalloc Singular
@ -211,5 +167,6 @@ stdenv.mkDerivation rec {
license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4
homepage = "http://www.singular.uni-kl.de";
downloadPage = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/";
mainProgram = "Singular";
};
}

View file

@ -1,112 +0,0 @@
commit 9e8b044d982e132cf35a106a1cc0cf7e77b27f7c
Author: Mauricio Collares <mauricio@collares.org>
Date: Thu Apr 15 20:33:21 2021 -0300
Disable manual sections using optional packages not yet in Nixpkgs
* normaliz.lib depends on normaliz.
* polymake.lib depends on topcom.
* recover.lib depends on bertini.
* sing4ti2.lib depends on 4ti2.
* tateProdCplxNegGrad.lib uses multigrading.lib, which depends on 4ti2.
diff --git a/doc/singular.doc b/doc/singular.doc
index 64b969d39..e704f95f0 100644
--- a/doc/singular.doc
+++ b/doc/singular.doc
@@ -407,7 +407,6 @@ LIB "all.lib";
* nfmodsyz_lib:: Syzygy modules of submodules of free modules over algebraic number fields
* noether_lib:: Noether normalization of an ideal
* normal_lib:: procedure for normalization
-* normaliz_lib:: integral closure, normalization for monomial ideals, toric ideals
* pointid_lib:: factorized lex GB of the vanishing ideal of a set of points
* primdec_lib:: procedures for primary decomposition
* primdecint_lib:: primary decomposition over the integers
@@ -416,7 +415,6 @@ LIB "all.lib";
* reesclos_lib:: Rees Algebra and integral closure of an ideal
* rstandard_lib:: Janet bases and border bases for ideals
* sagbi_lib:: Subalgebras bases Analogous to Groebner bases for ideals
-* sing4ti2_lib:: interface to program 4ti2
* symodstd_lib:: Groebner bases for symmetric ideals
* toric_lib:: toric ideals
@end menu
@@ -521,10 +519,6 @@ LIB "all.lib";
@node normal_lib
@subsection normal_lib
@c lib normal.lib
-@c ---------------------------------------------------------
-@node normaliz_lib
-@subsection normaliz_lib
-@c lib normaliz.lib tag:normaliz
@c ----------------------------------------------------------
@node pointid_lib
@subsection pointid_lib
@@ -558,10 +552,6 @@ LIB "all.lib";
@subsection sagbi_lib
@c lib sagbi.lib
@c ---------------------------------------------------------
-@node sing4ti2_lib
-@subsection sing4ti2_lib
-@c lib sing4ti2.lib tag:sing4ti2
-@c ----------------------------------------------------------
@node symodstd_lib
@subsection symodstd_lib
@c lib symodstd.lib
@@ -873,7 +863,6 @@ iniD, reslist, sumlist, dividelist, createlist
* solve_lib:: procedures to solve polynomial systems
* triang_lib:: procedures for decomposing zero-dimensional ideals
* ntsolve_lib:: one real solution of polynomial systems (Newton iteration)
-* recover_lib:: Hybrid numerical/symbolical algorithms
* rootisolation_lib:: real root isolation with intervals
* signcond_lib:: computing realizable sign conditions
* zeroset_lib:: procedures for roots and factorization
@@ -904,10 +893,6 @@ iniD, reslist, sumlist, dividelist, createlist
@subsection ntsolve_lib
@c lib ntsolve.lib
@c ---------------------------------------------------------
-@node recover_lib
-@subsection recover_lib
-@c lib recover.lib tag:bertini
-@c ----------------------------------------------------------
@node rootisolation_lib
@subsection rootisolation_lib
@c lib rootisolation.lib
@@ -1108,7 +1093,6 @@ but not for serious computations.
* cimonom_lib:: complete intersection for toric ideals
* gfan_lib:: A gfanlib interface for Singular
* gitfan_lib:: Compute GIT-fans
-* polymake_lib:: interface to TOPCOM
* realizationMatroids_lib:: Realizability for Tropical Fan Curves
* tropical_lib:: interface to gfan
* tropicalNewton_lib:: Newton polygons in tropical geometry
@@ -1125,10 +1109,7 @@ but not for serious computations.
@node gitfan_lib
@subsection gitfan_lib
@c lib gitfan.lib
-@c ----------------------------------------------------------
-@node polymake_lib
-@subsection polymake_lib
-@c lib polymake.lib tag:topcom
+
@c ----------------------------------------------------------
@node realizationMatroids_lib
@subsection realizationMatroids_lib
@@ -1219,7 +1200,6 @@ Comments should be send to the author of the library directly.
* stanleyreisner_lib:: T1 and T2 for a general Stanley-Reiser ring
* swalk_lib:: Sagbi Walk Conversion Algorithm
* systhreads_lib:: multi-threaded objects
-* tateProdCplxNegGrad_lib:: sheaf cohomology on product of projective spaces
* VecField_lib:: vector fields
@end menu
@c ----------------------------------------------------------
@@ -1310,10 +1290,6 @@ Todos/Issues:
@subsection systhreads_lib
@c lib systhreads.lib
@c ---------------------------------------------------------
-@node tateProdCplxNegGrad_lib
-@subsection tateProdCplxNegGrad_lib
-@c lib tateProdCplxNegGrad.lib
-@c ---------------------------------------------------------
@node VecField_lib
@subsection VecField_lib
@c lib VecField.lib

View file

@ -1,38 +0,0 @@
diff --git a/m4/cpu-check.m4 b/m4/cpu-check.m4
index 3cf0a7f08..12bb926ac 100644
--- a/m4/cpu-check.m4
+++ b/m4/cpu-check.m4
@@ -37,6 +37,18 @@ if test "$ac_cv_singcpuname" = ppc; then
AC_DEFINE(SI_CPU_PPC,1,"PPC")
AC_SUBST(SI_CPU_PPC)
fi
+if test "$ac_cv_singcpuname" = arm -o "$ac_cv_singcpuname" = armel; then
+ AC_DEFINE(SI_CPU_ARM,1,"ARM")
+ AC_SUBST(SI_CPU_ARM)
+fi
+if test "$ac_cv_singcpuname" = aarch64; then
+ AC_DEFINE(SI_CPU_AARCH64,1,"AARCH64")
+ AC_SUBST(SI_CPU_AARCH64)
+fi
+if test "$ac_cv_singcpuname" = s390; then
+ AC_DEFINE(SI_CPU_S390,1,"S390")
+ AC_SUBST(SI_CPU_S390)
+fi
# UNAME and PATH
AC_MSG_CHECKING(uname for Singular)
@@ -65,6 +77,14 @@ dnl testet on: ppc_Linux, 740/750 PowerMac G3, 512k L2 cache
[powerpc*|ppc*], [AC_DEFINE(HAVE_GENERIC_MULT,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms)],
dnl the following settings seems to be better on arm processors
[arm*], [],
+dnl FIXME: need to run some tests
+ [aarch64*], [
+ AC_DEFINE(HAVE_MULT_MOD,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms)
+ AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add)
+ AC_DEFINE(HAVE_DIV_MOD,1,division using extend euclidian algorithm otherwise using tables of logartihms)
+ ],
+dnl FIXME: need to run some tests
+ [s390*], [AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add)],
[]
)

View file

@ -1,194 +0,0 @@
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
index f7410d74b..12cb005a5 100644
--- a/m4/ax_prog_cc_for_build.m4
+++ b/m4/ax_prog_cc_for_build.m4
@@ -32,35 +32,31 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 18
+#serial 9
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
dnl Use the standard macros, but make them use other variable names
dnl
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
-pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
-pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl
pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
pushdef([ac_cv_objext], ac_cv_build_objext)dnl
pushdef([ac_exeext], ac_build_exeext)dnl
pushdef([ac_objext], ac_build_objext)dnl
pushdef([CC], CC_FOR_BUILD)dnl
pushdef([CPP], CPP_FOR_BUILD)dnl
-pushdef([GCC], GCC_FOR_BUILD)dnl
pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-pushdef([EXEEXT], BUILD_EXEEXT)dnl
pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
-pushdef([OBJEXT], BUILD_OBJEXT)dnl
pushdef([host], build)dnl
pushdef([host_alias], build_alias)dnl
pushdef([host_cpu], build_cpu)dnl
@@ -71,29 +67,27 @@ pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
-pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
-pushdef([cross_compiling], cross_compiling_build)dnl
+pushdef([ac_cpp], ac_build_cpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
-cross_compiling_build=no
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
-ac_build_tool_prefix=
-AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
- [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-
-AC_LANG_PUSH([C])
AC_PROG_CC
-_AC_COMPILER_EXEEXT
-_AC_COMPILER_OBJEXT
AC_PROG_CPP
+AC_EXEEXT
+
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
dnl Restore the old definitions
dnl
-popdef([cross_compiling])dnl
-popdef([am_cv_prog_cc_c_o])dnl
-popdef([am_cv_CC_dependencies_compiler_type])dnl
-popdef([ac_tool_prefix])dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cpp])dnl
popdef([ac_cv_host_os])dnl
popdef([ac_cv_host_vendor])dnl
popdef([ac_cv_host_cpu])dnl
@@ -104,33 +98,25 @@ popdef([host_vendor])dnl
popdef([host_cpu])dnl
popdef([host_alias])dnl
popdef([host])dnl
-popdef([OBJEXT])dnl
popdef([LDFLAGS])dnl
-popdef([EXEEXT])dnl
popdef([CPPFLAGS])dnl
popdef([CFLAGS])dnl
-popdef([GCC])dnl
popdef([CPP])dnl
popdef([CC])dnl
popdef([ac_objext])dnl
popdef([ac_exeext])dnl
popdef([ac_cv_objext])dnl
popdef([ac_cv_exeext])dnl
-popdef([ac_cv_c_compiler_gnu])dnl
popdef([ac_cv_prog_cc_g])dnl
popdef([ac_cv_prog_cc_cross])dnl
popdef([ac_cv_prog_cc_works])dnl
-popdef([ac_cv_prog_cc_c89])dnl
popdef([ac_cv_prog_gcc])dnl
popdef([ac_cv_prog_CPP])dnl
-dnl restore global variables ac_ext, ac_cpp, ac_compile,
-dnl ac_link, ac_compiler_gnu (dependant on the current
-dnl language after popping):
-AC_LANG_POP([C])
-
dnl Finally, set Makefile variables
dnl
+BUILD_EXEEXT=$ac_build_exeext
+BUILD_OBJEXT=$ac_build_objext
AC_SUBST(BUILD_EXEEXT)dnl
AC_SUBST(BUILD_OBJEXT)dnl
AC_SUBST([CFLAGS_FOR_BUILD])dnl
diff --git a/m4/ax_prog_cxx_for_build.m4 b/m4/ax_prog_cxx_for_build.m4
index 4d976769f..17c19a89f 100644
--- a/m4/ax_prog_cxx_for_build.m4
+++ b/m4/ax_prog_cxx_for_build.m4
@@ -31,7 +31,7 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 4
+#serial 3
AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
@@ -49,7 +49,6 @@ pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
pushdef([CXX], CXX_FOR_BUILD)dnl
pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
-pushdef([GXX], GXX_FOR_BUILD)dnl
pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
@@ -63,25 +62,26 @@ pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-pushdef([am_cv_CXX_dependencies_compiler_type], am_cv_build_CXX_dependencies_compiler_type)dnl
-pushdef([cross_compiling], cross_compiling_build)dnl
+pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
-cross_compiling_build=no
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
-ac_build_tool_prefix=
-AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
- [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-
-AC_LANG_PUSH([C++])
AC_PROG_CXX
AC_PROG_CXXCPP
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
+
dnl Restore the old definitions
dnl
-popdef([cross_compiling])dnl
-popdef([am_cv_CXX_dependencies_compiler_type])dnl
-popdef([ac_tool_prefix])dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cxxcpp])dnl
popdef([ac_cv_host_os])dnl
popdef([ac_cv_host_vendor])dnl
popdef([ac_cv_host_cpu])dnl
@@ -103,10 +103,6 @@ popdef([ac_cv_prog_cxx_works])dnl
popdef([ac_cv_prog_gxx])dnl
popdef([ac_cv_prog_CXXCPP])dnl
-dnl restore global variables (dependant on the current
-dnl language after popping):
-AC_LANG_POP([C++])
-
dnl Finally, set Makefile variables
dnl
AC_SUBST([CXXFLAGS_FOR_BUILD])dnl

View file

@ -1,35 +0,0 @@
diff --git a/kernel/GBEngine/kChinese.cc b/kernel/GBEngine/kChinese.cc
index 829a66609..84655caf2 100644
--- a/kernel/GBEngine/kChinese.cc
+++ b/kernel/GBEngine/kChinese.cc
@@ -209,6 +209,8 @@ ideal id_ChineseRemainder_0(ideal *xx, number *q, int rl, const ring r)
return NULL;
}
int cpus=(int)(long)feOptValue(FE_OPT_CPUS);
+ if (cpus>=vspace::internals::MAX_PROCESS)
+ cpus=vspace::internals::MAX_PROCESS-1;
if ((cpus==1) || (2*cpus>=cnt))
/* at least 2 polys for each process, or switch to seriell version */
return id_ChineseRemainder(xx,q,rl,r);
@@ -295,6 +297,8 @@ ideal id_Farey_0(ideal x, number N, const ring r)
{
int cnt=IDELEMS(x)*x->nrows;
int cpus=(int)(long)feOptValue(FE_OPT_CPUS);
+ if (cpus>=vspace::internals::MAX_PROCESS)
+ cpus=vspace::internals::MAX_PROCESS-1;
if (2*cpus>=cnt) /* at least 2 polys for each process,
or switch to seriell version */
return id_Farey(x,N,r);
diff --git a/kernel/GBEngine/kverify.cc b/kernel/GBEngine/kverify.cc
index 909d84994..aa06d6624 100644
--- a/kernel/GBEngine/kverify.cc
+++ b/kernel/GBEngine/kverify.cc
@@ -176,6 +176,8 @@ BOOLEAN kVerify2(ideal F, ideal Q)
/*---------------------------------------------------------------------*/
BOOLEAN all_okay=TRUE;
int cpus=(int)(long)feOptValue(FE_OPT_CPUS);
+ if (cpus>=vspace::internals::MAX_PROCESS)
+ cpus=vspace::internals::MAX_PROCESS-1;
int parent_pid=getpid();
using namespace vspace;
vmem_init();

View file

@ -6,13 +6,13 @@ assert (!blas.isILP64) && (!lapack.isILP64);
stdenv.mkDerivation rec {
pname = "fflas-ffpack";
version = "2.4.3";
version = "2.5.0";
src = fetchFromGitHub {
owner = "linbox-team";
repo = pname;
rev = version;
sha256 = "1ynbjd72qrwp0b4kpn0p5d7gddpvj8dlb5fwdxajr5pvkvi3if74";
rev = "v${version}";
sha256 = "sha256-Eztc2jUyKRVUiZkYEh+IFHkDuPIy+Gx3ZW/MsuOVaMc=";
};
checkInputs = [

View file

@ -1,6 +1,6 @@
{ lib, stdenv
, fetchFromGitHub
, fetchpatch
, pkg-config
, gettext
, autoreconfHook
, gmp
@ -9,16 +9,17 @@
stdenv.mkDerivation rec {
pname = "fplll";
version = "5.3.2";
version = "5.4.1";
src = fetchFromGitHub {
owner = "fplll";
repo = "fplll";
rev = version;
sha256 = "00iyz218ywspizjiimrjdcqvdqmrsb2367zyy3vkmypnf9i9l680";
sha256 = "sha256-6Zde8/bPOQQ16DqhqrQuGXDrf5HQEn5lwxauvyBr4XQ=";
};
nativeBuildInputs = [
pkg-config
gettext
autoreconfHook
];

View file

@ -1,12 +1,12 @@
{ lib, stdenv, fetchFromGitHub, automake, autoconf, libtool, autoreconfHook, gmpxx }:
stdenv.mkDerivation rec {
pname = "givaro";
version = "4.1.1";
version = "4.2.0";
src = fetchFromGitHub {
owner = "linbox-team";
repo = pname;
rev = "v${version}";
sha256 = "11wz57q6ijsvfs5r82masxgr319as92syi78lnl9lgdblpc6xigk";
sha256 = "sha256-KR0WJc0CSvaBnPRott4hQJhWNBb/Wi6MIhcTExtVobQ=";
};
enableParallelBuilding = true;

View file

@ -14,13 +14,13 @@ assert (!blas.isILP64) && (!lapack.isILP64);
stdenv.mkDerivation rec {
pname = "linbox";
version = "1.6.3"; # TODO: Check postPatch script on update
version = "1.7.0";
src = fetchFromGitHub {
owner = "linbox-team";
repo = pname;
rev = "v${version}";
sha256 = "10j6dspbsq7d2l4q3y0c1l1xwmaqqba2fxg59q5bhgk9h5d7q571";
sha256 = "sha256-mW84a98KPLqcHMjX3LIYTmVe0ngUdz6RJLpoDaAqKU8=";
};
nativeBuildInputs = [
@ -35,20 +35,6 @@ stdenv.mkDerivation rec {
fflas-ffpack
];
patches = [
# Remove inappropriate `const &` qualifiers on data members that can be
# modified via member functions.
# See also: https://github.com/linbox-team/linbox/pull/256
./patches/linbox-pr256-part2.patch # TODO: Remove on 1.7.0 update
];
postPatch = ''
# Remove @LINBOXSAGE_LIBS@ that is actually undefined.
# See also: https://github.com/linbox-team/linbox/pull/249
# TODO: Remove on 1.7.0 update
find . -type f -exec sed -e 's/@LINBOXSAGE_LIBS@//' -i {} \;
'';
configureFlags = [
"--with-blas-libs=-lblas"
"--disable-optimization"

View file

@ -1,13 +0,0 @@
--- a/linbox/algorithms/det-rational.h
+++ b/linbox/algorithms/det-rational.h
@@ -79,8 +79,8 @@
struct MyRationalModularDet {
const Blackbox &A;
const MyMethod &M;
- const Integer &mul;//multiplicative prec;
- const Integer &div;
+ Integer mul;//multiplicative prec;
+ Integer div;
MyRationalModularDet(const Blackbox& b, const MyMethod& n,
const Integer & p1, const Integer & p2) :

View file

@ -1,94 +1,38 @@
{ lib, stdenv
, fetchurl
, fetchpatch
, autoreconfHook
, gengetopt
, pkg-config
, fetchFromGitLab
, pari
}:
stdenv.mkDerivation rec {
version = "1.23";
version = "2.0.5";
pname = "lcalc";
src = fetchurl {
# original at http://oto.math.uwaterloo.ca/~mrubinst/L_function_public/CODE/L-${version}.tar.gz, no longer available
# "newer" version at google code https://code.google.com/archive/p/l-calc/source/default/source
url = "mirror://sageupstream/lcalc/lcalc-${version}.tar.bz2";
sha256 = "1c6dsdshgxhqppjxvxhp8yhpxaqvnz3d1mlh26r571gkq8z2bm43";
src = fetchFromGitLab {
owner = "sagemath";
repo = pname;
rev = version;
sha256 = "sha256-RxWZ7T0I9zV7jUVnL6jV/PxEoU32KY7Q1UsOL5Lonuc=";
};
preConfigure = "cd src";
nativeBuildInputs = [
autoreconfHook
gengetopt
pkg-config
];
buildInputs = [
pari
];
patches = [
# Port to newer pari
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/pari-2.7.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "1x3aslldm8njjm7p9g9s9w2c91kphnci2vpkxkrcxfihw3ayss6c";
})
# Uncomment the definition of lcalc_to_double(const long double& x).
# (Necessary for GCC >= 4.6.0, cf. https://trac.sagemath.org/ticket/10892)
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/Lcommon.h.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "0g4ybvsrcv48rmlh1xjnkms19jp25k58azv6ds1f2cm34hxs8fdx";
})
# Include also <time.h> in Lcommandline_numbertheory.h (at least required
# on Cygwin, cf. https://trac.sagemath.org/ticket/9845)
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/time.h.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "1brf04n11kkc43ylagf8dm32j5r2g9zv51dp5wag1mpm4p04l7cl";
})
# Fix for gcc >4.6
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/lcalc-1.23_default_parameters_1.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "0i2yvxm5fx4z0v6m4srgh8rj98kijmlvyirlxf1ky0bp2si6bpka";
})
# gcc 5.1
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/lcalc-1.23_default_parameters_2.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "0dqwmxpm9wb53qbypsyfkgsvk2f8nf67sydphd4dkc2vw4yz6vlh";
})
# based on gentoos makefile patch -- fix paths, adhere to flags
./makefile.patch
# (fetchpatch {
# name = "default-double.patch";
# url = "https://github.com/dimpase/lcalc/pull/1/commits/0500c67b6aa1f492715591669f6647c8f7a3ea59.patch";
# sha256 = "0dqwmxpm9wb53qbypsyfkgsvk2f8nf67sydphd4dkc2vw4yz6vla";
# })
(fetchpatch {
name = "c++11.patch";
url = "https://raw.githubusercontent.com/archlinux/svntogit-community/3607b97df5a8c231191115b0cb5c62426b339e71/trunk/lcalc-c++11.patch";
sha256 = "1ccrl61lv2vvx8ggldq54m5d0n1iy6mym7qz0i8nj6yj0dshnpk3";
})
] ++ lib.optional stdenv.isDarwin
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/lcalc/patches/clang.patch";
sha256 = "0bb7656z6cp6i4p2qj745cmq0lhh52v2akl9whi760dynfdxbl18";
});
postPatch = lib.optionalString stdenv.isDarwin ''
substituteInPlace src/Makefile --replace g++ c++
'';
installFlags = [
"DESTDIR=$(out)"
];
makeFlags = [
"PARI_DEFINE=-DINCLUDE_PARI"
"PARI_PREFIX=${pari}"
configureFlags = [
"--with-pari"
];
meta = with lib; {
homepage = "http://oto.math.uwaterloo.ca/~mrubinst/L_function_public/L.html";
homepage = "https://gitlab.com/sagemath/lcalc";
description = "A program for calculating with L-functions";
license = with licenses; [ gpl2 ];
maintainers = teams.sage.members;

View file

@ -1,113 +0,0 @@
diff --git a/src/Makefile b/src/Makefile
index 84e4e88..56ca676 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -58,7 +58,7 @@ ifeq ($(G5),TRUE)
#MACHINE_SPECIFIC_FLAGS = -mpowerpc -mpowerpc64 -m64
endif
-CCFLAGS = -Wa,-W -O3 $(OPENMP_FLAG) -Wno-deprecated $(PREPROCESSOR_DEFINE) $(MACHINE_SPECIFIC_FLAGS) $(EXTRA)
+CCFLAGS = $(CXXFLAGS) $(OPENMP_FLAG) $(PREPROCESSOR_DEFINE) $(MACHINE_SPECIFIC_FLAGS)
#CCFLAGS = -Wa,-W -O3 $(OPENMP_FLAG) $(PREPROCESSOR_DEFINE) $(MACHINE_SPECIFIC_FLAGS) $(EXTRA)
#CCFLAGS = -Wa,-W -O2 -fno-exceptions -Wno-deprecated $(PREPROCESSOR_DEFINE) $(MACHINE_SPECIFIC_FLAGS) $(EXTRA)
@@ -68,12 +68,12 @@ CCFLAGS = -Wa,-W -O3 $(OPENMP_FLAG) -Wno-deprecated $(PREPROCESSOR_DEFINE) $(MA
ifeq ($(PARI_DEFINE),-DINCLUDE_PARI)
#location of pari.h.
- LOCATION_PARI_H = /usr/local/include/pari #usual location
+ LOCATION_PARI_H = $(PARI_PREFIX)/include/pari #usual location
#location of libpari.a or of libpari.so
#depending on whether static or dynamic libraries are being used.
#On mac os x it's the former, on linux I think usually the latter.
- LOCATION_PARI_LIBRARY = /usr/local/lib #usual location
+ LOCATION_PARI_LIBRARY = $(PARI_PREFIX)/lib #usual location
else
#supplied as a dummy so as to avoid more ifeq's below
LOCATION_PARI_H = .
@@ -89,24 +89,24 @@ INCLUDEFILES= -I../include
ifeq ($(OS_NAME),Darwin)
LDFLAGS2 =
- DYN_OPTION=dynamiclib
+ DYN_OPTION=-dynamiclib
else
- LDFLAGS1 = -Xlinker -export-dynamic #not sure why pari calls these when linking but on the web I found
+ LDFLAGS1 = #not sure why pari calls these when linking but on the web I found
#'Libtool provides the `-export-dynamic' link flag (see section Link mode), which does this declaration.
#You need to use this flag if you are linking a shared library that will be dlopened'
#see notes below
#ifeq ($(PARI_DEFINE),-DINCLUDE_PARI)
- LDFLAGS2 = $(LDFLAGS1) -Xlinker -rpath -Xlinker $(LOCATION_PARI_LIBRARY)
+ LDFLAGS2 = $(LDFLAGS)
#else
# LDFLAGS2 = $(LDFLAGS1)
#endif
- DYN_OPTION=shared
+ DYN_OPTION=$(LDFLAGS) -shared -Wl,-soname,libLfunction.so
endif
ifeq ($(PARI_DEFINE),-DINCLUDE_PARI)
- LDFLAGS = $(LDFLAGS2) -L$(LOCATION_PARI_LIBRARY) -lpari
+ MYLDFLAGS = $(LDFLAGS2) -L$(LOCATION_PARI_LIBRARY) -lpari
else
- LDFLAGS = $(LDFLAGS2)
+ MYLDFLAGS = $(LDFLAGS2)
endif
@@ -129,7 +129,8 @@ endif
#become clear which libraries the computer can find.
-INSTALL_DIR= /usr/local
+INSTALL_DIR= $(DESTDIR)
+LIB_DIR ?=lib
#object files for the libLfunction library
OBJ_L = Lglobals.o Lgamma.o Lriemannsiegel.o Lriemannsiegel_blfi.o Ldokchitser.o
@@ -141,9 +142,8 @@ OBJECTS = $(OBJ3)
all:
# make print_vars
- make libLfunction.so
- make lcalc
- make examples
+ ${MAKE} libLfunction.so
+ ${MAKE} lcalc
# make find_L
# make test
@@ -151,7 +151,7 @@ print_vars:
@echo OS_NAME = $(OS_NAME)
lcalc: $(OBJECTS)
- $(CC) $(CCFLAGS) $(INCLUDEFILES) $(OBJECTS) $(LDFLAGS) -o lcalc $(GMP_FLAGS)
+ $(CC) $(CCFLAGS) $(INCLUDEFILES) $(OBJECTS) $(MYLDFLAGS) -o lcalc $(GMP_FLAGS)
examples:
$(CC) $(CCFLAGS) $(INCLUDEFILES) example_programs/example.cc libLfunction.so -o example_programs/example $(GMP_FLAGS)
@@ -262,15 +262,18 @@ Lcommandline.o: ../include/Lcommandline_values_zeros.h
libLfunction.so: $(OBJ_L)
- g++ -$(DYN_OPTION) -o libLfunction.so $(OBJ_L)
+ g++ $(DYN_OPTION) -o libLfunction.so $(OBJ_L)
clean:
rm -f *.o lcalc libLfunction.so example_programs/example
install:
- cp -f lcalc $(INSTALL_DIR)/bin/.
- cp -f libLfunction.so $(INSTALL_DIR)/lib/.
- cp -rf ../include $(INSTALL_DIR)/include/Lfunction
+ install -d $(INSTALL_DIR)/bin
+ install -d $(INSTALL_DIR)/$(LIB_DIR)
+ install -d $(INSTALL_DIR)/include/Lfunction
+ install lcalc $(INSTALL_DIR)/bin
+ install libLfunction.so $(INSTALL_DIR)/$(LIB_DIR)
+ install -m 644 -t $(INSTALL_DIR)/include/Lfunction ../include/*.h
SRCS = Lcommandline.cc Lcommandline_elliptic.cc Lcommandline_globals.cc Lcommandline_misc.cc Lcommandline_numbertheory.cc Lcommandline_twist.cc Lcommandline_values_zeros.cc Lgamma.cc Lglobals.cc Lmisc.cc Lriemannsiegel.cc Lriemannsiegel_blfi.cc cmdline.c

View file

@ -15,6 +15,14 @@ stdenv.mkDerivation rec {
sha256 = "sha256-/Cb/HkD4UQ9gXsRpvRiEuQBoRd0THxNHsBaAAa+CqQo=";
};
cmakeFlags = [
"-DBUILD_STATIC_LIBS=OFF"
"-DBUILD_SHARED_LIBS=ON"
"-DBUILD_TESTS=ON"
"-DBUILD_PRIMECOUNT=ON"
"-DBUILD_LIBPRIMESIEVE=ON"
];
meta = with lib; {
description = "Fast prime counting function implementations";
homepage = "https://github.com/kimwalisch/primecount";

View file

@ -1,6 +1,5 @@
{ lib
, fetchFromGitHub
, fetchpatch
, buildPythonPackage
, pkgconfig
, gmp
@ -15,29 +14,15 @@
buildPythonPackage rec {
pname = "fpylll";
version = "0.5.1dev";
version = "0.5.6";
src = fetchFromGitHub {
owner = "fplll";
repo = "fpylll";
rev = version;
sha256 = "15vdfgx448mr1nf054h7lr2j3dd35fsfhikqzrh9zsng8n12hxa5";
sha256 = "sha256-Bxcc0941+pl2Uzam48qe+PFlcBWsJ0rDYZxrxIYQpEA=";
};
patches = [
# two patches to fix the testsuite on aarch64 (https://github.com/fplll/fpylll/issues/162)
(fetchpatch {
url = "https://github.com/fplll/fpylll/commit/d5809a8fdb86b2693b1fa94e655bbbe4ad80e286.patch";
name = "less-precision-in-tests.patch";
sha256 = "0vkvi25nwwvk5r4a4xmkbf060di4hjq32bys75l2hsaysxmk93nz";
})
(fetchpatch {
url = "https://github.com/fplll/fpylll/commit/b5b146a010d50da219a313adc4b6f7deddcc146b.patch";
name = "dont-hardcode-precision.patch";
sha256 = "1rsbwh90i1j5p2rp6jd5n25v1jzw1n8728fzz1lhb91zmk0hlxc9";
})
];
buildInputs = [
gmp
pari

View file

@ -0,0 +1,33 @@
{ lib
, fetchPypi
, buildPythonPackage
, primecount
, cython
, cysignals
}:
buildPythonPackage rec {
pname = "primecountpy";
version = "0.1.0";
src = fetchPypi {
inherit pname version;
sha256 = "78fe7cc32115f0669a45d7c90faaf39f7ce3939e39e2e7e5f14c17fe4bff0676";
};
buildInputs = [ primecount ];
propagatedBuildInputs = [ cython cysignals ];
# depends on pytest-cython for "pytest --doctest-cython"
doCheck = false;
pythonImportsCheck = [ "primecountpy" ];
meta = with lib; {
description = "Cython interface for C++ primecount library";
homepage = "https://github.com/dimpase/primecountpy/";
maintainers = teams.sage.members;
license = licenses.gpl3Only;
};
}

View file

@ -6321,6 +6321,8 @@ in {
prettytable = callPackage ../development/python-modules/prettytable { };
primecountpy = callPackage ../development/python-modules/primecountpy { };
primer3 = callPackage ../development/python-modules/primer3 { };
priority = callPackage ../development/python-modules/priority { };