Date: Sunday, March 24, 2019 @ 10:09:23 Author: arojas Revision: 443313
Update to 8.7 Modified: sagemath/trunk/PKGBUILD sagemath/trunk/latte-count.patch sagemath/trunk/package.patch sagemath/trunk/sagemath-env.patch sagemath/trunk/sagemath-gap-4.10.1.patch sagemath/trunk/sagemath-python3-notebook.patch Deleted: sagemath/trunk/sagemath-cypari2.patch sagemath/trunk/sagemath-numpy-1.16.patch ---------------------------------+ PKGBUILD | 31 - latte-count.patch | 4 package.patch | 4 sagemath-cypari2.patch | 711 -------------------------------------- sagemath-env.patch | 27 - sagemath-gap-4.10.1.patch | 14 sagemath-numpy-1.16.patch | 85 ---- sagemath-python3-notebook.patch | 2 8 files changed, 27 insertions(+), 851 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2019-03-24 09:25:39 UTC (rev 443312) +++ PKGBUILD 2019-03-24 10:09:23 UTC (rev 443313) @@ -7,15 +7,15 @@ pkgbase=sagemath pkgname=(sagemath sagemath-jupyter) -pkgver=8.6 -pkgrel=6 +pkgver=8.7 +pkgrel=1 pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab" arch=(x86_64) url="http://www.sagemath.org" license=(GPL) -depends=(ipython2 ppl palp brial cliquer maxima-ecl gfan sympow nauty python2-rpy2 python2-fpylll python2-psutil python2-cypari2 - python2-matplotlib python2-scipy python2-sympy python2-networkx python2-pillow python2-future gap flintqs lcalc lrcalc arb - eclib gmp-ecm zn_poly gd python2-cvxopt pynac linbox m4rie rubiks pari-galdata pari-seadata-small planarity rankwidth tachyon +depends=(ipython2 palp brial cliquer maxima-ecl gfan sympow nauty python2-rpy2 python2-fpylll python2-psutil python2-cypari2 + python2-matplotlib python2-scipy python2-sympy python2-networkx python2-pillow python2-pplpy python2-future + gap flintqs lcalc lrcalc arb eclib zn_poly gd python2-cvxopt pynac linbox m4rie rubiks pari-galdata pari-seadata-small planarity rankwidth tachyon sage-data-combinatorial_designs sage-data-elliptic_curves sage-data-graphs sage-data-polytopes_db sage-data-conway_polynomials libgiac libhomfly libbraiding three.js) optdepends=('cython2: to compile cython code' 'python2-pkgconfig: to compile cython code' @@ -44,26 +44,22 @@ sagemath-threejs.patch sagemath-cremona.patch sagemath-sphinx-1.8.patch - sagemath-cypari2.patch sagemath-singular-4.1.2.patch sagemath-ecl-sigfpe.patch - sagemath-numpy-1.16.patch sagemath-gap-4.10.1.patch) -sha256sums=('dea613fc955cada76aaa7ab379bc5a219fe8b496064824f8c798b2b1651442fa' - 'de6e38462ef1848778fbc23a63529fbee9229dbb245bb653f58a0d834a634c04' - '960afe4fcbffe2762b66119b8f14355386ced0d8ee52b535d0dac1dba90d365b' - 'ef265f88ceb6caf4aac2d86ea74850861d99a63d11c94fc52b2ce88053c26d1e' - 'bd2744c6564bbf71bd6ea3cd7b9031e2126cc1423bcdc1fcc258d90d750a129d' +sha256sums=('263c3b3fc956b8bebc532f3b51e68c1b0d559d3b7e7c9fadffdfc0f4dbae18ab' + 'e0e36f2a39b634a76e1c3ad9a31f9ab60e734dd53b43203557b76613277d53b9' + 'b1068a8d5750051c2b5cfcb89d3d5870cf4233ab445e71c398543fb8b1e6281a' + 'b66d5bb692159910cec83c80262c43a687d3a678010c7ae4c7070f7cf3a0d5cb' + '12cd410035ae644c2495b0dcd3a5138133a471ecc07912d37114c46ee837eb0e' 'f12bd2a53ad51549015093aacc89978f4d796d9ab5bcd3d737aa0d57a5815b54' '7fcb52e96935dccb0f958d37c2f4e3918392480b9af53e08562f6cba6c68cb94' 'f6b48abf34f64ea3fc092b0f0179e89633f7d3ecc0d62c2acacbfa1217751d63' '4c6df9e4e5a7b29ecf6189eda3e5a79f69b6e1b4d29c1b9559663149b8c0af96' '22f5e44a42c8276025b8512f45cac1c36d576c29c7fd9d36fde8b19ff87867d8' - 'ca47248d2ed5edfe663ea02e261ddbb26a7cb03bef67928dbec690d9b9a8f129' '961bfb5694b67d425d21240d71490cb71714b5207c23448c89be0966512ff8f9' 'a42f3b152b1aedb8abf16bc70971419919d1fe30328574e7fef8305f9d07d938' - 'd483b1dc78eb83e3cd1620e3d44214ca0704065e1d27d7a257976e56c85f2d5b' - 'ea7148347107ad90306c51c66b2fe522e1e99abed0546b7780b1b346261929bc') + '99066a3a11c102dee5183acf86b3f6200e9c3db8fe15e52cf391ecd6f72846c1') prepare(){ cd sage-$pkgver @@ -91,14 +87,10 @@ patch -p1 -i ../fes02.patch # use Features to detect Cremona databases https://trac.sagemath.org/ticket/25825 patch -p1 -i ../sagemath-cremona.patch -# Fix build with cypari 2.0 https://trac.sagemath.org/ticket/26442 - patch -p1 -i ../sagemath-cypari2.patch # Fixes for singular 4.1.2 https://trac.sagemath.org/ticket/25993 patch -p1 -i ../sagemath-singular-4.1.2.patch # Fix SIGFPE crashes with ecl 16.1.3 https://trac.sagemath.org/ticket/22191 patch -p1 -i ../sagemath-ecl-sigfpe.patch -# Fix inline fortran with numpy 1.16 https://trac.sagemath.org/ticket/27061 - patch -p1 -i ../sagemath-numpy-1.16.patch # use python2 sed -e 's|sage-python23|python2|' -e 's|#!/usr/bin/env python\b|#!/usr/bin/env python2|' -i src/bin/* @@ -105,6 +97,7 @@ sed -e 's|cython {OPT}|cython2 {OPT}|' -e 's|python setup.py|python2 setup.py|' -i src/sage/misc/cython.py sed -e 's|exec ipython\b|exec ipython2|' -e 's|cygdb|cygdb2|g' -i src/bin/sage sed -e "s|'cython'|'cython2'|" -i src/bin/sage-cython + sed -e 's|"python"|"python2"|' -i src/sage/env.py } Modified: latte-count.patch =================================================================== --- latte-count.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ latte-count.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -51,7 +51,7 @@ index 066cedd401..302b39910d 100644 --- a/src/sage/interfaces/latte.py +++ b/src/sage/interfaces/latte.py -@@ -93,7 +93,7 @@ def count(arg, ehrhart_polynomial=False, multivariate_generating_function=False, +@@ -94,7 +94,7 @@ def count(arg, ehrhart_polynomial=False, multivariate_generating_function=False, sage: n = count(cddin, cdd=True, verbose=True, raw_output=True) # optional - latte_int This is LattE integrale ... ... @@ -60,7 +60,7 @@ ... Total Unimodular Cones: ... Maximum number of simplicial cones in memory at once: ... -@@ -112,7 +112,7 @@ def count(arg, ehrhart_polynomial=False, multivariate_generating_function=False, +@@ -113,7 +113,7 @@ def count(arg, ehrhart_polynomial=False, multivariate_generating_function=False, # Check that LattE is present Latte().require() Modified: package.patch =================================================================== --- package.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ package.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -1,6 +1,6 @@ --- src/sage/misc/package.py.orig 2014-11-23 15:58:13.000000000 +0100 +++ src/sage/misc/package.py 2015-01-22 20:32:25.651383902 +0100 -@@ -328,7 +328,7 @@ +@@ -335,7 +335,7 @@ Use the framework provided by :mod:`sage.features` to check whether a library is installed and functional. """ @@ -7,8 +7,8 @@ - return any(p.split('-')[0] == package for p in installed_packages(exclude_pip)) + return True + def package_versions(package_type, local=False): - r""" --- src/sage_setup/optional_extension.py.orig 2016-10-19 18:35:10.092577510 +0000 +++ src/sage_setup/optional_extension.py 2016-10-19 18:38:13.514765366 +0000 @@ -21,8 +21,6 @@ Deleted: sagemath-cypari2.patch =================================================================== --- sagemath-cypari2.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ sagemath-cypari2.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -1,711 +0,0 @@ -diff --git a/src/sage/matrix/matrix_integer_dense.pxd b/src/sage/matrix/matrix_integer_dense.pxd -index bc3af7c..5dd2a8e 100644 ---- a/src/sage/matrix/matrix_integer_dense.pxd -+++ b/src/sage/matrix/matrix_integer_dense.pxd -@@ -30,6 +30,5 @@ cdef class Matrix_integer_dense(Matrix_dense): - - cdef Matrix_integer_dense _new(self, Py_ssize_t nrows, Py_ssize_t ncols) - -- cdef extract_hnf_from_pari_matrix(self, GEN H, int flag, bint include_zero_rows) - - cpdef _lift_crt(Matrix_integer_dense M, residues, moduli=*) -diff --git a/src/sage/matrix/matrix_integer_dense.pyx b/src/sage/matrix/matrix_integer_dense.pyx -index 4f0b0e6..87e3391 100644 ---- a/src/sage/matrix/matrix_integer_dense.pyx -+++ b/src/sage/matrix/matrix_integer_dense.pyx -@@ -87,11 +87,11 @@ from .args cimport SparseEntry, MatrixArgs_init - ######################################################### - # PARI C library - from cypari2.gen cimport Gen -+from cypari2.stack cimport clear_stack, new_gen -+from cypari2.paridecl cimport * - from sage.libs.pari.convert_gmp cimport INT_to_mpz - from sage.libs.pari.convert_flint cimport (_new_GEN_from_fmpz_mat_t, - _new_GEN_from_fmpz_mat_t_rotate90, integer_matrix) --from cypari2.stack cimport clear_stack --from cypari2.paridecl cimport * - ######################################################### - - from sage.arith.multi_modular cimport MultiModularBasis -@@ -2016,10 +2016,7 @@ cdef class Matrix_integer_dense(Matrix_dense): - raise ValueError("transformation matrix only available with p-adic algorithm") - elif algorithm in ["pari", "pari0", "pari1", "pari4"]: - flag = int(algorithm[-1]) if algorithm != "pari" else 1 -- if self.height().ndigits() > 10000 or n >= 50: -- H_m = self._hnf_pari_big(flag, include_zero_rows=include_zero_rows) -- else: -- H_m = self._hnf_pari(flag, include_zero_rows=include_zero_rows) -+ H_m = self._hnf_pari(flag, include_zero_rows=include_zero_rows) - elif algorithm == 'ntl': - if nr != nc: - raise ValueError("ntl only computes HNF for square matrices of full rank.") -@@ -5664,6 +5661,7 @@ cdef class Matrix_integer_dense(Matrix_dense): - matrices. - - EXAMPLES:: -+ - sage: matrix(ZZ,3,[1..9])._rank_pari() - 2 - """ -@@ -5674,16 +5672,12 @@ cdef class Matrix_integer_dense(Matrix_dense): - - def _hnf_pari(self, int flag=0, bint include_zero_rows=True): - """ -- Hermite form of this matrix, computed using PARI. The -- computation is done entirely on the PARI stack, then the PARI -- stack is cleared. This function is only useful for small -- matrices, and can crash on large matrices (e.g., if the PARI -- stack overflows). -+ Hermite normal form of this matrix, computed using PARI. - - INPUT: - - - ``flag`` -- 0 (default), 1, 3 or 4 (see docstring for -- gp.mathnf). -+ ``pari.mathnf``). - - - ``include_zero_rows`` -- boolean. if False, do not include - any of the zero rows at the bottom of the matrix in the -@@ -5733,98 +5727,13 @@ cdef class Matrix_integer_dense(Matrix_dense): - sage: pari('mathnf(Mat([0,1]), 4)') - [Mat(1), [1, 0; 0, 1]] - """ -- cdef GEN A - sig_on() - A = _new_GEN_from_fmpz_mat_t_rotate90(self._matrix) -- cdef GEN H = mathnf0(A, flag) -- B = self.extract_hnf_from_pari_matrix(H, flag, include_zero_rows) -- clear_stack() # This calls sig_off() -- return B -- -- -- def _hnf_pari_big(self, int flag=0, bint include_zero_rows=True): -- """ -- Hermite form of this matrix, computed using PARI. -- -- INPUT: -- -- - ``flag`` -- 0 (default), 1, 3 or 4 (see docstring for -- gp.mathnf). -- -- - ``include_zero_rows`` -- boolean. if False, do not include -- any of the zero rows at the bottom of the matrix in the -- output. -- -- .. NOTE:: -- -- In no cases is the transformation matrix returned by this -- function. -- -- EXAMPLES:: -- -- sage: a = matrix(ZZ,3,3,[1..9]) -- sage: a._hnf_pari_big(flag=0, include_zero_rows=True) -- [1 2 3] -- [0 3 6] -- [0 0 0] -- sage: a._hnf_pari_big(flag=1, include_zero_rows=True) -- [1 2 3] -- [0 3 6] -- [0 0 0] -- sage: a._hnf_pari_big(flag=3, include_zero_rows=True) -- [1 2 3] -- [0 3 6] -- [0 0 0] -- sage: a._hnf_pari_big(flag=4, include_zero_rows=True) -- [1 2 3] -- [0 3 6] -- [0 0 0] -- -- Check that ``include_zero_rows=False`` works correctly:: -- -- sage: matrix(ZZ,3,[1..9])._hnf_pari_big(0, include_zero_rows=False) -- [1 2 3] -- [0 3 6] -- sage: matrix(ZZ,3,[1..9])._hnf_pari_big(1, include_zero_rows=False) -- [1 2 3] -- [0 3 6] -- sage: matrix(ZZ,3,[1..9])._hnf_pari_big(3, include_zero_rows=False) -- [1 2 3] -- [0 3 6] -- sage: matrix(ZZ,3,[1..9])._hnf_pari_big(4, include_zero_rows=False) -- [1 2 3] -- [0 3 6] -- """ -- cdef Gen H = integer_matrix(self._matrix, 1) -- H = H.mathnf(flag) -- sig_on() -- B = self.extract_hnf_from_pari_matrix(H.g, flag, include_zero_rows) -- clear_stack() # This calls sig_off() -- return B -- -- cdef extract_hnf_from_pari_matrix(self, GEN H, int flag, bint include_zero_rows): -- # Throw away the transformation matrix (yes, we should later -- # code this to keep track of it). -- cdef mpz_t tmp -- mpz_init(tmp) -- if flag > 0: -- H = gel(H,1) -- -- # Figure out how many columns we got back. -- cdef Py_ssize_t H_nc = glength(H) # number of columns -- # Now get the resulting Hermite form matrix back to Sage, suitably re-arranged. -- cdef Matrix_integer_dense B -- if include_zero_rows: -- B = self.new_matrix() -- else: -- B = self.new_matrix(nrows=H_nc) -- for i in range(self._ncols): -- for j in range(H_nc): -- INT_to_mpz(tmp, gcoeff(H, i+1, H_nc-j)) -- fmpz_set_mpz(fmpz_mat_entry(B._matrix,j,self._ncols-i-1),tmp) -- mpz_clear(tmp) -- return B -- -+ H = mathnf0(A, flag) -+ if typ(H) == t_VEC: -+ H = gel(H, 1) -+ GenH = new_gen(H) -+ return extract_hnf_from_pari_matrix(self, GenH, include_zero_rows) - - def p_minimal_polynomials(self, p, s_max=None): - r""" -@@ -5966,7 +5875,27 @@ cdef inline GEN pari_GEN(Matrix_integer_dense B): - return A - - -- ##################################################################################### -+cdef extract_hnf_from_pari_matrix(Matrix_integer_dense self, Gen H, bint include_zero_rows): -+ cdef mpz_t tmp -+ mpz_init(tmp) -+ -+ # Figure out how many columns we got back. -+ cdef long H_nc = glength(H.g) # number of columns -+ # Now get the resulting Hermite form matrix back to Sage, suitably re-arranged. -+ cdef Matrix_integer_dense B -+ if include_zero_rows: -+ B = self.new_matrix() -+ else: -+ B = self.new_matrix(nrows=H_nc) -+ cdef long i, j -+ for i in range(self._ncols): -+ for j in range(H_nc): -+ sig_check() -+ INT_to_mpz(tmp, gcoeff(H.g, i+1, H_nc-j)) -+ fmpz_set_mpz(fmpz_mat_entry(B._matrix,j,self._ncols-i-1),tmp) -+ mpz_clear(tmp) -+ return B -+ - - cdef _clear_columns(Matrix_integer_dense A, pivots, Py_ssize_t n): - # Clear all columns -@@ -5990,11 +5919,6 @@ cdef _clear_columns(Matrix_integer_dense A, pivots, Py_ssize_t n): - fmpz_clear(t) - sig_off() - --############################################################### -- -- -- -- - - cpdef _lift_crt(Matrix_integer_dense M, residues, moduli=None): - """ -diff --git a/src/sage/modular/modform/eis_series_cython.pyx b/src/sage/modular/modform/eis_series_cython.pyx -index f7e944c..3557c6b 100644 ---- a/src/sage/modular/modform/eis_series_cython.pyx -+++ b/src/sage/modular/modform/eis_series_cython.pyx -@@ -3,7 +3,7 @@ Eisenstein Series (optimized compiled functions) - """ - - from cysignals.memory cimport check_allocarray, sig_free --from cysignals.signals cimport sig_on, sig_off -+from cysignals.signals cimport sig_check - - from sage.rings.rational_field import QQ - from sage.rings.power_series_ring import PowerSeriesRing -@@ -161,8 +161,7 @@ cpdef eisenstein_series_poly(int k, int prec = 10) : - """ - cdef mpz_t *val = <mpz_t *>check_allocarray(prec, sizeof(mpz_t)) - cdef mpz_t one, mult, term, last, term_m1, last_m1 -- cdef unsigned long int expt -- cdef long ind, ppow, int_p -+ cdef long ind - cdef int i - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - -@@ -173,8 +172,6 @@ cpdef eisenstein_series_poly(int k, int prec = 10) : - if (prec == 0): - return Fmpz_poly.__new__(Fmpz_poly) - -- sig_on() -- - mpz_init(one) - mpz_init(term) - mpz_init(last) -@@ -182,33 +179,33 @@ cpdef eisenstein_series_poly(int k, int prec = 10) : - mpz_init(term_m1) - mpz_init(last_m1) - -- for i from 0 <= i < prec : -- mpz_init(val[i]) -- mpz_set_si(val[i], 1) -+ for i in range(prec): -+ mpz_init_set_si(val[i], 1) - - mpz_set_si(one, 1) - -- expt = <unsigned long int>(k - 1) -- a0 = - bernoulli(k) / (2*k) -+ cdef unsigned long expt = k - 1 -+ a0 = -bernoulli(k) / (2*k) - -- for p in primes(1,prec) : -- int_p = int(p) -- ppow = <long int>int_p -+ cdef long p, ppow -+ for p in primes(1, prec) : -+ ppow = p - -- mpz_set_si(mult, int_p) -+ mpz_set_si(mult, p) - mpz_pow_ui(mult, mult, expt) - mpz_mul(term, mult, mult) - mpz_set(last, mult) - -- while (ppow < prec): -+ while ppow < prec: -+ sig_check() - ind = ppow - mpz_sub(term_m1, term, one) - mpz_sub(last_m1, last, one) -- while (ind < prec): -+ while ind < prec: - mpz_mul(val[ind], val[ind], term_m1) - mpz_fdiv_q(val[ind], val[ind], last_m1) - ind += ppow -- ppow *= int_p -+ ppow *= p - mpz_set(last, term) - mpz_mul(term, term, mult) - -@@ -228,6 +225,4 @@ cpdef eisenstein_series_poly(int k, int prec = 10) : - - sig_free(val) - -- sig_off() -- - return res -diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx -index 758fb70..f499a3e 100644 ---- a/src/sage/plot/complex_plot.pyx -+++ b/src/sage/plot/complex_plot.pyx -@@ -19,7 +19,7 @@ Complex Plots - from __future__ import absolute_import - - # TODO: use NumPy buffers and complex fast_callable (when supported) --from cysignals.signals cimport sig_on, sig_off -+from cysignals.signals cimport sig_on, sig_off, sig_check - - cimport numpy as cnumpy - -@@ -381,12 +381,18 @@ def complex_plot(f, xrange, yrange, **options): - pass - - cdef double x, y -- ignore, ranges = setup_for_eval_on_grid([], [xrange, yrange], options['plot_points']) -- xrange,yrange=[r[:2] for r in ranges] -- sig_on() -- z_values = [[ f(new_CDF_element(x, y)) for x in srange(*ranges[0], include_endpoint=True)] -- for y in srange(*ranges[1], include_endpoint=True)] -- sig_off() -+ _, ranges = setup_for_eval_on_grid([], [xrange, yrange], options['plot_points']) -+ xrange = ranges[0] -+ yrange = ranges[1] -+ cdef list z_values = [] -+ cdef list row -+ for y in srange(*yrange, include_endpoint=True): -+ row = [] -+ for x in srange(*xrange, include_endpoint=True): -+ sig_check() -+ row.append(f(new_CDF_element(x, y))) -+ z_values.append(row) -+ - g = Graphics() - g._set_extra_kwds(Graphics._extract_kwds_for_show(options, ignore=['xmin', 'xmax'])) - g.add_primitive(ComplexPlot(complex_to_rgb(z_values), xrange, yrange, options)) -diff --git a/src/sage/rings/asymptotic/asymptotic_expansion_generators.py b/src/sage/rings/asymptotic/asymptotic_expansion_generators.py -index 84fa0e4..18f8e90 100644 ---- a/src/sage/rings/asymptotic/asymptotic_expansion_generators.py -+++ b/src/sage/rings/asymptotic/asymptotic_expansion_generators.py -@@ -1095,7 +1095,7 @@ class AsymptoticExpansionGenerators(SageObject): - sage: asymptotic_expansions.ImplicitExpansion('Z', phi=lambda u: 1 + 2*u + u^2, tau=2, precision=5) - Traceback (most recent call last): - ... -- ZeroDivisionError: Symbolic division by zero -+ ZeroDivisionError: symbolic division by zero - sage: asymptotic_expansions.ImplicitExpansion('Z', phi=lambda u: 1 + 2*u + u^2, tau=3, precision=5) - 3 - 4*I*sqrt(3)*Z^(-1/2) + 6*I*sqrt(3)*Z^(-3/2) + O(Z^(-2)) - -diff --git a/src/sage/rings/finite_rings/element_pari_ffelt.pyx b/src/sage/rings/finite_rings/element_pari_ffelt.pyx -index ff73a1f..2fcd3a1 100644 ---- a/src/sage/rings/finite_rings/element_pari_ffelt.pyx -+++ b/src/sage/rings/finite_rings/element_pari_ffelt.pyx -@@ -869,7 +869,8 @@ cdef class FiniteFieldElement_pari_ffelt(FinitePolyExtElement): - Univariate Polynomial Ring in beta over Finite Field of size 3 - """ - sig_on() -- return self._parent.polynomial_ring(name)(new_gen(FF_to_FpXQ_i(self.val))) -+ pol = new_gen(FF_to_FpXQ(self.val)) -+ return self._parent.polynomial_ring(name)(pol) - - def minpoly(self, var='x'): - """ -@@ -887,7 +888,8 @@ cdef class FiniteFieldElement_pari_ffelt(FinitePolyExtElement): - y^2 + 1 - """ - sig_on() -- return self._parent.polynomial_ring(var)(new_gen(FF_minpoly(self.val))) -+ pol = new_gen(FF_minpoly(self.val)) -+ return self._parent.polynomial_ring(var)(pol) - - def charpoly(self, var='x'): - """ -@@ -905,7 +907,8 @@ cdef class FiniteFieldElement_pari_ffelt(FinitePolyExtElement): - y^2 + 1 - """ - sig_on() -- return self._parent.polynomial_ring(var)(new_gen(FF_charpoly(self.val))) -+ pol = new_gen(FF_charpoly(self.val)) -+ return self._parent.polynomial_ring(var)(pol) - - def is_square(self): - """ -diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx -index 17e62f3..9e99bde 100644 ---- a/src/sage/rings/integer.pyx -+++ b/src/sage/rings/integer.pyx -@@ -6806,6 +6806,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): - ....: (2^100).binomial(2^22, algorithm='pari') - ....: except AlarmInterrupt: - ....: pass -+ doctest:...: RuntimeWarning: cypari2 leaked ... bytes on the PARI stack... - """ - cdef Integer x - cdef Integer mm -diff --git a/src/sage/rings/number_field/maps.py b/src/sage/rings/number_field/maps.py -index 1727c13..5717227 100644 ---- a/src/sage/rings/number_field/maps.py -+++ b/src/sage/rings/number_field/maps.py -@@ -358,7 +358,7 @@ class MapRelativeNumberFieldToRelativeVectorSpace(NumberFieldIsomorphism): - g = g(beta).lift() - # Convert the coefficients to elements of the base field. - B, from_B, _ = K.absolute_base_field() -- return self.codomain()([from_B(B(z.lift(), check=False)) for z in g.Vecrev(-K.relative_degree())]) -+ return self.codomain()([from_B(B(z.lift(), check=False)) for z in g.Vecrev(K.relative_degree())]) - - - class NameChangeMap(NumberFieldIsomorphism): -diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx -index a711e94..20895c0 100644 ---- a/src/sage/rings/polynomial/polynomial_element.pyx -+++ b/src/sage/rings/polynomial/polynomial_element.pyx -@@ -4363,8 +4363,7 @@ cdef class Polynomial(CommutativeAlgebraElement): - sage: G.prod() == g - True - """ -- pols = G[0] -- exps = G[1] -+ pols, exps = G - R = self._parent - F = [(R(f), int(e)) for f, e in zip(pols, exps)] - -diff --git a/src/sage/rings/power_series_pari.pyx b/src/sage/rings/power_series_pari.pyx -index e37e0a3..2e03ade 100644 ---- a/src/sage/rings/power_series_pari.pyx -+++ b/src/sage/rings/power_series_pari.pyx -@@ -678,7 +678,8 @@ cdef class PowerSeries_pari(PowerSeries): - g = g.truncate() - if typ(g.g) == t_POL and varn(g.g) == vn: - # t_POL has 2 codewords. Use new_ref instead of g[i] for speed. -- return [R(g.new_ref(gel(g.g, i))) for i in range(2, lg(g.g))] -+ G = g.fixGEN() -+ return [R(g.new_ref(gel(G, i))) for i in range(2, lg(G))] - else: - return [R(g)] - -@@ -729,6 +730,7 @@ cdef class PowerSeries_pari(PowerSeries): - return [] - - cdef pari_gen g = self.g -+ g.fixGEN() - cdef long l, m - - R = self.base_ring() -diff --git a/src/sage/rings/real_mpfr.pyx b/src/sage/rings/real_mpfr.pyx -index e273190..3b89f4b 100644 ---- a/src/sage/rings/real_mpfr.pyx -+++ b/src/sage/rings/real_mpfr.pyx -@@ -3212,7 +3212,6 @@ cdef class RealNumber(sage.structure.element.RingElement): - # by using internal interfaces of MPFR, which are documented - # as subject-to-change. - -- sig_on() - if mpfr_nan_p(self.value) or mpfr_inf_p(self.value): - raise ValueError('Cannot convert NaN or infinity to Pari float') - -@@ -3234,6 +3233,7 @@ cdef class RealNumber(sage.structure.element.RingElement): - cdef mp_exp_t exponent - cdef GEN pari_float - -+ sig_on() - if mpfr_zero_p(self.value): - pari_float = real_0_bit(-rounded_prec) - else: -@@ -3245,7 +3245,7 @@ cdef class RealNumber(sage.structure.element.RingElement): - # Create a PARI REAL - pari_float = cgetr(2 + rounded_prec / wordsize) - pari_float[1] = evalexpo(exponent + rounded_prec - 1) + evalsigne(mpfr_sgn(self.value)) -- mpz_export(&pari_float[2], NULL, 1, wordsize/8, 0, 0, mantissa) -+ mpz_export(&pari_float[2], NULL, 1, wordsize // 8, 0, 0, mantissa) - mpz_clear(mantissa) - - return new_gen(pari_float) -diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx -index 586d4ab..c14b9a6 100644 ---- a/src/sage/symbolic/expression.pyx -+++ b/src/sage/symbolic/expression.pyx -@@ -1273,12 +1273,7 @@ cdef class Expression(CommutativeRingElement): - sage: f._convert({'parent':int}) - 0 - """ -- cdef GEx res -- sig_on() -- try: -- res = self._gobj.evalf(0, kwds) -- finally: -- sig_off() -+ cdef GEx res = self._gobj.evalf(0, kwds) - return new_Expression_from_GEx(self._parent, res) - - def _mpfr_(self, R): -@@ -2839,11 +2834,7 @@ cdef class Expression(CommutativeRingElement): - # constants are wrappers around Sage objects, compare directly - if is_a_constant(self._gobj.lhs()) and is_a_constant(self._gobj.rhs()): - return self.operator()(self.lhs().pyobject(), self.rhs().pyobject()) -- sig_on() -- try: -- pynac_result = decide_relational(self._gobj) -- finally: -- sig_off() -+ pynac_result = decide_relational(self._gobj) - if pynac_result == relational_undecidable: - raise ValueError('undecidable relation: ' + repr(self)) - -@@ -3233,27 +3224,23 @@ cdef class Expression(CommutativeRingElement): - cdef GEx x - cdef Expression _right = <Expression>right - cdef operators op -- sig_on() -- try: -- if is_a_relational(left._gobj): -- if is_a_relational(_right._gobj): -- op = compatible_relation(relational_operator(left._gobj), -- relational_operator(_right._gobj)) -- x = relational(left._gobj.lhs() + _right._gobj.lhs(), -- left._gobj.rhs() + _right._gobj.rhs(), -- op) -- else: -- x = relational(left._gobj.lhs() + _right._gobj, -- left._gobj.rhs() + _right._gobj, -- relational_operator(left._gobj)) -- elif is_a_relational(_right._gobj): -- x = relational(left._gobj + _right._gobj.lhs(), -- left._gobj + _right._gobj.rhs(), -- relational_operator(_right._gobj)) -+ if is_a_relational(left._gobj): -+ if is_a_relational(_right._gobj): -+ op = compatible_relation(relational_operator(left._gobj), -+ relational_operator(_right._gobj)) -+ x = relational(left._gobj.lhs() + _right._gobj.lhs(), -+ left._gobj.rhs() + _right._gobj.rhs(), -+ op) - else: -- x = left._gobj + _right._gobj -- finally: -- sig_off() -+ x = relational(left._gobj.lhs() + _right._gobj, -+ left._gobj.rhs() + _right._gobj, -+ relational_operator(left._gobj)) -+ elif is_a_relational(_right._gobj): -+ x = relational(left._gobj + _right._gobj.lhs(), -+ left._gobj + _right._gobj.rhs(), -+ relational_operator(_right._gobj)) -+ else: -+ x = left._gobj + _right._gobj - return new_Expression_from_GEx(left._parent, x) - - cpdef _sub_(left, right): -@@ -3289,27 +3276,23 @@ cdef class Expression(CommutativeRingElement): - """ - cdef GEx x - cdef Expression _right = <Expression>right -- sig_on() -- try: -- if is_a_relational(left._gobj): -- if is_a_relational(_right._gobj): -- op = compatible_relation(relational_operator(left._gobj), -- relational_operator(_right._gobj)) -- x = relational(left._gobj.lhs() - _right._gobj.lhs(), -- left._gobj.rhs() - _right._gobj.rhs(), -- op) -- else: -- x = relational(left._gobj.lhs() - _right._gobj, -- left._gobj.rhs() - _right._gobj, -- relational_operator(left._gobj)) -- elif is_a_relational(_right._gobj): -- x = relational(left._gobj - _right._gobj.lhs(), -- left._gobj - _right._gobj.rhs(), -- relational_operator(_right._gobj)) -+ if is_a_relational(left._gobj): -+ if is_a_relational(_right._gobj): -+ op = compatible_relation(relational_operator(left._gobj), -+ relational_operator(_right._gobj)) -+ x = relational(left._gobj.lhs() - _right._gobj.lhs(), -+ left._gobj.rhs() - _right._gobj.rhs(), -+ op) - else: -- x = left._gobj - _right._gobj -- finally: -- sig_off() -+ x = relational(left._gobj.lhs() - _right._gobj, -+ left._gobj.rhs() - _right._gobj, -+ relational_operator(left._gobj)) -+ elif is_a_relational(_right._gobj): -+ x = relational(left._gobj - _right._gobj.lhs(), -+ left._gobj - _right._gobj.rhs(), -+ relational_operator(_right._gobj)) -+ else: -+ x = left._gobj - _right._gobj - return new_Expression_from_GEx(left._parent, x) - - cpdef _mul_(left, right): -@@ -3457,29 +3440,25 @@ cdef class Expression(CommutativeRingElement): - cdef GEx x - cdef Expression _right = <Expression>right - cdef operators o -- sig_on() -- try: -- if is_a_relational(left._gobj): -- if is_a_relational(_right._gobj): -- op = compatible_relation(relational_operator(left._gobj), -- relational_operator(_right._gobj)) -- x = relational(left._gobj.lhs() * _right._gobj.lhs(), -- left._gobj.rhs() * _right._gobj.rhs(), -- op) -- else: -- o = relational_operator(left._gobj) -- x = relational(left._gobj.lhs() * _right._gobj, -- left._gobj.rhs() * _right._gobj, -- o) -- elif is_a_relational(_right._gobj): -- o = relational_operator(_right._gobj) -- x = relational(left._gobj * _right._gobj.lhs(), -- left._gobj * _right._gobj.rhs(), -- o) -+ if is_a_relational(left._gobj): -+ if is_a_relational(_right._gobj): -+ op = compatible_relation(relational_operator(left._gobj), -+ relational_operator(_right._gobj)) -+ x = relational(left._gobj.lhs() * _right._gobj.lhs(), -+ left._gobj.rhs() * _right._gobj.rhs(), -+ op) - else: -- x = left._gobj * _right._gobj -- finally: -- sig_off() -+ o = relational_operator(left._gobj) -+ x = relational(left._gobj.lhs() * _right._gobj, -+ left._gobj.rhs() * _right._gobj, -+ o) -+ elif is_a_relational(_right._gobj): -+ o = relational_operator(_right._gobj) -+ x = relational(left._gobj * _right._gobj.lhs(), -+ left._gobj * _right._gobj.rhs(), -+ o) -+ else: -+ x = left._gobj * _right._gobj - return new_Expression_from_GEx(left._parent, x) - - cpdef _div_(left, right): -@@ -3553,7 +3532,7 @@ cdef class Expression(CommutativeRingElement): - sage: x/0 - Traceback (most recent call last): - ... -- ZeroDivisionError: Symbolic division by zero -+ ZeroDivisionError: symbolic division by zero - - Check if Pynac can compute divisions of Python longs (:trac:`13107`):: - -@@ -3563,7 +3542,6 @@ cdef class Expression(CommutativeRingElement): - cdef GEx x - cdef Expression _right = <Expression>right - cdef operators o -- sig_on() - try: - if is_a_relational(left._gobj): - if is_a_relational(_right._gobj): -@@ -3589,11 +3567,9 @@ cdef class Expression(CommutativeRingElement): - # TODO: change this to maybe cleverly do something involving Cython C++ exception handling. - # See http://docs.cython.org/docs/wrapping_CPlusPlus.html - if 'division by zero' in str(msg): -- raise ZeroDivisionError("Symbolic division by zero") -+ raise ZeroDivisionError("symbolic division by zero") - else: - raise -- finally: -- sig_off() - - def __invert__(self): - """ -@@ -5314,11 +5290,7 @@ cdef class Expression(CommutativeRingElement): - for k, v in sdict.iteritems(): - smap.insert(make_pair((<Expression>self.coerce_in(k))._gobj, - (<Expression>self.coerce_in(v))._gobj)) -- sig_on() -- try: -- res = self._gobj.subs_map(smap, 0) -- finally: -- sig_off() -+ res = self._gobj.subs_map(smap, 0) - return new_Expression_from_GEx(self._parent, res) - - subs = substitute -@@ -7183,12 +7155,7 @@ cdef class Expression(CommutativeRingElement): - x^2 + 2*x + 2 - """ - cdef Expression r = self.coerce_in(b) -- cdef GEx x -- sig_on() -- try: -- x = g_gcd(self._gobj, r._gobj) -- finally: -- sig_off() -+ cdef GEx x = g_gcd(self._gobj, r._gobj) - return new_Expression_from_GEx(self._parent, x) - - def gosper_sum(self, *args): -@@ -8983,12 +8950,7 @@ cdef class Expression(CommutativeRingElement): - sage: t = SR(1).zeta(); t - Infinity - """ -- cdef GEx x -- sig_on() -- try: -- x = g_hold_wrapper(g_zeta, self._gobj, hold) -- finally: -- sig_off() -+ cdef GEx x = g_hold_wrapper(g_zeta, self._gobj, hold) - return new_Expression_from_GEx(self._parent, x) - - def factorial(self, hold=False): Modified: sagemath-env.patch =================================================================== --- sagemath-env.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ sagemath-env.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -1,6 +1,6 @@ --- src/bin/sage-env.orig 2015-01-06 10:46:04.469687605 +0100 +++ src/bin/sage-env 2015-01-06 10:49:59.547762019 +0100 -@@ -111,41 +111,7 @@ +@@ -111,41 +111,6 @@ } @@ -39,7 +39,6 @@ - echo >&2 "Old SAGE_ROOT=$SAGE_ROOT" - echo >&2 "New SAGE_ROOT=$NEW_SAGE_ROOT" -fi -+NEW_SAGE_ROOT="/usr" # Don't execute the commands more than once for the same version of @@ -90,7 +89,7 @@ export SAGE_DOC="$SAGE_SHARE/doc/sage" if [ -z "${SAGE_ORIG_PATH_SET}" ]; then -@@ -409,29 +409,8 @@ +@@ -409,28 +409,8 @@ export SAGE_STARTUP_FILE fi @@ -118,10 +117,9 @@ - >&2 echo "Warning: PYTHONHOME must not be set when running Sage, clearing env..." - unset PYTHONHOME -fi -- + LDFLAGS="-L$SAGE_LOCAL/lib -Wl,-rpath,$SAGE_LOCAL/lib $LDFLAGS" export LDFLAGS - @@ -495,8 +495,6 @@ fi fi @@ -141,22 +139,3 @@ # Handle parallel building/testing/... # See Trac Ticket #12016 # First, figure out the right values for SAGE_NUM_THREADS (default ---- src/sage/env.py.orig 2017-12-07 19:51:25.554281539 +0000 -+++ src/sage/env.py 2017-12-07 19:51:42.787654650 +0000 -@@ -117,13 +117,13 @@ - _add_variable_or_fallback('LOCAL_IDENTIFIER','$HOSTNAME.%s'%os.getpid()) - - # bunch of sage directories and files --_add_variable_or_fallback('SAGE_ROOT', None) --_add_variable_or_fallback('SAGE_LOCAL', None) -+_add_variable_or_fallback('SAGE_ROOT', '') -+_add_variable_or_fallback('SAGE_LOCAL', '/usr') - _add_variable_or_fallback('SAGE_ETC', opj('$SAGE_LOCAL', 'etc')) - _add_variable_or_fallback('SAGE_INC', opj('$SAGE_LOCAL', 'include')) - _add_variable_or_fallback('SAGE_SHARE', opj('$SAGE_LOCAL', 'share')) - --_add_variable_or_fallback('SAGE_SRC', opj('$SAGE_ROOT', 'src')) -+_add_variable_or_fallback('SAGE_SRC', opj('$SAGE_LOCAL', 'lib', 'python2.7', 'site-packages')) - - try: - sitepackages_dirs = site.getsitepackages() Modified: sagemath-gap-4.10.1.patch =================================================================== --- sagemath-gap-4.10.1.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ sagemath-gap-4.10.1.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -17,15 +17,15 @@ index 97c383fdbe..20ecc82976 100644 --- a/src/sage/libs/gap/util.pyx +++ b/src/sage/libs/gap/util.pyx -@@ -320,8 +320,8 @@ - # Need to save/restore current SIGINT handling since GAP_Initialize - # currently clobbers it; it doesn't matter what we set SIGINT to - # temporarily. +@@ -329,8 +329,8 @@ cdef initialize(): + # Initialize GAP and capture any error messages. The + # initialization just prints any errors and does not + # use the error handler. - GAP_Initialize(argc, argv, env, &gasman_callback, - &error_handler) + GAP_Initialize(argc, argv, &gasman_callback, + &error_handler, 1) - except RuntimeError as msg: - raise RuntimeError('libGAP initialization failed\n' + msg) - finally: + finally: + sig_off() + Deleted: sagemath-numpy-1.16.patch =================================================================== --- sagemath-numpy-1.16.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ sagemath-numpy-1.16.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -1,85 +0,0 @@ -diff --git a/src/sage/misc/inline_fortran.py b/src/sage/misc/inline_fortran.py -index e44724b..2bb4852 100644 ---- a/src/sage/misc/inline_fortran.py -+++ b/src/sage/misc/inline_fortran.py -@@ -5,6 +5,7 @@ from __future__ import absolute_import - - import os - import shutil -+import subprocess - import sys - - import six -@@ -154,8 +155,6 @@ class InlineFortran: - from sage.repl.user_globals import get_globals - globals = get_globals() - -- from numpy import f2py -- - # Create everything in a temporary directory - mytmpdir = tmp_dir() - -@@ -171,36 +170,44 @@ class InlineFortran: - else: - fortran_file = name + '.f' - -- s_lib_path = "" -- s_lib = "" -- for s in self.library_paths: -- s_lib_path = s_lib_path + "-L%s " -+ s_lib_path = ['-L' + p for p in self.library_paths] -+ s_lib = ['-l' + l for l in self.libraries] - -- for s in self.libraries: -- s_lib = s_lib + "-l%s "%s -+ with open(fortran_file, 'w') as fobj: -+ fobj.write(x) - -- log = name + ".log" -- extra_args = ('--quiet --f77exec=sage-inline-fortran ' -- '--f90exec=sage-inline-fortran {lib_path} {lib} ' -- '> {log} 2>&1'.format(lib_path=s_lib_path, -- lib=s_lib, log=log)) -+ # This is basically the same as what f2py.compile() does, but we -+ # do it manually here in order to customize running the subprocess -+ # a bit more (in particular to capture stderr) -+ cmd = [sys.executable, '-c', 'import numpy.f2py; numpy.f2py.main()'] - -- f2py.compile(x, name, extra_args=extra_args, -- source_fn=fortran_file) -+ # What follows are the arguments to f2py itself (appended later -+ # just for logical separation) -+ cmd += ['-c', '-m', name, fortran_file, '--quiet', -+ '--f77exec=sage-inline-fortran', -+ '--f90exec=sage-inline-fortran'] + s_lib_path + s_lib - -- with open(log) as fobj: -- log_string = fobj.read() -+ try: -+ out = subprocess.check_output(cmd, stderr=subprocess.STDOUT) -+ except subprocess.CalledProcessError as exc: -+ raise RuntimeError( -+ "failed to compile Fortran code:\n{}".format(exc.output)) - - # Note that f2py() doesn't raise an exception if it fails. - # In that case, the import below will fail. - try: - mod = _import_module_from_path(name, [mytmpdir]) -- except ImportError: -- raise RuntimeError("failed to compile Fortran code:\n" + -- log_string) -+ except ImportError as exc: -+ # Failed to import the module; include any output from building -+ # the module (even though it was ostensibly successful) in case -+ # it might help -+ msg = "failed to load compiled Fortran code: {}".format(exc) -+ if out: -+ msg += '\n' + out -+ raise RuntimeError(msg) - - if self.verbose: -- print(log_string) -+ print(out) - finally: - os.chdir(old_cwd) - Modified: sagemath-python3-notebook.patch =================================================================== --- sagemath-python3-notebook.patch 2019-03-24 09:25:39 UTC (rev 443312) +++ sagemath-python3-notebook.patch 2019-03-24 10:09:23 UTC (rev 443313) @@ -2,7 +2,7 @@ index 74192da240..0ede281aad 100755 --- a/src/bin/sage-notebook +++ b/src/bin/sage-notebook -@@ -96,8 +96,7 @@ class NotebookJupyter(object): +@@ -95,8 +95,7 @@ class NotebookJupyter(object): if not have_prerequisites(): print(self.PREREQUISITE_ERROR) raise SystemExit(1)
