diff --git a/sagemath-env.patch b/sagemath-env.patch index ee90541..9c881f6 100644 --- a/sagemath-env.patch +++ b/sagemath-env.patch @@ -1,13 +1,13 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2022-12-19 15:39:47.797902092 -0700 -+++ src/sage/env.py 2022-12-19 15:41:27.291049166 -0700 +--- src/sage/env.py.orig 2023-01-15 17:04:08.814627154 -0700 ++++ src/sage/env.py 2023-01-15 17:17:20.339009783 -0700 @@ -166,15 +166,15 @@ SAGE_DATE = var("SAGE_DATE", version.dat SAGE_VERSION_BANNER = var("SAGE_VERSION_BANNER", version.banner) # virtual environment where sagelib is installed -SAGE_VENV = var("SAGE_VENV", os.path.abspath(sys.prefix)) +SAGE_VENV = var("SAGE_VENV", "@@SAGE_LOCAL@@") - SAGE_LIB = var("SAGE_LIB", os.path.dirname(os.path.dirname(sage.__file__))) + SAGE_LIB = var("SAGE_LIB", os.path.dirname(os.path.dirname(__file__))) -SAGE_EXTCODE = var("SAGE_EXTCODE", join(SAGE_LIB, "sage", "ext_data")) +SAGE_EXTCODE = var("SAGE_EXTCODE", join("/usr", "share", "sagemath", "etc")) SAGE_VENV_SPKG_INST = var("SAGE_VENV_SPKG_INST", join(SAGE_VENV, "var", "lib", "sage", "installed")) diff --git a/sagemath-escape.patch b/sagemath-escape.patch index c666f42..a13bacb 100644 --- a/sagemath-escape.patch +++ b/sagemath-escape.patch @@ -1,99 +1,7 @@ -diff -up src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx ---- src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx 2022-06-01 10:28:57.637203383 -0600 -@@ -230,7 +230,7 @@ cdef class FreeAlgebraElement_letterplac - return '0' - - def _latex_(self): -- """ -+ r""" - TESTS:: - - sage: K. = GF(25) -diff -up src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig src/sage/algebras/letterplace/free_algebra_letterplace.pyx ---- src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/algebras/letterplace/free_algebra_letterplace.pyx 2022-06-01 10:28:57.637203383 -0600 -@@ -618,7 +618,7 @@ cdef class FreeAlgebra_letterplace(Algeb - - # Auxiliar methods - cdef str exponents_to_latex(self, E): -- """ -+ r""" - This auxiliary method is used for the representation of elements of this free algebra as a latex string. - - EXAMPLES:: -diff -up src/sage/coding/codecan/codecan.pyx.orig src/sage/coding/codecan/codecan.pyx ---- src/sage/coding/codecan/codecan.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/coding/codecan/codecan.pyx 2022-06-01 10:29:22.924310247 -0600 -@@ -369,7 +369,7 @@ cdef class InnerGroup: - return self.transporter - - def __repr__(self): -- """ -+ r""" - EXAMPLES:: - - sage: from sage.coding.codecan.codecan import InnerGroup -@@ -378,7 +378,7 @@ cdef class InnerGroup: - frobenius power = 1 and partition = 0 -> 0 1 -> 1 2 -> 2 3 -> 3 4 -> 4 5 -> 5 - 6 -> 6 7 -> 7 8 -> 8 9 -> 9 - """ -- return "Subgroup of (GL(k,q) times \GF{q}^n ) rtimes Aut(\GF{q}) " + \ -+ return r"Subgroup of (GL(k,q) times \GF{q}^n ) rtimes Aut(\GF{q}) " + \ - "with rank = %s, frobenius power = %s and partition =%s" % (self.rank, - self.frob_pow, OP_string(self.row_partition)) - -diff -up src/sage/combinat/crystals/letters.pyx.orig src/sage/combinat/crystals/letters.pyx ---- src/sage/combinat/crystals/letters.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/combinat/crystals/letters.pyx 2022-06-01 10:29:22.925310251 -0600 -@@ -558,7 +558,7 @@ cdef class EmptyLetter(Element): - return 'E' - - def _latex_(self): -- """ -+ r""" - Return a latex representation of ``self``. - - EXAMPLES:: -diff -up src/sage/combinat/crystals/tensor_product_element.pyx.orig src/sage/combinat/crystals/tensor_product_element.pyx ---- src/sage/combinat/crystals/tensor_product_element.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/combinat/crystals/tensor_product_element.pyx 2022-06-01 10:29:22.925310251 -0600 -@@ -144,8 +144,8 @@ cdef class TensorProductOfCrystalsElemen - """ - from sage.misc.latex import latex - if self._parent.options.convention == "Kashiwara": -- return ' \otimes '.join(latex(c) for c in reversed(self)) -- return ' \otimes '.join(latex(c) for c in self) -+ return r' \otimes '.join(latex(c) for c in reversed(self)) -+ return r' \otimes '.join(latex(c) for c in self) - - def _ascii_art_(self): - """ -@@ -786,7 +786,7 @@ cdef class CrystalOfTableauxElement(Tens - return repr(self.to_tableau()) - - def _repr_diagram(self): -- """ -+ r""" - Return a string representation of ``self`` as a diagram. - - EXAMPLES:: -diff -up src/sage/graphs/matchpoly.pyx.orig src/sage/graphs/matchpoly.pyx ---- src/sage/graphs/matchpoly.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/graphs/matchpoly.pyx 2022-06-01 10:29:22.925310251 -0600 -@@ -50,7 +50,7 @@ x = polygen(ZZ, 'x') - - - def matching_polynomial(G, complement=True, name=None): -- """ -+ r""" - Computes the matching polynomial of the graph `G`. - - If `p(G, k)` denotes the number of `k`-matchings (matchings with `k` edges) 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/graphs/strongly_regular_db.pyx 2022-06-01 10:29:22.926310255 -0600 -@@ -2397,7 +2397,7 @@ def strongly_regular_from_two_intersecti +--- 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 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 @@ -103,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/group.pyx 2022-06-01 10:29:22.926310255 -0600 +--- 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 @@ -51,7 +51,7 @@ def is_Group(x): @@ -114,38 +22,9 @@ diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx Base class for all groups TESTS:: -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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2022-06-01 10:29:22.926310255 -0600 -@@ -913,7 +913,7 @@ cdef class PartitionRefinement_generic: - "\\begin{tikzpicture}\n" + - "\\tikzset{level distance=3cm, edge from parent/.style=" + - "{draw, edge from parent path={(\\tikzparentnode.south) -- (\\tikzchildnode.north)}}}\n" + -- "\Tree") -+ "\\Tree") - self._latex_debug_string += "[." - self._latex_act_node() - -diff -up src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig src/sage/groups/perm_gps/partn_ref/data_structures.pyx ---- src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref/data_structures.pyx 2022-06-01 10:29:22.927310259 -0600 -@@ -828,11 +828,11 @@ cdef SC_print_level(StabilizerChain *SC, - print('| labels {}'.format([SC.labels [level][i] for i from 0 <= i < n])) - print('|') - print('| generators {}'.format([[SC.generators [level][n*i + j] for j from 0 <= j < n] for i from 0 <= i < SC.num_gens[level]])) -- print('\ inverses {}'.format([[SC.gen_inverses[level][n*i + j] for j from 0 <= j < n] for i from 0 <= i < SC.num_gens[level]])) -+ print('\\ inverses {}'.format([[SC.gen_inverses[level][n*i + j] for j from 0 <= j < n] for i from 0 <= i < SC.num_gens[level]])) - else: - print('/ level {}'.format(level)) - print('|') -- print('\ base_size {}'.format(SC.base_size)) -+ print('\\ base_size {}'.format(SC.base_size)) - - cdef StabilizerChain *SC_new_base(StabilizerChain *SC, int *base, int base_len): - """ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2022-06-01 10:29:22.927310259 -0600 +--- 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 @@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary self.ith_word = &ith_word_linear @@ -155,57 +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. -@@ -607,7 +607,7 @@ cdef int ith_word_nonlinear(BinaryCodeSt - return 0 - - cdef int refine_by_bip_degree(PartitionStack *col_ps, void *S, int *cells_to_refine_by, int ctrb_len): -- """ -+ r""" - Refines the input partition by checking degrees of vertices to the given - cells in the associated bipartite graph (vertices split into columns and - words). -@@ -731,7 +731,7 @@ cdef int refine_by_bip_degree(PartitionS - return invariant - - cdef int compare_linear_codes(int *gamma_1, int *gamma_2, void *S1, void *S2, int degree): -- """ -+ r""" - Compare gamma_1(S1) and gamma_2(S2). - - Return return -1 if gamma_1(S1) < gamma_2(S2), 0 if gamma_1(S1) == gamma_2(S2), -@@ -804,7 +804,7 @@ cdef int compare_linear_codes(int *gamma - return 0 - - cdef int compare_nonlinear_codes(int *gamma_1, int *gamma_2, void *S1, void *S2, int degree): -- """ -+ r""" - Compare gamma_1(S1) and gamma_2(S2). - - Return return -1 if gamma_1(S1) < gamma_2(S2), 0 if gamma_1(S1) == gamma_2(S2), -diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/perm_gps/permgroup_element.pyx ---- src/sage/groups/perm_gps/permgroup_element.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/permgroup_element.pyx 2022-06-01 10:29:22.927310259 -0600 -@@ -1175,7 +1175,7 @@ cdef class PermutationGroupElement(Multi - return result - - cpdef _act_on_(self, x, bint self_on_left): -- """ -+ r""" - Return the result of the action of ``self`` on ``x``. - - For example, if ``x=f(z)`` is a polynomial, then this function returns -@@ -1619,7 +1619,7 @@ cdef class PermutationGroupElement(Multi - return ~self - - def sign(self): -- """ -+ r""" - Returns the sign of self, which is `(-1)^{s}`, where - `s` is the number of swaps. - diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx ---- src/sage/libs/eclib/newforms.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/eclib/newforms.pyx 2022-06-01 10:29:22.928310263 -0600 +--- 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 @@ -216,8 +47,8 @@ diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx EXAMPLES:: diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx ---- src/sage/libs/fes.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/fes.pyx 2022-06-01 10:29:22.928310263 -0600 +--- 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 @@ -228,18 +59,18 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_GF2E.pyx 2022-06-01 10:29:22.928310263 -0600 +--- 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(object): + 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(object): +@@ -439,7 +439,7 @@ cdef class ntl_GF2E(): return l def _sage_(ntl_GF2E self, k=None): @@ -249,9 +80,9 @@ diff -up src/sage/libs/ntl/ntl_GF2E.pyx.orig src/sage/libs/ntl/ntl_GF2E.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2022-06-01 10:29:22.929310268 -0600 -@@ -181,7 +181,7 @@ cdef class ntl_mat_GF2E(object): +--- 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): @@ -260,7 +91,7 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E. Return the string representation of self. EXAMPLES:: -@@ -446,7 +446,7 @@ cdef class ntl_mat_GF2E(object): +@@ -446,7 +446,7 @@ cdef class ntl_mat_GF2E(): return r def gauss(self,ncols=-1): @@ -270,18 +101,18 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E. 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2022-06-01 10:29:22.929310268 -0600 +--- 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 + 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(object): +@@ -376,7 +376,7 @@ cdef class ntl_mat_GF2(): return r def gauss(self,ncols=-1): @@ -290,28 +121,10 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.py 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 -@@ -497,7 +497,7 @@ cdef class ntl_mat_GF2(object): - return r - - def __invert__(self): -- """ -+ r""" - Return $X = A^{-1}$; an error is raised if A is singular. - - EXAMPLES:: 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2022-06-01 10:29:22.929310268 -0600 -@@ -73,7 +73,7 @@ cdef class ntl_mat_ZZ(object): - The \class{mat_ZZ} class implements arithmetic with matrices over $\Z$. - """ - def __init__(self, nrows=0, ncols=0, v=None): -- """ -+ r""" - The \class{mat_ZZ} class implements arithmetic with matrices over $\Z$. - - EXAMPLES:: -@@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ(object): +--- 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 +@@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ(): return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list())) def __repr__(self): @@ -321,21 +134,21 @@ diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2022-06-01 10:29:22.930310272 -0600 +--- 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.$ + 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZX.pyx 2022-06-01 10:29:22.930310272 -0600 -@@ -692,7 +692,7 @@ cdef class ntl_ZZX(object): +--- 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): @@ -345,8 +158,8 @@ diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/singular/polynomial.pyx 2022-06-01 10:29:22.930310272 -0600 +--- 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) @@ -355,10 +168,10 @@ diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polyn +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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/symmetrica/sc.pxi 2022-06-01 10:29:22.930310272 -0600 +--- 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 @@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab @@ -368,51 +181,9 @@ diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi you enter the INTEGER objects, say a and b, and res becomes a 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/matrix0.pyx.orig src/sage/matrix/matrix0.pyx ---- src/sage/matrix/matrix0.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix0.pyx 2022-06-01 10:29:22.931310276 -0600 -@@ -2291,7 +2291,7 @@ cdef class Matrix(sage.structure.element - # Functions - ################################################### - def act_on_polynomial(self, f): -- """ -+ r""" - Return the polynomial f(self\*x). - - INPUT: -@@ -2357,7 +2357,7 @@ cdef class Matrix(sage.structure.element - # Arithmetic - ################################################### - def commutator(self, other): -- """ -+ r""" - Return the commutator self\*other - other\*self. - - EXAMPLES:: -@@ -4993,7 +4993,7 @@ cdef class Matrix(sage.structure.element - # Arithmetic - ################################################### - cdef _vector_times_matrix_(self, Vector v): -- """ -+ r""" - Return the vector times matrix product. - - INPUT: -diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx ---- src/sage/matrix/matrix2.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix2.pyx 2022-06-01 10:29:22.933310284 -0600 -@@ -9762,7 +9762,7 @@ cdef class Matrix(Matrix1): - return img - - def density(self): -- """ -+ r""" - Return the density of the matrix. - - By density we understand the ratio of the number of nonzero 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix_integer_dense.pyx 2022-06-01 10:29:22.934310289 -0600 +--- 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 @@ -757,7 +757,7 @@ cdef class Matrix_integer_dense(Matrix_d return ans @@ -423,9 +194,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix_modn_dense_template.pxi 2022-06-01 10:29:22.934310289 -0600 -@@ -635,7 +635,7 @@ cdef class Matrix_modn_dense_template(Ma +--- 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 +@@ -649,7 +649,7 @@ cdef class Matrix_modn_dense_template(Ma return (word_size, little_endian, s), 10 def _unpickle(self, data, int version): @@ -434,7 +205,7 @@ diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/mat TESTS: Test for char-sized modulus:: -@@ -2247,7 +2247,7 @@ cdef class Matrix_modn_dense_template(Ma +@@ -2261,7 +2261,7 @@ cdef class Matrix_modn_dense_template(Ma return Matrix_dense.determinant(self) cdef xgcd_eliminate(self, celement * row1, celement* row2, Py_ssize_t start_col): @@ -443,67 +214,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/matrix/matrix_polynomial_dense.pyx.orig src/sage/matrix/matrix_polynomial_dense.pyx ---- src/sage/matrix/matrix_polynomial_dense.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix_polynomial_dense.pyx 2022-06-01 10:29:22.935310293 -0600 -@@ -55,16 +55,16 @@ cdef class Matrix_polynomial_dense(Matri - commonly used in the literature. - - - Working column-wise: each column of the matrix is a vector in the basis; -- then, a $\\Bold{K}[x]$-submodule of $\\Bold{K}[x]^{m}$ of rank $n$ is -- represented by an $m \\times n$ matrix, whose columns span the module -- (via $\\Bold{K}[x]$-linear combinations). This matrix has full rank, -- and $n \\leq m$. -+ then, a $\Bold{K}[x]$-submodule of $\Bold{K}[x]^{m}$ of rank $n$ is -+ represented by an $m \times n$ matrix, whose columns span the module -+ (via $\Bold{K}[x]$-linear combinations). This matrix has full rank, -+ and $n \leq m$. - - - Working row-wise: each row of the matrix is a vector in the basis; then, -- a $\\Bold{K}[x]$-submodule of $\\Bold{K}[x]^{n}$ of rank $m$ is -- represented by an $m \\times n$ matrix, whose rows span the module (via -- $\\Bold{K}[x]$-linear combinations). This matrix has full rank, and $m -- \\leq n$. -+ a $\Bold{K}[x]$-submodule of $\Bold{K}[x]^{n}$ of rank $m$ is -+ represented by an $m \times n$ matrix, whose rows span the module (via -+ $\Bold{K}[x]$-linear combinations). This matrix has full rank, and $m -+ \leq n$. - - For the rest of this class description, we assume that one is working - row-wise. For a given such module, all its bases are equivalent under -diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_rational_dense.pyx ---- src/sage/matrix/matrix_rational_dense.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matrix/matrix_rational_dense.pyx 2022-06-01 10:29:22.935310293 -0600 -@@ -507,7 +507,7 @@ cdef class Matrix_rational_dense(Matrix_ - return rich_to_bool(op, 0) - - cdef _vector_times_matrix_(self, Vector v): -- """ -+ r""" - Returns the vector times matrix product. - - INPUT: -@@ -920,7 +920,7 @@ cdef class Matrix_rational_dense(Matrix_ - return 0 - - def _clear_denom(self): -- """ -+ r""" - INPUT: - - -@@ -1187,7 +1187,7 @@ cdef class Matrix_rational_dense(Matrix_ - return ans - - def _multiply_over_integers(self, Matrix_rational_dense right, algorithm='default'): -- """ -+ r""" - Multiply this matrix by right using a multimodular algorithm and - return the result. - 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/matroids/basis_exchange_matroid.pyx 2022-06-01 10:29:22.935310293 -0600 +--- 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] @@ -514,8 +227,8 @@ diff -up src/sage/matroids/basis_exchange_matroid.pyx.orig src/sage/matroids/bas INPUT: diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matroid.pyx ---- src/sage/matroids/linear_matroid.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matroids/linear_matroid.pyx 2022-06-01 10:29:22.936310297 -0600 +--- 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 @@ -535,9 +248,9 @@ diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matr matroids. diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx ---- src/sage/matroids/matroid.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/matroids/matroid.pyx 2022-06-01 10:29:22.937310302 -0600 -@@ -3149,7 +3149,7 @@ cdef class Matroid(SageObject): +--- 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): @@ -546,7 +259,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Return the independence matroid polytope of ``self``. This is defined as the convex hull of the vertices -@@ -3429,7 +3429,7 @@ cdef class Matroid(SageObject): +@@ -3430,7 +3430,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, morphism) cpdef is_isomorphism(self, other, morphism): @@ -555,7 +268,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if a provided morphism induces a matroid isomorphism. A *morphism* is a map from the groundset of ``self`` to the groundset -@@ -3552,7 +3552,7 @@ cdef class Matroid(SageObject): +@@ -3553,7 +3553,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, mf) cpdef _is_isomorphism(self, other, morphism): @@ -564,7 +277,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Version of is_isomorphism() that does no type checking. INPUT: -@@ -4312,7 +4312,7 @@ cdef class Matroid(SageObject): +@@ -4313,7 +4313,7 @@ cdef class Matroid(SageObject): return self.dual().extension(element, subsets).dual() cpdef modular_cut(self, subsets): @@ -573,7 +286,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Compute the modular cut generated by ``subsets``. A *modular cut* is a collection `C` of flats such that -@@ -4713,7 +4713,7 @@ cdef class Matroid(SageObject): +@@ -4714,7 +4714,7 @@ cdef class Matroid(SageObject): return True cpdef is_cosimple(self): @@ -582,7 +295,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Test if the matroid is cosimple. A matroid is *cosimple* if it contains no cocircuits of length 1 or 2. -@@ -7479,7 +7479,7 @@ cdef class Matroid(SageObject): +@@ -7480,7 +7480,7 @@ cdef class Matroid(SageObject): return A cpdef tutte_polynomial(self, x=None, y=None): @@ -592,9 +305,9 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/misc/cachefunc.pyx 2022-06-01 10:29:22.938310306 -0600 -@@ -835,7 +835,7 @@ cdef class CachedFunction(object): +--- 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 +@@ -834,7 +834,7 @@ cdef class CachedFunction(): ## forward other questions to the cached function. def _instancedoc_(self): @@ -604,18 +317,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/misc/sageinspect.py 2022-06-01 10:29:22.938310306 -0600 -@@ -882,7 +882,7 @@ class SageArgSpecVisitor(ast.NodeVisitor - - - def _grep_first_pair_of_parentheses(s): -- """ -+ r""" - Return the first matching pair of parentheses in a code string. - - INPUT: -@@ -937,7 +937,7 @@ def _grep_first_pair_of_parentheses(s): +--- 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 +@@ -948,7 +948,7 @@ def _grep_first_pair_of_parentheses(s): def _split_syntactical_unit(s): @@ -624,46 +328,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/modular/arithgroup/arithgroup_element.pyx.orig src/sage/modular/arithgroup/arithgroup_element.pyx ---- src/sage/modular/arithgroup/arithgroup_element.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/modular/arithgroup/arithgroup_element.pyx 2022-06-01 10:43:34.618895489 -0600 -@@ -194,7 +194,7 @@ cdef class ArithmeticSubgroupElement(Mul - return richcmp(self.__x, right.__x, op) - - def __bool__(self): -- """ -+ r""" - Return ``True``, since the ``self`` lives in SL(2,\Z), which does not - contain the zero matrix. - -diff -up src/sage/modular/arithgroup/farey_symbol.pyx.orig src/sage/modular/arithgroup/farey_symbol.pyx ---- src/sage/modular/arithgroup/farey_symbol.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/modular/arithgroup/farey_symbol.pyx 2022-06-01 10:29:22.939310310 -0600 -@@ -610,7 +610,7 @@ cdef class Farey: - if forced_format == 'plain': - # output not using xymatrix - s = r'\left( -\infty' -- a = [x._latex_() for x in self.fractions()] + ['\infty'] -+ a = [x._latex_() for x in self.fractions()] + [r'\infty'] - b = self.pairings() - for i in xrange(len(a)): - u = b[i] -diff -up src/sage/modular/modsym/heilbronn.pyx.orig src/sage/modular/modsym/heilbronn.pyx ---- src/sage/modular/modsym/heilbronn.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/modular/modsym/heilbronn.pyx 2022-06-01 10:29:22.939310310 -0600 -@@ -211,7 +211,7 @@ cdef class Heilbronn: - sig_off() - - cdef apply_to_polypart(self, fmpz_poly_t* ans, int i, int k): -- """ -+ r""" - INPUT: - - - ``ans`` - fmpz_poly_t\*; pre-allocated an 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/modules/free_module_element.pyx 2022-06-01 10:36:28.861107674 -0600 -@@ -3731,7 +3731,7 @@ cdef class FreeModuleElement(Vector): +--- 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] @@ -673,9 +341,9 @@ diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_mod 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/numerical/backends/generic_backend.pyx 2022-06-01 10:29:25.996323229 -0600 -@@ -1376,7 +1376,7 @@ cdef class GenericBackend: +--- 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: raise NotImplementedError() cpdef bint is_variable_basic(self, int index): @@ -684,7 +352,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 -@@ -1406,7 +1406,7 @@ cdef class GenericBackend: +@@ -1414,7 +1414,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): @@ -693,7 +361,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 -@@ -1436,7 +1436,7 @@ cdef class GenericBackend: +@@ -1444,7 +1444,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_slack_variable_basic(self, int index): @@ -702,7 +370,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 -@@ -1466,7 +1466,7 @@ cdef class GenericBackend: +@@ -1474,7 +1474,7 @@ cdef class GenericBackend: raise NotImplementedError() cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index): @@ -712,9 +380,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/numerical/backends/glpk_backend.pyx 2022-06-01 10:29:25.997323233 -0600 -@@ -2312,7 +2312,7 @@ cdef class GLPKBackend(GenericBackend): +--- 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 +@@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend): raise ValueError("This parameter is not available.") cpdef bint is_variable_basic(self, int index): @@ -723,7 +391,7 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba Test whether the given variable is basic. This assumes that the problem has been solved with the simplex method -@@ -2343,7 +2343,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2347,7 +2347,7 @@ cdef class GLPKBackend(GenericBackend): return self.get_col_stat(index) == GLP_BS cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): @@ -732,7 +400,7 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba Test whether the given variable is nonbasic at lower bound. This assumes that the problem has been solved with the simplex method and a basis is available. Otherwise an exception will be raised. -@@ -2373,7 +2373,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2377,7 +2377,7 @@ cdef class GLPKBackend(GenericBackend): return self.get_col_stat(index) == GLP_NL cpdef bint is_slack_variable_basic(self, int index): @@ -741,7 +409,7 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba Test whether the slack variable of the given row is basic. This assumes that the problem has been solved with the simplex method -@@ -2404,7 +2404,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2408,7 +2408,7 @@ cdef class GLPKBackend(GenericBackend): return self.get_row_stat(index) == GLP_BS cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index): @@ -751,9 +419,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/numerical/backends/interactivelp_backend.pyx 2022-06-01 10:29:25.997323233 -0600 -@@ -1063,7 +1063,7 @@ cdef class InteractiveLPBackend: +--- 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 +@@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend: problem_type, ring, objective_constant_term=d) cpdef bint is_variable_basic(self, int index): @@ -762,7 +430,7 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Test whether the given variable is basic. This assumes that the problem has been solved with the simplex method -@@ -1093,7 +1093,7 @@ cdef class InteractiveLPBackend: +@@ -1095,7 +1095,7 @@ cdef class InteractiveLPBackend: return self.lp_std_form.decision_variables()[index] in self.final_dictionary.basic_variables() cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): @@ -771,7 +439,7 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Test whether the given variable is nonbasic at lower bound. This assumes that the problem has been solved with the simplex method -@@ -1123,7 +1123,7 @@ cdef class InteractiveLPBackend: +@@ -1125,7 +1125,7 @@ cdef class InteractiveLPBackend: return self.lp_std_form.decision_variables()[index] in self.final_dictionary.nonbasic_variables() cpdef bint is_slack_variable_basic(self, int index): @@ -780,7 +448,7 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Test whether the slack variable of the given row is basic. This assumes that the problem has been solved with the simplex method -@@ -1153,7 +1153,7 @@ cdef class InteractiveLPBackend: +@@ -1155,7 +1155,7 @@ cdef class InteractiveLPBackend: return self.lp_std_form.slack_variables()[index] in self.final_dictionary.basic_variables() cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index): @@ -789,7 +457,7 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Test whether the given variable is nonbasic at lower bound. This assumes that the problem has been solved with the simplex method -@@ -1185,7 +1185,7 @@ cdef class InteractiveLPBackend: +@@ -1187,7 +1187,7 @@ cdef class InteractiveLPBackend: cpdef dictionary(self): # Proposed addition to the general interface, # which would for other solvers return backend dictionaries (#18804) @@ -798,7 +466,7 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Return a dictionary representing the current basis. EXAMPLES:: -@@ -1220,7 +1220,7 @@ cdef class InteractiveLPBackend: +@@ -1222,7 +1222,7 @@ cdef class InteractiveLPBackend: cpdef interactive_lp_problem(self): @@ -807,30 +475,9 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num Return the :class:`InteractiveLPProblem` object associated with this backend. EXAMPLES:: -diff -up src/sage/rings/bernoulli_mod_p.pyx.orig src/sage/rings/bernoulli_mod_p.pyx ---- src/sage/rings/bernoulli_mod_p.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/bernoulli_mod_p.pyx 2022-06-01 10:29:27.580329923 -0600 -@@ -41,7 +41,7 @@ from sage.rings.bernmm import bernmm_ber - - - def verify_bernoulli_mod_p(data): -- """ -+ r""" - Computes checksum for Bernoulli numbers. - - It checks the identity diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx ---- src/sage/rings/complex_interval.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/complex_interval.pyx 2022-06-01 10:29:27.580329923 -0600 -@@ -732,7 +732,7 @@ cdef class ComplexIntervalFieldElement(s - return x - - def norm(self): -- """ -+ r""" - Return the norm of this complex number. - - If `c = a + bi` is a complex number, then the norm of `c` is defined as +--- 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 @@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s return x @@ -841,8 +488,8 @@ diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interva EXAMPLES:: diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx ---- src/sage/rings/complex_mpc.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/complex_mpc.pyx 2022-06-01 10:29:27.581329927 -0600 +--- 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]' @@ -945,8 +592,8 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx .. 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2022-06-01 10:29:27.581329927 -0600 +--- 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 @@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis @@ -957,9 +604,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/finite_rings/integer_mod.pyx 2022-06-01 10:29:27.582329931 -0600 -@@ -2247,7 +2247,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +--- 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 return int(self.lift()) def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring @@ -968,7 +615,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10^10) -@@ -3547,7 +3547,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3544,7 +3544,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 @@ -978,8 +625,8 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/number_field/number_field_element.pyx 2022-06-01 10:29:27.582329931 -0600 +--- 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])) @@ -990,8 +637,8 @@ diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/ring 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/number_field/number_field_morphisms.pyx 2022-06-01 10:29:27.582329931 -0600 +--- 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 @@ -1011,8 +658,8 @@ diff -up src/sage/rings/number_field/number_field_morphisms.pyx.orig src/sage/ri 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/padics/local_generic_element.pyx 2022-06-01 10:29:27.583329935 -0600 +--- 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 @@ -1023,8 +670,8 @@ diff -up src/sage/rings/padics/local_generic_element.pyx.orig src/sage/rings/pad 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2022-06-01 10:29:27.583329935 -0600 +--- 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 @@ -1044,8 +691,8 @@ diff -up src/sage/rings/padics/padic_capped_absolute_element.pyx.orig src/sage/r 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2022-06-01 10:29:27.583329935 -0600 +--- 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 @@ -1065,8 +712,8 @@ diff -up src/sage/rings/padics/padic_fixed_mod_element.pyx.orig src/sage/rings/p 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/padics/padic_generic_element.pyx 2022-06-01 10:29:27.584329940 -0600 +--- 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) @@ -1076,7 +723,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Returns a string representation of this element. INPUT: -@@ -3026,7 +3026,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -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): @@ -1085,7 +732,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Compute the exponential power series of this element This is a helper method for :meth:`exp`. -@@ -3072,7 +3072,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -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): @@ -1095,9 +742,9 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2022-06-01 10:29:27.585329944 -0600 -@@ -2470,7 +2470,7 @@ cdef class MPolynomial_libsingular(MPoly +--- 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 return char_to_str(s) def _latex_(self): @@ -1107,8 +754,8 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/ore_polynomial_element.pyx 2022-06-01 10:29:27.585329944 -0600 +--- 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) @@ -1121,9 +768,9 @@ diff -up src/sage/rings/polynomial/ore_polynomial_element.pyx.orig src/sage/ring 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_element.pyx 2022-06-01 10:29:27.586329948 -0600 -@@ -2741,8 +2741,8 @@ cdef class Polynomial(CommutativeAlgebra +--- 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(" + -", " - ") @@ -1134,7 +781,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po s = s.replace("|","") if s == " ": return "0" -@@ -2842,7 +2842,7 @@ cdef class Polynomial(CommutativeAlgebra +@@ -2845,7 +2845,7 @@ cdef class Polynomial(CommutativeAlgebra raise IndexError("polynomials are immutable") cpdef _floordiv_(self, right): @@ -1143,7 +790,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po Quotient of division of self by other. This is denoted //. If self = quotient \* right + remainder, this function returns -@@ -6639,8 +6639,8 @@ cdef class Polynomial(CommutativeAlgebra +@@ -6825,8 +6825,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 @@ -1155,8 +802,8 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2022-06-01 10:29:27.587329952 -0600 +--- 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)) @@ -1167,9 +814,9 @@ diff -up src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig src/s 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/real_roots.pyx 2022-06-01 10:29:27.588329956 -0600 -@@ -1256,7 +1256,7 @@ def de_casteljau_intvec(Vector_integer_d +--- 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): @@ -1178,7 +825,7 @@ diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial 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 -@@ -2146,7 +2146,7 @@ def subsample_vec_doctest(a, slen, llen) +@@ -2149,7 +2149,7 @@ def subsample_vec_doctest(a, slen, llen) return subsample_vec(a, slen, llen) def maximum_root_first_lambda(p): @@ -1188,8 +835,8 @@ diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/real_double_element_gsl.pyx 2022-06-01 10:29:27.588329956 -0600 +--- 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 @@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou return a @@ -1200,8 +847,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/real_mpfi.pyx 2022-06-01 10:29:27.588329956 -0600 +--- 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 @@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring return self.str(10) @@ -1212,8 +859,8 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/semirings/tropical_semiring.pyx 2022-06-01 10:29:27.589329961 -0600 +--- 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) @@ -1224,9 +871,9 @@ diff -up src/sage/rings/semirings/tropical_semiring.pyx.orig src/sage/rings/semi 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/tate_algebra_element.pyx 2022-06-01 10:29:27.589329961 -0600 -@@ -3447,7 +3447,7 @@ cdef class TateAlgebraElement(Commutativ +--- 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 +@@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ @coerce_binop def Spoly(self, other): @@ -1236,8 +883,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/symbolic/expression.pyx 2022-06-01 10:29:28.934335645 -0600 +--- 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 @@ -7,7 +7,7 @@ # distutils: include_dirs = SINGULAR_INCDIR # pynac/basic.h includes @@ -1247,15 +894,3 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Symbolic Expressions RELATIONAL EXPRESSIONS: -diff -up src/sage/symbolic/function.pyx.orig src/sage/symbolic/function.pyx ---- src/sage/symbolic/function.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/symbolic/function.pyx 2022-06-01 10:29:28.934335645 -0600 -@@ -1137,7 +1137,7 @@ cdef class BuiltinFunction(Function): - - # this is required to read old pickles of erf, elliptic_ec, etc. - def __setstate__(self, state): -- """ -+ r""" - EXAMPLES:: - - sage: cot.__setstate__([1,0]) diff --git a/sagemath-flexiblas.patch b/sagemath-flexiblas.patch index fb94948..ed2cbf1 100644 --- a/sagemath-flexiblas.patch +++ b/sagemath-flexiblas.patch @@ -1,39 +1,39 @@ diff -up configure.orig configure ---- configure.orig 2022-01-30 06:43:09.000000000 -0700 -+++ configure 2022-03-04 16:30:36.953830625 -0700 -@@ -16226,12 +16226,12 @@ if test -n "$OPENBLAS_CFLAGS"; then +--- configure.orig 2022-09-19 16:39:46.000000000 -0600 ++++ configure 2023-01-15 19:47:16.551480424 -0700 +@@ -17604,12 +17604,12 @@ if test -n "$OPENBLAS_CFLAGS"; then pkg_cv_OPENBLAS_CFLAGS="$OPENBLAS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5 +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5 - ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "openblas >= 0.2.20" 2>/dev/null` + pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "flexiblas >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -16243,12 +16243,12 @@ if test -n "$OPENBLAS_LIBS"; then +@@ -17621,12 +17621,12 @@ if test -n "$OPENBLAS_LIBS"; then pkg_cv_OPENBLAS_LIBS="$OPENBLAS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5 +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5 - ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "openblas >= 0.2.20" 2>/dev/null` + pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "flexiblas >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -16269,9 +16269,9 @@ else +@@ -17647,9 +17647,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then @@ -45,27 +45,28 @@ diff -up configure.orig configure fi # Put the nasty error message in config.log where it belongs echo "$OPENBLAS_PKG_ERRORS" >&5 -@@ -16299,16 +16299,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ - #ifdef __cplusplus - extern "C" - #endif --char openblas_get_config (); -+char flexiblas_get_version (); +@@ -17673,17 +17673,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ + /* end confdefs.h. */ + + namespace conftest { +- extern "C" int openblas_get_config (); ++ extern "C" int flexiblas_get_version (); + } int - main () + main (void) { --return openblas_get_config (); -+return flexiblas_get_version (); +-return conftest::openblas_get_config (); ++return conftest::flexiblas_get_version (); ; return 0; } _ACEOF --for ac_lib in '' openblas cblas blas; do -+for ac_lib in '' flexiblas cblas blas; do +-for ac_lib in '' openblas cblas blas ++for ac_lib in '' flexiblas cblas blas + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -16358,22 +16358,22 @@ else +@@ -17740,22 +17740,20 @@ else $as_nop /* end confdefs.h. */ #include @@ -73,102 +74,7 @@ diff -up configure.orig configure + void flexiblas_get_version(void); int version[3]; int - main () - { - version[0] = version[1] = version[2] = 0; - /*printf("%s", openblas_get_config());*/ -- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d", -- version, version+1, version+2) < 1) -- return 1; -+ flexiblas_get_version(&version[0], &version[1], &version[2]); -+ -+ - if ( 10000 * version[0] - + 100 * version[1] - + version[2] -- < 10000 * 0 -- + 100 * 2 -- + 20) -+ < 10000 * 3 -+ + 100 * 0 -+ + 0) - return 1; - ; - return 0; -@@ -16426,7 +16426,7 @@ return cblas_dgemm (); - return 0; - } - _ACEOF --for ac_lib in '' openblas cblas blas; do -+for ac_lib in '' flexiblas cblas blas; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16490,7 +16490,7 @@ return dgeqrf (); - return 0; - } - _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16554,7 +16554,7 @@ return dgeqrf_ (); - return 0; - } - _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16618,7 +16618,7 @@ return DGEQRF (); - return 0; - } - _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16682,7 +16682,7 @@ return DGEQRF_ (); - return 0; - } - _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16770,16 +16770,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ - #ifdef __cplusplus - extern "C" - #endif --char openblas_get_config (); -+char flexiblas_get_version (); - int - main () - { --return openblas_get_config (); -+return flexiblas_get_version (); - ; - return 0; - } - _ACEOF --for ac_lib in '' openblas cblas blas; do -+for ac_lib in '' flexiblas cblas blas; do - if test -z "$ac_lib"; then - ac_res="none required" - else -@@ -16829,22 +16829,22 @@ else - /* end confdefs.h. */ - - #include -- char *openblas_get_config(void); -+ void flexiblas_get_version(void); - int version[3]; - int - main () + main (void) { version[0] = version[1] = version[2] = 0; /*printf("%s", openblas_get_config());*/ @@ -176,8 +82,6 @@ diff -up configure.orig configure - version, version+1, version+2) < 1) - return 1; + flexiblas_get_version(&version[0], &version[1], &version[2]); -+ -+ if ( 10000 * version[0] + 100 * version[1] + version[2] @@ -190,80 +94,174 @@ diff -up configure.orig configure return 1; ; return 0; -@@ -16897,7 +16897,7 @@ return cblas_dgemm (); +@@ -17806,7 +17804,7 @@ return conftest::cblas_dgemm (); return 0; } _ACEOF --for ac_lib in '' openblas cblas blas; do -+for ac_lib in '' flexiblas cblas blas; do +-for ac_lib in '' openblas cblas blas ++for ac_lib in '' flexiblas cblas blas + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -16961,7 +16961,7 @@ return dgeqrf (); +@@ -17873,7 +17871,7 @@ return conftest::dgeqrf (); return 0; } _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -17025,7 +17025,7 @@ return dgeqrf_ (); +@@ -17940,7 +17938,7 @@ return conftest::dgeqrf_ (); return 0; } _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -17089,7 +17089,7 @@ return DGEQRF (); +@@ -18007,7 +18005,7 @@ return conftest::DGEQRF (); return 0; } _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -17153,7 +17153,7 @@ return DGEQRF_ (); +@@ -18074,7 +18072,7 @@ return conftest::DGEQRF_ (); return 0; } _ACEOF --for ac_lib in '' openblas lapack; do -+for ac_lib in '' flexiblas lapack; do +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do if test -z "$ac_lib"; then ac_res="none required" - else -@@ -17228,12 +17228,12 @@ if test -n "$OPENBLASPCDIR"; then +@@ -18165,17 +18163,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ + /* end confdefs.h. */ + + namespace conftest { +- extern "C" int openblas_get_config (); ++ extern "C" int flexiblas_get_version (); + } + int + main (void) + { +-return conftest::openblas_get_config (); ++return conftest::flexiblas_get_version (); + ; + return 0; + } + _ACEOF +-for ac_lib in '' openblas cblas blas ++for ac_lib in '' flexiblas cblas blas + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18232,22 +18230,20 @@ else $as_nop + /* end confdefs.h. */ + + #include +- char *openblas_get_config(void); ++ void flexiblas_get_version(void); + int version[3]; + int + main (void) + { + version[0] = version[1] = version[2] = 0; + /*printf("%s", openblas_get_config());*/ +- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d", +- version, version+1, version+2) < 1) +- return 1; ++ flexiblas_get_version(&version[0], &version[1], &version[2]); + if ( 10000 * version[0] + + 100 * version[1] + + version[2] +- < 10000 * 0 +- + 100 * 2 +- + 20) ++ < 10000 * 3 ++ + 100 * 0 ++ + 0) + return 1; + ; + return 0; +@@ -18298,7 +18294,7 @@ return conftest::cblas_dgemm (); + return 0; + } + _ACEOF +-for ac_lib in '' openblas cblas blas ++for ac_lib in '' flexiblas cblas blas + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18365,7 +18361,7 @@ return conftest::dgeqrf (); + return 0; + } + _ACEOF +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18432,7 +18428,7 @@ return conftest::dgeqrf_ (); + return 0; + } + _ACEOF +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18499,7 +18495,7 @@ return conftest::DGEQRF (); + return 0; + } + _ACEOF +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18566,7 +18562,7 @@ return conftest::DGEQRF_ (); + return 0; + } + _ACEOF +-for ac_lib in '' openblas lapack ++for ac_lib in '' flexiblas lapack + do + if test -z "$ac_lib"; then + ac_res="none required" +@@ -18648,12 +18644,12 @@ if test -n "$OPENBLASPCDIR"; then pkg_cv_OPENBLASPCDIR="$OPENBLASPCDIR" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas\""; } >&5 +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas\""; } >&5 - ($PKG_CONFIG --exists --print-errors "openblas") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas\""; } >&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flexiblas") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "openblas" 2>/dev/null` + pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "flexiblas" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -17448,7 +17448,7 @@ fi - if test x$sage_spkg_install_openblas != xyes; then : +@@ -18876,7 +18872,7 @@ fi + then : - SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/openblas.pc\" \"\$(@)\"" + SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/flexiblas.pc\" \"\$(@)\"" - if test x$sage_install_blas_pc = xyes; then : + if test x$sage_install_blas_pc = xyes diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2022-03-04 16:23:09.566306142 -0700 -+++ src/sage/env.py 2022-03-04 16:30:36.953830625 -0700 -@@ -221,7 +221,7 @@ FOURTITWO_PPI = var("FOURTITWO_PPI") +--- src/sage/env.py.orig 2023-01-15 17:21:15.296585738 -0700 ++++ src/sage/env.py 2023-01-15 17:22:34.106086752 -0700 +@@ -222,7 +222,7 @@ FOURTITWO_PPI = var("FOURTITWO_PPI") FOURTITWO_CIRCUITS = var("FOURTITWO_CIRCUITS") FOURTITWO_GROEBNER = var("FOURTITWO_GROEBNER") ARB_LIBRARY = var("ARB_LIBRARY", "arb") @@ -272,7 +270,7 @@ diff -up src/sage/env.py.orig src/sage/env.py ECL_CONFIG = var("ECL_CONFIG", "ecl-config") NTL_INCDIR = var("NTL_INCDIR") NTL_LIBDIR = var("NTL_LIBDIR") -@@ -467,7 +467,7 @@ def cython_aliases(required_modules=None +@@ -478,7 +478,7 @@ def cython_aliases(required_modules=None for lib, required in itertools.chain(((lib, True) for lib in required_modules), ((lib, False) for lib in optional_modules)): var = lib.upper().replace("-", "") + "_" diff --git a/sagemath-giac.patch b/sagemath-giac.patch index 5aa9a14..58ea8b2 100644 --- a/sagemath-giac.patch +++ b/sagemath-giac.patch @@ -1,14 +1,6 @@ ---- build/pkgs/giac/spkg-configure.m4.orig 2022-05-15 16:11:10.000000000 -0600 -+++ build/pkgs/giac/spkg-configure.m4 2023-01-11 11:45:33.450425286 -0700 -@@ -2,7 +2,7 @@ SAGE_SPKG_CONFIGURE([giac], [ - SAGE_SPKG_DEPCHECK([pari], [ - dnl giac does not seem to reveal its patchlevel - m4_pushdef([GIAC_MIN_VERSION], [1.5.0]) -- m4_pushdef([GIAC_MAX_VERSION], [1.7.999]) -+ m4_pushdef([GIAC_MAX_VERSION], [1.9.999]) - AC_CACHE_CHECK([for giac >= ]GIAC_MIN_VERSION[, <= ]GIAC_MAX_VERSION, [ac_cv_path_GIAC], [ - AC_PATH_PROGS_FEATURE_CHECK([GIAC], [giac], [ - giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -1) +diff -up build/pkgs/giac/spkg-configure.m4.orig build/pkgs/giac/spkg-configure.m4 +--- build/pkgs/giac/spkg-configure.m4.orig 2022-09-19 16:38:18.000000000 -0600 ++++ build/pkgs/giac/spkg-configure.m4 2023-01-15 19:56:31.030581488 -0700 @@ -21,7 +21,7 @@ SAGE_SPKG_CONFIGURE([giac], [ AC_CHECK_HEADER([giac/giac.h], [ AC_SEARCH_LIBS([ConvertUTF16toUTF8], [giac], [ @@ -16,42 +8,24 @@ - ], [sage_spkg_install_giac=yes]) + ], [sage_spkg_install_giac=yes], [typedef unsigned char uchar;]) m4_popdef([GIAC_MIN_VERSION]) + m4_popdef([GIAC_MAX_VERSION]) ]) - ]) ---- configure.orig 2022-05-15 16:12:35.000000000 -0600 -+++ configure 2023-01-11 12:07:02.062263416 -0700 -@@ -24488,8 +24488,8 @@ $as_echo "no" >&6; } - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for giac >= 1.5.0, <= 1.7.999" >&5 --$as_echo_n "checking for giac >= 1.5.0, <= 1.7.999... " >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for giac >= 1.5.0, <= 1.9.999" >&5 -+$as_echo_n "checking for giac >= 1.5.0, <= 1.9.999... " >&6; } - if ${ac_cv_path_GIAC+:} false; then : - $as_echo_n "(cached) " >&6 - else -@@ -24562,7 +24562,7 @@ x$ax_compare_version_B" | sed 's/^ *//' - -e 's/[^0-9]//g'` - - -- ax_compare_version_B=`echo "1.7.999" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ -+ ax_compare_version_B=`echo "1.9.999" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ - -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ - -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ - -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ -@@ -24606,7 +24606,8 @@ $as_echo "$ac_cv_path_GIAC" >&6; } - if test -z "$ac_cv_path_GIAC"; then : +diff -up configure.orig configure +--- configure.orig 2023-01-15 19:55:21.828822178 -0700 ++++ configure 2023-01-15 19:58:12.425759949 -0700 +@@ -26479,7 +26479,8 @@ printf "%s\n" "$ac_cv_path_GIAC" >&6; } + then : sage_spkg_install_giac=yes fi -- ac_fn_cxx_check_header_mongrel "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "$ac_includes_default" -+ ac_fn_cxx_check_header_mongrel "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "typedef unsigned char uchar; +- ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "$ac_includes_default" ++ ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "typedef unsigned char uchar; +$ac_includes_default" - if test "x$ac_cv_header_giac_giac_h" = xyes; then : + if test "x$ac_cv_header_giac_giac_h" = xyes + then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ConvertUTF16toUTF8" >&5 ---- src/sage/libs/giac/giac.pxd.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/giac/giac.pxd 2023-01-11 13:45:10.696009927 -0700 +diff -up src/sage/libs/giac/giac.pxd.orig src/sage/libs/giac/giac.pxd +--- src/sage/libs/giac/giac.pxd.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/sage/libs/giac/giac.pxd 2023-01-15 19:55:21.830822142 -0700 @@ -12,6 +12,11 @@ from sage.libs.gmp.mpz cimport mpz_t, mpz_set from libcpp.string cimport string @@ -64,8 +38,9 @@ cdef extern from "giac/giac.h" namespace "giac": cdef cppclass context: context() ---- src/sage/libs/giac/misc.h.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/giac/misc.h 2023-01-11 11:13:01.163906686 -0700 +diff -up src/sage/libs/giac/misc.h.orig src/sage/libs/giac/misc.h +--- src/sage/libs/giac/misc.h.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/sage/libs/giac/misc.h 2023-01-15 19:55:21.830822142 -0700 @@ -1,5 +1,6 @@ #ifndef GIACPYMISC_H #define GIACPYMISC_H @@ -73,8 +48,9 @@ #include #include ---- src/sage/symbolic/ginac/mpoly-giac.cpp.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/symbolic/ginac/mpoly-giac.cpp 2023-01-11 11:13:57.739878881 -0700 +diff -up src/sage/symbolic/ginac/mpoly-giac.cpp.orig src/sage/symbolic/ginac/mpoly-giac.cpp +--- src/sage/symbolic/ginac/mpoly-giac.cpp.orig 2022-09-19 16:38:19.000000000 -0600 ++++ src/sage/symbolic/ginac/mpoly-giac.cpp 2023-01-15 19:55:21.831822125 -0700 @@ -44,6 +44,7 @@ #include "function.h" #include "utils.h" @@ -83,9 +59,10 @@ #include #include ---- src/sage/symbolic/ginac/numeric.cpp.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/symbolic/ginac/numeric.cpp 2023-01-11 11:14:43.876040741 -0700 -@@ -78,6 +78,7 @@ +diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp +--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-01-15 19:52:42.820659135 -0700 ++++ src/sage/symbolic/ginac/numeric.cpp 2023-01-15 19:55:21.831822125 -0700 +@@ -77,6 +77,7 @@ #undef _POSIX_C_SOURCE #undef _XOPEN_SOURCE diff --git a/sagemath-infinite-recursion.patch b/sagemath-infinite-recursion.patch deleted file mode 100644 index 4a8d0df..0000000 --- a/sagemath-infinite-recursion.patch +++ /dev/null @@ -1,22 +0,0 @@ -Fix this warning: - -sage/matrix/matrix_rational_dense.cpp: In function ‘__pyx_f_4sage_4libs_3gmp_9randomize_mpq_randomize_entry_recip_uniform_nonzero(__mpq_struct*)’: -sage/matrix/matrix_rational_dense.cpp:28763:27: warning: infinite recursion detected [-Winfinite-recursion] -28763 | static CYTHON_INLINE void __pyx_f_4sage_4libs_3gmp_9randomize_mpq_randomize_entry_recip_uniform_nonzero(__mpq_struct *__pyx_v_x) { - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -sage/matrix/matrix_rational_dense.cpp:28775:80: note: recursive call -28775 | __pyx_f_4sage_4libs_3gmp_9randomize_mpq_randomize_entry_recip_uniform_nonzero(__pyx_v_x); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~ - -diff -up src/sage/libs/gmp/randomize.pxd.orig src/sage/libs/gmp/randomize.pxd ---- src/sage/libs/gmp/randomize.pxd.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/libs/gmp/randomize.pxd 2022-03-06 12:36:38.591777518 -0700 -@@ -51,6 +51,6 @@ cdef inline void mpq_randomize_entry_rec - mpq_canonicalize(x) - - cdef inline void mpq_randomize_entry_recip_uniform_nonzero(mpq_t x): -- mpq_randomize_entry_recip_uniform_nonzero(x) -+ mpq_randomize_entry_recip_uniform(x) - while mpq_sgn(x) == 0: -- mpq_randomize_entry_recip_uniform_nonzero(x) -+ mpq_randomize_entry_recip_uniform(x) diff --git a/sagemath-intersphinx.patch b/sagemath-intersphinx.patch index 0d3f2b3..89e751d 100644 --- a/sagemath-intersphinx.patch +++ b/sagemath-intersphinx.patch @@ -1,7 +1,7 @@ -diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py ---- src/sage/docs/conf.py.orig 2020-10-24 11:37:59.000000000 -0600 -+++ src/sage/docs/conf.py 2020-10-30 16:41:06.481017695 -0600 -@@ -189,9 +189,8 @@ def set_intersphinx_mappings(app, config +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 app.config.intersphinx_mapping = { 'python': ('https://docs.python.org/', diff --git a/sagemath-jmol.patch b/sagemath-jmol.patch index 97ef49d..97a0bc2 100644 --- a/sagemath-jmol.patch +++ b/sagemath-jmol.patch @@ -1,16 +1,16 @@ diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py ---- src/sage/interfaces/jmoldata.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/jmoldata.py 2022-07-06 11:03:43.155375965 -0600 -@@ -148,8 +148,6 @@ class JmolData(SageObject): - sage: print(os.path.exists(testfile)) # optional -- java +--- src/sage/interfaces/jmoldata.py.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/sage/interfaces/jmoldata.py 2023-01-15 17:05:52.942389170 -0700 +@@ -153,8 +153,6 @@ class JmolData(SageObject): True + sage: archive.close() """ - # Set up paths, file names and scripts - jmolpath = os.path.join(JMOL_DIR, "JmolData.jar") target_native = targetfile if sys.platform == 'cygwin': -@@ -171,12 +169,14 @@ class JmolData(SageObject): +@@ -176,12 +174,14 @@ class JmolData(SageObject): with open(scratchout, 'w') as jout: # Now call the java application and write the file. env = dict(os.environ) diff --git a/sagemath-libgap.patch b/sagemath-libgap.patch index 1daf9a0..c816ad7 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-05-15 16:11:11.000000000 -0600 -+++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2022-09-14 15:23:59.397522485 -0600 +--- 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 @@ -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 @@ -20,22 +20,10 @@ diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thema X.10 4 -2 . -1 . . . 2 . . 1 . -4 X.11 4 2 . -1 . . . -2 . . 1 . -4 X.12 6 . -2 . . -2 -2 . . . . 2 6 -diff -up src/sage/coding/codecan/autgroup_can_label.pyx.orig src/sage/coding/codecan/autgroup_can_label.pyx ---- src/sage/coding/codecan/autgroup_can_label.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/coding/codecan/autgroup_can_label.pyx 2022-09-14 15:25:12.653773783 -0600 -@@ -76,7 +76,7 @@ columns do share the same coloring:: - [[1], - [2], - [3, 5, 4], -- [6, 19, 16, 9, 21, 10, 8, 15, 14, 11, 20, 13, 12, 7, 17, 18]] -+ [6, 19, 16, 21, 9, 10, 15, 8, 20, 11, 14, 13, 7, 12, 18, 17]] - - We can also restrict the group action to linear isometries:: - diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py ---- src/sage/coding/linear_code.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/coding/linear_code.py 2022-09-14 15:30:11.231797910 -0600 -@@ -465,7 +465,10 @@ class AbstractLinearCode(AbstractLinearC +--- 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 0 sage: C = codes.HammingCode(GF(4, 'z'), 3) sage: C.automorphism_group_gens() @@ -47,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), -@@ -473,19 +476,20 @@ class AbstractLinearCode(AbstractLinearC +@@ -474,19 +477,20 @@ class AbstractLinearCode(AbstractLinearC Defn: z |--> z)], 362880) sage: C.automorphism_group_gens(equivalence="linear") @@ -73,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)], -@@ -691,10 +695,10 @@ class AbstractLinearCode(AbstractLinearC +@@ -692,10 +696,10 @@ class AbstractLinearCode(AbstractLinearC sage: C_iso == aut_group_can_label.get_canonical_form() True sage: aut_group_can_label.get_autom_gens() @@ -88,8 +76,8 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/combinat/root_system/hecke_algebra_representation.py 2022-09-14 15:30:46.462918766 -0600 +--- 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 sage: q1, q2 = K.gens() sage: KW = W.algebra(K) @@ -100,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/combinat/symmetric_group_algebra.py 2022-09-14 15:35:42.552934349 -0600 +--- 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 @@ -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) @@ -112,8 +100,8 @@ 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/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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/abelian_gps/abelian_group_gap.py 2022-09-14 15:23:05.702338312 -0600 +--- 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 @@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat if isinstance(x, AbelianGroupElement_gap): try: @@ -133,10 +121,10 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/finitely_presented.py 2022-09-14 15:36:48.057159029 -0600 -@@ -596,9 +596,9 @@ class RewritingSystem(object): - sage: k=G.rewriting_system() +--- 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 +@@ -596,9 +596,9 @@ class RewritingSystem(): + sage: k = G.rewriting_system() sage: k.gap() Knuth Bendix Rewriting System for Monoid( [ a, A, b, B ] ) with rules - [ [ a^2, ], [ a*A, ], @@ -149,8 +137,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/fqf_orthogonal.py 2022-09-14 15:37:12.377242440 -0600 +--- 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 @@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut [2/3 0 0] [ 0 2/3 0] @@ -161,8 +149,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/libgap_wrapper.pyx 2022-09-14 15:37:50.457373037 -0600 +--- 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 @@ -25,7 +25,7 @@ Note how we call the constructor of both its output via LibGAP:: @@ -191,8 +179,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2022-09-14 15:39:54.849811749 -0600 +--- 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 @@ -427,7 +427,7 @@ cdef class LabelledBranching: sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching sage: L = LabelledBranching(3) @@ -203,10 +191,10 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/groups/perm_gps/permgroup.py 2022-09-14 16:03:50.495931767 -0600 -@@ -875,7 +875,7 @@ class PermutationGroup_generic(FiniteGro - sage: f=PG._coerce_map_from_(MG) +--- 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 + sage: f = PG._coerce_map_from_(MG) sage: mg = MG.an_element() sage: p = f(mg); p - (2,33,32,23,31,55)(3,49,38,44,40,28)(4,17,59,62,58,46)(5,21,47,20,43,8)(6,53,50)(7,37,12,57,14,29)(9,41,56,34,64,10)(11,25,19)(13,61,26,51,22,15)(16,45,36)(18,27,35,48,52,54)(24,63,42)(30,39,60) @@ -214,7 +202,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per sage: PG(p._gap_()) == p True -@@ -921,12 +921,12 @@ class PermutationGroup_generic(FiniteGro +@@ -973,12 +973,12 @@ class PermutationGroup_generic(FiniteGro sage: P = G.as_permutation_group(algorithm='smaller', seed=5) sage: P1 = G.as_permutation_group() sage: P == P1 @@ -230,7 +218,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per Another check for :trac:`5583`:: -@@ -4291,7 +4291,7 @@ class PermutationGroup_generic(FiniteGro +@@ -4375,7 +4375,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]) @@ -239,7 +227,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()) -@@ -4355,7 +4355,7 @@ class PermutationGroup_generic(FiniteGro +@@ -4440,7 +4440,7 @@ class PermutationGroup_generic(FiniteGro sage: G.is_primitive([1..4]) False sage: G.is_primitive([1,2,3]) @@ -249,9 +237,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/gap.py 2022-09-14 15:21:29.734019419 -0600 -@@ -1490,6 +1490,8 @@ def gap_reset_workspace(max_workspace_si +--- 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 +@@ -1512,6 +1512,8 @@ def gap_reset_workspace(max_workspace_si """ # Create new workspace with filename WORKSPACE g = Gap(use_workspace_cache=False, max_workspace_size=None) @@ -261,8 +249,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gap/element.pxd 2022-09-27 18:35:39.449724078 -0600 +--- 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 @@ -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) @@ -277,8 +265,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gap/element.pyx 2022-09-27 18:46:41.755240259 -0600 +--- 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 @@ -120,7 +120,7 @@ cdef Obj make_gap_matrix(sage_list, gap_ return l.value @@ -477,8 +465,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gap/gap_includes.pxd 2022-09-14 15:19:47.996693822 -0600 +--- 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 @@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint cdef extern from "gap/system.h" nogil: @@ -609,9 +597,9 @@ diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes. + Obj NEW_STRING(Int 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gap/libgap.pyx 2022-09-14 15:43:04.473558811 -0600 -@@ -691,7 +691,7 @@ class Gap(Parent): +--- 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 +@@ -695,7 +695,7 @@ class Gap(Parent): sage: libgap.List sage: libgap.GlobalRandomSource @@ -621,9 +609,9 @@ 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/util.pyx.orig src/sage/libs/gap/util.pyx ---- src/sage/libs/gap/util.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gap/util.pyx 2022-09-14 16:00:31.367311730 -0600 -@@ -353,15 +353,9 @@ cdef Obj gap_eval(str gap_string) except +--- 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 GAPError: Error, Variable: 'Complex' must have a value Syntax error: ; expected in stream:1 Complex Field with 53 bits of precision;; @@ -640,7 +628,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 -@@ -379,7 +373,7 @@ cdef Obj gap_eval(str gap_string) except +@@ -388,7 +382,7 @@ cdef Obj gap_eval(str gap_string) except """ initialize() cdef Obj result @@ -650,8 +638,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-05-15 16:11:11.000000000 -0600 -+++ src/sage/tests/gap_packages.py 2022-09-14 16:00:53.429380443 -0600 +--- 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 @@ -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-maxima.patch b/sagemath-maxima.patch index b52461f..5da8c79 100644 --- a/sagemath-maxima.patch +++ b/sagemath-maxima.patch @@ -1,16 +1,16 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py ---- src/sage/interfaces/maxima.py.orig 2020-10-24 11:37:59.000000000 -0600 -+++ src/sage/interfaces/maxima.py 2020-10-30 13:59:17.007281872 -0600 -@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect): +--- src/sage/interfaces/maxima.py.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/sage/interfaces/maxima.py 2023-01-15 17:05:26.283962150 -0700 +@@ -568,7 +568,7 @@ class Maxima(MaximaAbstract, Expect): Expect.__init__(self, - name = 'maxima', - prompt = r'\(\%i[0-9]+\) ', -- command = '{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)), -+ command = '{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)), - env = {'TMPDIR': str(ECL_TMP)}, - script_subdirectory = script_subdirectory, - restart_on_ctrlc = False, -@@ -615,7 +615,8 @@ class Maxima(MaximaAbstract, Expect): + name='maxima', + prompt=r'\(\%i[0-9]+\) ', +- command='{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)), ++ command='{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)), + script_subdirectory=script_subdirectory, + restart_on_ctrlc=False, + verbose_start=False, +@@ -636,7 +636,8 @@ class Maxima(MaximaAbstract, Expect): # Remove limit on the max heapsize (since otherwise it defaults # to 256MB with ECL). @@ -21,8 +21,8 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py # set random seed diff -up src/sage/interfaces/sage-maxima.lisp.orig src/sage/interfaces/sage-maxima.lisp ---- src/sage/interfaces/sage-maxima.lisp.orig 2020-10-24 11:37:59.000000000 -0600 -+++ src/sage/interfaces/sage-maxima.lisp 2020-10-30 13:58:16.806383103 -0600 +--- src/sage/interfaces/sage-maxima.lisp.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/sage/interfaces/sage-maxima.lisp 2023-01-15 17:04:33.551095508 -0700 @@ -4,3 +4,8 @@ (setf *prompt-prefix* "") diff --git a/sagemath-python3.11.patch b/sagemath-python3.11.patch index 10c2349..e25e254 100644 --- a/sagemath-python3.11.patch +++ b/sagemath-python3.11.patch @@ -1,6 +1,6 @@ diff -up src/sage/cpython/cython_metaclass.h.orig src/sage/cpython/cython_metaclass.h ---- src/sage/cpython/cython_metaclass.h.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/cpython/cython_metaclass.h 2022-06-29 11:07:37.296150769 -0600 +--- 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 } @@ -11,8 +11,8 @@ diff -up src/sage/cpython/cython_metaclass.h.orig src/sage/cpython/cython_metacl } 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/cpython/dict_del_by_value.pyx 2022-06-30 12:06:01.148346330 -0600 +--- 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 @@ -250,8 +250,8 @@ diff -up src/sage/cpython/dict_del_by_value.pyx.orig src/sage/cpython/dict_del_b 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/gmp/pylong.pyx 2022-06-29 12:44:27.983218616 -0600 +--- 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 *: @@ -274,8 +274,8 @@ diff -up src/sage/libs/gmp/pylong.pyx.orig src/sage/libs/gmp/pylong.pyx diff -up src/sage/misc/decorators.py.orig src/sage/misc/decorators.py ---- src/sage/misc/decorators.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/misc/decorators.py 2022-06-29 14:02:56.995436952 -0600 +--- 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 @@ -287,17 +287,16 @@ diff -up src/sage/misc/decorators.py.orig src/sage/misc/decorators.py 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 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/misc/sageinspect.py 2022-06-29 14:07:56.804147321 -0600 -@@ -119,6 +119,7 @@ import functools +--- 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 - from sage.env import SAGE_LIB try: -@@ -126,6 +127,8 @@ try: + import importlib.machinery as import_machinery except ImportError: pass @@ -306,7 +305,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py def is_function_or_cython_function(obj): """ -@@ -348,7 +351,7 @@ def _extract_embedded_signature(docstrin +@@ -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: @@ -315,7 +314,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py except SyntaxError: docstring = os.linesep.join(L) return docstring, None -@@ -1092,7 +1095,7 @@ def _sage_getargspec_from_ast(source): +@@ -1100,7 +1103,7 @@ def _sage_getargspec_from_ast(source): OUTPUT: @@ -324,7 +323,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py EXAMPLES:: -@@ -1124,8 +1127,7 @@ def _sage_getargspec_from_ast(source): +@@ -1132,8 +1135,7 @@ def _sage_getargspec_from_ast(source): vararg = getattr(ast_args.vararg, 'arg', None) kwarg = getattr(ast_args.kwarg, 'arg', None) @@ -334,7 +333,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py def _sage_getargspec_cython(source): -@@ -1141,7 +1143,7 @@ def _sage_getargspec_cython(source): +@@ -1149,7 +1151,7 @@ def _sage_getargspec_cython(source): OUTPUT: @@ -343,7 +342,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py EXAMPLES:: -@@ -1605,11 +1607,11 @@ def sage_getargspec(obj): +@@ -1659,11 +1661,11 @@ def sage_getargspec(obj): return sage_getargspec(obj.__call__) if isinstance(obj, (lazy_attribute, AbstractMethod)): source = sage_getsource(obj) @@ -357,7 +356,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py except (AttributeError, TypeError): pass # If we are lucky, the function signature is embedded in the docstring. -@@ -1625,7 +1627,7 @@ def sage_getargspec(obj): +@@ -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__) @@ -366,7 +365,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py except (TypeError, AttributeError): pass if isclassinstance(obj): -@@ -1660,7 +1662,7 @@ def sage_getargspec(obj): +@@ -1714,7 +1716,7 @@ def sage_getargspec(obj): except TypeError: # happens for Python builtins source = '' if source: @@ -375,7 +374,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py else: func_obj = obj -@@ -1673,7 +1675,7 @@ def sage_getargspec(obj): +@@ -1727,7 +1729,7 @@ def sage_getargspec(obj): except TypeError: # arg is not a code object # The above "hopefully" was wishful thinking: try: @@ -384,7 +383,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py except TypeError: # This happens for Python builtins # The best we can do is to return a generic argspec args = [] -@@ -1683,7 +1685,7 @@ def sage_getargspec(obj): +@@ -1737,7 +1739,7 @@ def sage_getargspec(obj): defaults = func_obj.__defaults__ except AttributeError: defaults = None @@ -393,7 +392,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py def formatannotation(annotation, base_module=None): -@@ -1754,19 +1756,7 @@ def sage_formatargspec(args, varargs=Non +@@ -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 @@ -415,8 +414,8 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/symbolic/ginac/numeric.cpp 2022-06-24 14:58:32.506790725 -0600 +--- 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 diff --git a/sagemath-python3.patch b/sagemath-python3.patch index 08d24db..edae15e 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/cpython/debugimpl.c 2022-06-01 10:53:46.037463665 -0600 +--- 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 @@ -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-05-15 16:11:11.000000000 -0600 -+++ src/sage/cpython/debug.pyx 2022-06-01 10:53:46.037463665 -0600 +--- 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 @@ -231,6 +231,7 @@ def type_debug(cls): tp_basicsize: 16 tp_itemsize: 0 @@ -37,9 +37,9 @@ 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/geometry/triangulation/point_configuration.py 2022-06-01 10:53:46.038463669 -0600 -@@ -618,11 +618,11 @@ class PointConfiguration(UniqueRepresent +--- 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 +@@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ timeout = 600 @@ -54,21 +54,21 @@ 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 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/frobby.py 2022-06-01 10:53:46.038463669 -0600 +--- 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 @@ -78,7 +78,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) -- process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE) -+ process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE, encoding='utf-8') +- process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE) ++ process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, encoding='utf-8') if input: 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/gfan.py 2022-06-01 10:56:40.784198738 -0600 -@@ -109,7 +109,7 @@ class Gfan(object): +--- 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 +@@ -109,7 +109,7 @@ class Gfan(): print("gfan input:\n%s" % input) gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, @@ -78,27 +78,27 @@ 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 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/latte.py 2022-06-01 10:53:46.039463674 -0600 -@@ -159,6 +159,7 @@ def count(arg, ehrhart_polynomial=False, +--- 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 +@@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=(None if verbose else PIPE), + encoding='utf-8', - cwd=str(SAGE_TMP)) + cwd=tempd.name) ans, err = latte_proc.communicate(arg) -@@ -379,6 +380,7 @@ def integrate(arg, polynomial=None, algo +@@ -393,6 +394,7 @@ def integrate(arg, polynomial=None, algo latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=(None if verbose else PIPE), + encoding='utf-8', - cwd=str(SAGE_TMP)) + cwd=tempd.name) 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/interfaces/sagespawn.pyx 2022-06-01 10:53:46.039463674 -0600 +--- 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 @@ -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-05-15 16:11:11.000000000 -0600 -+++ src/sage/libs/coxeter3/coxeter.pyx 2022-06-01 10:53:46.039463674 -0600 +--- 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 @@ -37,7 +37,7 @@ cdef class String: EXAMPLES:: @@ -282,9 +282,9 @@ 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 2022-06-01 10:29:22.938310306 -0600 -+++ src/sage/misc/sageinspect.py 2022-06-01 10:53:46.040463678 -0600 -@@ -505,12 +505,9 @@ class SageArgSpecVisitor(ast.NodeVisitor +--- 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 +@@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor """ return node.id @@ -300,7 +300,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py INPUT: -@@ -524,7 +521,7 @@ class SageArgSpecVisitor(ast.NodeVisitor +@@ -535,7 +532,7 @@ class SageArgSpecVisitor(ast.NodeVisitor sage: import ast, sage.misc.sageinspect as sms sage: visitor = sms.SageArgSpecVisitor() @@ -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-05-15 16:11:11.000000000 -0600 -+++ src/sage/plot/plot3d/plot3d.py 2022-06-01 10:53:46.040463678 -0600 +--- 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 @@ -219,6 +219,7 @@ from .shapes import arrow3d from .base import Graphics3dGroup from sage.plot.colors import rainbow @@ -320,7 +320,7 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py from sage.functions.trig import cos, sin from sage.misc.sageinspect import sage_getargspec, is_function_or_cython_function -@@ -255,7 +256,7 @@ class _Coordinates(object): +@@ -255,7 +256,7 @@ class _Coordinates(): sage: arb((x+z,y*z,z), z, (x,y)) Arbitrary Coordinates coordinate transform (z in terms of x, y) """ @@ -329,22 +329,10 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py if set(all_vars) != set(indep_vars + [dep_var]): 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/integer.pyx.orig src/sage/rings/integer.pyx ---- src/sage/rings/integer.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/integer.pyx 2022-06-01 10:53:46.041463682 -0600 -@@ -7069,7 +7069,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c - x += 1 # Strip spaces - - # Disallow a sign here -- if x[0] == '-' or x[0] == '+': -+ if x[0] == c'-' or x[0] == c'+': - x = "" # Force an error below - - assert base >= 2 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-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/polynomial/pbori/pbori.pyx 2022-06-01 10:53:46.042463686 -0600 -@@ -4730,8 +4730,7 @@ cdef class PolynomialConstruct: +--- 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: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) @@ -354,49 +342,10 @@ diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomia cdef class MonomialConstruct: -diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2022-06-01 10:29:27.588329956 -0600 -+++ src/sage/rings/real_mpfi.pyx 2022-06-01 10:53:46.043463690 -0600 -@@ -1943,12 +1943,12 @@ cdef class RealIntervalFieldElement(Ring - - cdef long digits - digits = strlen(lower_s) -- if lower_s[0] == '-': -+ if lower_s[0] == c'-': - digits -= 1 - lower_expo -= digits - - digits = strlen(upper_s) -- if upper_s[0] == '-': -+ if upper_s[0] == c'-': - digits -= 1 - upper_expo -= digits - -@@ -2117,7 +2117,7 @@ cdef class RealIntervalFieldElement(Ring - raise MemoryError("Unable to allocate memory for the mantissa of an interval") - mpz_get_str(tmp_cstr, base, lower_mpz) - digits = strlen(tmp_cstr) -- if tmp_cstr[0] == '-': -+ if tmp_cstr[0] == c'-': - digits -= 1 - mant_string = bytes_to_str(tmp_cstr+1) - sign_string = bytes_to_str(b'-') -diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx ---- src/sage/rings/real_mpfr.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/rings/real_mpfr.pyx 2022-06-01 10:53:46.043463690 -0600 -@@ -2092,7 +2092,7 @@ cdef class RealNumber(sage.structure.ele - if s is NULL: - raise RuntimeError("unable to convert an mpfr number to a string") - # t contains just digits (no sign, decimal point or exponent) -- if s[0] == '-': -+ if s[0] == c'-': - sgn = "-" - t = char_to_str(s + 1) - else: diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx ---- src/sage/structure/sage_object.pyx.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage/structure/sage_object.pyx 2022-06-01 10:53:46.044463695 -0600 -@@ -691,7 +691,7 @@ cdef class SageObject: +--- 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 +@@ -694,7 +694,7 @@ cdef class SageObject: try: s = self._interface_init_(I) except Exception: @@ -405,24 +354,3 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object. X = I(s) if c: try: -diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2022-06-01 10:29:28.934335645 -0600 -+++ src/sage/symbolic/expression.pyx 2022-06-01 10:53:46.045463699 -0600 -@@ -14072,7 +14072,7 @@ cdef class hold_class: - sage: SR(2)^5 - 32 - """ -- g_set_state('hold', True) -+ g_set_state(b'hold', True) - - def __exit__(self, *args): - """ -@@ -14085,7 +14085,7 @@ cdef class hold_class: - sage: SR(2)^5 - 32 - """ -- g_set_state('hold', False) -+ g_set_state(b'hold', False) - - def start(self): - """ diff --git a/sagemath-qepcad.patch b/sagemath-qepcad.patch index fb68570..2aef385 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-01-30 06:41:50.000000000 -0700 -+++ src/sage/interfaces/qepcad.py 2022-03-04 16:29:29.109754141 -0700 +--- 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 @@ -530,7 +530,7 @@ TESTS: Check the qepcad configuration file:: @@ -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. -@@ -649,17 +650,17 @@ def _qepcad_cmd(memcells=None): +@@ -651,17 +652,17 @@ def _qepcad_cmd(memcells=None): sage: from sage.interfaces.qepcad import _qepcad_cmd sage: s = _qepcad_cmd() @@ -48,12 +48,12 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py _command_info_cache = None -@@ -684,7 +685,7 @@ def _update_command_info(): +@@ -686,7 +687,7 @@ def _update_command_info(): cache = {} - with open(os.path.join(SAGE_LOCAL, 'share/qepcad', 'qepcad.help')) as help: + with open(os.path.join(QEPCAD_LOCAL, 'bin', 'qepcad.help')) as help: - assert(help.readline().strip() == '@') + assert help.readline().strip() == '@' while True: diff --git a/sagemath-scripts.patch b/sagemath-scripts.patch index bfd9b88..e5070c0 100644 --- a/sagemath-scripts.patch +++ b/sagemath-scripts.patch @@ -1,15 +1,15 @@ diff -up src/bin/sage.orig src/bin/sage ---- src/bin/sage.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/bin/sage 2022-06-01 10:49:26.133371574 -0600 -@@ -109,7 +109,6 @@ usage() { +--- src/bin/sage.orig 2022-09-19 16:38:18.000000000 -0600 ++++ src/bin/sage 2023-01-15 17:02:57.680034236 -0700 +@@ -131,7 +131,6 @@ usage() { echo " --gap [...] -- run Sage's Gap with given arguments" + command -v gp &>/dev/null && \ echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments" - echo " -h -- print this help message" - echo " --pip [...] -- invoke pip, the Python package manager" + command -v maxima &>/dev/null && \ echo " --maxima [...] -- run Sage's Maxima with given arguments" - echo " --mwrank [...] -- run Sage's mwrank with given arguments" - echo " --notebook=[...] -- start the Sage notebook (valid options are" -@@ -160,60 +159,6 @@ if [ -f "${SELF}-env-config" ]; then + command -v mwrank &>/dev/null && \ +@@ -178,60 +177,6 @@ if [ -f "${SELF}-env-config" ]; then fi ##################################################################### @@ -61,7 +61,7 @@ diff -up src/bin/sage.orig src/bin/sage - exec "$SAGE_ROOT/build/bin/sage-site" "$@" - # fallthrough if there is no sage-site script - fi -- echo "Error: unknown option: $1" +- echo >&2 "Error: unknown option: $1" - exit 1 - ;; -esac @@ -70,7 +70,7 @@ diff -up src/bin/sage.orig src/bin/sage # Report information about the Sage environment ##################################################################### -@@ -264,18 +209,6 @@ fi +@@ -282,18 +227,6 @@ fi # Prepare for running Sage, either interactively or non-interactively. sage_setup() { @@ -89,16 +89,16 @@ diff -up src/bin/sage.orig src/bin/sage if [ ! -d "$IPYTHONDIR" ]; then # make sure that $DOT_SAGE exists so that ipython will happily # create its config directories there. If DOT_SAGE doesn't -@@ -323,8 +256,6 @@ usage_advanced() { - echo " --nodotsage -- run Sage without using the user's" - echo " .sage directory: create and use a temporary" - echo " .sage directory instead." -- echo " --gthread, --qthread, --q4thread, --wthread, --pylab" -- echo " -- pass the option through to IPython" - echo " --simple-prompt -- pass the option through to IPython: use" - echo " this option with sage-shell mode in emacs" - if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then -@@ -358,18 +289,9 @@ usage_advanced() { +@@ -338,8 +271,6 @@ usage_advanced() { + echo " --nodotsage -- run Sage without using the user's" + echo " .sage directory: create and use a temporary" + echo " .sage directory instead." +- echo " --gthread, --qthread, --q4thread, --wthread, --pylab" +- echo " -- pass the option through to IPython" + echo " --simple-prompt -- pass the option through to IPython: use" + echo " this option with sage-shell mode in emacs" + echo " --gdb -- run Sage under the control of gdb" +@@ -369,18 +300,9 @@ usage_advanced() { echo " environment (not Sage), passing additional" echo " additional options to IPython" echo " --jupyter [...] -- run Sage's Jupyter with given arguments" @@ -117,7 +117,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " --python [...], --python3 [...]" echo " -- run the Python 3 interpreter" echo " -R [...] -- run Sage's R with the given arguments" -@@ -620,11 +542,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] +@@ -656,11 +578,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] exec ecl "$@" fi @@ -129,7 +129,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then shift maxima_cmd=$(sage-config MAXIMA 2>/dev/null) -@@ -649,11 +566,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then +@@ -685,11 +602,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then exec R "$@" fi @@ -141,7 +141,7 @@ diff -up src/bin/sage.orig src/bin/sage ##################################################################### # sage --sh and sage --buildsh ##################################################################### -@@ -820,10 +732,6 @@ fi +@@ -856,10 +768,6 @@ fi # build_sage, sage -b, sage -br, etc. could be moved to # build/bin/sage-site. See #29111. @@ -152,7 +152,7 @@ diff -up src/bin/sage.orig src/bin/sage if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then sage-cleaner &>/dev/null & exec sage-notebook "$@" -@@ -834,13 +742,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not +@@ -870,13 +778,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not exec sage-notebook "$@" fi @@ -166,7 +166,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then # Source inspection facilities, supported on sage-the-distribution and on distributions # that package the Sage sources. -@@ -857,46 +758,18 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; +@@ -893,46 +794,18 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; fi fi @@ -214,7 +214,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-tp' -o "$1" = '-btp' ]; then shift exec-runtests -p "$@" -@@ -906,34 +779,11 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" +@@ -942,34 +815,11 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" fi fi @@ -249,7 +249,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then exec sage-startuptime.py "$@" fi -@@ -989,11 +839,6 @@ if [ "$1" = '-installed' -o "$1" = "--in +@@ -1056,11 +906,6 @@ if [ "$1" = '-installed' -o "$1" = "--in exec sage-list-packages all --installed-only $@ fi @@ -261,7 +261,7 @@ diff -up src/bin/sage.orig src/bin/sage ##################################################################### # Debugging tools ##################################################################### -@@ -1037,12 +882,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca +@@ -1110,12 +955,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca exec sage-callgrind "$@" fi diff --git a/sagemath-sphinx.patch b/sagemath-sphinx.patch deleted file mode 100644 index ff1883c..0000000 --- a/sagemath-sphinx.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- src/sage_docbuild/ext/sage_autodoc.py.orig 2022-05-15 16:11:11.000000000 -0600 -+++ src/sage_docbuild/ext/sage_autodoc.py 2023-01-11 14:36:08.471075423 -0700 -@@ -35,7 +35,7 @@ from docutils.statemachine import ViewLi - - import sphinx - from sphinx.ext.autodoc import mock, ObjectMember --from sphinx.ext.autodoc.importer import import_object, get_object_members, get_module_members -+from sphinx.ext.autodoc.importer import import_object, get_object_members - from sphinx.locale import _, __ - from sphinx.pycode import ModuleAnalyzer - from sphinx.errors import PycodeError diff --git a/sagemath-use-after-free.patch b/sagemath-use-after-free.patch deleted file mode 100644 index da5dcef..0000000 --- a/sagemath-use-after-free.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -up src/sage/graphs/graph_decompositions/cutwidth.pyx.orig src/sage/graphs/graph_decompositions/cutwidth.pyx ---- src/sage/graphs/graph_decompositions/cutwidth.pyx.orig 2022-01-30 06:41:50.000000000 -0700 -+++ src/sage/graphs/graph_decompositions/cutwidth.pyx 2022-03-06 17:04:36.234711622 -0700 -@@ -522,12 +522,12 @@ def cutwidth_dyn(G, lower_bound=0): - if exists(g, neighborhoods, 0, 0, i, k) <= k: - order = find_order(g, neighborhoods, k) - return k, [g.int_to_vertices[i] for i in order] -+ -+ order = find_order(g, neighborhoods, k) -+ return k, [g.int_to_vertices[i] for i in order] - finally: - sig_free(neighborhoods) - -- order = find_order(g, neighborhoods, k) -- return k, [g.int_to_vertices[i] for i in order] -- - cdef inline int exists(FastDigraph g, uint8_t* neighborhoods, int S, int cost_S, int v, int k): - r""" - Check whether an ordering with the given cost `k` exists, and updates data diff --git a/sagemath.spec b/sagemath.spec index 62af404..ee7794a 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -40,33 +40,33 @@ %global elliptic_curves_pkg elliptic_curves-0.8.1 %global graphs_pkg graphs-20210214 %if %{with bundled_ipython} -%global ipython_ver 7.29.0 +%global ipython_ver 8.4.0 %global ipython_pkg ipython-%{ipython_ver} -%global prompt_toolkit_ver 3.0.22 +%global prompt_toolkit_ver 3.0.24 %global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver} %endif %if %{with bundled_jupyter_jsmol} -%global jupyter_jsmol_ver 0.2.4 +%global jupyter_jsmol_ver 2022.1.0 %global jupyter_jsmol_pkg jupyter_jsmol-%{jupyter_jsmol_ver} %endif %if %{with bundled_memory_allocator} -%global memory_allocator_ver 0.1.1 +%global memory_allocator_ver 0.1.3 %global memory_allocator_pkg memory_allocator-%{memory_allocator_ver} %endif %if %{with bundled_pexpect} %global pexpect_pkg pexpect-4.8.0 %endif %global polytopes_db_pkg polytopes_db-20170220 -%global sagetex_pkg sagetex-3.5 +%global sagetex_pkg sagetex-3.6.1 %global Sphinx_pkg Sphinx-4.4.0 -%global singular_pkg singular-4.2.1p3 +%global singular_pkg singular-4.3.1p1 %if %{with bundled_threejs} %global threejs_ver r122 %global threejs_pkg threejs-sage-%{threejs_ver} %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 primecount-7.3 qepcad-B.1.74 saclib-2.2.8 surf-1.0.6-gcc6 tdlib-0.9.2 +%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 @@ -83,8 +83,8 @@ Name: sagemath Summary: A free open-source mathematics software system -Version: 9.6 -Release: 8%{?dist} +Version: 9.7 +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. @@ -96,10 +96,10 @@ Source0: http://files.sagemath.org/src/sage-%{version}.tar.gz Source1: https://github.com/JohnCremona/ecdata/archive/%{cremona_ver}/cremona-%{cremona_ver}.tar.gz Source2: gprc.expect Source3: org.sagemath.sage.metainfo.xml -# Follow maxima's ExclusiveArch, except exclude 32-bit ARM. The source RPM is -# now about 2GB in size. The 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. +# Follow maxima's ExclusiveArch. The source RPM is now about 2GB in size. The +# 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 # Fix stray escapes in python strings @@ -174,21 +174,12 @@ Patch19: %{name}-tdlib.patch # Use local objects.inv for intersphinx since no network on koji builders Patch20: %{name}-intersphinx.patch -# Fix a typo that leads to infinite recursion -Patch21: %{name}-infinite-recursion.patch - -# Fix a use-after-free bug -Patch22: %{name}-use-after-free.patch - # Adapt to changes in python 3.11 -Patch23: %{name}-python3.11.patch - -# Adapt to changes in sphinx -Patch24: %{name}-sphinx.patch +Patch21: %{name}-python3.11.patch # Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2160197 # Remove this when that bug is fixed -Patch25: %{name}-giac.patch +Patch22: %{name}-giac.patch BuildRequires: 4ti2 BuildRequires: 4ti2-devel @@ -280,6 +271,7 @@ BuildRequires: glpk-devel BuildRequires: glpk-utils BuildRequires: gmp-ecm BuildRequires: gmp-ecm-devel +BuildRequires: gnupg2 BuildRequires: gp2c BuildRequires: ImageMagick BuildRequires: iml-devel @@ -305,6 +297,7 @@ BuildRequires: mpfi-devel BuildRequires: nauty BuildRequires: ninja-build BuildRequires: ntl-devel +BuildRequires: openssh BuildRequires: openssl BuildRequires: palp BuildRequires: pandoc @@ -364,6 +357,7 @@ BuildRequires: python3-tdlib-devel BuildRequires: python3-tkinter BuildRequires: pythran BuildRequires: %{py3_dist argon2-cffi} +BuildRequires: %{py3_dist asttokens} %if %{with bundled_ipython} BuildRequires: %{py3_dist backcall} %endif @@ -375,11 +369,16 @@ BuildRequires: %{py3_dist colorlog} BuildRequires: %{py3_dist cppy} BuildRequires: %{py3_dist cvxopt} BuildRequires: %{py3_dist cython} +BuildRequires: %{py3_dist deprecation} BuildRequires: %{py3_dist docutils} +BuildRequires: %{py3_dist editables} +BuildRequires: %{py3_dist executing} BuildRequires: %{py3_dist flit-core} BuildRequires: %{py3_dist fpylll} +BuildRequires: %{py3_dist furo} BuildRequires: %{py3_dist gast} BuildRequires: %{py3_dist gmpy2} +BuildRequires: %{py3_dist hatchling} %if %{with sphinx_hack} BuildRequires: %{py3_dist html5lib} BuildRequires: %{py3_dist imagesize} @@ -394,6 +393,7 @@ BuildRequires: %{py3_dist ipywidgets} %if %{with bundled_ipython} BuildRequires: %{py3_dist jedi} %endif +BuildRequires: %{py3_dist jupyter-packaging} BuildRequires: %{py3_dist jupyter-sphinx} BuildRequires: %{py3_dist jupyterlab-pygments} BuildRequires: %{py3_dist kiwisolver} @@ -421,11 +421,16 @@ BuildRequires: %{py3_dist pkgconfig} BuildRequires: %{py3_dist platformdirs} BuildRequires: %{py3_dist pluggy} BuildRequires: %{py3_dist ply} +BuildRequires: %{py3_dist poetry-core} BuildRequires: %{py3_dist primecountpy} BuildRequires: %{py3_dist ptyprocess} +BuildRequires: %{py3_dist pure-eval} BuildRequires: %{py3_dist py} BuildRequires: %{py3_dist pycryptosat} BuildRequires: %{py3_dist pyopenssl} +BuildRequires: %{py3_dist pytz} +BuildRequires: %{py3_dist pytzdata} +BuildRequires: %{py3_dist pytz-deprecation-shim} %if %{with bundled_ipython} BuildRequires: %{py3_dist pyzmq} %endif @@ -441,8 +446,12 @@ BuildRequires: %{py3_dist simplegeneric} BuildRequires: %{py3_dist six} BuildRequires: %{py3_dist soupsieve} BuildRequires: %{py3_dist sphinx} +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} BuildRequires: %{py3_dist urllib3} @@ -572,6 +581,7 @@ Requires: pari-gp Requires: pari-nftables Requires: pari-seadata Requires: python3-tdlib +Requires: %{py3_dist asttokens} %if %{with bundled_ipython} Requires: %{py3_dist backcall} %endif @@ -585,6 +595,7 @@ Requires: %{py3_dist cysignals} Requires: %{py3_dist cvxopt} Requires: %{py3_dist cython} Requires: %{py3_dist docutils} +Requires: %{py3_dist executing} Requires: %{py3_dist flit-core} Requires: %{py3_dist fpylll} Requires: %{py3_dist gast} @@ -622,7 +633,11 @@ Requires: %{py3_dist pickleshare} Requires: %{py3_dist pplpy} Requires: %{py3_dist primecountpy} Requires: %{py3_dist ptyprocess} +Requires: %{py3_dist pure-eval} Requires: %{py3_dist pycryptosat} +Requires: %{py3_dist pytz} +Requires: %{py3_dist pytzdata} +Requires: %{py3_dist pytz-deprecation-shim} %if %{with bundled_ipython} Requires: %{py3_dist pyzmq} %endif @@ -633,7 +648,10 @@ Requires: %{py3_dist simplegeneric} %endif Requires: %{py3_dist six} Requires: %{py3_dist sphinx} +Requires: %{py3_dist stack-data} Requires: %{py3_dist sympy} +Requires: %{py3_dist tinycss2} +Requires: %{py3_dist tomlkit} Requires: %{py3_dist urllib3} Requires: %{py3_dist zodb3} Requires: qepcad-B @@ -860,6 +878,9 @@ Summary: Jupyter integration for sagemath Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python-jupyter-filesystem Requires: %{py3_dist argon2-cffi} +Requires: %{py3_dist deprecation} +Requires: %{py3_dist editables} +Requires: %{py3_dist hatchling} Requires: %{py3_dist jupyter-sphinx} Requires: %{py3_dist jupyterlab-pygments} Requires: %{py3_dist matplotlib-inline} @@ -1043,11 +1064,11 @@ sed -i 's/yum/rpm/' build/bin/sage-guess-package-system # Allow use of python 3.11 sed -i 's/3\.11\.0/3.12.0/g' configure -# Allow use of libfplll 5.4.2 -sed -i 's/5\.4\.1/5.4.2/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/20210625/20221012/g' configure +sed -i 's/20220621/20221012/g' configure # Do not build with -march=native sed -i 's/CFLAGS_MARCH="-march=native"/CFLAGS_MARCH=""/' configure @@ -2048,6 +2069,7 @@ end #------------------------------------------------------------------------ %files sagetex # GPL-2.0-or-later +%{_bindir}/sagetex* %{python3_sitearch}/sagetex* %{python3_sitearch}/__pycache__/sagetex* %{_texmf}/tex/latex/sagetex/ @@ -2055,6 +2077,10 @@ end ######################################################################## %changelog +* Tue Jan 17 2023 Jerry James - 9.7-1 +- Version 9.7 +- Drop upstreamed patches: -infinite-recursion, -use-after-free, -sphinx + * Thu Jan 12 2023 Jerry James - 9.6-8 - Update for split GAP tree - Add patch for FTBFS with latest giac (see bz 2160197) diff --git a/sources b/sources index adb6570..64a36e2 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 -SHA512 (sage-9.6.tar.gz) = 65cd228a7173d0edf5ad865766e966f1c85be3c39baf81dc1a507bcaef4eaaa7b5f3ac98ecd5c68a9823167ff91201f71e9968c46b83f9a708721f9b4fcbef32 +SHA512 (sage-9.7.tar.gz) = 65c21713063dc2b9d632c44e31a5a9f3417f3d8367a9f082569b11c7f456f38ceb774821b9e879b45edd3a08f844d9b432962111d032f5d90ac5efd21f716924