diff --git a/sagemath-bind2nd.patch b/sagemath-bind2nd.patch new file mode 100644 index 0000000..99cfc5e --- /dev/null +++ b/sagemath-bind2nd.patch @@ -0,0 +1,20 @@ +diff -up src/sage/modular/arithgroup/farey.cpp.orig src/sage/modular/arithgroup/farey.cpp +--- src/sage/modular/arithgroup/farey.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/modular/arithgroup/farey.cpp 2023-03-13 12:54:35.465197691 -0600 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -737,7 +738,7 @@ size_t FareySymbol::nu3() const { + size_t FareySymbol::rank_pi() const { + if( index() == 2 ) return 1; + return count_if(pairing.begin(), pairing.end(), +- bind2nd(greater(), 0))/2; ++ bind(greater(), placeholders::_1, 0))/2; + } + + size_t FareySymbol::number_of_cusps() const { diff --git a/sagemath-catch-value.patch b/sagemath-catch-value.patch new file mode 100644 index 0000000..1549c96 --- /dev/null +++ b/sagemath-catch-value.patch @@ -0,0 +1,232 @@ +diff -up src/sage/graphs/base/boost_interface.cpp.orig src/sage/graphs/base/boost_interface.cpp +--- src/sage/graphs/base/boost_interface.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/graphs/base/boost_interface.cpp 2023-03-13 11:32:02.724494081 -0600 +@@ -240,7 +240,7 @@ public: + try { + boost::dijkstra_shortest_paths(graph, vertices[s], distance_map(boost::make_iterator_property_map(distances.begin(), index)) + .predecessor_map(boost::make_iterator_property_map(predecessors.begin(), index))); +- } catch (boost::exception_detail::clone_impl > e) { ++ } catch (boost::exception_detail::clone_impl >& e) { + return to_return; + } + +diff -up src/sage/symbolic/ginac/function.cpp.orig src/sage/symbolic/ginac/function.cpp +--- src/sage/symbolic/ginac/function.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/function.cpp 2023-03-13 11:32:31.540967570 -0600 +@@ -961,12 +961,12 @@ ex function::evalf(int level, PyObject* + try { + return n.try_py_method(get_name()); + } +- catch (std::logic_error) { ++ catch (std::logic_error&) { + try { + const numeric& nn = ex_to(n.evalf()).try_py_method(get_name()); + return nn.to_dict_parent(kwds); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + } + } + return function(serial,eseq).hold(); +diff -up src/sage/symbolic/ginac/inifcns_trans.cpp.orig src/sage/symbolic/ginac/inifcns_trans.cpp +--- src/sage/symbolic/ginac/inifcns_trans.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/inifcns_trans.cpp 2023-03-13 11:32:57.173499217 -0600 +@@ -379,7 +379,7 @@ static ex log_series(const ex &arg, + // maybe substitution of rel into arg fails because of a pole + try { + arg_pt = arg.subs(rel, subs_options::no_pattern); +- } catch (pole_error) { ++ } catch (pole_error&) { + must_expand_arg = true; + } + // or we are at the branch point anyways +diff -up src/sage/symbolic/ginac/mpoly-singular.cpp.orig src/sage/symbolic/ginac/mpoly-singular.cpp +--- src/sage/symbolic/ginac/mpoly-singular.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/mpoly-singular.cpp 2023-03-13 11:33:28.275930939 -0600 +@@ -76,7 +76,7 @@ static CanonicalForm num2canonical(const + try { + return n.to_canonical(); + } +- catch (std::runtime_error) { ++ catch (std::runtime_error&) { + if (not n.is_real()) { + numeric re = n.real(); + numeric im = n.imag(); +@@ -233,7 +233,7 @@ const CanonicalForm ex::to_canonical(ex_ + try { + return ::power(var, n.to_long()); + } +- catch (std::runtime_error) { ++ catch (std::runtime_error&) { + throw std::runtime_error("exponent too big"); + } + } +@@ -261,7 +261,7 @@ const CanonicalForm ex::to_canonical(ex_ + try { + return ::power(var, n.to_long()); + } +- catch (std::runtime_error) { ++ catch (std::runtime_error&) { + throw std::runtime_error("exponent too big"); + } + } +diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp +--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/numeric.cpp 2023-03-13 12:53:12.671709229 -0600 +@@ -3636,11 +3636,11 @@ const numeric numeric::real() const { + try { + return try_py_method("real"); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + try { + return try_py_method("real_part"); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + return *this; + } + default: +@@ -3664,11 +3664,11 @@ const numeric numeric::imag() const { + try { + return try_py_method("imag"); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + try { + return try_py_method("imag_part"); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + return *_num0_p; + } + default: +@@ -4945,11 +4945,11 @@ const numeric Li2(const numeric &x, PyOb + try { + return x.try_py_method("dilog"); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + try { + return x.try_py_method("polylog", *_num2_p); + } +- catch (std::logic_error) {} ++ catch (std::logic_error&) {} + + return x.Li2(*_num2_p, parent); + } +diff -up src/sage/symbolic/ginac/pseries.cpp.orig src/sage/symbolic/ginac/pseries.cpp +--- src/sage/symbolic/ginac/pseries.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/pseries.cpp 2023-03-13 11:34:56.953310716 -0600 +@@ -855,7 +855,7 @@ ex mul::series(const relational & r, int + bool flag_redo = false; + try { + real_ldegree = buf.expand().ldegree(sym-r.rhs()).to_int(); +- } catch (std::runtime_error) {} ++ } catch (std::runtime_error&) {} + + if (real_ldegree == 0) { + if ( factor < 0 ) { +@@ -1053,7 +1053,7 @@ ex power::series(const relational & r, i + if (is_exactly_a(basis_subs)) { + must_expand_basis = true; + } +- } catch (pole_error) { ++ } catch (pole_error&) { + must_expand_basis = true; + } + +@@ -1063,7 +1063,7 @@ ex power::series(const relational & r, i + if (is_exactly_a(exponent_subs)) { + exponent_is_regular = false; + } +- } catch (pole_error) { ++ } catch (pole_error&) { + exponent_is_regular = false; + } + +@@ -1133,7 +1133,7 @@ ex power::series(const relational & r, i + ex result; + try { + result = ex_to(e).power_const(numexp, order); +- } catch (pole_error) { ++ } catch (pole_error&) { + epvector ser; + ser.emplace_back(Order(_ex1), order); + result = pseries(r, ser); +@@ -1203,7 +1203,7 @@ ex ex::series(const ex & r, int order, u + order, + options); + } +- catch(flint_error) { ++ catch(flint_error&) { + ; + } + } +diff -up src/sage/symbolic/ginac/sum.cpp.orig src/sage/symbolic/ginac/sum.cpp +--- src/sage/symbolic/ginac/sum.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/sum.cpp 2023-03-13 11:35:12.139033264 -0600 +@@ -562,7 +562,7 @@ ex gosper_sum_definite(ex f, ex s, ex a, + return res; + return t; + } +- catch (gosper_domain_error) { ++ catch (gosper_domain_error&) { + *success = 0; + return _ex0; + } +@@ -579,7 +579,7 @@ ex gosper_sum_indefinite(ex f, ex s, int + return res; + return t; + } +- catch (gosper_domain_error) { ++ catch (gosper_domain_error&) { + *success = 0; + return _ex0; + } +diff -up src/sage/symbolic/ginac/upoly-ginac.cpp.orig src/sage/symbolic/ginac/upoly-ginac.cpp +--- src/sage/symbolic/ginac/upoly-ginac.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/upoly-ginac.cpp 2023-03-13 11:35:36.657585291 -0600 +@@ -240,7 +240,7 @@ ex decomp_rational(const ex &a, const ex + try { + q = quo(numer, denom, x); + } +- catch (std::logic_error) { ++ catch (std::logic_error&) { + return a; + } + return q + rem(numer, denom, x) / denom; +@@ -536,7 +536,7 @@ ex parfrac(const ex & a, const ex & x) + // Convert N(x)/D(x) -> Q(x) + R(x)/D(x), so degree(R) < degree(D) + qr = quo_rem(numer, denom, x, true); + } +- catch (std::logic_error) { ++ catch (std::logic_error&) { + return a; + } + // Factorize denominator and compute cofactors +diff -up src/sage/symbolic/ginac/useries.cpp.orig src/sage/symbolic/ginac/useries.cpp +--- src/sage/symbolic/ginac/useries.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/useries.cpp 2023-03-13 11:35:59.505167856 -0600 +@@ -322,10 +322,10 @@ bool useries_can_handle(const ex& the_ex + (void) nd.op(1).degree(s).to_long(); + (void) nd.op(1).ldegree(s).to_long(); + } +- catch (conversion_error) { ++ catch (conversion_error&) { + throw std::runtime_error("exponent too big"); + } +- catch (std::runtime_error) {} ++ catch (std::runtime_error&) {} + } + return ok; + } +@@ -406,7 +406,7 @@ ex useries(const ex& the_ex, const symbo + try { + ldeg = low_series_degree(the_ex); + } +- catch (ldegree_error) { ++ catch (ldegree_error&) { + may_extend = true; + } + diff --git a/sagemath-env.patch b/sagemath-env.patch index 9c881f6..1816510 100644 --- a/sagemath-env.patch +++ b/sagemath-env.patch @@ -33,7 +33,7 @@ diff -up src/sage/env.py.orig src/sage/env.py +MTXLIB = var("MTXLIB", join(DOT_SAGE, "meataxe")) THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs-sage")) -PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy")) -+PPLPY_DOCS = var("PPLPY_DOCS", join("/usr", "share", "doc", "python3-pplpy")) ++PPLPY_DOCS = var("PPLPY_DOCS", join("/usr", "share", "doc", "python3-pplpy-devel")) MAXIMA = var("MAXIMA", "maxima") MAXIMA_FAS = var("MAXIMA_FAS") KENZO_FAS = var("KENZO_FAS") diff --git a/sagemath-escape.patch b/sagemath-escape.patch index a13bacb..db87c77 100644 --- a/sagemath-escape.patch +++ b/sagemath-escape.patch @@ -1,7 +1,7 @@ diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_regular_db.pyx ---- src/sage/graphs/strongly_regular_db.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/graphs/strongly_regular_db.pyx 2023-01-15 16:25:07.239217420 -0700 -@@ -2424,7 +2424,7 @@ def strongly_regular_from_two_intersecti +--- src/sage/graphs/strongly_regular_db.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/graphs/strongly_regular_db.pyx 2023-03-13 08:43:22.143746071 -0600 +@@ -2443,7 +2443,7 @@ def strongly_regular_from_two_intersecti A set of points in the projective geometry `PG(k,q)` is said to be a 2-intersection set if it intersects every hyperplane in either `h_1` or @@ -11,8 +11,8 @@ diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_r From a 2-intersection set `S` can be defined a strongly-regular graph in the following way: diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx ---- src/sage/groups/group.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/group.pyx 2023-01-15 16:25:07.239217420 -0700 +--- src/sage/groups/group.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/group.pyx 2023-03-13 08:43:22.143746071 -0600 @@ -51,7 +51,7 @@ def is_Group(x): @@ -23,8 +23,8 @@ diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx TESTS:: diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx ---- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2023-01-15 16:25:08.856187835 -0700 +--- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2023-03-13 08:43:22.144746053 -0600 @@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary self.ith_word = &ith_word_linear @@ -34,96 +34,9 @@ diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/ Perform the canonical labeling and automorphism group computation, storing results to self. -diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx ---- src/sage/libs/eclib/newforms.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/eclib/newforms.pyx 2023-01-15 16:25:10.727153601 -0700 -@@ -22,7 +22,7 @@ from sage.modular.all import Cusp - - - cdef class ECModularSymbol: -- """ -+ r""" - Modular symbol associated with an elliptic curve, using John Cremona's newforms class. - - EXAMPLES:: -diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx ---- src/sage/libs/fes.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/fes.pyx 2023-01-15 16:25:10.727153601 -0700 -@@ -292,7 +292,7 @@ def find_coordinate_change(As, max_tries - - - def prepare_polynomials(f): -- """ -+ r""" - Finds a linear combination of the equations that is faster to solve by FES - - INPUT: -diff -up src/sage/libs/ntl/ntl_GF2E.pyx.orig src/sage/libs/ntl/ntl_GF2E.pyx ---- src/sage/libs/ntl/ntl_GF2E.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_GF2E.pyx 2023-01-15 16:25:10.727153601 -0700 -@@ -73,7 +73,7 @@ def ntl_GF2E_random(ntl_GF2EContext_clas - - cdef class ntl_GF2E(): - r""" -- The \\class{GF2E} represents a finite extension field over GF(2) -+ The \class{GF2E} represents a finite extension field over GF(2) - using NTL. Elements are represented as polynomials over GF(2) - modulo a modulus. - -@@ -439,7 +439,7 @@ cdef class ntl_GF2E(): - return l - - def _sage_(ntl_GF2E self, k=None): -- """ -+ r""" - Returns a \class{FiniteFieldElement} representation - of this element. If a \class{FiniteField} k is provided - it is constructed in this field if possible. A \class{FiniteField} -diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E.pyx ---- src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2023-01-15 16:25:10.728153583 -0700 -@@ -181,7 +181,7 @@ cdef class ntl_mat_GF2E(): - return unpickle_class_args, (ntl_mat_GF2E, (self.modulus_context(), self.x.NumRows(), self.x.NumCols(), self.list())) - - def __repr__(self): -- """ -+ r""" - Return the string representation of self. - - EXAMPLES:: -@@ -446,7 +446,7 @@ cdef class ntl_mat_GF2E(): - return r - - def gauss(self,ncols=-1): -- """ -+ r""" - Performs unitary row operations so as to bring this matrix - into row echelon form. If the optional argument \code{ncols} - is supplied, stops when first ncols columns are in echelon -diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.pyx ---- src/sage/libs/ntl/ntl_mat_GF2.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2023-01-15 16:33:39.175760142 -0700 -@@ -5,7 +5,7 @@ - # distutils: extra_link_args = NTL_LIBEXTRA - # distutils: language = c++ - --""" -+r""" - Matrices over the `\GF{2}` via NTL - - This class is only provided to have a complete NTL interface and for -@@ -376,7 +376,7 @@ cdef class ntl_mat_GF2(): - return r - - def gauss(self,ncols=-1): -- """ -+ r""" - Performs unitary row operations so as to bring this matrix - into row echelon form (not reduced!). If the optional - argument \code{ncols} is supplied, stops when first ncols diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx ---- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2023-01-15 16:25:10.728153583 -0700 +--- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2023-03-13 08:43:33.262545927 -0600 @@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ(): return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list())) @@ -133,45 +46,9 @@ diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx Return the string representation of self. EXAMPLES:: -diff -up src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig src/sage/libs/ntl/ntl_ZZ_pEX.pyx ---- src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2023-01-15 17:03:36.337323674 -0700 -@@ -5,7 +5,7 @@ - # distutils: extra_link_args = NTL_LIBEXTRA - # distutils: language = c++ - --""" -+r""" - Wrapper for NTL's polynomials over finite ring extensions of `\Z / p\Z.` - - AUTHORS: -diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx ---- src/sage/libs/ntl/ntl_ZZX.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZX.pyx 2023-01-15 16:25:10.729153564 -0700 -@@ -692,7 +692,7 @@ cdef class ntl_ZZX(): - return (self*other).quo_rem(g)[0] - - def xgcd(self, ntl_ZZX other, proof=None): -- """ -+ r""" - If self and other are coprime over the rationals, return r, s, - t such that r = s*self + t*other. Otherwise return 0. This - is \emph{not} the same as the \sage function on polynomials -diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polynomial.pyx ---- src/sage/libs/singular/polynomial.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/singular/polynomial.pyx 2023-01-15 16:25:10.729153564 -0700 -@@ -22,7 +22,7 @@ cdef extern from *: # hack to get at cyt - int unlikely(int) - - import re --plusminus_pattern = re.compile("([^\(^])([\+\-])") -+plusminus_pattern = re.compile(r"([^\(^])([\+\-])") - parenthvar_pattern = re.compile(r"\(([a-zA-Z][a-zA-Z0-9]*)\)") - - from sage.cpython.string cimport bytes_to_str, str_to_bytes diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi ---- src/sage/libs/symmetrica/sc.pxi.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/symmetrica/sc.pxi 2023-01-15 16:25:10.729153564 -0700 +--- src/sage/libs/symmetrica/sc.pxi.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/symmetrica/sc.pxi 2023-03-13 08:43:36.725482994 -0600 @@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab @@ -182,8 +59,8 @@ diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi MATRIX object, the charactertable of S_b \wr S_a, co becomes a VECTOR object of classorders and cl becomes a VECTOR object of diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx ---- src/sage/matrix/matrix_integer_dense.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/matrix/matrix_integer_dense.pyx 2023-01-15 16:25:13.768097961 -0700 +--- src/sage/matrix/matrix_integer_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/matrix/matrix_integer_dense.pyx 2023-03-13 08:43:36.727482958 -0600 @@ -757,7 +757,7 @@ cdef class Matrix_integer_dense(Matrix_d return ans @@ -194,8 +71,8 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in sage: n = 3 diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi ---- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/matrix/matrix_modn_dense_template.pxi 2023-01-15 16:25:13.768097961 -0700 +--- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/matrix/matrix_modn_dense_template.pxi 2023-03-13 08:43:36.728482940 -0600 @@ -649,7 +649,7 @@ cdef class Matrix_modn_dense_template(Ma return (word_size, little_endian, s), 10 @@ -214,99 +91,9 @@ diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/mat Reduces ``row1`` and ``row2`` by a unimodular transformation using the xgcd relation between their first coefficients ``a`` and ``b``. -diff -up src/sage/matroids/basis_exchange_matroid.pyx.orig src/sage/matroids/basis_exchange_matroid.pyx ---- src/sage/matroids/basis_exchange_matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/matroids/basis_exchange_matroid.pyx 2023-01-15 16:25:13.770097924 -0700 -@@ -2115,7 +2115,7 @@ cdef class BasisExchangeMatroid(Matroid) - return EQ[0] - - cpdef _is_isomorphism(self, other, morphism): -- """ -+ r""" - Version of is_isomorphism() that does no type checking. - - INPUT: -diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matroid.pyx ---- src/sage/matroids/linear_matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/matroids/linear_matroid.pyx 2023-01-15 16:25:13.771097906 -0700 -@@ -800,7 +800,7 @@ cdef class LinearMatroid(BasisExchangeMa - # (field) isomorphism - - cpdef bint _is_field_isomorphism(self, LinearMatroid other, morphism): # not safe if self == other -- """ -+ r""" - Version of :meth:`` that does no - type checking. - -@@ -966,7 +966,7 @@ cdef class LinearMatroid(BasisExchangeMa - return self._is_field_isomorphism(other, morphism) - - cpdef is_field_isomorphism(self, other, morphism): -- """ -+ r""" - Test if a provided morphism induces a bijection between represented - matroids. - -diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx ---- src/sage/matroids/matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/matroids/matroid.pyx 2023-01-15 16:25:13.772097888 -0700 -@@ -3150,7 +3150,7 @@ cdef class Matroid(SageObject): - return Polyhedron(vertices) - - def independence_matroid_polytope(self): -- """ -+ r""" - Return the independence matroid polytope of ``self``. - - This is defined as the convex hull of the vertices -@@ -3430,7 +3430,7 @@ cdef class Matroid(SageObject): - return self._is_isomorphism(other, morphism) - - cpdef is_isomorphism(self, other, morphism): -- """ -+ r""" - Test if a provided morphism induces a matroid isomorphism. - - A *morphism* is a map from the groundset of ``self`` to the groundset -@@ -3553,7 +3553,7 @@ cdef class Matroid(SageObject): - return self._is_isomorphism(other, mf) - - cpdef _is_isomorphism(self, other, morphism): -- """ -+ r""" - Version of is_isomorphism() that does no type checking. - - INPUT: -@@ -4313,7 +4313,7 @@ cdef class Matroid(SageObject): - return self.dual().extension(element, subsets).dual() - - cpdef modular_cut(self, subsets): -- """ -+ r""" - Compute the modular cut generated by ``subsets``. - - A *modular cut* is a collection `C` of flats such that -@@ -4714,7 +4714,7 @@ cdef class Matroid(SageObject): - return True - - cpdef is_cosimple(self): -- """ -+ r""" - Test if the matroid is cosimple. - - A matroid is *cosimple* if it contains no cocircuits of length 1 or 2. -@@ -7480,7 +7480,7 @@ cdef class Matroid(SageObject): - return A - - cpdef tutte_polynomial(self, x=None, y=None): -- """ -+ r""" - Return the Tutte polynomial of the matroid. - - The *Tutte polynomial* of a matroid is the polynomial diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx ---- src/sage/misc/cachefunc.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/misc/cachefunc.pyx 2023-01-15 16:25:13.772097888 -0700 +--- src/sage/misc/cachefunc.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/misc/cachefunc.pyx 2023-03-13 08:43:39.550431661 -0600 @@ -834,7 +834,7 @@ cdef class CachedFunction(): ## forward other questions to the cached function. @@ -317,8 +104,8 @@ diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx A cached function shall inherit the documentation diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py ---- src/sage/misc/sageinspect.py.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/misc/sageinspect.py 2023-01-15 16:40:43.609846146 -0700 +--- src/sage/misc/sageinspect.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/misc/sageinspect.py 2023-03-13 08:43:39.551431643 -0600 @@ -948,7 +948,7 @@ def _grep_first_pair_of_parentheses(s): @@ -328,22 +115,10 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py Split off a sub-expression from the start of a given string. INPUT: -diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_module_element.pyx ---- src/sage/modules/free_module_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/modules/free_module_element.pyx 2023-01-15 16:25:19.760988310 -0700 -@@ -3743,7 +3743,7 @@ cdef class FreeModuleElement(Vector): - from sage.misc.latex import latex - vector_delimiters = latex.vector_delimiters() - s = '\\left' + vector_delimiters[0] -- s += ',\,'.join(latex(a) for a in self.list()) -+ s += ',\\,'.join(latex(a) for a in self.list()) - return s + '\\right' + vector_delimiters[1] - - def dense_vector(self): diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical/backends/generic_backend.pyx ---- src/sage/numerical/backends/generic_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/numerical/backends/generic_backend.pyx 2023-01-15 16:25:19.761988291 -0700 -@@ -1384,7 +1384,7 @@ cdef class GenericBackend: +--- src/sage/numerical/backends/generic_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/numerical/backends/generic_backend.pyx 2023-03-13 08:43:39.552431625 -0600 +@@ -1388,7 +1388,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_variable_basic(self, int index): @@ -352,7 +127,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical Test whether the given variable is basic. This assumes that the problem has been solved with the simplex method -@@ -1414,7 +1414,7 @@ cdef class GenericBackend: +@@ -1418,7 +1418,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): @@ -361,7 +136,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical Test whether the given variable is nonbasic at lower bound. This assumes that the problem has been solved with the simplex method -@@ -1444,7 +1444,7 @@ cdef class GenericBackend: +@@ -1448,7 +1448,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_slack_variable_basic(self, int index): @@ -370,7 +145,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical Test whether the slack variable of the given row is basic. This assumes that the problem has been solved with the simplex method -@@ -1474,7 +1474,7 @@ cdef class GenericBackend: +@@ -1478,7 +1478,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index): @@ -380,8 +155,8 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical This assumes that the problem has been solved with the simplex method diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/backends/glpk_backend.pyx ---- src/sage/numerical/backends/glpk_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/numerical/backends/glpk_backend.pyx 2023-01-15 16:25:19.762988273 -0700 +--- src/sage/numerical/backends/glpk_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/numerical/backends/glpk_backend.pyx 2023-03-13 08:43:39.553431607 -0600 @@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend): raise ValueError("This parameter is not available.") @@ -419,8 +194,8 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba This assumes that the problem has been solved with the simplex method diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx ---- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-01-15 16:25:19.763988255 -0700 +--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-03-13 08:43:39.553431607 -0600 @@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend: problem_type, ring, objective_constant_term=d) @@ -476,8 +251,8 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num EXAMPLES:: diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx ---- src/sage/rings/complex_interval.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/complex_interval.pyx 2023-01-15 16:44:08.256030310 -0700 +--- src/sage/rings/complex_interval.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/complex_interval.pyx 2023-03-13 08:43:39.553431607 -0600 @@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s return x @@ -487,113 +262,9 @@ diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interva Return the multiplicative inverse of ``self``. EXAMPLES:: -diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx ---- src/sage/rings/complex_mpc.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/complex_mpc.pyx 2023-01-15 16:25:22.175944120 -0700 -@@ -137,15 +137,15 @@ cdef inline mpfr_rnd_t rnd_im(mpc_rnd_t - sign = '[+-]' - digit_ten = '[0123456789]' - exponent_ten = '[e@]' + sign + '?[0123456789]+' --number_ten = 'inf(?:inity)?|@inf@|nan(?:\([0-9A-Z_]*\))?|@nan@(?:\([0-9A-Z_]*\))?'\ -- '|(?:' + digit_ten + '*\.' + digit_ten + '+|' + digit_ten + '+\.?)(?:' + exponent_ten + ')?' --imaginary_ten = 'i(?:\s*\*\s*(?:' + number_ten + '))?|(?:' + number_ten + ')\s*\*\s*i' --complex_ten = '(?P(?P' + sign + ')?\s*(?P' + imaginary_ten + ')' \ -- '(\s*(?P' + sign + ')\s*(?P' + number_ten + '))?)' \ -+number_ten = r'inf(?:inity)?|@inf@|nan(?:\([0-9A-Z_]*\))?|@nan@(?:\([0-9A-Z_]*\))?'\ -+ '|(?:' + digit_ten + r'*\.' + digit_ten + '+|' + digit_ten + r'+\.?)(?:' + exponent_ten + ')?' -+imaginary_ten = r'i(?:\s*\*\s*(?:' + number_ten + '))?|(?:' + number_ten + r')\s*\*\s*i' -+complex_ten = '(?P(?P' + sign + r')?\s*(?P' + imaginary_ten + ')' \ -+ r'(\s*(?P' + sign + r')\s*(?P' + number_ten + '))?)' \ - '|' \ -- '(?P(?P' + sign + ')?\s*(?P' + number_ten + ')' \ -- '(\s*(?P' + sign + ')\s*(?P' + imaginary_ten + '))?)' --re_complex_ten = re.compile('^\s*(?:' + complex_ten + ')\s*$', re.I) -+ '(?P(?P' + sign + r')?\s*(?P' + number_ten + ')' \ -+ r'(\s*(?P' + sign + r')\s*(?P' + imaginary_ten + '))?)' -+re_complex_ten = re.compile(r'^\s*(?:' + complex_ten + r')\s*$', re.I) - - cpdef inline split_complex_string(string, int base=10): - """ -@@ -185,17 +185,17 @@ cpdef inline split_complex_string(string - - # Warning: number, imaginary, and complex should be enclosed in parentheses - # when used as regexp because of alternatives '|' -- number = '@nan@(?:\([0-9A-Z_]*\))?|@inf@|(?:' + digit + '*\.' + digit + '+|' + digit + '+\.?)(?:' + exponent + ')?' -+ number = r'@nan@(?:\([0-9A-Z_]*\))?|@inf@|(?:' + digit + r'*\.' + digit + '+|' + digit + r'+\.?)(?:' + exponent + ')?' - if base <= 10: -- number = 'nan(?:\([0-9A-Z_]*\))?|inf(?:inity)?|' + number -- imaginary = 'i(?:\s*\*\s*(?:' + number + '))?|(?:' + number + ')\s*\*\s*i' -- complex = '(?P(?P' + sign + ')?\s*(?P' + imaginary + ')' \ -- '(\s*(?P' + sign + ')\s*(?P' + number + '))?)' \ -+ number = r'nan(?:\([0-9A-Z_]*\))?|inf(?:inity)?|' + number -+ imaginary = r'i(?:\s*\*\s*(?:' + number + '))?|(?:' + number + r')\s*\*\s*i' -+ complex = '(?P(?P' + sign + r')?\s*(?P' + imaginary + ')' \ -+ r'(\s*(?P' + sign + r')\s*(?P' + number + '))?)' \ - '|' \ -- '(?P(?P' + sign + ')?\s*(?P' + number + ')' \ -- '(\s*(?P' + sign + ')\s*(?P' + imaginary + '))?)' -+ '(?P(?P' + sign + r')?\s*(?P' + number + ')' \ -+ r'(\s*(?P' + sign + r')\s*(?P' + imaginary + '))?)' - -- z = re.match('^\s*(?:' + complex + ')\s*$', string, re.I) -+ z = re.match(r'^\s*(?:' + complex + r')\s*$', string, re.I) - - x, y = None, None - if z is not None: -@@ -207,18 +207,18 @@ cpdef inline split_complex_string(string - return None - - if z.group(prefix + '_re_abs') is not None: -- x = z.expand('\g<' + prefix + '_re_abs>') -+ x = z.expand(r'\g<' + prefix + '_re_abs>') - if z.group(prefix + '_re_sign') is not None: -- x = z.expand('\g<' + prefix + '_re_sign>') + x -+ x = z.expand(r'\g<' + prefix + '_re_sign>') + x - - if z.group(prefix + '_im_abs') is not None: -- y = re.search('(?P' + number + ')', z.expand('\g<' + prefix + '_im_abs>'), re.I) -+ y = re.search('(?P' + number + ')', z.expand(r'\g<' + prefix + '_im_abs>'), re.I) - if y is None: - y = '1' - else: -- y = y.expand('\g') -+ y = y.expand(r'\g') - if z.group(prefix + '_im_sign') is not None: -- y = z.expand('\g<' + prefix + '_im_sign>') + y -+ y = z.expand(r'\g<' + prefix + '_im_sign>') + y - - return x, y - -@@ -1701,7 +1701,7 @@ cdef class MPComplexNumber(sage.structur - return z - - def cosh(self): -- """ -+ r""" - Return the hyperbolic cosine of this complex number: - - .. MATH:: -@@ -1721,7 +1721,7 @@ cdef class MPComplexNumber(sage.structur - return z - - def sinh(self): -- """ -+ r""" - Return the hyperbolic sine of this complex number: - - .. MATH:: -@@ -2063,7 +2063,7 @@ cdef class MPComplexNumber(sage.structur - return z - - def exp(self): -- """ -+ r""" - Return the exponential of this complex number: - - .. MATH:: diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/finite_rings/hom_finite_field.pyx ---- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2023-01-15 16:25:22.175944120 -0700 +--- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/finite_rings/hom_finite_field.pyx 2023-03-13 08:43:39.554431588 -0600 @@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis @@ -604,9 +275,9 @@ diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/fi EXAMPLES:: diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx ---- src/sage/rings/finite_rings/integer_mod.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/finite_rings/integer_mod.pyx 2023-01-15 16:25:22.176944101 -0700 -@@ -2245,7 +2245,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/finite_rings/integer_mod.pyx 2023-03-13 08:43:39.555431570 -0600 +@@ -2243,7 +2243,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs return int(self.lift()) def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring @@ -615,7 +286,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10^10) -@@ -3544,7 +3544,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3540,7 +3540,7 @@ cdef class IntegerMod_int64(IntegerMod_a return self._new_c(self.ivalue >> (-k)) def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring @@ -624,127 +295,10 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10) -diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/rings/number_field/number_field_element.pyx ---- src/sage/rings/number_field/number_field_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/number_field/number_field_element.pyx 2023-01-15 16:25:22.176944101 -0700 -@@ -493,7 +493,7 @@ cdef class NumberFieldElement(FieldEleme - return codomain(f(im_gens[0])) - - def _latex_(self): -- """ -+ r""" - Returns the latex representation for this element. - - EXAMPLES:: -diff -up src/sage/rings/number_field/number_field_morphisms.pyx.orig src/sage/rings/number_field/number_field_morphisms.pyx ---- src/sage/rings/number_field/number_field_morphisms.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/number_field/number_field_morphisms.pyx 2023-01-15 16:25:22.176944101 -0700 -@@ -340,7 +340,7 @@ cdef class EmbeddedNumberFieldConversion - - - cpdef matching_root(poly, target, ambient_field=None, margin=1, max_prec=None): -- """ -+ r""" - Given a polynomial and a target, this function chooses the root that - target best approximates as compared in ambient_field. - -@@ -403,7 +403,7 @@ cpdef matching_root(poly, target, ambien - - - cpdef closest(target, values, margin=1): -- """ -+ r""" - This is a utility function that returns the item in values closest to - target (with respect to the \code{abs} function). If margin is greater - than 1, and x and y are the first and second closest elements to target, -diff -up src/sage/rings/padics/local_generic_element.pyx.orig src/sage/rings/padics/local_generic_element.pyx ---- src/sage/rings/padics/local_generic_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/padics/local_generic_element.pyx 2023-01-15 16:25:22.177944083 -0700 -@@ -408,7 +408,7 @@ cdef class LocalGenericElement(Commutati - return ans - - def _latex_(self): -- """ -+ r""" - Returns a latex representation of self. - - EXAMPLES:: -diff -up src/sage/rings/padics/padic_capped_absolute_element.pyx.orig src/sage/rings/padics/padic_capped_absolute_element.pyx ---- src/sage/rings/padics/padic_capped_absolute_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2023-01-15 16:25:22.177944083 -0700 -@@ -383,7 +383,7 @@ cdef class pAdicCappedAbsoluteElement(CA - return ans - - def _exp_binary_splitting(self, aprec): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. -@@ -443,7 +443,7 @@ cdef class pAdicCappedAbsoluteElement(CA - return ans - - def _exp_newton(self, aprec, log_algorithm=None): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. -diff -up src/sage/rings/padics/padic_fixed_mod_element.pyx.orig src/sage/rings/padics/padic_fixed_mod_element.pyx ---- src/sage/rings/padics/padic_fixed_mod_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2023-01-15 16:25:22.177944083 -0700 -@@ -449,7 +449,7 @@ cdef class pAdicFixedModElement(FMElemen - return ans - - def _exp_binary_splitting(self, aprec): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. -@@ -508,7 +508,7 @@ cdef class pAdicFixedModElement(FMElemen - return ans - - def _exp_newton(self, aprec, log_algorithm=None): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. -diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/padics/padic_generic_element.pyx ---- src/sage/rings/padics/padic_generic_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/padics/padic_generic_element.pyx 2023-01-15 16:25:22.178944065 -0700 -@@ -544,7 +544,7 @@ cdef class pAdicGenericElement(LocalGene - return self._repr_(mode=mode) - - def _repr_(self, mode=None, do_latex=False): -- """ -+ r""" - Returns a string representation of this element. - - INPUT: -@@ -3028,7 +3028,7 @@ cdef class pAdicGenericElement(LocalGene - return series_unit*nfactorial_unit.inverse_of_unit()<<(series_val-nfactorial_val) - - def _exp_binary_splitting(self, aprec): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. -@@ -3074,7 +3074,7 @@ cdef class pAdicGenericElement(LocalGene - raise NotImplementedError("the binary splitting algorithm is not implemented for the parent: %s" % self.parent()) - - def _exp_newton(self, aprec, log_algorithm=None): -- """ -+ r""" - Compute the exponential power series of this element - - This is a helper method for :meth:`exp`. diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx ---- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-01-15 16:25:22.179944047 -0700 -@@ -2485,7 +2485,7 @@ cdef class MPolynomial_libsingular(MPoly +--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 08:43:44.190347338 -0600 +@@ -2487,7 +2487,7 @@ cdef class MPolynomial_libsingular(MPoly return char_to_str(s) def _latex_(self): @@ -753,44 +307,10 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag Return a polynomial LaTeX representation of this polynomial. EXAMPLES:: -diff -up src/sage/rings/polynomial/ore_polynomial_element.pyx.orig src/sage/rings/polynomial/ore_polynomial_element.pyx ---- src/sage/rings/polynomial/ore_polynomial_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/ore_polynomial_element.pyx 2023-01-15 16:25:22.179944047 -0700 -@@ -1707,8 +1707,8 @@ cdef class OrePolynomial(AlgebraElement) - var = "" - s += "%s %s"%(x,var) - s = s.replace(" + -", " - ") -- s = re.sub(" 1(\.0+)? \|"," ", s) -- s = re.sub(" -1(\.0+)? \|", " -", s) -+ s = re.sub(r" 1(\.0+)? \|"," ", s) -+ s = re.sub(r" -1(\.0+)? \|", " -", s) - s = s.replace("|","") - if s == " ": - return "0" diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/polynomial/polynomial_element.pyx ---- src/sage/rings/polynomial/polynomial_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_element.pyx 2023-01-15 16:25:22.181944010 -0700 -@@ -2744,8 +2744,8 @@ cdef class Polynomial(CommutativeAlgebra - var = "" - s += "%s %s" % (x, var) - s = s.replace(" + -", " - ") -- s = re.sub(" 1(\.0+)? \|"," ", s) -- s = re.sub(" -1(\.0+)? \|", " -", s) -+ s = re.sub(r" 1(\.0+)? \|"," ", s) -+ s = re.sub(r" -1(\.0+)? \|", " -", s) - s = s.replace("|","") - if s == " ": - return "0" -@@ -2845,7 +2845,7 @@ cdef class Polynomial(CommutativeAlgebra - raise IndexError("polynomials are immutable") - - cpdef _floordiv_(self, right): -- """ -+ r""" - Quotient of division of self by other. This is denoted //. - - If self = quotient \* right + remainder, this function returns -@@ -6825,8 +6825,8 @@ cdef class Polynomial(CommutativeAlgebra +--- src/sage/rings/polynomial/polynomial_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/polynomial_element.pyx 2023-03-13 08:43:44.194347266 -0600 +@@ -6832,8 +6832,8 @@ cdef class Polynomial(CommutativeAlgebra where the roots `a` and `b` are to be considered in the algebraic closure of the fraction field of the coefficients and counted with multiplicities. If the polynomials are not monic this quantity is @@ -801,42 +321,9 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po `p_2` respectively. INPUT: -diff -up src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx ---- src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2023-01-15 16:25:22.181944010 -0700 -@@ -1394,7 +1394,7 @@ cdef class Polynomial_integer_dense_flin - return smallInteger(fmpz_poly_degree(self.__poly)) - - def pseudo_divrem(self, B): -- """ -+ r""" - Write ``A = self``. This function computes polynomials `Q` and `R` - and an integer `d` such that - -diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial/real_roots.pyx ---- src/sage/rings/polynomial/real_roots.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/real_roots.pyx 2023-01-15 16:25:22.182943992 -0700 -@@ -1259,7 +1259,7 @@ def de_casteljau_intvec(Vector_integer_d - cdef double half_ulp = ldexp(1.0 * 65/64, -54) - - def intvec_to_doublevec(Vector_integer_dense b, long err): -- """ -+ r""" - Given a vector of integers A = [a1, ..., an], and an integer - error bound E, returns a vector of floating-point numbers - B = [b1, ..., bn], lower and upper error bounds F1 and F2, and -@@ -2149,7 +2149,7 @@ def subsample_vec_doctest(a, slen, llen) - return subsample_vec(a, slen, llen) - - def maximum_root_first_lambda(p): -- """ -+ r""" - Given a polynomial with real coefficients, computes an upper bound - on its largest real root, using the first-\lambda algorithm from - "Implementations of a New Theorem for Computing Bounds for Positive diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_double_element_gsl.pyx ---- src/sage/rings/real_double_element_gsl.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/real_double_element_gsl.pyx 2023-01-15 16:25:22.182943992 -0700 +--- src/sage/rings/real_double_element_gsl.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/real_double_element_gsl.pyx 2023-03-13 08:43:45.742319138 -0600 @@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou return a @@ -847,8 +334,8 @@ diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_dou INPUT: diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/real_mpfi.pyx 2023-01-15 16:25:22.183943974 -0700 +--- src/sage/rings/real_mpfi.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/real_mpfi.pyx 2023-03-13 08:43:45.743319120 -0600 @@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring return self.str(10) @@ -857,22 +344,10 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx + r""" Return a latex representation of ``self``. - EXAMPLES:: -diff -up src/sage/rings/semirings/tropical_semiring.pyx.orig src/sage/rings/semirings/tropical_semiring.pyx ---- src/sage/rings/semirings/tropical_semiring.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/semirings/tropical_semiring.pyx 2023-01-15 16:25:22.183943974 -0700 -@@ -99,7 +99,7 @@ cdef class TropicalSemiringElement(Eleme - return repr(self._val) - - def _latex_(self): -- """ -+ r""" - Return a latex representation of ``self``. - EXAMPLES:: diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebra_element.pyx ---- src/sage/rings/tate_algebra_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/tate_algebra_element.pyx 2023-01-15 16:25:22.183943974 -0700 +--- src/sage/rings/tate_algebra_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/tate_algebra_element.pyx 2023-03-13 08:43:46.838299224 -0600 @@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ @coerce_binop @@ -883,8 +358,8 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr INPUT: diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/symbolic/expression.pyx 2023-01-15 16:25:22.185943937 -0700 +--- src/sage/symbolic/expression.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/expression.pyx 2023-03-13 08:43:46.840299188 -0600 @@ -7,7 +7,7 @@ # distutils: include_dirs = SINGULAR_INCDIR # pynac/basic.h includes diff --git a/sagemath-extensions.patch b/sagemath-extensions.patch index 8f7fe43..e0fea05 100644 --- a/sagemath-extensions.patch +++ b/sagemath-extensions.patch @@ -1,7 +1,7 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/env.py 2022-03-04 16:04:55.067452303 -0700 -@@ -496,7 +496,8 @@ def cython_aliases(required_modules=None +--- src/sage/env.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/env.py 2023-03-13 09:26:16.468693261 -0600 +@@ -523,7 +523,8 @@ def cython_aliases(required_modules=None aliases[var + "INCDIR"] = pc['include_dirs'] aliases[var + "LIBDIR"] = pc['library_dirs'] aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split())) @@ -12,8 +12,8 @@ diff -up src/sage/env.py.orig src/sage/env.py # uname-specific flags UNAME = os.uname() diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx ---- src/sage/graphs/mcqd.pyx.orig 2022-03-04 16:04:55.068452305 -0700 -+++ src/sage/graphs/mcqd.pyx 2022-03-04 16:05:55.226537259 -0700 +--- src/sage/graphs/mcqd.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/graphs/mcqd.pyx 2023-03-13 09:26:16.468693261 -0600 @@ -1,4 +1,5 @@ # distutils: language = c++ +# distutils: libraries = mcqd @@ -21,8 +21,8 @@ diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx from cysignals.signals cimport sig_on, sig_off diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd ---- src/sage/libs/arb/arb.pxd.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/arb/arb.pxd 2022-03-04 16:05:03.939464830 -0700 +--- src/sage/libs/arb/arb.pxd.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/arb/arb.pxd 2023-03-13 09:26:16.468693261 -0600 @@ -1,4 +1,5 @@ # distutils: libraries = gmp flint ARB_LIBRARY +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -30,8 +30,8 @@ diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd from sage.libs.arb.types cimport * diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx ---- src/sage/libs/arb/arb_version.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/arb/arb_version.pyx 2022-03-04 16:05:03.939464830 -0700 +--- src/sage/libs/arb/arb_version.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/arb/arb_version.pyx 2023-03-13 09:26:16.468693261 -0600 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -39,48 +39,48 @@ diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.py from sage.cpython.string cimport char_to_str diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx ---- src/sage/libs/arb/arith.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/arb/arith.pyx 2022-03-04 16:05:03.939464830 -0700 +--- src/sage/libs/arb/arith.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/arb/arith.pyx 2023-03-13 09:26:16.468693261 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/arb /usr/include/flint """ Arithmetic functions using the arb library """ diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx ---- src/sage/libs/mpmath/ext_impl.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/mpmath/ext_impl.pyx 2022-03-04 16:05:03.939464830 -0700 +--- src/sage/libs/mpmath/ext_impl.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/mpmath/ext_impl.pyx 2023-03-13 09:26:16.469693242 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ This module provides the core implementation of multiprecision floating-point arithmetic. Operations are done in-place. diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx ---- src/sage/libs/mpmath/ext_libmp.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/mpmath/ext_libmp.pyx 2022-03-04 16:05:03.940464832 -0700 +--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/mpmath/ext_libmp.pyx 2023-03-13 09:26:16.469693242 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ Faster versions of some key functions in mpmath.libmp """ diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx ---- src/sage/libs/mpmath/ext_main.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/mpmath/ext_main.pyx 2022-03-04 16:05:03.940464832 -0700 +--- src/sage/libs/mpmath/ext_main.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/mpmath/ext_main.pyx 2023-03-13 09:26:16.469693242 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ mpmath floating-point numbers diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx ---- src/sage/libs/mpmath/utils.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/mpmath/utils.pyx 2022-03-04 16:05:03.940464832 -0700 +--- src/sage/libs/mpmath/utils.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/mpmath/utils.pyx 2023-03-13 09:26:16.470693224 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ Utilities for Sage-mpmath interaction diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx ---- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +--- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/matrix/matrix_complex_ball_dense.pyx 2023-03-13 09:26:16.470693224 -0600 @@ -1,4 +1,5 @@ # distutils: libraries = ARB_LIBRARY +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -88,8 +88,8 @@ diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matr Arbitrary precision complex ball matrices using Arb diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx ---- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/matrix/matrix_cyclo_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +--- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/matrix/matrix_cyclo_dense.pyx 2023-03-13 09:26:16.470693224 -0600 @@ -1,7 +1,7 @@ # distutils: language = c++ # distutils: libraries = NTL_LIBRARIES @@ -100,16 +100,16 @@ diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cycl # distutils: extra_link_args = NTL_LIBEXTRA """ diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx ---- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2023-03-13 09:26:16.471693206 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory """ Dense matrices over multivariate polynomials over fields diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx ---- src/sage/rings/complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/complex_arb.pyx 2022-03-04 16:05:03.942464834 -0700 +--- src/sage/rings/complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/complex_arb.pyx 2023-03-13 09:26:16.471693206 -0600 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -117,43 +117,43 @@ diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx Arbitrary precision complex balls using Arb diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx ---- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2022-03-04 16:05:03.942464834 -0700 -@@ -4,6 +4,7 @@ +--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2023-03-13 10:54:33.688631507 -0600 +@@ -1,6 +1,6 @@ + # distutils: libraries = NTL_LIBRARIES + # distutils: extra_compile_args = NTL_CFLAGS +-# distutils: include_dirs = NTL_INCDIR ++# distutils: include_dirs = NTL_INCDIR /usr/include/arb /usr/include/flint # distutils: library_dirs = NTL_LIBDIR # distutils: extra_link_args = NTL_LIBEXTRA # distutils: language = c++ -+# distutils: include_dirs = /usr/include/arb /usr/include/flint - """ - Optimized Quadratic Number Field Elements - diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx ---- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-03-04 15:50:57.344269364 -0700 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2022-03-04 16:05:03.943464836 -0700 +--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-03-13 08:43:44.190347338 -0600 ++++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 09:26:16.473693169 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" Multivariate Polynomials via libSINGULAR diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx ---- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/polynomial/multi_polynomial.pyx 2022-03-04 16:05:03.944464837 -0700 +--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/multi_polynomial.pyx 2023-03-13 09:26:16.473693169 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" Base class for elements of multivariate polynomial rings """ diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx ---- src/sage/rings/polynomial/plural.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/polynomial/plural.pyx 2022-03-04 16:05:03.944464837 -0700 +--- src/sage/rings/polynomial/plural.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/plural.pyx 2023-03-13 09:26:16.474693151 -0600 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" - Noncommutative Polynomials via libSINGULAR/Plural + Noncommutative polynomials via libSINGULAR/Plural diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx ---- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2022-03-04 16:05:03.944464837 -0700 +--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2023-03-13 09:26:16.474693151 -0600 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -161,8 +161,8 @@ diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/ring Univariate polynomials over `\CC` with interval coefficients using Arb. diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx ---- src/sage/rings/real_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/rings/real_arb.pyx 2022-03-04 16:05:03.945464839 -0700 +--- src/sage/rings/real_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/real_arb.pyx 2023-03-13 09:26:16.474693151 -0600 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -170,9 +170,9 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Arbitrary precision real balls using Arb diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py ---- src/sage_setup/command/sage_build_cython.py.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage_setup/command/sage_build_cython.py 2022-03-04 16:05:03.945464839 -0700 -@@ -209,6 +209,7 @@ class sage_build_cython(Command): +--- src/sage_setup/command/sage_build_cython.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage_setup/command/sage_build_cython.py 2023-03-13 09:26:16.475693132 -0600 +@@ -205,6 +205,7 @@ class sage_build_cython(Command): self.library_order = library_order # Search for dependencies in the source tree and add to the list of include directories self.sage_include_dirs = sage_include_directories(use_sources=True) diff --git a/sagemath-fes-build.patch b/sagemath-fes-build.patch deleted file mode 100644 index 776bd84..0000000 --- a/sagemath-fes-build.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx ---- src/sage/libs/fes.pyx.orig 2020-10-30 11:34:23.271984468 -0600 -+++ src/sage/libs/fes.pyx 2020-10-30 14:44:49.462736771 -0600 -@@ -14,7 +14,7 @@ variables. Performing a full exhaustive - take a **long** time. The number of variables can be artificially - reduced to 64 by specializing some of them. - --Note that the FES library **requires** at least of the equations to be -+Note that the FES library **requires** at least one of the equations to be - non-linear. - - AUTHORS: -@@ -72,7 +72,7 @@ from cysignals.signals cimport sig_on, s - cdef extern from "fes_interface.h": - ctypedef int (*solution_callback_t)(void *, uint64_t) - -- void exhaustive_search_wrapper(int n, int n_eqs, int degree, int ***coeffs, solution_callback_t callback, void* callback_state, int verbose) -+ void exhaustive_search_wrapper(int n, int n_eqs, int degree, int ***coeffs, solution_callback_t callback, void* callback_state, int verbose, int T) - - - from sage.rings.integer import Integer -@@ -218,7 +218,7 @@ def exhaustive_search(eqs, max_sols=Inf - - # ------- runs the library - sig_on() -- exhaustive_search_wrapper(n, len(eqs), degree, coeffs, report_solution, internal_state, verbose) -+ exhaustive_search_wrapper(n, len(eqs), degree, coeffs, report_solution, internal_state, verbose, 0) - sig_off() - - # ------- frees memory occupied by the dense representation of the equations diff --git a/sagemath-intersphinx.patch b/sagemath-intersphinx.patch index 89e751d..429f835 100644 --- a/sagemath-intersphinx.patch +++ b/sagemath-intersphinx.patch @@ -1,15 +1,15 @@ diff -up src/sage_docbuild/conf.py.orig src/sage_docbuild/conf.py ---- src/sage_docbuild/conf.py.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage_docbuild/conf.py 2023-01-15 19:50:03.796496416 -0700 -@@ -209,9 +209,8 @@ def set_intersphinx_mappings(app, config +--- src/sage_docbuild/conf.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage_docbuild/conf.py 2023-03-13 09:53:42.670555040 -0600 +@@ -228,9 +228,8 @@ def set_intersphinx_mappings(app, config - app.config.intersphinx_mapping = { + app.config.intersphinx_mapping = { 'python': ('https://docs.python.org/', - os.path.join(SAGE_DOC_SRC, "common", - "python{}.inv".format(python_version))), - 'pplpy': (PPLPY_DOCS, None)} + '/usr/share/doc/python3-docs/html/objects.inv'), -+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')} ++ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy-devel/objects.inv')} # Add master intersphinx mapping dst = os.path.join(invpath, 'objects.inv') diff --git a/sagemath-libgap.patch b/sagemath-libgap.patch index c816ad7..613503b 100644 --- a/sagemath-libgap.patch +++ b/sagemath-libgap.patch @@ -1,6 +1,6 @@ diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thematic_tutorials/lie/weyl_groups.rst ---- src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2023-01-15 17:13:38.581179558 -0700 +--- src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2023-03-13 09:42:01.111404689 -0600 @@ -139,12 +139,12 @@ string, which you can print:: X.1 1 1 1 1 1 1 1 1 1 1 1 1 1 X.2 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 @@ -21,9 +21,9 @@ diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thema X.11 4 2 . -1 . . . -2 . . 1 . -4 X.12 6 . -2 . . -2 -2 . . . . 2 6 diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py ---- src/sage/coding/linear_code.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/coding/linear_code.py 2023-01-15 17:13:38.582179539 -0700 -@@ -466,7 +466,10 @@ class AbstractLinearCode(AbstractLinearC +--- src/sage/coding/linear_code.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/coding/linear_code.py 2023-03-13 09:42:01.112404670 -0600 +@@ -465,7 +465,10 @@ class AbstractLinearCode(AbstractLinearC 0 sage: C = codes.HammingCode(GF(4, 'z'), 3) sage: C.automorphism_group_gens() @@ -35,7 +35,7 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py Defn: z |--> z + 1), ((z + 1, 1, 1, z, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z + 1, 1, z, z + 1, z + 1, z); (1,18,6,19,2,9,17,10,13,14,21,11,4,5,12)(3,20,7,16,8), Ring endomorphism of Finite Field in z of size 2^2 Defn: z |--> z), -@@ -474,19 +477,20 @@ class AbstractLinearCode(AbstractLinearC +@@ -473,19 +476,20 @@ class AbstractLinearCode(AbstractLinearC Defn: z |--> z)], 362880) sage: C.automorphism_group_gens(equivalence="linear") @@ -61,7 +61,7 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py Defn: z |--> z), ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (2,13)(3,14)(4,20)(5,11)(8,18)(9,19)(10,15)(16,21), Ring endomorphism of Finite Field in z of size 2^2 Defn: z |--> z)], -@@ -692,10 +696,10 @@ class AbstractLinearCode(AbstractLinearC +@@ -691,10 +695,10 @@ class AbstractLinearCode(AbstractLinearC sage: C_iso == aut_group_can_label.get_canonical_form() True sage: aut_group_can_label.get_autom_gens() @@ -76,9 +76,9 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py Defn: z |--> z)] """ diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/sage/combinat/root_system/hecke_algebra_representation.py ---- src/sage/combinat/root_system/hecke_algebra_representation.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-01-15 17:13:38.583179521 -0700 -@@ -355,7 +355,7 @@ class HeckeAlgebraRepresentation(WithEqu +--- src/sage/combinat/root_system/hecke_algebra_representation.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-03-13 09:42:01.112404670 -0600 +@@ -357,7 +357,7 @@ class HeckeAlgebraRepresentation(WithEqu sage: q1, q2 = K.gens() sage: KW = W.algebra(K) sage: x = KW.an_element(); x @@ -88,8 +88,8 @@ diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/ sage: T = KW.demazure_lusztig_operators(q1,q2) sage: T12 = T.Tw( (1,2) ) diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/symmetric_group_algebra.py ---- src/sage/combinat/symmetric_group_algebra.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/combinat/symmetric_group_algebra.py 2023-01-15 17:13:38.583179521 -0700 +--- src/sage/combinat/symmetric_group_algebra.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/combinat/symmetric_group_algebra.py 2023-03-13 09:42:01.113404652 -0600 @@ -101,7 +101,7 @@ def SymmetricGroupAlgebra(R, W, category sage: SGA.group() Weyl Group of type ['A', 3] (as a matrix group acting on the ambient space) @@ -99,9 +99,21 @@ diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/sym The preferred way to construct the symmetric group algebra is to go through the usual ``algebra`` method:: +diff -up src/sage/env.py.orig src/sage/env.py +--- src/sage/env.py.orig 2023-03-13 09:26:16.468693261 -0600 ++++ src/sage/env.py 2023-03-13 14:09:36.725081542 -0600 +@@ -197,7 +197,7 @@ CONWAY_POLYNOMIALS_DATA_DIR = var("CONWA + GRAPHS_DATA_DIR = var("GRAPHS_DATA_DIR", join(SAGE_SHARE, "graphs")) + ELLCURVE_DATA_DIR = var("ELLCURVE_DATA_DIR", join(SAGE_SHARE, "ellcurves")) + POLYTOPE_DATA_DIR = var("POLYTOPE_DATA_DIR", join(SAGE_SHARE, "reflexive_polytopes")) +-GAP_ROOT_DIR = var("GAP_ROOT_DIR", join(SAGE_SHARE, "gap")) ++GAP_ROOT_DIRS = var("GAP_ROOT_DIR", ["/usr/share/gap", "/usr/lib64/gap"]) + THEBE_DIR = var("THEBE_DIR", join(SAGE_SHARE, "thebe")) + COMBINATORIAL_DESIGN_DATA_DIR = var("COMBINATORIAL_DESIGN_DATA_DIR", join(SAGE_SHARE, "combinatorial_designs")) + CREMONA_MINI_DATA_DIR = var("CREMONA_MINI_DATA_DIR", join(SAGE_SHARE, "cremona")) diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/abelian_gps/abelian_group_gap.py ---- src/sage/groups/abelian_gps/abelian_group_gap.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/abelian_gps/abelian_group_gap.py 2023-01-15 17:13:38.583179521 -0700 +--- src/sage/groups/abelian_gps/abelian_group_gap.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/abelian_gps/abelian_group_gap.py 2023-03-13 09:42:01.113404652 -0600 @@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat if isinstance(x, AbelianGroupElement_gap): try: @@ -121,8 +133,8 @@ diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/a return Hom(phi) diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_presented.py ---- src/sage/groups/finitely_presented.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/finitely_presented.py 2023-01-15 17:13:38.584179501 -0700 +--- src/sage/groups/finitely_presented.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/finitely_presented.py 2023-03-13 09:42:01.113404652 -0600 @@ -596,9 +596,9 @@ class RewritingSystem(): sage: k = G.rewriting_system() sage: k.gap() @@ -137,8 +149,8 @@ diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_pre return self._gap diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.py ---- src/sage/groups/fqf_orthogonal.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/fqf_orthogonal.py 2023-01-15 17:13:38.584179501 -0700 +--- src/sage/groups/fqf_orthogonal.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/fqf_orthogonal.py 2023-03-13 09:42:01.114404634 -0600 @@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut [2/3 0 0] [ 0 2/3 0] @@ -149,8 +161,8 @@ diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.p sage: T = TorsionQuadraticForm(q) sage: T.orthogonal_group().order() diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.pyx ---- src/sage/groups/libgap_wrapper.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/libgap_wrapper.pyx 2023-01-15 17:13:38.584179501 -0700 +--- src/sage/groups/libgap_wrapper.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/libgap_wrapper.pyx 2023-03-13 09:42:01.114404634 -0600 @@ -25,7 +25,7 @@ Note how we call the constructor of both its output via LibGAP:: @@ -179,8 +191,8 @@ diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper. (f1,) """ diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx ---- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2023-01-15 17:13:38.584179501 -0700 +--- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2023-03-13 09:42:01.114404634 -0600 @@ -427,7 +427,7 @@ cdef class LabelledBranching: sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching sage: L = LabelledBranching(3) @@ -191,9 +203,9 @@ diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sag sage: L.small_generating_set() [(1,2,3)] diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/permgroup.py ---- src/sage/groups/perm_gps/permgroup.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/groups/perm_gps/permgroup.py 2023-01-15 17:13:38.585179483 -0700 -@@ -927,7 +927,7 @@ class PermutationGroup_generic(FiniteGro +--- src/sage/groups/perm_gps/permgroup.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/groups/perm_gps/permgroup.py 2023-03-13 09:42:01.115404615 -0600 +@@ -926,7 +926,7 @@ class PermutationGroup_generic(FiniteGro sage: f = PG._coerce_map_from_(MG) sage: mg = MG.an_element() sage: p = f(mg); p @@ -202,7 +214,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per sage: PG(p._gap_()) == p True -@@ -973,12 +973,12 @@ class PermutationGroup_generic(FiniteGro +@@ -972,12 +972,12 @@ class PermutationGroup_generic(FiniteGro sage: P = G.as_permutation_group(algorithm='smaller', seed=5) sage: P1 = G.as_permutation_group() sage: P == P1 @@ -218,7 +230,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per Another check for :trac:`5583`:: -@@ -4375,7 +4375,7 @@ class PermutationGroup_generic(FiniteGro +@@ -4372,7 +4372,7 @@ class PermutationGroup_generic(FiniteGro sage: G = PermutationGroup([[(1,2,3,4,5)],[(1,2)]]) #S_5 on [1..5] sage: G.is_transitive([1,4,5]) @@ -227,7 +239,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per sage: G.is_transitive([2..6]) False sage: G.is_transitive(G.non_fixed_points()) -@@ -4440,7 +4440,7 @@ class PermutationGroup_generic(FiniteGro +@@ -4437,7 +4437,7 @@ class PermutationGroup_generic(FiniteGro sage: G.is_primitive([1..4]) False sage: G.is_primitive([1,2,3]) @@ -237,8 +249,8 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per sage: G.is_primitive(G.non_fixed_points()) True diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py ---- src/sage/interfaces/gap.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/interfaces/gap.py 2023-01-15 17:13:38.586179464 -0700 +--- src/sage/interfaces/gap.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/gap.py 2023-03-13 09:42:01.115404615 -0600 @@ -1512,6 +1512,8 @@ def gap_reset_workspace(max_workspace_si """ # Create new workspace with filename WORKSPACE @@ -249,8 +261,8 @@ diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py from sage.tests.gap_packages import all_installed_packages for pkg in all_installed_packages(gap=g): diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd ---- src/sage/libs/gap/element.pxd.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gap/element.pxd 2023-01-15 17:13:38.586179464 -0700 +--- src/sage/libs/gap/element.pxd.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/element.pxd 2023-03-13 09:42:01.116404597 -0600 @@ -29,9 +29,9 @@ cdef GapElement_Boolean make_GapElement_ cdef GapElement_Function make_GapElement_Function(parent, Obj obj) cdef GapElement_Permutation make_GapElement_Permutation(parent, Obj obj) @@ -265,8 +277,8 @@ diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd cdef class GapElement(RingElement): diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx ---- src/sage/libs/gap/element.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gap/element.pyx 2023-01-15 17:13:38.586179464 -0700 +--- src/sage/libs/gap/element.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/element.pyx 2023-03-13 09:42:01.116404597 -0600 @@ -120,7 +120,7 @@ cdef Obj make_gap_matrix(sage_list, gap_ return l.value @@ -356,15 +368,6 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx cdef Obj make_gap_record(sage_dict) except NULL: """ -@@ -264,7 +268,7 @@ cdef Obj make_gap_string(sage_string) ex - try: - GAP_Enter() - b = str_to_bytes(sage_string) -- C_NEW_STRING(result, len(b), b) -+ result = MakeStringWithLen(b, len(b)) - return result - finally: - GAP_Leave() @@ -760,7 +764,7 @@ cdef class GapElement(RingElement): if self.value == NULL: return 'NULL' @@ -465,8 +468,8 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx if isinstance(i, tuple): diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd ---- src/sage/libs/gap/gap_includes.pxd.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gap/gap_includes.pxd 2023-01-15 17:13:38.587179445 -0700 +--- src/sage/libs/gap/gap_includes.pxd.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/gap_includes.pxd 2023-03-13 09:49:35.192090058 -0600 @@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint cdef extern from "gap/system.h" nogil: @@ -591,14 +594,13 @@ diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes. - bint IS_STRING(Obj obj) - bint IsStringConv(Obj obj) - Obj NEW_STRING(Int) -- void C_NEW_STRING(Obj new_gap_string, int length, char* c_string) + Int IS_STRING(Obj obj) + Int IsStringConv(Obj obj) + Obj NEW_STRING(Int len) -+ Obj MakeStringWithLen(const char *buf, size_t len) + Obj MakeStringWithLen(const char* buf, size_t len) diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx ---- src/sage/libs/gap/libgap.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gap/libgap.pyx 2023-01-15 17:13:38.587179445 -0700 +--- src/sage/libs/gap/libgap.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/libgap.pyx 2023-03-13 09:42:01.117404579 -0600 @@ -695,7 +695,7 @@ class Gap(Parent): sage: libgap.List @@ -608,10 +610,58 @@ diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx """ if name in dir(self.__class__): return getattr(self.__class__, name) +diff -up src/sage/libs/gap/saved_workspace.py.orig src/sage/libs/gap/saved_workspace.py +--- src/sage/libs/gap/saved_workspace.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/saved_workspace.py 2023-03-13 12:49:01.821288928 -0600 +@@ -8,7 +8,7 @@ workspaces. + + import os + import glob +-from sage.env import GAP_ROOT_DIR ++from sage.env import GAP_ROOT_DIRS + from sage.interfaces.gap_workspace import gap_workspace_file + + +@@ -31,7 +31,9 @@ def timestamp(): + """ + libgap_dir = os.path.dirname(__file__) + libgap_files = glob.glob(os.path.join(libgap_dir, '*')) +- gap_packages = glob.glob(os.path.join(GAP_ROOT_DIR, 'pkg', '*')) ++ gap_packages = [] ++ for path in GAP_ROOT_DIRS: ++ gap_packages += glob.glob(os.path.join(path, 'pkg', '*')) + files = libgap_files + gap_packages + if len(files) == 0: + print('Unable to find LibGAP files.') diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx ---- src/sage/libs/gap/util.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gap/util.pyx 2023-01-15 17:13:38.587179445 -0700 -@@ -362,15 +362,9 @@ cdef Obj gap_eval(str gap_string) except +--- src/sage/libs/gap/util.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/gap/util.pyx 2023-03-13 14:13:48.497467652 -0600 +@@ -173,22 +173,9 @@ def gap_root(): + + sage: from sage.libs.gap.util import gap_root + sage: gap_root() # random output +- '/home/vbraun/opt/sage-5.3.rc0/local/gap/latest' ++ '/usr/share/gap;/usr/lib64/gap'] + """ +- if os.path.exists(sage.env.GAP_ROOT_DIR): +- return sage.env.GAP_ROOT_DIR +- +- # Attempt to figure out the appropriate GAP_ROOT by reading the +- # local/bin/gap shell script; this is an ugly hack that exists for +- # historical reasons; the best approach to setting where Sage looks for +- # the appropriate GAP_ROOT is to set the GAP_ROOT_DIR variable +- SAGE_LOCAL = sage.env.SAGE_LOCAL +- with open(os.path.join(SAGE_LOCAL, 'bin', 'gap')) as f: +- gap_sh = f.read().splitlines() +- gapdir = next(x for x in gap_sh if x.strip().startswith('GAP_ROOT')) +- gapdir = gapdir.split('"')[1] +- gapdir = gapdir.replace('$SAGE_LOCAL', SAGE_LOCAL) +- return gapdir ++ return ';'.join(sage.env.GAP_ROOT_DIRS) + + + # To ensure that we call initialize_libgap only once. +@@ -362,15 +349,9 @@ cdef Obj gap_eval(str gap_string) except GAPError: Error, Variable: 'Complex' must have a value Syntax error: ; expected in stream:1 Complex Field with 53 bits of precision;; @@ -628,7 +678,7 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx Error, Variable: 'precision' must have a value Test that on a subsequent attempt we get the same message (no garbage was -@@ -388,7 +382,7 @@ cdef Obj gap_eval(str gap_string) except +@@ -388,7 +369,7 @@ cdef Obj gap_eval(str gap_string) except """ initialize() cdef Obj result @@ -638,8 +688,8 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx # Careful: We need to keep a reference to the bytes object here # so that Cython doesn't deallocate it before GAP is done with diff -up src/sage/tests/gap_packages.py.orig src/sage/tests/gap_packages.py ---- src/sage/tests/gap_packages.py.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/tests/gap_packages.py 2023-01-15 17:13:38.587179445 -0700 +--- src/sage/tests/gap_packages.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/tests/gap_packages.py 2023-03-13 09:42:01.117404579 -0600 @@ -103,7 +103,7 @@ def all_installed_packages(ignore_dot_ga sage: from sage.tests.gap_packages import all_installed_packages diff --git a/sagemath-mem-fun-ref.patch b/sagemath-mem-fun-ref.patch new file mode 100644 index 0000000..5b49167 --- /dev/null +++ b/sagemath-mem-fun-ref.patch @@ -0,0 +1,11 @@ +--- src/sage/symbolic/ginac/archive.cpp.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/symbolic/ginac/archive.cpp 2023-03-13 11:50:47.836951365 -0600 +@@ -581,7 +581,7 @@ void archive::clear() + /** Delete cached unarchived expressions in all archive_nodes (mainly for debugging). */ + void archive::forget() + { +- for_each(nodes.begin(), nodes.end(), std::mem_fun_ref(&archive_node::forget)); ++ for (archive_node& node: nodes) node.forget(); + } + + /** Delete cached unarchived expressions from node (for debugging). */ diff --git a/sagemath-python3.11.patch b/sagemath-python3.11.patch deleted file mode 100644 index e25e254..0000000 --- a/sagemath-python3.11.patch +++ /dev/null @@ -1,426 +0,0 @@ -diff -up src/sage/cpython/cython_metaclass.h.orig src/sage/cpython/cython_metaclass.h ---- src/sage/cpython/cython_metaclass.h.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/cpython/cython_metaclass.h 2023-01-15 19:52:42.818659170 -0700 -@@ -66,7 +66,7 @@ static CYTHON_INLINE int Sage_PyType_Rea - } - - /* Now, set t.__class__ to metaclass */ -- Py_TYPE(t) = metaclass; -+ Py_SET_TYPE(t, metaclass); - PyType_Modified(t); - } - else -diff -up src/sage/cpython/dict_del_by_value.pyx.orig src/sage/cpython/dict_del_by_value.pyx ---- src/sage/cpython/dict_del_by_value.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/cpython/dict_del_by_value.pyx 2023-01-15 19:52:42.819659153 -0700 -@@ -25,7 +25,7 @@ from weakref import KeyedRef - from cpython.list cimport PyList_New - from cpython cimport Py_XINCREF, Py_XDECREF - --from libc.stdint cimport int8_t, int16_t, int32_t, int64_t -+from libc.stdint cimport int8_t, int16_t, int32_t, int64_t, uint8_t, uint32_t - cdef extern from "Python.h": - ctypedef struct PyDictKeysObject - -@@ -45,8 +45,6 @@ cdef extern from "Python.h": - #(this file is not exported from CPython, so we need to be - #careful the definitions are in step with what happens there. - --ctypedef void* dict_lookup_func # Precise definition not needed -- - ctypedef union IndexBlock: - int8_t as_1[8] - int16_t as_2[4] -@@ -55,8 +53,10 @@ ctypedef union IndexBlock: - - ctypedef struct MyPyDictKeysObject: - Py_ssize_t dk_refcnt -- Py_ssize_t dk_size -- dict_lookup_func dk_lookup -+ uint8_t dk_log2_size -+ uint8_t dk_log2_index_bytes -+ uint8_t dk_kind -+ uint32_t dk_version - Py_ssize_t dk_usable - Py_ssize_t dk_nentries - IndexBlock dk_indices -@@ -66,46 +66,65 @@ ctypedef struct PyDictKeyEntry: - PyObject * me_key - PyObject * me_value - -+ctypedef struct PyDictUnicodeEntry: -+ PyObject * me_key -+ PyObject * me_value -+ - cdef Py_ssize_t DKIX_EMPTY = -1 - cdef Py_ssize_t DKIX_DUMMY = -2 - cdef Py_ssize_t DKIX_ERROR = -3 -+cdef Py_ssize_t DKIX_KEY_CHANGED = -4 -+ -+ctypedef enum DictKeysKind: -+ DICT_KEYS_GENERAL = 0, -+ DICT_KEYS_UNICODE = 1, -+ DICT_KEYS_SPLIT = 2 - - ##### - #These routines are copied from CPython's Object/dictobject.c - #in order to access PyDictKeysObject fields - -+cdef inline Py_ssize_t DK_SIZE(MyPyDictKeysObject *keys): -+ return 1L << keys.dk_log2_size -+ - cdef inline int DK_IXSIZE(MyPyDictKeysObject *keys): -- cdef Py_ssize_t s = keys.dk_size -- if s <= 0xff: -+ cdef uint8_t s = keys.dk_log2_size -+ if s <= 7: - return 1 -- elif s <= 0xffff: -+ if s <= 15: - return 2 -- elif s <= 0xffffffff: -+ if sizeof(void *) <= 4 or s <= 31: - return 4 - else: - return 8 - - cdef inline PyDictKeyEntry * DK_ENTRIES(MyPyDictKeysObject *keys): -- return &(keys.dk_indices.as_1[keys.dk_size * DK_IXSIZE(keys)]) -+ return &(keys.dk_indices.as_1[1UL << keys.dk_log2_index_bytes]) -+ -+cdef inline PyDictUnicodeEntry * DK_UNICODE_ENTRIES(MyPyDictKeysObject *keys): -+ return &(keys.dk_indices.as_1[1UL << keys.dk_log2_index_bytes]) -+ -+cdef inline bint DK_IS_UNICODE(MyPyDictKeysObject *keys): -+ return keys.dk_kind != DICT_KEYS_GENERAL - - cdef inline Py_ssize_t dk_get_index(MyPyDictKeysObject *keys, Py_ssize_t i): -- cdef Py_ssize_t s = keys.dk_size -- if s <= 0xff: -+ cdef uint8_t s = keys.dk_log2_size -+ if s < 8: - return keys.dk_indices.as_1[i] -- elif s <= 0xffff: -+ elif s < 16: - return keys.dk_indices.as_2[i] -- elif s <= 0xffffffff: -+ elif sizeof(void *) <= 4 or s < 32: - return keys.dk_indices.as_4[i] - else: - return keys.dk_indices.as_8[i] - - cdef inline void dk_set_index(MyPyDictKeysObject *keys, Py_ssize_t i, Py_ssize_t ix): -- cdef Py_ssize_t s = keys.dk_size -- if s <= 0xff: -+ cdef uint8_t s = keys.dk_log2_size -+ if s < 8: - keys.dk_indices.as_1[i] = ix -- elif s <= 0xffff: -+ elif s < 16: - keys.dk_indices.as_2[i] = ix -- elif s <= 0xffffffff: -+ elif sizeof(void *) <= 4 or s < 32: - keys.dk_indices.as_4[i] = ix - else: - keys.dk_indices.as_8[i] = ix -@@ -113,22 +132,7 @@ cdef inline void dk_set_index(MyPyDictKe - #End of replication of Object/dictobject.c - ###### - --cdef dict_lookup_func lookdict -- --cdef dict_lookup_func DK_LOOKUP(PyDictObject *mp): -- return ((mp.ma_keys)).dk_lookup -- --def init_lookdict(): -- global lookdict -- # A dict which a non-string key uses the generic "lookdict" -- # as lookup function -- cdef object D = {} -- D[0] = 0 -- lookdict = DK_LOOKUP(D) -- --init_lookdict() -- --cdef int del_dictitem_by_exact_value(PyDictObject *mp, PyObject *value, Py_hash_t hash) except -1: -+cdef int del_dictitem_by_exact_value(PyDictObject *mp, PyObject *value, Py_hash_t hashval) except -1: - """ - This is used in callbacks for the weak values of :class:`WeakValueDictionary`. - -@@ -179,47 +183,72 @@ cdef int del_dictitem_by_exact_value(PyD - """ - keys = (mp.ma_keys) - cdef size_t perturb -- cdef size_t mask = keys.dk_size-1 -- cdef PyDictKeyEntry *entries = DK_ENTRIES(keys) -+ cdef size_t mask = DK_SIZE(keys)-1 -+ cdef PyDictUnicodeEntry *uc_entries -+ cdef PyDictUnicodeEntry *uc_ep -+ cdef PyDictKeyEntry *entries - cdef PyDictKeyEntry *ep -- -+ - if mp.ma_values is not NULL: - raise TypeError("del_dictitem_by_exact_value cannot be applied to a shared key dict") - -- cdef size_t i = hash & mask -+ cdef size_t i = hashval & mask - ix = dk_get_index(keys, i) - - if ix == DKIX_EMPTY: - # key not found - return 0 - -- ep = &(entries[ix]) -- perturb = hash -- while (ep.me_value != value or ep.me_hash != hash): -- perturb = perturb >> 5 #this is the value of PERTURB_SHIFT -- i = mask & (i * 5 + perturb + 1) -- ix = dk_get_index(keys, i) -- if ix == DKIX_EMPTY: -- # key not found -- return 0 -- ep = &(entries[ix]) -+ if DK_IS_UNICODE(keys): -+ uc_entries = DK_UNICODE_ENTRIES(keys) -+ uc_ep = &(uc_entries[ix]) -+ perturb = hashval -+ while (uc_ep.me_value != value or hash(uc_ep.me_key) != hashval): -+ perturb = perturb >> 5 #this is the value of PERTURB_SHIFT -+ i = mask & (i * 5 + perturb + 1) -+ ix = dk_get_index(keys, i) -+ if ix == DKIX_EMPTY: -+ # key not found -+ return 0 -+ uc_ep = &(uc_entries[ix]) - -- # We need the lookup function to be the generic lookdict, otherwise -- # deletions may not work correctly -- keys.dk_lookup = lookdict -+ T = PyList_New(2) -+ PyList_SetItem(T, 0, uc_ep.me_key) -+ PyList_SetItem(T, 1, uc_ep.me_value) -+ uc_ep.me_key = NULL -+ uc_ep.me_value = NULL -+ mp.ma_used -= 1 -+ dk_set_index(keys, i, DKIX_DUMMY) -+ #We have transferred the to-be-deleted references to the list T -+ #we now delete the list so that the actual decref happens through a -+ #deallocation routine that uses the Python Trashcan macros to -+ #avoid stack overflow in deleting deep structures. -+ del T -+ else: -+ entries = DK_ENTRIES(keys) -+ ep = &(entries[ix]) -+ perturb = hashval -+ while (ep.me_value != value or ep.me_hash != hashval): -+ perturb = perturb >> 5 #this is the value of PERTURB_SHIFT -+ i = mask & (i * 5 + perturb + 1) -+ ix = dk_get_index(keys, i) -+ if ix == DKIX_EMPTY: -+ # key not found -+ return 0 -+ ep = &(entries[ix]) - -- T = PyList_New(2) -- PyList_SetItem(T, 0, ep.me_key) -- PyList_SetItem(T, 1, ep.me_value) -- ep.me_key = NULL -- ep.me_value = NULL -- mp.ma_used -= 1 -- dk_set_index(keys, i, DKIX_DUMMY) -- #We have transferred the to-be-deleted references to the list T -- #we now delete the list so that the actual decref happens through a -- #deallocation routine that uses the Python Trashcan macros to -- #avoid stack overflow in deleting deep structures. -- del T -+ T = PyList_New(2) -+ PyList_SetItem(T, 0, ep.me_key) -+ PyList_SetItem(T, 1, ep.me_value) -+ ep.me_key = NULL -+ ep.me_value = NULL -+ mp.ma_used -= 1 -+ dk_set_index(keys, i, DKIX_DUMMY) -+ #We have transferred the to-be-deleted references to the list T -+ #we now delete the list so that the actual decref happens through a -+ #deallocation routine that uses the Python Trashcan macros to -+ #avoid stack overflow in deleting deep structures. -+ del T - - def test_del_dictitem_by_exact_value(D, value, h): - """ -diff -up src/sage/libs/gmp/pylong.pyx.orig src/sage/libs/gmp/pylong.pyx ---- src/sage/libs/gmp/pylong.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/gmp/pylong.pyx 2023-01-15 19:52:42.819659153 -0700 -@@ -33,6 +33,7 @@ from .mpz cimport * - - cdef extern from *: - Py_ssize_t* Py_SIZE_PTR "&Py_SIZE"(object) -+ void __Pyx_SET_SIZE(object, Py_ssize_t) - int hash_bits """ - #ifdef _PyHASH_BITS - _PyHASH_BITS /* Python 3 */ -@@ -57,10 +58,8 @@ cdef mpz_get_pylong_large(mpz_srcptr z): - mpz_export(L.ob_digit, NULL, - -1, sizeof(digit), 0, PyLong_nails, z) - if mpz_sgn(z) < 0: -- # Set correct size (use a pointer to hack around Cython's -- # non-support for lvalues). -- sizeptr = Py_SIZE_PTR(L) -- sizeptr[0] = -pylong_size -+ # Set correct size -+ __Pyx_SET_SIZE(L, -pylong_size) - return L - - -diff -up src/sage/misc/decorators.py.orig src/sage/misc/decorators.py ---- src/sage/misc/decorators.py.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/misc/decorators.py 2023-01-15 19:52:42.819659153 -0700 -@@ -31,8 +31,7 @@ from functools import (partial, update_w - from copy import copy - - from sage.misc.sageinspect import (sage_getsource, sage_getsourcelines, -- sage_getargspec) --from inspect import ArgSpec -+ sage_getargspec, ArgSpec) - - - def sage_wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES): -diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py ---- src/sage/misc/sageinspect.py.orig 2023-01-15 17:07:04.838843913 -0700 -+++ src/sage/misc/sageinspect.py 2023-01-15 19:53:47.194510597 -0700 -@@ -119,12 +119,15 @@ import functools - import os - import tokenize - import re -+from collections import namedtuple - - try: - import importlib.machinery as import_machinery - except ImportError: - pass - -+ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults') -+ - - def is_function_or_cython_function(obj): - """ -@@ -359,7 +362,7 @@ def _extract_embedded_signature(docstrin - docstring = L[1] if len(L) > 1 else '' # Remove first line, keep the rest - def_string = "def " + name + signature + ": pass" - try: -- return docstring, inspect.ArgSpec(*_sage_getargspec_cython(def_string)) -+ return docstring, ArgSpec(*_sage_getargspec_cython(def_string)) - except SyntaxError: - docstring = os.linesep.join(L) - return docstring, None -@@ -1100,7 +1103,7 @@ def _sage_getargspec_from_ast(source): - - OUTPUT: - -- - an instance of :obj:`inspect.ArgSpec`, i.e., a named tuple -+ - an instance of :obj:`ArgSpec`, i.e., a named tuple - - EXAMPLES:: - -@@ -1132,8 +1135,7 @@ def _sage_getargspec_from_ast(source): - vararg = getattr(ast_args.vararg, 'arg', None) - kwarg = getattr(ast_args.kwarg, 'arg', None) - -- return inspect.ArgSpec(args, vararg, kwarg, -- tuple(defaults) if defaults else None) -+ return ArgSpec(args, vararg, kwarg, tuple(defaults) if defaults else None) - - - def _sage_getargspec_cython(source): -@@ -1149,7 +1151,7 @@ def _sage_getargspec_cython(source): - - OUTPUT: - -- - an instance of :obj:`inspect.ArgSpec`, i.e., a named tuple -+ - an instance of :obj:`ArgSpec`, i.e., a named tuple - - EXAMPLES:: - -@@ -1659,11 +1661,11 @@ def sage_getargspec(obj): - return sage_getargspec(obj.__call__) - if isinstance(obj, (lazy_attribute, AbstractMethod)): - source = sage_getsource(obj) -- return inspect.ArgSpec(*_sage_getargspec_cython(source)) -+ return ArgSpec(*_sage_getargspec_cython(source)) - if not callable(obj): - raise TypeError("obj is not a code object") - try: -- return inspect.ArgSpec(*obj._sage_argspec_()) -+ return ArgSpec(*obj._sage_argspec_()) - except (AttributeError, TypeError): - pass - # If we are lucky, the function signature is embedded in the docstring. -@@ -1679,7 +1681,7 @@ def sage_getargspec(obj): - # Note that this may give a wrong result for the constants! - try: - args, varargs, varkw = inspect.getargs(obj.__code__) -- return inspect.ArgSpec(args, varargs, varkw, obj.__defaults__) -+ return ArgSpec(args, varargs, varkw, obj.__defaults__) - except (TypeError, AttributeError): - pass - if isclassinstance(obj): -@@ -1714,7 +1716,7 @@ def sage_getargspec(obj): - except TypeError: # happens for Python builtins - source = '' - if source: -- return inspect.ArgSpec(*_sage_getargspec_cython(source)) -+ return ArgSpec(*_sage_getargspec_cython(source)) - else: - func_obj = obj - -@@ -1727,7 +1729,7 @@ def sage_getargspec(obj): - except TypeError: # arg is not a code object - # The above "hopefully" was wishful thinking: - try: -- return inspect.ArgSpec(*_sage_getargspec_cython(sage_getsource(obj))) -+ return ArgSpec(*_sage_getargspec_cython(sage_getsource(obj))) - except TypeError: # This happens for Python builtins - # The best we can do is to return a generic argspec - args = [] -@@ -1737,7 +1739,7 @@ def sage_getargspec(obj): - defaults = func_obj.__defaults__ - except AttributeError: - defaults = None -- return inspect.ArgSpec(args, varargs, varkw, defaults) -+ return ArgSpec(args, varargs, varkw, defaults) - - - def formatannotation(annotation, base_module=None): -@@ -1808,19 +1810,7 @@ def sage_formatargspec(args, varargs=Non - :func:`sage_getargspec`. Since :func:`sage_getargspec` works for - Cython functions while Python's inspect module does not, it makes - sense to keep this function for formatting instances of -- ``inspect.ArgSpec``. -- -- EXAMPLES:: -- -- sage: from sage.misc.sageinspect import sage_formatargspec -- sage: from inspect import formatargspec # deprecated in Python 3 -- sage: args = ['a', 'b', 'c'] -- sage: defaults = [3] -- sage: sage_formatargspec(args, defaults=defaults) -- '(a, b, c=3)' -- sage: import warnings; warnings.simplefilter('ignore') # ignore DeprecationWarning -- sage: formatargspec(args, defaults=defaults) == sage_formatargspec(args, defaults=defaults) -- True -+ ``ArgSpec``. - """ - def formatargandannotation(arg): - result = formatarg(arg) -diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp ---- src/sage/symbolic/ginac/numeric.cpp.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/symbolic/ginac/numeric.cpp 2023-01-15 19:52:42.820659135 -0700 -@@ -52,7 +52,6 @@ - #define register - #define PY_SSIZE_T_CLEAN - #include --#include - #include "flint/fmpz.h" - #include "flint/fmpz_factor.h" - diff --git a/sagemath-python3.patch b/sagemath-python3.patch index edae15e..ac1e853 100644 --- a/sagemath-python3.patch +++ b/sagemath-python3.patch @@ -1,6 +1,6 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c ---- src/sage/cpython/debugimpl.c.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/cpython/debugimpl.c 2023-01-15 17:07:04.836843956 -0700 +--- src/sage/cpython/debugimpl.c.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/cpython/debugimpl.c 2023-03-13 09:38:55.609800668 -0600 @@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize); printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize); @@ -18,8 +18,8 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c attr_pointer_meth(tp_call, "__call__"); attr_pointer_meth(tp_str, "__str__"); diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx ---- src/sage/cpython/debug.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/cpython/debug.pyx 2023-01-15 17:07:04.836843956 -0700 +--- src/sage/cpython/debug.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/cpython/debug.pyx 2023-03-13 09:38:55.610800649 -0600 @@ -231,6 +231,7 @@ def type_debug(cls): tp_basicsize: 16 tp_itemsize: 0 @@ -37,8 +37,8 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx tp_call (__call__): NULL tp_str (__str__): 0x7fc57d757020 diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py ---- src/sage/geometry/triangulation/point_configuration.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/geometry/triangulation/point_configuration.py 2023-01-15 17:07:04.837843935 -0700 +--- src/sage/geometry/triangulation/point_configuration.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/geometry/triangulation/point_configuration.py 2023-03-13 09:38:55.610800649 -0600 @@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ @@ -54,8 +54,8 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge if verbose: print("#### TOPCOM input ####") diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py ---- src/sage/interfaces/frobby.py.orig 2023-01-15 17:07:04.837843935 -0700 -+++ src/sage/interfaces/frobby.py 2023-01-15 17:07:49.392886328 -0700 +--- src/sage/interfaces/frobby.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/frobby.py 2023-03-13 09:38:55.610800649 -0600 @@ -78,7 +78,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) @@ -66,8 +66,8 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py frinput = str_to_bytes(input) else: diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py ---- src/sage/interfaces/gfan.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/interfaces/gfan.py 2023-01-15 17:07:04.837843935 -0700 +--- src/sage/interfaces/gfan.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/gfan.py 2023-03-13 09:38:55.611800631 -0600 @@ -109,7 +109,7 @@ class Gfan(): print("gfan input:\n%s" % input) @@ -78,8 +78,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py # sometimes, gfan outputs stuff to stderr even though everything is fine diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ---- src/sage/interfaces/latte.py.orig 2023-01-15 17:07:04.837843935 -0700 -+++ src/sage/interfaces/latte.py 2023-01-15 17:09:27.127907740 -0700 +--- src/sage/interfaces/latte.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/latte.py 2023-03-13 09:38:55.611800631 -0600 @@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, @@ -97,8 +97,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ans, err = latte_proc.communicate(arg) diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx ---- src/sage/interfaces/sagespawn.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/interfaces/sagespawn.pyx 2023-01-15 17:07:04.838843913 -0700 +--- src/sage/interfaces/sagespawn.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/sagespawn.pyx 2023-03-13 09:38:55.611800631 -0600 @@ -1,6 +1,6 @@ """ Sage wrapper around pexpect's ``spawn`` class and @@ -147,8 +147,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py pass self.fileobj.close() diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx ---- src/sage/libs/coxeter3/coxeter.pyx.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/libs/coxeter3/coxeter.pyx 2023-01-15 17:07:04.838843913 -0700 +--- src/sage/libs/coxeter3/coxeter.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/libs/coxeter3/coxeter.pyx 2023-03-13 09:38:55.611800631 -0600 @@ -37,7 +37,7 @@ cdef class String: EXAMPLES:: @@ -282,8 +282,8 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter. if rank == 0: raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented") diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py ---- src/sage/misc/sageinspect.py.orig 2023-01-15 16:40:43.609846146 -0700 -+++ src/sage/misc/sageinspect.py 2023-01-15 17:07:04.838843913 -0700 +--- src/sage/misc/sageinspect.py.orig 2023-03-13 08:43:39.551431643 -0600 ++++ src/sage/misc/sageinspect.py 2023-03-13 09:38:55.612800613 -0600 @@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor """ return node.id @@ -310,8 +310,8 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py [True, False, None] sage: [type(vis(n)) for n in ['True', 'False', 'None']] diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py ---- src/sage/plot/plot3d/plot3d.py.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/plot/plot3d/plot3d.py 2023-01-15 17:07:04.839843892 -0700 +--- src/sage/plot/plot3d/plot3d.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/plot/plot3d/plot3d.py 2023-03-13 09:38:55.612800613 -0600 @@ -219,6 +219,7 @@ from .shapes import arrow3d from .base import Graphics3dGroup from sage.plot.colors import rainbow @@ -330,21 +330,21 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) self.dep_var = dep_var diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx ---- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-01-15 17:09:50.193474022 -0700 -@@ -4729,8 +4729,7 @@ cdef class PolynomialConstruct: +--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-03-13 11:29:13.157592229 -0600 +@@ -4722,8 +4722,7 @@ cdef class PolynomialConstruct: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) -- raise TypeError("Cannot generate Boolean polynomial from %s , %s" % +- raise TypeError("cannot generate Boolean polynomial from %s , %s" % - (type(x), type(ring))) -+ raise TypeError(f"Cannot generate Boolean polynomial from {type(x)}, {type(ring)}") ++ raise TypeError(f"cannot generate Boolean polynomial from {type(x)}, {type(ring)}") cdef class MonomialConstruct: diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx ---- src/sage/structure/sage_object.pyx.orig 2022-09-19 16:38:19.000000000 -0600 -+++ src/sage/structure/sage_object.pyx 2023-01-15 17:09:50.195473985 -0700 +--- src/sage/structure/sage_object.pyx.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/structure/sage_object.pyx 2023-03-13 09:38:55.613800594 -0600 @@ -694,7 +694,7 @@ cdef class SageObject: try: s = self._interface_init_(I) diff --git a/sagemath-qepcad.patch b/sagemath-qepcad.patch index 2aef385..3ad5dd9 100644 --- a/sagemath-qepcad.patch +++ b/sagemath-qepcad.patch @@ -1,6 +1,6 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py ---- src/sage/interfaces/qepcad.py.orig 2022-09-19 16:38:18.000000000 -0600 -+++ src/sage/interfaces/qepcad.py 2023-01-15 17:22:00.958717226 -0700 +--- src/sage/interfaces/qepcad.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/qepcad.py 2023-03-13 09:52:44.349623749 -0600 @@ -530,7 +530,7 @@ TESTS: Check the qepcad configuration file:: @@ -10,15 +10,15 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py ....: f.readlines()[-1] 'SINGULAR yes\n' -@@ -605,7 +605,6 @@ AUTHORS: - # http://www.gnu.org/licenses/ - #***************************************************************************** - +@@ -604,7 +604,6 @@ AUTHORS: + # https://www.gnu.org/licenses/ + # **************************************************************************** + import os -from sage.env import SAGE_LOCAL import pexpect import re import sys -@@ -620,6 +619,8 @@ from .expect import Expect, ExpectFuncti +@@ -619,6 +618,8 @@ from .expect import Expect, ExpectFuncti from sage.interfaces.interface import AsciiArtString @@ -27,7 +27,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py def _qepcad_atoms(formula): r""" Return the atoms of a qepcad quantifier-free formula, as a set of strings. -@@ -651,17 +652,17 @@ def _qepcad_cmd(memcells=None): +@@ -650,17 +651,17 @@ def _qepcad_cmd(memcells=None): sage: from sage.interfaces.qepcad import _qepcad_cmd sage: s = _qepcad_cmd() @@ -48,7 +48,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py _command_info_cache = None -@@ -686,7 +687,7 @@ def _update_command_info(): +@@ -685,7 +686,7 @@ def _update_command_info(): cache = {} diff --git a/sagemath-sagedoc.patch b/sagemath-sagedoc.patch index ad54e2e..8f5a0e6 100644 --- a/sagemath-sagedoc.patch +++ b/sagemath-sagedoc.patch @@ -1,9 +1,9 @@ diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py ---- src/sage_docbuild/ext/multidocs.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage_docbuild/ext/multidocs.py 2022-06-01 10:51:11.630814539 -0600 +--- src/sage_docbuild/ext/multidocs.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage_docbuild/ext/multidocs.py 2023-03-13 10:54:54.452252122 -0600 @@ -83,8 +83,11 @@ def merge_environment(app, env): for ind in newalldoc: - # treat subdocument source as orphaned file and don't complain + # treat sub-document source as orphaned file and don't complain md = env.metadata.get(ind, dict()) - md['orphan'] = 1 - env.metadata[ind] = md @@ -16,9 +16,9 @@ diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs newcite = {} for ind, (path, tag, lineno) in citations.items(): diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py ---- src/sage/interfaces/singular.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/singular.py 2022-06-01 10:51:11.630814539 -0600 -@@ -2327,11 +2327,11 @@ def generate_docstring_dictionary(): +--- src/sage/interfaces/singular.py.orig 2023-02-11 06:25:15.000000000 -0700 ++++ src/sage/interfaces/singular.py 2023-03-13 10:54:54.452252122 -0600 +@@ -2379,11 +2379,11 @@ def generate_docstring_dictionary(): L, in_node, curr_node = [], False, None diff --git a/sagemath.spec b/sagemath.spec index fed1c18..7ffa8ce 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -23,12 +23,6 @@ # use workaround to match upstream sagemath patched cython %bcond_with cython_hack -%ifarch %{ix86} x86_64 -%bcond_without fes -%else -%bcond_with fes -%endif - # switch to run make -testall %bcond_with check %global SAGE_TIMEOUT 60 @@ -40,7 +34,7 @@ %global elliptic_curves_pkg elliptic_curves-0.8.1 %global graphs_pkg graphs-20210214 %if %{with bundled_ipython} -%global ipython_ver 8.4.0 +%global ipython_ver 8.6.0 %global ipython_pkg ipython-%{ipython_ver} %global prompt_toolkit_ver 3.0.24 %global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver} @@ -58,7 +52,7 @@ %endif %global polytopes_db_pkg polytopes_db-20170220 %global sagetex_pkg sagetex-3.6.1 -%global Sphinx_pkg Sphinx-4.4.0 +%global Sphinx_pkg Sphinx-5.2.3 %global singular_pkg singular-4.3.1p1 %if %{with bundled_threejs} %global threejs_ver r122 @@ -66,11 +60,7 @@ %endif # Spkg equivalents of required rpms; we pretend they are installed as spkgs. -%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.77 CoCoALib-0.99800 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.1 libsirocco-2.1.0 lrslib-072 mcqd-1.0.0 meataxe-1.0.1 qepcad-B.1.74 saclib-2.2.8 tdlib-0.9.2 - -%ifarch %{ix86} x86_64 -%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2 -%endif +%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.77 CoCoALib-0.99800 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.2 libsirocco-2.1.0 lrslib-072 mcqd-1.0.0 meataxe-1.0.1 qepcad-B.1.74 saclib-2.2.8 tdlib-0.9.2 %global SAGE_ROOT %{_libdir}/sagemath %global SAGE_LOCAL %{SAGE_ROOT}/local @@ -83,8 +73,8 @@ Name: sagemath Summary: A free open-source mathematics software system -Version: 9.7 -Release: 2%{?dist} +Version: 9.8 +Release: 1%{?dist} # The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file. # Note that many of the components listed in that file are not built in, but # are used as external libraries, and therefore do not affect the License tag. @@ -100,7 +90,7 @@ Source3: org.sagemath.sage.metainfo.xml # 32-bit ARM builders run out of memory trying to create the SRPM and also # trying to unpack the SRPM before starting a build. The i386 builders # sometimes fail as well, so exclude all 32-bit platforms. -ExclusiveArch: aarch64 x86_64 +ExclusiveArch: aarch64 x86_64 # Fix stray escapes in python strings Patch0: %{name}-escape.patch @@ -134,6 +124,7 @@ Patch7: %{name}-jmol.patch # tell the user how to install the large Cremona database # add a missing commit() that causes large database construction to fail +# https://github.com/sagemath/sage/pull/35050 Patch8: %{name}-cremona.patch # adapt to python 3 and cython running in python 3 mode @@ -148,8 +139,8 @@ Patch11: %{name}-lcalc.patch # Use system gap directories and modernize libgap interface Patch12: %{name}-libgap.patch -# Build fes -Patch13: %{name}-fes-build.patch +# Catch polymorphic types by reference instead of by value +Patch13: %{name}-catch-value.patch # Side effect of using distro packages # https://bugzilla.redhat.com/show_bug.cgi?id=974769 @@ -174,17 +165,22 @@ Patch19: %{name}-tdlib.patch # Use local objects.inv for intersphinx since no network on koji builders Patch20: %{name}-intersphinx.patch -# Adapt to changes in python 3.11 -Patch21: %{name}-python3.11.patch +# Replace a deprecated call to std::bind2nd +Patch21: %{name}-bind2nd.patch # Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2160197 # Remove this when that bug is fixed Patch22: %{name}-giac.patch +# Replace a deprecated call to std::mem_fun_ref +Patch23: %{name}-mem-fun-ref.patch + BuildRequires: 4ti2 BuildRequires: 4ti2-devel BuildRequires: appstream BuildRequires: arb-devel +BuildRequires: autoconf +BuildRequires: automake BuildRequires: bc BuildRequires: bliss-devel BuildRequires: boost-devel @@ -201,9 +197,6 @@ BuildRequires: csdp-devel BuildRequires: desktop-file-utils BuildRequires: dvipng BuildRequires: ecl -%if %{with fes} -BuildRequires: fes-devel -%endif BuildRequires: ffmpeg-free BuildRequires: flexiblas-devel BuildRequires: flint-devel @@ -287,12 +280,14 @@ BuildRequires: libfrobby-devel BuildRequires: libgap BuildRequires: libhomfly-devel BuildRequires: libmpc-devel +BuildRequires: libtool BuildRequires: lrcalc-devel BuildRequires: lrslib-utils BuildRequires: make BuildRequires: mathjax BuildRequires: maxima-runtime-ecl BuildRequires: mcqd-devel +BuildRequires: meson BuildRequires: mpfi-devel BuildRequires: nauty BuildRequires: ninja-build @@ -308,10 +303,12 @@ BuildRequires: pari-galpol BuildRequires: pari-gp BuildRequires: pari-nftables BuildRequires: pari-seadata +BuildRequires: patchelf BuildRequires: pdf2svg BuildRequires: perl-generators BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: perl(File::Slurp) +BuildRequires: pkgconfig BuildRequires: pkgconfig(bdw-gc) BuildRequires: pkgconfig(cbc) BuildRequires: pkgconfig(eclib) @@ -339,6 +336,7 @@ BuildRequires: pkgconfig(primecount) BuildRequires: pkgconfig(primesieve) BuildRequires: pkgconfig(readline) BuildRequires: pkgconfig(Singular) +BuildRequires: pkgconfig(tbb) BuildRequires: pkgconfig(tk) BuildRequires: pkgconfig(zlib) BuildRequires: planarity-devel @@ -366,6 +364,7 @@ BuildRequires: %{py3_dist beniget} BuildRequires: %{py3_dist brial} BuildRequires: %{py3_dist charset-normalizer} BuildRequires: %{py3_dist colorlog} +BuildRequires: %{py3_dist contourpy} BuildRequires: %{py3_dist cppy} BuildRequires: %{py3_dist cvxopt} BuildRequires: %{py3_dist cython} @@ -378,6 +377,7 @@ BuildRequires: %{py3_dist fpylll} BuildRequires: %{py3_dist furo} BuildRequires: %{py3_dist gast} BuildRequires: %{py3_dist gmpy2} +BuildRequires: %{py3_dist hatch-fancy-pypi-readme} BuildRequires: %{py3_dist hatchling} %if %{with sphinx_hack} BuildRequires: %{py3_dist html5lib} @@ -410,6 +410,7 @@ BuildRequires: %{py3_dist pari-jupyter} %if %{with bundled_ipython} BuildRequires: %{py3_dist path.py} %endif +BuildRequires: %{py3_dist pathspec} %if %{without bundled_pexpect} BuildRequires: %{py3_dist pexpect} %endif @@ -428,6 +429,9 @@ BuildRequires: %{py3_dist pure-eval} BuildRequires: %{py3_dist py} BuildRequires: %{py3_dist pycryptosat} BuildRequires: %{py3_dist pyopenssl} +BuildRequires: %{py3_dist pyproject-metadata} +BuildRequires: %{py3_dist pytest} +BuildRequires: %{py3_dist pytest-xdist} BuildRequires: %{py3_dist pytz} BuildRequires: %{py3_dist pytzdata} BuildRequires: %{py3_dist pytz-deprecation-shim} @@ -450,7 +454,6 @@ BuildRequires: %{py3_dist sphinx-basic-ng} BuildRequires: %{py3_dist stack-data} BuildRequires: %{py3_dist sympy} BuildRequires: %{py3_dist tinycss2} -BuildRequires: %{py3_dist tomli} BuildRequires: %{py3_dist tomlkit} BuildRequires: %{py3_dist tox} BuildRequires: %{py3_dist typing-extensions} @@ -460,7 +463,9 @@ BuildRequires: %{py3_dist widgetsnbextension} BuildRequires: %{py3_dist zodb3} BuildRequires: qepcad-B BuildRequires: qhull +BuildRequires: qhull-devel BuildRequires: R +BuildRequires: R-devel BuildRequires: rubiks BuildRequires: rw-devel BuildRequires: saclib-devel @@ -484,7 +489,7 @@ BuildRequires: tex(xy.sty) BuildRequires: web-assets-devel BuildRequires: xorg-x11-fonts-Type1 BuildRequires: xorg-x11-server-Xvfb -BuildRequires: zn_poly-devel +BuildRequires: yarnpkg Requires: hicolor-icon-theme Requires: rubiks @@ -589,6 +594,7 @@ Requires: %{py3_dist beautifulsoup4} Requires: %{py3_dist beniget} Requires: %{py3_dist brial} Requires: %{py3_dist charset-normalizer} +Requires: %{py3_dist contourpy} Requires: %{py3_dist cppy} Requires: %{py3_dist cypari2} Requires: %{py3_dist cysignals} @@ -1007,11 +1013,7 @@ pushd build/pkgs/threejs popd %endif -%autopatch -p0 -M12 -%if %{with fes} -%patch13 -%endif -%autopatch -p0 -m14 +%autopatch -p0 sed -i 's|@@SAGE_LOCAL@@|%{SAGE_LOCAL}|' src/sage/env.py @@ -1055,21 +1057,12 @@ chmod a-x src/sage/modules/fp_graded/{,steenrod/}*.py # GAP does not have enough memory to load the entire workspace sed -i 's/64m/256m/' src/sage/interfaces/gap.py -# Update the GAP root -sed -i '/GAP_ROOT_DIR/s,SAGE_SHARE,"%{_libdir}",' src/sage/env.py - # Fix detection of Fedora sed -i 's/yum/rpm/' build/bin/sage-guess-package-system # Allow use of gcc 13 sed -i 's/1\[3-9\].*)/1[4-9].*)/' configure -# Allow use of python 3.11 -sed -i 's/3\.11\.0/3.12.0/g' configure - -# Allow use of libfplll 5.4.4 -sed -i 's/5\.4\.2/5.4.4/g' configure - # Allow use of eclib 20221012 sed -i 's/20220621/20221012/g' configure @@ -2080,6 +2073,11 @@ end ######################################################################## %changelog +* Mon Mar 13 2023 Jerry James - 9.8-1 +- Version 9.8 +- Drop upstreamed patches: -fes-build, -python3.11 +- Add patches: -catch-value, -gap-split-root, -bind2nd, -mem-fun-ref + * Sat Jan 21 2023 Fedora Release Engineering - 9.7-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index 64a36e2..67fb1df 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 -SHA512 (sage-9.7.tar.gz) = 65c21713063dc2b9d632c44e31a5a9f3417f3d8367a9f082569b11c7f456f38ceb774821b9e879b45edd3a08f844d9b432962111d032f5d90ac5efd21f716924 +SHA512 (sage-9.8.tar.gz) = 1ba1c7bd07f13bb67f290d194b65234546fb6fee42693dd3d538e5f206b92a2f1ebf2d49b58541469a4c38b54c843ea0614f3d5c1b32f724f3176703ec5382e7