aboutsummaryrefslogtreecommitdiff
path: root/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch')
-rw-r--r--srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch221
1 files changed, 221 insertions, 0 deletions
diff --git a/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch b/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch
new file mode 100644
index 00000000000..7c55bce6e9b
--- /dev/null
+++ b/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch
@@ -0,0 +1,221 @@
+diff --git a/build/pkgs/singular/checksums.ini b/build/pkgs/singular/checksums.ini
+index 313463d2fea..1101fc55700 100644
+--- a/build/pkgs/singular/checksums.ini
++++ b/build/pkgs/singular/checksums.ini
+@@ -1,5 +1,5 @@
+ tarball=singular-VERSION.tar.gz
+-sha1=28bb3ee97ef48d04dfa96de182fd93eebe08426c
+-md5=fc0a4f5720dadba45a52ee94324ce00c
+-cksum=1573851737
+-upstream_url=ftp://jim.mathematik.uni-kl.de/pub/Math/Singular/SOURCES/4-3-1/singular-VERSION.tar.gz
++sha1=df1997f412580f2073295aba569bb955ad227317
++md5=50349213e206a18cdaa1bc410dde7ea4
++cksum=376854707
++upstream_url=ftp://jim.mathematik.uni-kl.de/pub/Math/Singular/SOURCES/4-3-2/singular-VERSION.tar.gz
+diff --git a/build/pkgs/singular/package-version.txt b/build/pkgs/singular/package-version.txt
+index 66e2bede53a..9f1bf008217 100644
+--- a/build/pkgs/singular/package-version.txt
++++ b/build/pkgs/singular/package-version.txt
+@@ -1 +1 @@
+-4.3.1p3
++4.3.2p7
+diff --git a/build/pkgs/singular/spkg-configure.m4 b/build/pkgs/singular/spkg-configure.m4
+index 6a85631f624..f7621ec5fa1 100644
+--- a/build/pkgs/singular/spkg-configure.m4
++++ b/build/pkgs/singular/spkg-configure.m4
+@@ -6,14 +6,27 @@ SAGE_SPKG_CONFIGURE([singular], [
+ AS_IF([test -z "${SINGULAR_BIN}"], [sage_spkg_install_singular=yes], [
+ dnl Use pkg-config to ensure that Singular is new enough.
+ PKG_CHECK_MODULES([SINGULAR], [Singular >= 4.2.1], [
+- AC_MSG_CHECKING([that Singular's help is working])
+- AS_IF([test x`printf "system(\"--browser\", \"builtin\"); \n help;" | Singular 2>&1 | grep "error occurred"` = x], [
+- AC_MSG_RESULT(yes)
+- ], [
+- AC_MSG_RESULT(no)
+- sage_spkg_install_singular=yes
+- ]
+- )], [
++ AC_MSG_CHECKING([whether Singular is built with FLINT])
++ AC_COMPILE_IFELSE([
++ AC_LANG_PROGRAM([
++ #include <singular/singularconfig.h>
++ #if !defined(HAVE_FLINT)
++ # error "Need Singular compiled with FLINT"
++ ], [])
++ ], [
++ AC_MSG_RESULT([yes])
++ AC_MSG_CHECKING([that Singular's help is working])
++ AS_IF([test x`printf "system(\"--browser\", \"builtin\"); \n help;" | Singular 2>&1 | grep "error occurred"` = x], [
++ AC_MSG_RESULT(yes)
++ ], [
++ AC_MSG_RESULT(no)
++ sage_spkg_install_singular=yes
++ ])
++ ], [
++ AC_MSG_RESULT([no])
++ sage_spkg_install_singular=yes
++ ])
++ ], [
+ dnl pkg-config version check failed
+ sage_spkg_install_singular=yes
+ ])
+diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
+index b15cc1c602c..4b5c76e2bfa 100644
+--- a/src/sage/interfaces/singular.py
++++ b/src/sage/interfaces/singular.py
+@@ -604,8 +604,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds):
+ sage: i = singular.ideal(['x^2','y^2','z^2'])
+ sage: s = i.std()
+ sage: singular.eval('hilb(%s)'%(s.name()))
+- '// 1 t^0\n// -3 t^2\n// 3 t^4\n// -1 t^6\n\n// 1 t^0\n//
+- 3 t^1\n// 3 t^2\n// 1 t^3\n// dimension (affine) = 0\n//
++ '...// dimension (affine) = 0\n//
+ degree (affine) = 8'
+
+ ::
+@@ -613,15 +612,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds):
+ sage: from sage.misc.verbose import set_verbose
+ sage: set_verbose(1)
+ sage: o = singular.eval('hilb(%s)'%(s.name()))
+- // 1 t^0
+- // -3 t^2
+- // 3 t^4
+- // -1 t^6
+- // 1 t^0
+- // 3 t^1
+- // 3 t^2
+- // 1 t^3
+- // dimension (affine) = 0
++ ...// dimension (affine) = 0
+ // degree (affine) = 8
+
+ This is mainly useful if this method is called implicitly. Because
+@@ -631,15 +622,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds):
+ ::
+
+ sage: o = s.hilb()
+- // 1 t^0
+- // -3 t^2
+- // 3 t^4
+- // -1 t^6
+- // 1 t^0
+- // 3 t^1
+- // 3 t^2
+- // 1 t^3
+- // dimension (affine) = 0
++ ...// dimension (affine) = 0
+ // degree (affine) = 8
+ // ** right side is not a datum, assignment ignored
+ ...
+diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
+index f40346d1fd0..c597c63aafe 100644
+--- a/src/sage/libs/singular/function.pyx
++++ b/src/sage/libs/singular/function.pyx
+@@ -1241,32 +1241,22 @@ cdef class SingularFunction(SageObject):
+ sage: I = Ideal([x^3*y^2 + 3*x^2*y^2*z + y^3*z^2 + z^5])
+ sage: I = Ideal(I.groebner_basis())
+ sage: hilb = sage.libs.singular.function_factory.ff.hilb
+- sage: hilb(I) # Singular will print // ** _ is no standard basis
+- // ** _ is no standard basis
+- // 1 t^0
+- // -1 t^5
+- <BLANKLINE>
+- // 1 t^0
+- // 1 t^1
+- // 1 t^2
+- // 1 t^3
+- // 1 t^4
+- // dimension (proj.) = 1
+- // degree (proj.) = 5
++ sage: from sage.misc.sage_ostools import redirection
++ sage: out = tmp_filename()
++ sage: with redirection(sys.stdout, open(out, 'w')):
++ ....: hilb(I) # Singular will print // ** _ is no standard basis
++ sage: with open(out) as f:
++ ....: 'is no standard basis' in f.read()
++ True
+
+ So we tell Singular that ``I`` is indeed a Groebner basis::
+
+- sage: hilb(I,attributes={I:{'isSB':1}}) # no complaint from Singular
+- // 1 t^0
+- // -1 t^5
+- <BLANKLINE>
+- // 1 t^0
+- // 1 t^1
+- // 1 t^2
+- // 1 t^3
+- // 1 t^4
+- // dimension (proj.) = 1
+- // degree (proj.) = 5
++ sage: out = tmp_filename()
++ sage: with redirection(sys.stdout, open(out, 'w')):
++ ....: hilb(I,attributes={I:{'isSB':1}}) # no complaint from Singular
++ sage: with open(out) as f:
++ ....: 'is no standard basis' in f.read()
++ False
+
+
+ TESTS:
+diff --git a/src/sage/rings/polynomial/multi_polynomial_ideal.py b/src/sage/rings/polynomial/multi_polynomial_ideal.py
+index 22ada6de947..80352700872 100644
+--- a/src/sage/rings/polynomial/multi_polynomial_ideal.py
++++ b/src/sage/rings/polynomial/multi_polynomial_ideal.py
+@@ -3132,13 +3132,16 @@ def hilbert_numerator(self, grading=None, algorithm='sage'):
+ sage: I.hilbert_numerator() # needs sage.rings.number_field
+ -t^5 + 1
+
+- This example returns a wrong answer due to an integer overflow in Singular::
++ This example returns a wrong answer in singular < 4.3.2p4 due to an integer overflow::
+
+ sage: n=4; m=11; P = PolynomialRing(QQ, n*m, "x"); x = P.gens(); M = Matrix(n, x)
+ sage: I = P.ideal(M.minors(2))
+ sage: J = P * [m.lm() for m in I.groebner_basis()]
+- sage: J.hilbert_numerator(algorithm='singular')
+- ...120*t^33 - 3465*t^32 + 48180*t^31 - ...
++ sage: J.hilbert_numerator(algorithm='singular') # known bug
++ Traceback (most recent call last):
++ ....
++ RuntimeError: error in Singular function call 'hilb':
++ overflow at t^22
+
+ Our two algorithms should always agree; not tested until
+ :trac:`33178` is fixed::
+diff --git a/src/sage/sandpiles/sandpile.py b/src/sage/sandpiles/sandpile.py
+index 02d2021b2fb..c8e15e06f05 100644
+--- a/src/sage/sandpiles/sandpile.py
++++ b/src/sage/sandpiles/sandpile.py
+@@ -2493,9 +2493,15 @@ def _set_ideal(self):
+ sage: '_ideal' in S.__dict__
+ True
+ """
++ from sage.libs.singular.function_factory import ff
++ try:
++ sat = ff.elim__lib.sat_with_exp
++ except NameError:
++ sat = ff.elim__lib.sat
+ R = self.ring()
+- I = self._unsaturated_ideal._singular_()
+- self._ideal = R.ideal(I.sat(prod(R.gens())._singular_())[1])
++ I = self._unsaturated_ideal
++ I_sat_gens = sat(I, prod(R.gens()))[0]
++ self._ideal = R.ideal(I_sat_gens)
+
+ def unsaturated_ideal(self):
+ r"""
+diff --git a/src/sage/schemes/projective/projective_subscheme.py b/src/sage/schemes/projective/projective_subscheme.py
+index e6caf19ba74..afd6484d779 100644
+--- a/src/sage/schemes/projective/projective_subscheme.py
++++ b/src/sage/schemes/projective/projective_subscheme.py
+@@ -1001,7 +1001,10 @@ def dual(self):
+ for i in range(n + 1):
+ J = J + S.ideal(z[-1] * f_S.derivative(z[i]) - z[i + n + 1])
+
+- sat = ff.elim__lib.sat
++ try:
++ sat = ff.elim__lib.sat_with_exp
++ except NameError:
++ sat = ff.elim__lib.sat
+
+ max_ideal = S.ideal(z[n + 1: 2 * n + 2])
+ J_sat_gens = sat(J, max_ideal)[0]