From 30bb46d8dc4e54566c74b62ee627ad85a145cf2b Mon Sep 17 00:00:00 2001 From: Jerry James Date: Mon, 21 Mar 2022 08:59:27 -0600 Subject: [PATCH] Version 9.5. Drop unnecessary -4ti2 and -primecount patches. --- README.md | 5 + sagemath-4ti2.patch | 22 - sagemath-env.patch | 33 +- sagemath-escape.patch | 447 ++++++++----------- sagemath-extensions.patch | 92 ++-- sagemath-flexiblas.patch | 54 +-- sagemath-infinite-recursion.patch | 22 + sagemath-intersphinx-disabled-reftypes.patch | 17 + sagemath-primecount.patch | 10 - sagemath-python3.patch | 183 +++----- sagemath-qepcad.patch | 12 +- sagemath-sagedoc.patch | 12 +- sagemath-use-after-free.patch | 19 + sagemath.rpmlintrc | 21 - sagemath.spec | 181 +++++--- sources | 2 +- 16 files changed, 510 insertions(+), 622 deletions(-) create mode 100644 README.md delete mode 100644 sagemath-4ti2.patch create mode 100644 sagemath-infinite-recursion.patch create mode 100644 sagemath-intersphinx-disabled-reftypes.patch delete mode 100644 sagemath-primecount.patch create mode 100644 sagemath-use-after-free.patch delete mode 100644 sagemath.rpmlintrc diff --git a/README.md b/README.md new file mode 100644 index 0000000..1763d61 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# sagemath + +[Sage](https://www.sagemath.org/) is a free open-source mathematics software +system licensed under the GPL. It combines the power of many existing +open-source packages into a common Python-based interface. diff --git a/sagemath-4ti2.patch b/sagemath-4ti2.patch deleted file mode 100644 index 1b4a7ea..0000000 --- a/sagemath-4ti2.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py ---- src/sage/sandpiles/sandpile.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/sandpiles/sandpile.py 2021-05-28 11:34:47.438557513 -0600 -@@ -347,9 +347,6 @@ from sage.rings.all import Integer, Poly - from sage.symbolic.constants import I, pi - from sage.symbolic.ring import SR - --# TODO: remove the following line once 4ti2 functions are removed --path_to_zsolve = os.path.join(SAGE_LOCAL, 'bin', 'zsolve') -- - - - def _sandpile_help(cls, usage, verbose=True): -@@ -5172,7 +5169,7 @@ class SandpileDivisor(dict): - sign_file.write('\n') - # compute - try: -- os.system(path_to_zsolve+' -q ' + lin_sys + ' > ' + lin_sys_log) -+ os.system('zsolve -q ' + lin_sys + ' > ' + lin_sys_log) - # process the results - zhom_file = open(lin_sys_zhom,'r') - except IOError: diff --git a/sagemath-env.patch b/sagemath-env.patch index 8c8e6e2..27eee9e 100644 --- a/sagemath-env.patch +++ b/sagemath-env.patch @@ -1,22 +1,6 @@ -diff -up src/bin/sage-env.orig src/bin/sage-env ---- src/bin/sage-env.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/bin/sage-env 2021-08-27 08:49:17.252812930 -0600 -@@ -333,10 +333,8 @@ if [ -n "$SAGE_LOCAL" ]; then - export CPATH="$SAGE_LOCAL/include${CPATH}" - fi - --if [ -n "$SAGE_LOCAL" ]; then -- SINGULARPATH="$SAGE_LOCAL/share/singular" && export SINGULARPATH -- SINGULAR_EXECUTABLE="$SAGE_LOCAL/bin/Singular" && export SINGULAR_EXECUTABLE --fi -+SINGULARPATH="/usr/share/singular" && export SINGULARPATH -+SINGULAR_EXECUTABLE="/usr/bin/Singular" && export SINGULAR_EXECUTABLE - - if [ -z "$SAGE_REPO_ANONYMOUS" ]; then - SAGE_REPO_ANONYMOUS="https://gitlab.com/sagemath/dev/tracmirror.git" diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2021-08-27 08:46:35.399958049 -0600 -+++ src/sage/env.py 2021-08-27 08:46:48.584192481 -0600 +--- src/sage/env.py.orig 2022-03-04 16:22:20.700225896 -0700 ++++ src/sage/env.py 2022-03-04 16:23:09.566306142 -0700 @@ -166,15 +166,15 @@ SAGE_DATE = var("SAGE_DATE", version.dat SAGE_VERSION_BANNER = var("SAGE_VERSION_BANNER", version.banner) @@ -53,16 +37,3 @@ diff -up src/sage/env.py.orig src/sage/env.py MAXIMA = var("MAXIMA", "maxima") MAXIMA_FAS = var("MAXIMA_FAS") KENZO_FAS = var("KENZO_FAS") -@@ -309,10 +309,10 @@ def _get_shared_lib_path(*libnames: str) - - # locate singular shared object - # On Debian it's libsingular-Singular so try that as well --SINGULAR_SO = var("SINGULAR_SO", _get_shared_lib_path("Singular", "singular-Singular")) -+SINGULAR_SO = var("SINGULAR_SO", "@@LIBDIR@@/libSingular.so") - - # locate libgap shared object --GAP_SO = var("GAP_SO", _get_shared_lib_path("gap", "")) -+GAP_SO = var("GAP_SO", "@@LIBDIR@@/libgap.so") - - # post process - if DOT_SAGE is not None and ' ' in DOT_SAGE: diff --git a/sagemath-escape.patch b/sagemath-escape.patch index c2ffcc4..02c187e 100644 --- a/sagemath-escape.patch +++ b/sagemath-escape.patch @@ -1,6 +1,6 @@ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx 2021-08-26 13:02:37.375205416 -0600 +--- src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx 2022-03-04 15:50:46.104253492 -0700 @@ -229,7 +229,7 @@ cdef class FreeAlgebraElement_letterplac return '0' @@ -11,8 +11,8 @@ diff -up src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx.orig 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/algebras/letterplace/free_algebra_letterplace.pyx 2021-08-26 13:02:37.376205417 -0600 +--- src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/algebras/letterplace/free_algebra_letterplace.pyx 2022-03-04 15:50:46.104253492 -0700 @@ -618,7 +618,7 @@ cdef class FreeAlgebra_letterplace(Algeb # Auxiliar methods @@ -23,8 +23,8 @@ diff -up src/sage/algebras/letterplace/free_algebra_letterplace.pyx.orig src/sag EXAMPLES:: diff -up src/sage/coding/binary_code.pyx.orig src/sage/coding/binary_code.pyx ---- src/sage/coding/binary_code.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/coding/binary_code.pyx 2021-08-26 13:02:37.377205418 -0600 +--- src/sage/coding/binary_code.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/coding/binary_code.pyx 2022-03-04 15:50:46.105253494 -0700 @@ -517,7 +517,7 @@ cdef codeword permute_word_by_wp(WordPer return image @@ -35,8 +35,8 @@ diff -up src/sage/coding/binary_code.pyx.orig src/sage/coding/binary_code.pyx function. diff -up src/sage/coding/codecan/codecan.pyx.orig src/sage/coding/codecan/codecan.pyx ---- src/sage/coding/codecan/codecan.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/coding/codecan/codecan.pyx 2021-08-26 13:02:37.378205419 -0600 +--- src/sage/coding/codecan/codecan.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/coding/codecan/codecan.pyx 2022-03-04 15:50:46.105253494 -0700 @@ -369,7 +369,7 @@ cdef class InnerGroup: return self.transporter @@ -56,8 +56,8 @@ diff -up src/sage/coding/codecan/codecan.pyx.orig src/sage/coding/codecan/codeca 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/combinat/crystals/letters.pyx 2021-08-26 13:02:37.379205420 -0600 +--- src/sage/combinat/crystals/letters.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/combinat/crystals/letters.pyx 2022-03-04 15:50:46.106253495 -0700 @@ -558,7 +558,7 @@ cdef class EmptyLetter(Element): return 'E' @@ -68,9 +68,9 @@ diff -up src/sage/combinat/crystals/letters.pyx.orig src/sage/combinat/crystals/ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/combinat/crystals/tensor_product_element.pyx 2021-08-26 13:02:37.380205422 -0600 -@@ -145,8 +145,8 @@ cdef class TensorProductOfCrystalsElemen +--- src/sage/combinat/crystals/tensor_product_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/combinat/crystals/tensor_product_element.pyx 2022-03-04 15:50:46.106253495 -0700 +@@ -144,8 +144,8 @@ cdef class TensorProductOfCrystalsElemen """ from sage.misc.latex import latex if self._parent.options.convention == "Kashiwara": @@ -81,7 +81,7 @@ diff -up src/sage/combinat/crystals/tensor_product_element.pyx.orig src/sage/com def _ascii_art_(self): """ -@@ -1314,7 +1314,7 @@ cdef class CrystalOfBKKTableauxElement(T +@@ -784,7 +784,7 @@ cdef class CrystalOfTableauxElement(Tens return repr(self.to_tableau()) def _repr_diagram(self): @@ -90,21 +90,9 @@ diff -up src/sage/combinat/crystals/tensor_product_element.pyx.orig src/sage/com Return a string representation of ``self`` as a diagram. EXAMPLES:: -diff -up src/sage/combinat/posets/poset_examples.py.orig src/sage/combinat/posets/poset_examples.py ---- src/sage/combinat/posets/poset_examples.py.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/combinat/posets/poset_examples.py 2021-08-27 08:10:25.616669419 -0600 -@@ -155,7 +155,7 @@ class Posets(metaclass=ClasscallMetaclas - - @staticmethod - def BooleanLattice(n, facade=None, use_subsets=False): -- """ -+ r""" - Return the Boolean lattice containing `2^n` elements. - - - ``n`` -- integer; number of elements will be `2^n` diff -up src/sage/graphs/matchpoly.pyx.orig src/sage/graphs/matchpoly.pyx ---- src/sage/graphs/matchpoly.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/graphs/matchpoly.pyx 2021-08-26 13:02:41.117209797 -0600 +--- src/sage/graphs/matchpoly.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/graphs/matchpoly.pyx 2022-03-04 15:50:49.321258036 -0700 @@ -50,7 +50,7 @@ x = polygen(ZZ, 'x') @@ -115,8 +103,8 @@ diff -up src/sage/graphs/matchpoly.pyx.orig src/sage/graphs/matchpoly.pyx 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/graphs/strongly_regular_db.pyx 2021-08-26 13:02:41.118209798 -0600 +--- src/sage/graphs/strongly_regular_db.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/graphs/strongly_regular_db.pyx 2022-03-04 15:50:49.321258036 -0700 @@ -2397,7 +2397,7 @@ def strongly_regular_from_two_intersecti A set of points in the projective geometry `PG(k,q)` is said to be a @@ -127,8 +115,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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/groups/group.pyx 2021-08-26 13:02:41.119209799 -0600 +--- src/sage/groups/group.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/groups/group.pyx 2022-03-04 15:50:49.322258037 -0700 @@ -51,7 +51,7 @@ def is_Group(x): @@ -148,8 +136,8 @@ diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx +). 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2021-08-26 13:02:41.119209799 -0600 +--- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2022-03-04 15:50:49.322258037 -0700 @@ -913,7 +913,7 @@ cdef class PartitionRefinement_generic: "\\begin{tikzpicture}\n" + "\\tikzset{level distance=3cm, edge from parent/.style=" + @@ -160,8 +148,8 @@ diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sag 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref/data_structures.pyx 2021-08-26 13:02:41.120209801 -0600 +--- src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/groups/perm_gps/partn_ref/data_structures.pyx 2022-03-04 15:50:49.322258037 -0700 @@ -828,11 +828,11 @@ cdef SC_print_level(StabilizerChain *SC, print('| labels {}'.format([SC.labels [level][i] for i from 0 <= i < n])) print('|') @@ -177,8 +165,8 @@ diff -up src/sage/groups/perm_gps/partn_ref/data_structures.pyx.orig src/sage/gr 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2021-08-26 13:02:41.121209802 -0600 +--- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2022-03-04 15:50:49.323258039 -0700 @@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary self.ith_word = &ith_word_linear @@ -216,8 +204,8 @@ diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/groups/perm_gps/permgroup_element.pyx 2021-08-26 13:02:41.122209803 -0600 +--- src/sage/groups/perm_gps/permgroup_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/groups/perm_gps/permgroup_element.pyx 2022-03-04 15:50:49.323258039 -0700 @@ -1175,7 +1175,7 @@ cdef class PermutationGroupElement(Multi return result @@ -237,8 +225,8 @@ diff -up src/sage/groups/perm_gps/permgroup_element.pyx.orig src/sage/groups/per `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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/eclib/newforms.pyx 2021-08-26 13:02:41.122209803 -0600 +--- src/sage/libs/eclib/newforms.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/eclib/newforms.pyx 2022-03-04 15:50:49.323258039 -0700 @@ -22,7 +22,7 @@ from sage.modular.all import Cusp @@ -249,8 +237,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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/fes.pyx 2021-08-26 13:02:41.123209804 -0600 +--- src/sage/libs/fes.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/fes.pyx 2022-03-04 15:50:49.324258040 -0700 @@ -292,7 +292,7 @@ def find_coordinate_change(As, max_tries @@ -261,8 +249,8 @@ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_GF2E.pyx 2021-08-26 13:02:41.123209804 -0600 +--- src/sage/libs/ntl/ntl_GF2E.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_GF2E.pyx 2022-03-04 15:50:49.324258040 -0700 @@ -73,7 +73,7 @@ def ntl_GF2E_random(ntl_GF2EContext_clas cdef class ntl_GF2E(object): @@ -282,8 +270,8 @@ 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_GF2X.pyx.orig src/sage/libs/ntl/ntl_GF2X.pyx ---- src/sage/libs/ntl/ntl_GF2X.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_GF2X.pyx 2021-08-26 13:02:41.124209805 -0600 +--- src/sage/libs/ntl/ntl_GF2X.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_GF2X.pyx 2022-03-04 15:50:49.324258040 -0700 @@ -484,7 +484,7 @@ cdef class ntl_GF2X(object): return [self[i] for i in range(GF2X_deg(self.x)+1)] @@ -303,8 +291,8 @@ diff -up src/sage/libs/ntl/ntl_GF2X.pyx.orig src/sage/libs/ntl/ntl_GF2X.pyx It is the same as setting \code{ntl.GF2XHexOutput(True)} and 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2021-08-26 13:02:41.124209805 -0600 +--- src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2022-03-04 15:50:49.324258040 -0700 @@ -181,7 +181,7 @@ cdef class ntl_mat_GF2E(object): return unpickle_class_args, (ntl_mat_GF2E, (self.modulus_context(), self.x.NumRows(), self.x.NumCols(), self.list())) @@ -324,8 +312,8 @@ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2021-08-26 13:02:41.125209807 -0600 +--- src/sage/libs/ntl/ntl_mat_GF2.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2022-03-04 15:50:49.325258042 -0700 @@ -5,7 +5,7 @@ # distutils: extra_link_args = NTL_LIBEXTRA # distutils: language = c++ @@ -354,8 +342,8 @@ diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.py 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2021-08-26 13:02:41.126209808 -0600 +--- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2022-03-04 15:50:49.325258042 -0700 @@ -73,7 +73,7 @@ cdef class ntl_mat_ZZ(object): The \class{mat_ZZ} class implements arithmetic with matrices over $\Z$. """ @@ -375,8 +363,8 @@ 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2021-08-26 13:02:41.127209809 -0600 +--- src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2022-03-04 15:50:49.325258042 -0700 @@ -5,7 +5,7 @@ # distutils: extra_link_args = NTL_LIBEXTRA # distutils: language = c++ @@ -387,8 +375,8 @@ diff -up src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig src/sage/libs/ntl/ntl_ZZ_pEX.pyx 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 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/ntl/ntl_ZZX.pyx 2021-08-26 13:02:41.127209809 -0600 +--- src/sage/libs/ntl/ntl_ZZX.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/ntl/ntl_ZZX.pyx 2022-03-04 15:50:49.326258043 -0700 @@ -692,7 +692,7 @@ cdef class ntl_ZZX(object): return (self*other).quo_rem(g)[0] @@ -398,51 +386,21 @@ diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx If self and other are coprime over the rationals, return r, s, t such that r = s*self + t*other. Otherwise return 0. This is \emph{not} the same as the \sage function on polynomials -diff -up src/sage/libs/pynac/pynac.pyx.orig src/sage/libs/pynac/pynac.pyx ---- src/sage/libs/pynac/pynac.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/pynac/pynac.pyx 2021-08-26 13:02:41.128209810 -0600 -@@ -385,7 +385,7 @@ cdef stdstring* string_from_pystr(py_str - return new stdstring(s) - - cdef stdstring* py_latex_variable(var_name): -- """ -+ r""" - Returns a c++ string containing the latex representation of the given - variable name. - -@@ -414,7 +414,7 @@ cdef stdstring* py_latex_variable(var_na - return string_from_pystr(py_vlatex) - - def py_latex_variable_for_doctests(x): -- """ -+ r""" - Internal function used so we can doctest a certain cdef'd method. - - EXAMPLES:: -@@ -703,7 +703,7 @@ cdef stdstring* py_latex_fderivative(uns - operator_string=r"\frac{\partial^{%s}}{%s}"%(len(params),''.join(diff_args)) - py_res = operator_string+py_latex_function_pystring(id,args,False) - else: -- ostr = ''.join(['\mathrm{D}_{',', '.join([repr(int(x)) for x in params]), '}']) -+ ostr = ''.join([r'\mathrm{D}_{',', '.join([repr(int(x)) for x in params]), '}']) - fstr = py_latex_function_pystring(id, args, True) - py_res = ostr + fstr - return string_from_pystr(py_res) diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polynomial.pyx ---- src/sage/libs/singular/polynomial.pyx.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/singular/polynomial.pyx 2021-08-26 13:02:41.129209811 -0600 +--- src/sage/libs/singular/polynomial.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/singular/polynomial.pyx 2022-03-06 19:39:15.350978716 -0700 @@ -22,7 +22,7 @@ cdef extern from *: # hack to get at cyt int unlikely(int) import re -plusminus_pattern = re.compile("([^\(^])([\+\-])") +plusminus_pattern = re.compile(r"([^\(^])([\+\-])") + parenthvar_pattern = re.compile(r"\(([a-zA-Z][a-zA-Z0-9]*)\)") - from sage.cpython.string cimport bytes_to_str, str_to_bytes diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi ---- src/sage/libs/symmetrica/sc.pxi.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/libs/symmetrica/sc.pxi 2021-08-26 13:02:41.129209811 -0600 +--- src/sage/libs/symmetrica/sc.pxi.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/symmetrica/sc.pxi 2022-03-04 15:50:55.377266585 -0700 @@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab @@ -452,21 +410,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/manifolds/chart.py.orig src/sage/manifolds/chart.py ---- src/sage/manifolds/chart.py.orig 2021-08-22 02:44:33.000000000 -0600 -+++ src/sage/manifolds/chart.py 2021-08-27 08:12:45.706133989 -0600 -@@ -2059,7 +2059,7 @@ class RealChart(Chart): - return self._bounds[i-self._sindex] - - def codomain(self): -- """ -+ r""" - Return the codomain of ``self`` as a set. - - EXAMPLES:: diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx ---- src/sage/matrix/matrix0.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix0.pyx 2021-08-26 13:04:22.095328354 -0600 +--- src/sage/matrix/matrix0.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix0.pyx 2022-03-04 15:50:57.330269343 -0700 @@ -2292,7 +2292,7 @@ cdef class Matrix(sage.structure.element # Functions ################################################### @@ -485,7 +431,7 @@ diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx Return the commutator self\*other - other\*self. EXAMPLES:: -@@ -4958,7 +4958,7 @@ cdef class Matrix(sage.structure.element +@@ -4976,7 +4976,7 @@ cdef class Matrix(sage.structure.element # Arithmetic ################################################### cdef _vector_times_matrix_(self, Vector v): @@ -495,9 +441,9 @@ diff -up src/sage/matrix/matrix0.pyx.orig src/sage/matrix/matrix0.pyx INPUT: diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx ---- src/sage/matrix/matrix2.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix2.pyx 2021-08-26 13:02:41.138209822 -0600 -@@ -9630,7 +9630,7 @@ cdef class Matrix(Matrix1): +--- src/sage/matrix/matrix2.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix2.pyx 2022-03-04 15:50:57.331269345 -0700 +@@ -9744,7 +9744,7 @@ cdef class Matrix(Matrix1): return img def density(self): @@ -507,8 +453,8 @@ diff -up src/sage/matrix/matrix2.pyx.orig src/sage/matrix/matrix2.pyx 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix_integer_dense.pyx 2021-08-26 13:02:41.140209824 -0600 +--- src/sage/matrix/matrix_integer_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_integer_dense.pyx 2022-03-04 15:50:57.332269347 -0700 @@ -746,7 +746,7 @@ cdef class Matrix_integer_dense(Matrix_d return ans @@ -519,8 +465,8 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in sage: n = 3 diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi ---- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix_modn_dense_template.pxi 2021-08-26 13:02:41.141209825 -0600 +--- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_modn_dense_template.pxi 2022-03-04 15:50:57.333269348 -0700 @@ -635,7 +635,7 @@ cdef class Matrix_modn_dense_template(Ma return (word_size, little_endian, s), 10 @@ -540,9 +486,9 @@ diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/mat 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix_polynomial_dense.pyx 2021-08-26 13:02:41.142209826 -0600 -@@ -49,16 +49,16 @@ cdef class Matrix_polynomial_dense(Matri +--- src/sage/matrix/matrix_polynomial_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_polynomial_dense.pyx 2022-03-04 15:50:57.333269348 -0700 +@@ -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; @@ -568,8 +514,8 @@ diff -up src/sage/matrix/matrix_polynomial_dense.pyx.orig src/sage/matrix/matrix 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matrix/matrix_rational_dense.pyx 2021-08-26 13:02:41.143209828 -0600 +--- src/sage/matrix/matrix_rational_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_rational_dense.pyx 2022-03-04 15:50:57.334269350 -0700 @@ -507,7 +507,7 @@ cdef class Matrix_rational_dense(Matrix_ return rich_to_bool(op, 0) @@ -598,8 +544,8 @@ diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_r 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matroids/basis_exchange_matroid.pyx 2021-08-26 13:02:41.144209829 -0600 +--- src/sage/matroids/basis_exchange_matroid.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matroids/basis_exchange_matroid.pyx 2022-03-04 15:50:57.334269350 -0700 @@ -2115,7 +2115,7 @@ cdef class BasisExchangeMatroid(Matroid) return EQ[0] @@ -610,9 +556,9 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matroids/linear_matroid.pyx 2021-08-26 13:02:41.147209832 -0600 -@@ -804,7 +804,7 @@ cdef class LinearMatroid(BasisExchangeMa +--- src/sage/matroids/linear_matroid.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matroids/linear_matroid.pyx 2022-03-04 15:50:57.335269351 -0700 +@@ -800,7 +800,7 @@ cdef class LinearMatroid(BasisExchangeMa # (field) isomorphism cpdef bint _is_field_isomorphism(self, LinearMatroid other, morphism): # not safe if self == other @@ -621,7 +567,7 @@ diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matr Version of :meth:`` that does no type checking. -@@ -970,7 +970,7 @@ cdef class LinearMatroid(BasisExchangeMa +@@ -966,7 +966,7 @@ cdef class LinearMatroid(BasisExchangeMa return self._is_field_isomorphism(other, morphism) cpdef is_field_isomorphism(self, other, morphism): @@ -631,9 +577,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/matroids/matroid.pyx 2021-08-26 13:02:41.148209833 -0600 -@@ -3076,7 +3076,7 @@ cdef class Matroid(SageObject): +--- src/sage/matroids/matroid.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matroids/matroid.pyx 2022-03-04 15:50:57.336269352 -0700 +@@ -3147,7 +3147,7 @@ cdef class Matroid(SageObject): return Polyhedron(vertices) def independence_matroid_polytope(self): @@ -642,7 +588,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 -@@ -3356,7 +3356,7 @@ cdef class Matroid(SageObject): +@@ -3427,7 +3427,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, morphism) cpdef is_isomorphism(self, other, morphism): @@ -651,7 +597,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 -@@ -3479,7 +3479,7 @@ cdef class Matroid(SageObject): +@@ -3550,7 +3550,7 @@ cdef class Matroid(SageObject): return self._is_isomorphism(other, mf) cpdef _is_isomorphism(self, other, morphism): @@ -660,7 +606,7 @@ diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx Version of is_isomorphism() that does no type checking. INPUT: -@@ -4242,7 +4242,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): @@ -669,7 +615,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 -@@ -4643,7 +4643,7 @@ cdef class Matroid(SageObject): +@@ -4714,7 +4714,7 @@ cdef class Matroid(SageObject): return True cpdef is_cosimple(self): @@ -678,7 +624,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. -@@ -7409,7 +7409,7 @@ cdef class Matroid(SageObject): +@@ -7480,7 +7480,7 @@ cdef class Matroid(SageObject): return A cpdef tutte_polynomial(self, x=None, y=None): @@ -688,8 +634,8 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/misc/cachefunc.pyx 2021-08-26 13:02:41.149209835 -0600 +--- src/sage/misc/cachefunc.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/misc/cachefunc.pyx 2022-03-04 15:50:57.336269352 -0700 @@ -835,7 +835,7 @@ cdef class CachedFunction(object): ## forward other questions to the cached function. @@ -700,9 +646,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/misc/sageinspect.py 2021-08-26 13:02:41.150209836 -0600 -@@ -848,7 +848,7 @@ class SageArgSpecVisitor(ast.NodeVisitor +--- src/sage/misc/sageinspect.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/misc/sageinspect.py 2022-03-04 15:50:57.336269352 -0700 +@@ -881,7 +881,7 @@ class SageArgSpecVisitor(ast.NodeVisitor def _grep_first_pair_of_parentheses(s): @@ -711,7 +657,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py Return the first matching pair of parentheses in a code string. INPUT: -@@ -903,7 +903,7 @@ def _grep_first_pair_of_parentheses(s): +@@ -936,7 +936,7 @@ def _grep_first_pair_of_parentheses(s): def _split_syntactical_unit(s): @@ -721,8 +667,8 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/modular/arithgroup/arithgroup_element.pyx 2021-08-26 13:02:41.150209836 -0600 +--- src/sage/modular/arithgroup/arithgroup_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/modular/arithgroup/arithgroup_element.pyx 2022-03-04 15:50:57.337269354 -0700 @@ -194,7 +194,7 @@ cdef class ArithmeticSubgroupElement(Mul return richcmp(self.__x, right.__x, op) @@ -733,9 +679,9 @@ diff -up src/sage/modular/arithgroup/arithgroup_element.pyx.orig src/sage/modula 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/modular/arithgroup/farey_symbol.pyx 2021-08-26 13:02:41.151209837 -0600 -@@ -614,7 +614,7 @@ cdef class Farey: +--- src/sage/modular/arithgroup/farey_symbol.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/modular/arithgroup/farey_symbol.pyx 2022-03-04 15:50:57.337269354 -0700 +@@ -615,7 +615,7 @@ cdef class Farey: if forced_format == 'plain': # output not using xymatrix s = r'\left( -\infty' @@ -745,8 +691,8 @@ diff -up src/sage/modular/arithgroup/farey_symbol.pyx.orig src/sage/modular/arit 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/modular/modsym/heilbronn.pyx 2021-08-26 13:02:41.151209837 -0600 +--- src/sage/modular/modsym/heilbronn.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/modular/modsym/heilbronn.pyx 2022-03-04 15:50:57.337269354 -0700 @@ -211,7 +211,7 @@ cdef class Heilbronn: sig_off() @@ -757,9 +703,9 @@ diff -up src/sage/modular/modsym/heilbronn.pyx.orig src/sage/modular/modsym/heil - ``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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/modules/free_module_element.pyx 2021-08-26 13:02:41.153209839 -0600 -@@ -2373,7 +2373,7 @@ cdef class FreeModuleElement(Vector): +--- src/sage/modules/free_module_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/modules/free_module_element.pyx 2022-03-04 15:50:57.338269355 -0700 +@@ -2387,7 +2387,7 @@ cdef class FreeModuleElement(Vector): def plot_step(self, xmin=0, xmax=1, eps=None, res=None, connect=True, **kwds): @@ -768,7 +714,7 @@ diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_mod INPUT: - ``xmin`` - (default: 0) start x position to start -@@ -3708,7 +3708,7 @@ cdef class FreeModuleElement(Vector): +@@ -3722,7 +3722,7 @@ cdef class FreeModuleElement(Vector): from sage.misc.latex import latex vector_delimiters = latex.vector_delimiters() s = '\\left' + vector_delimiters[0] @@ -778,8 +724,8 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/numerical/backends/generic_backend.pyx 2021-08-26 13:02:41.153209839 -0600 +--- src/sage/numerical/backends/generic_backend.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/numerical/backends/generic_backend.pyx 2022-03-04 15:50:57.338269355 -0700 @@ -1376,7 +1376,7 @@ cdef class GenericBackend: raise NotImplementedError() @@ -817,9 +763,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/numerical/backends/glpk_backend.pyx 2021-08-26 13:02:41.154209841 -0600 -@@ -2320,7 +2320,7 @@ cdef class GLPKBackend(GenericBackend): +--- src/sage/numerical/backends/glpk_backend.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/numerical/backends/glpk_backend.pyx 2022-03-04 15:50:57.339269357 -0700 +@@ -2312,7 +2312,7 @@ cdef class GLPKBackend(GenericBackend): cpdef bint is_variable_basic(self, int index): @@ -828,7 +774,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 -@@ -2351,7 +2351,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2343,7 +2343,7 @@ cdef class GLPKBackend(GenericBackend): return self.get_col_stat(index) == GLP_BS cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): @@ -837,7 +783,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. -@@ -2381,7 +2381,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2373,7 +2373,7 @@ cdef class GLPKBackend(GenericBackend): return self.get_col_stat(index) == GLP_NL cpdef bint is_slack_variable_basic(self, int index): @@ -846,7 +792,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 -@@ -2412,7 +2412,7 @@ cdef class GLPKBackend(GenericBackend): +@@ -2404,7 +2404,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): @@ -856,8 +802,8 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba This assumes that the problem has been solved with the simplex method diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx ---- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/numerical/backends/interactivelp_backend.pyx 2021-08-26 13:02:41.154209841 -0600 +--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/numerical/backends/interactivelp_backend.pyx 2022-03-04 15:50:57.339269357 -0700 @@ -1063,7 +1063,7 @@ cdef class InteractiveLPBackend: problem_type, ring, objective_constant_term=d) @@ -913,8 +859,8 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num EXAMPLES:: diff -up src/sage/quivers/algebra_elements.pyx.orig src/sage/quivers/algebra_elements.pyx ---- src/sage/quivers/algebra_elements.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/quivers/algebra_elements.pyx 2021-08-26 13:02:41.155209842 -0600 +--- src/sage/quivers/algebra_elements.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/quivers/algebra_elements.pyx 2022-03-04 15:50:57.339269357 -0700 @@ -280,7 +280,7 @@ cdef class PathAlgebraElement(RingElemen ) @@ -925,8 +871,8 @@ diff -up src/sage/quivers/algebra_elements.pyx.orig src/sage/quivers/algebra_ele 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/bernoulli_mod_p.pyx 2021-08-26 13:02:41.155209842 -0600 +--- src/sage/rings/bernoulli_mod_p.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/bernoulli_mod_p.pyx 2022-03-04 15:50:57.339269357 -0700 @@ -41,7 +41,7 @@ from sage.rings.bernmm import bernmm_ber @@ -937,9 +883,9 @@ diff -up src/sage/rings/bernoulli_mod_p.pyx.orig src/sage/rings/bernoulli_mod_p. 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/complex_interval.pyx 2021-08-26 13:02:41.155209842 -0600 -@@ -729,7 +729,7 @@ cdef class ComplexIntervalFieldElement(s +--- src/sage/rings/complex_interval.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/complex_interval.pyx 2022-03-04 15:50:57.340269358 -0700 +@@ -732,7 +732,7 @@ cdef class ComplexIntervalFieldElement(s return x def norm(self): @@ -948,7 +894,7 @@ diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interva Return the norm of this complex number. If `c = a + bi` is a complex number, then the norm of `c` is defined as -@@ -1111,7 +1111,7 @@ cdef class ComplexIntervalFieldElement(s +@@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s return x def __invert__(self): @@ -958,8 +904,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/complex_mpc.pyx 2021-08-26 13:02:41.156209843 -0600 +--- src/sage/rings/complex_mpc.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/complex_mpc.pyx 2022-03-04 15:50:57.340269358 -0700 @@ -137,15 +137,15 @@ cdef inline mpfr_rnd_t rnd_im(mpc_rnd_t sign = '[+-]' digit_ten = '[0123456789]' @@ -1034,7 +980,7 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx return x, y -@@ -1691,7 +1691,7 @@ cdef class MPComplexNumber(sage.structur +@@ -1701,7 +1701,7 @@ cdef class MPComplexNumber(sage.structur return z def cosh(self): @@ -1043,7 +989,7 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx Return the hyperbolic cosine of this complex number: .. MATH:: -@@ -1711,7 +1711,7 @@ cdef class MPComplexNumber(sage.structur +@@ -1721,7 +1721,7 @@ cdef class MPComplexNumber(sage.structur return z def sinh(self): @@ -1052,7 +998,7 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx Return the hyperbolic sine of this complex number: .. MATH:: -@@ -2053,7 +2053,7 @@ cdef class MPComplexNumber(sage.structur +@@ -2063,7 +2063,7 @@ cdef class MPComplexNumber(sage.structur return z def exp(self): @@ -1062,8 +1008,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2021-08-26 13:02:41.294210004 -0600 +--- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/finite_rings/hom_finite_field.pyx 2022-03-04 15:50:57.340269358 -0700 @@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis @@ -1074,9 +1020,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/finite_rings/integer_mod.pyx 2021-08-26 13:02:41.296210007 -0600 -@@ -2179,7 +2179,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs +--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/finite_rings/integer_mod.pyx 2022-03-04 15:50:57.341269359 -0700 +@@ -2241,7 +2241,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 @@ -1085,7 +1031,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ EXAMPLES:: sage: R = Integers(10^10) -@@ -3442,7 +3442,7 @@ cdef class IntegerMod_int64(IntegerMod_a +@@ -3541,7 +3541,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 @@ -1095,9 +1041,9 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/number_field/number_field_element.pyx 2021-08-26 13:02:41.297210008 -0600 -@@ -490,7 +490,7 @@ cdef class NumberFieldElement(FieldEleme +--- src/sage/rings/number_field/number_field_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/number_field/number_field_element.pyx 2022-03-04 15:50:57.342269361 -0700 +@@ -493,7 +493,7 @@ cdef class NumberFieldElement(FieldEleme return codomain(f(im_gens[0])) def _latex_(self): @@ -1107,8 +1053,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/number_field/number_field_morphisms.pyx 2021-08-26 13:02:41.298210009 -0600 +--- src/sage/rings/number_field/number_field_morphisms.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/number_field/number_field_morphisms.pyx 2022-03-04 15:50:57.342269361 -0700 @@ -340,7 +340,7 @@ cdef class EmbeddedNumberFieldConversion @@ -1128,8 +1074,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/padics/local_generic_element.pyx 2021-08-26 13:02:41.298210009 -0600 +--- src/sage/rings/padics/local_generic_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/padics/local_generic_element.pyx 2022-03-04 15:50:57.342269361 -0700 @@ -401,7 +401,7 @@ cdef class LocalGenericElement(Commutati return ans @@ -1140,8 +1086,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2021-08-26 13:02:41.299210010 -0600 +--- src/sage/rings/padics/padic_capped_absolute_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2022-03-04 15:50:57.342269361 -0700 @@ -383,7 +383,7 @@ cdef class pAdicCappedAbsoluteElement(CA return ans @@ -1161,8 +1107,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2021-08-26 13:02:43.006212006 -0600 +--- src/sage/rings/padics/padic_fixed_mod_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2022-03-04 15:50:57.343269362 -0700 @@ -449,7 +449,7 @@ cdef class pAdicFixedModElement(FMElemen return ans @@ -1182,8 +1128,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/padics/padic_generic_element.pyx 2021-08-26 13:02:44.199213403 -0600 +--- src/sage/rings/padics/padic_generic_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/padics/padic_generic_element.pyx 2022-03-04 15:50:57.343269362 -0700 @@ -544,7 +544,7 @@ cdef class pAdicGenericElement(LocalGene return self._repr_(mode=mode) @@ -1193,7 +1139,7 @@ diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/pad Returns a string representation of this element. INPUT: -@@ -3024,7 +3024,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -3026,7 +3026,7 @@ cdef class pAdicGenericElement(LocalGene return series_unit*nfactorial_unit.inverse_of_unit()<<(series_val-nfactorial_val) def _exp_binary_splitting(self, aprec): @@ -1202,7 +1148,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`. -@@ -3070,7 +3070,7 @@ cdef class pAdicGenericElement(LocalGene +@@ -3072,7 +3072,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): @@ -1212,9 +1158,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2021-08-26 13:02:44.204213409 -0600 -@@ -2506,7 +2506,7 @@ cdef class MPolynomial_libsingular(MPoly +--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2022-03-04 15:50:57.344269364 -0700 +@@ -2520,7 +2520,7 @@ cdef class MPolynomial_libsingular(MPoly return char_to_str(s) def _latex_(self): @@ -1224,9 +1170,9 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/polynomial/ore_polynomial_element.pyx 2021-08-26 13:02:44.205213410 -0600 -@@ -1705,8 +1705,8 @@ cdef class OrePolynomial(AlgebraElement) +--- src/sage/rings/polynomial/ore_polynomial_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/ore_polynomial_element.pyx 2022-03-04 15:50:57.345269365 -0700 +@@ -1707,8 +1707,8 @@ cdef class OrePolynomial(AlgebraElement) var = "" s += "%s %s"%(x,var) s = s.replace(" + -", " - ") @@ -1238,9 +1184,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_element.pyx 2021-08-26 13:02:44.209213414 -0600 -@@ -2712,8 +2712,8 @@ cdef class Polynomial(CommutativeAlgebra +--- src/sage/rings/polynomial/polynomial_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/polynomial_element.pyx 2022-03-04 15:50:57.346269367 -0700 +@@ -2634,8 +2634,8 @@ cdef class Polynomial(CommutativeAlgebra var = "" s += "%s %s" % (x, var) s = s.replace(" + -", " - ") @@ -1251,7 +1197,7 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po s = s.replace("|","") if s == " ": return "0" -@@ -2813,7 +2813,7 @@ cdef class Polynomial(CommutativeAlgebra +@@ -2735,7 +2735,7 @@ cdef class Polynomial(CommutativeAlgebra raise IndexError("polynomials are immutable") cpdef _floordiv_(self, right): @@ -1260,7 +1206,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 -@@ -6609,8 +6609,8 @@ cdef class Polynomial(CommutativeAlgebra +@@ -6532,8 +6532,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 @@ -1272,9 +1218,9 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2021-08-26 13:02:44.210213416 -0600 -@@ -1389,7 +1389,7 @@ cdef class Polynomial_integer_dense_flin +--- src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2022-03-04 15:50:57.346269367 -0700 +@@ -1394,7 +1394,7 @@ cdef class Polynomial_integer_dense_flin return smallInteger(fmpz_poly_degree(self.__poly)) def pseudo_divrem(self, B): @@ -1284,9 +1230,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/polynomial/real_roots.pyx 2021-08-26 13:02:44.212213418 -0600 -@@ -1252,7 +1252,7 @@ def de_casteljau_intvec(Vector_integer_d +--- src/sage/rings/polynomial/real_roots.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/real_roots.pyx 2022-03-04 15:50:57.347269368 -0700 +@@ -1255,7 +1255,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): @@ -1295,7 +1241,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 -@@ -2142,7 +2142,7 @@ def subsample_vec_doctest(a, slen, llen) +@@ -2145,7 +2145,7 @@ def subsample_vec_doctest(a, slen, llen) return subsample_vec(a, slen, llen) def maximum_root_first_lambda(p): @@ -1304,10 +1250,10 @@ diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial Given a polynomial with real coefficients, computes an upper bound on its largest real root, using the first-\lambda algorithm from "Implementations of a New Theorem for Computing Bounds for Positive -diff -up src/sage/rings/real_double.pyx.orig src/sage/rings/real_double.pyx ---- src/sage/rings/real_double.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/real_double.pyx 2021-08-26 13:02:44.214213420 -0600 -@@ -2092,7 +2092,7 @@ cdef class RealDoubleElement(FieldElemen +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-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/real_double_element_gsl.pyx 2022-03-04 15:58:11.186882002 -0700 +@@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou return a def log(self, base=None): @@ -1317,9 +1263,9 @@ diff -up src/sage/rings/real_double.pyx.orig src/sage/rings/real_double.pyx INPUT: diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/real_mpfi.pyx 2021-08-26 13:02:44.216213423 -0600 -@@ -1310,7 +1310,7 @@ cdef class RealIntervalFieldElement(Ring +--- src/sage/rings/real_mpfi.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/real_mpfi.pyx 2022-03-04 15:50:57.348269369 -0700 +@@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring return self.str(10) def _latex_(self): @@ -1329,8 +1275,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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/semirings/tropical_semiring.pyx 2021-08-26 13:02:44.216213423 -0600 +--- src/sage/rings/semirings/tropical_semiring.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/semirings/tropical_semiring.pyx 2022-03-04 15:50:57.348269369 -0700 @@ -99,7 +99,7 @@ cdef class TropicalSemiringElement(Eleme return repr(self._val) @@ -1341,8 +1287,8 @@ 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 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/rings/tate_algebra_element.pyx 2021-08-26 13:02:44.218213425 -0600 +--- src/sage/rings/tate_algebra_element.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/tate_algebra_element.pyx 2022-03-04 15:50:57.349269371 -0700 @@ -3447,7 +3447,7 @@ cdef class TateAlgebraElement(Commutativ @coerce_binop @@ -1353,8 +1299,8 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr INPUT: diff -up src/sage/structure/coerce_maps.pyx.orig src/sage/structure/coerce_maps.pyx ---- src/sage/structure/coerce_maps.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/structure/coerce_maps.pyx 2021-08-26 13:02:44.219213426 -0600 +--- src/sage/structure/coerce_maps.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/structure/coerce_maps.pyx 2022-03-04 15:50:57.349269371 -0700 @@ -312,7 +312,7 @@ cdef class NamedConvertMap(Map): cdef class CallableConvertMap(Map): @@ -1364,29 +1310,19 @@ diff -up src/sage/structure/coerce_maps.pyx.orig src/sage/structure/coerce_maps. This lets one easily create maps from any callable object. This is especially useful to create maps from bound methods. -diff -up src/sage/symbolic/expression_conversions.py.orig src/sage/symbolic/expression_conversions.py ---- src/sage/symbolic/expression_conversions.py.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/symbolic/expression_conversions.py 2021-08-27 08:13:43.289141017 -0600 -@@ -969,7 +969,7 @@ class FriCASConverter(InterfaceInit): - super(FriCASConverter, self).__init__(sage.interfaces.fricas.fricas) - - def pyobject(self, ex, obj): -- """ -+ r""" - Return a string which, when evaluated by FriCAS, returns the - object as an expression. - diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/symbolic/expression.pyx 2021-08-26 13:02:44.223213431 -0600 -@@ -1,5 +1,5 @@ - # -*- coding: utf-8 -*- +--- src/sage/symbolic/expression.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/symbolic/expression.pyx 2022-03-04 16:01:04.179126250 -0700 +@@ -7,7 +7,7 @@ + # distutils: include_dirs = SINGULAR_INCDIR + # pynac/basic.h includes + # factory/factory.h so this ^ is needed to find it -""" +r""" Symbolic Expressions RELATIONAL EXPRESSIONS: -@@ -4979,7 +4979,7 @@ cdef class Expression(CommutativeRingEle +@@ -5202,7 +5202,7 @@ cdef class Expression(Expression_abc): expand_rational = rational_expand = expand def expand_trig(self, full=False, half_angles=False, plus=True, times=True): @@ -1395,7 +1331,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Expand trigonometric and hyperbolic functions of sums of angles and of multiple angles occurring in self. For best results, self should already be expanded. -@@ -7567,7 +7567,7 @@ cdef class Expression(CommutativeRingEle +@@ -7930,7 +7930,7 @@ cdef class Expression(Expression_abc): return new_Expression_from_GEx(self._parent, x) def gosper_term(self, n): @@ -1405,9 +1341,9 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx Suppose ``f``=``self`` is a hypergeometric term such that: diff -up src/sage/symbolic/function.pyx.orig src/sage/symbolic/function.pyx ---- src/sage/symbolic/function.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/symbolic/function.pyx 2021-08-26 13:02:44.224213432 -0600 -@@ -1283,7 +1283,7 @@ cdef class BuiltinFunction(Function): +--- src/sage/symbolic/function.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/symbolic/function.pyx 2022-03-04 15:50:59.211272001 -0700 +@@ -1137,7 +1137,7 @@ cdef class BuiltinFunction(Function): # this is required to read old pickles of erf, elliptic_ec, etc. def __setstate__(self, state): @@ -1417,9 +1353,9 @@ diff -up src/sage/symbolic/function.pyx.orig src/sage/symbolic/function.pyx sage: cot.__setstate__([1,0]) diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx ---- src/sage/symbolic/ring.pyx.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage/symbolic/ring.pyx 2021-08-26 13:02:44.225213433 -0600 -@@ -86,7 +86,7 @@ cdef class SymbolicRing(CommutativeRing) +--- src/sage/symbolic/ring.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/symbolic/ring.pyx 2022-03-04 15:50:59.211272001 -0700 +@@ -110,7 +110,7 @@ cdef class SymbolicRing(sage.rings.abc.S return "Symbolic Ring" def _latex_(self): @@ -1428,16 +1364,7 @@ diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx Return latex representation of the symbolic ring. EXAMPLES:: -@@ -504,7 +504,7 @@ cdef class SymbolicRing(CommutativeRing) - return new_Expression_from_GEx(self, exp) - - def wild(self, unsigned int n=0): -- """ -+ r""" - Return the n-th wild-card for pattern matching and substitution. - - INPUT: -@@ -859,7 +859,7 @@ cdef class SymbolicRing(CommutativeRing) +@@ -759,7 +759,7 @@ cdef class SymbolicRing(sage.rings.abc.S asm.forget() def var(self, name, latex_name=None, n=None, domain=None): diff --git a/sagemath-extensions.patch b/sagemath-extensions.patch index 507472d..8f7fe43 100644 --- a/sagemath-extensions.patch +++ b/sagemath-extensions.patch @@ -1,7 +1,7 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/env.py 2021-05-28 11:18:15.134457599 -0600 -@@ -430,7 +430,8 @@ def cython_aliases(): +--- src/sage/env.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/env.py 2022-03-04 16:04:55.067452303 -0700 +@@ -496,7 +496,8 @@ def cython_aliases(required_modules=None aliases[var + "INCDIR"] = pc['include_dirs'] aliases[var + "LIBDIR"] = pc['library_dirs'] aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split())) @@ -12,25 +12,17 @@ diff -up src/sage/env.py.orig src/sage/env.py # uname-specific flags UNAME = os.uname() diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx ---- src/sage/graphs/mcqd.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/graphs/mcqd.pyx 2021-05-28 11:18:15.134457599 -0600 +--- src/sage/graphs/mcqd.pyx.orig 2022-03-04 16:04:55.068452305 -0700 ++++ src/sage/graphs/mcqd.pyx 2022-03-04 16:05:55.226537259 -0700 @@ -1,4 +1,5 @@ # distutils: language = c++ +# distutils: libraries = mcqd - # sage_setup: distribution = sage-mcqd + # sage_setup: distribution = sagemath-mcqd from cysignals.signals cimport sig_on, sig_off -diff -up src/sage/interfaces/primecount.pyx.orig src/sage/interfaces/primecount.pyx ---- src/sage/interfaces/primecount.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/primecount.pyx 2021-05-28 11:18:15.134457599 -0600 -@@ -1,3 +1,4 @@ -+# distutils: libraries = primecount - # sage_setup: distribution = sage-primecount - - r""" diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd ---- src/sage/libs/arb/arb.pxd.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/arb/arb.pxd 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/arb/arb.pxd.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/arb/arb.pxd 2022-03-04 16:05:03.939464830 -0700 @@ -1,4 +1,5 @@ # distutils: libraries = gmp flint ARB_LIBRARY +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -38,8 +30,8 @@ diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd from sage.libs.arb.types cimport * diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx ---- src/sage/libs/arb/arb_version.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/arb/arb_version.pyx 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/arb/arb_version.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/arb/arb_version.pyx 2022-03-04 16:05:03.939464830 -0700 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -47,48 +39,48 @@ diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.py from sage.cpython.string cimport char_to_str diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx ---- src/sage/libs/arb/arith.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/arb/arith.pyx 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/arb/arith.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/arb/arith.pyx 2022-03-04 16:05:03.939464830 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/arb /usr/include/flint """ Arithmetic functions using the arb library """ diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx ---- src/sage/libs/mpmath/ext_impl.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/mpmath/ext_impl.pyx 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/mpmath/ext_impl.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/mpmath/ext_impl.pyx 2022-03-04 16:05:03.939464830 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ This module provides the core implementation of multiprecision floating-point arithmetic. Operations are done in-place. diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx ---- src/sage/libs/mpmath/ext_libmp.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/mpmath/ext_libmp.pyx 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/mpmath/ext_libmp.pyx 2022-03-04 16:05:03.940464832 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ Faster versions of some key functions in mpmath.libmp """ diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx ---- src/sage/libs/mpmath/ext_main.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/mpmath/ext_main.pyx 2021-05-28 11:18:15.135457599 -0600 +--- src/sage/libs/mpmath/ext_main.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/mpmath/ext_main.pyx 2022-03-04 16:05:03.940464832 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ mpmath floating-point numbers diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx ---- src/sage/libs/mpmath/utils.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/mpmath/utils.pyx 2021-05-28 11:18:15.136457599 -0600 +--- src/sage/libs/mpmath/utils.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/mpmath/utils.pyx 2022-03-04 16:05:03.940464832 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/flint """ Utilities for Sage-mpmath interaction diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx ---- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2021-05-28 11:18:15.136457599 -0600 +--- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_complex_ball_dense.pyx 2022-03-04 16:05:03.941464833 -0700 @@ -1,4 +1,5 @@ # distutils: libraries = ARB_LIBRARY +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -96,8 +88,8 @@ diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matr Arbitrary precision complex ball matrices using Arb diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx ---- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/matrix/matrix_cyclo_dense.pyx 2021-05-28 12:09:14.100657210 -0600 +--- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_cyclo_dense.pyx 2022-03-04 16:05:03.941464833 -0700 @@ -1,7 +1,7 @@ # distutils: language = c++ # distutils: libraries = NTL_LIBRARIES @@ -108,16 +100,16 @@ diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cycl # distutils: extra_link_args = NTL_LIBEXTRA """ diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx ---- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2021-05-28 11:18:15.136457599 -0600 +--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2022-03-04 16:05:03.941464833 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory """ Dense matrices over multivariate polynomials over fields diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx ---- src/sage/rings/complex_arb.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/complex_arb.pyx 2021-05-28 11:18:15.137457600 -0600 +--- src/sage/rings/complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/complex_arb.pyx 2022-03-04 16:05:03.942464834 -0700 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -125,8 +117,8 @@ diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx Arbitrary precision complex balls using Arb diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx ---- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2021-05-28 11:18:15.138457600 -0600 +--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2022-03-04 16:05:03.942464834 -0700 @@ -4,6 +4,7 @@ # distutils: library_dirs = NTL_LIBDIR # distutils: extra_link_args = NTL_LIBEXTRA @@ -136,32 +128,32 @@ diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src Optimized Quadratic Number Field Elements diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx ---- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2021-05-28 11:01:44.993275358 -0600 -+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2021-05-28 11:18:15.138457600 -0600 +--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-03-04 15:50:57.344269364 -0700 ++++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2022-03-04 16:05:03.943464836 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" Multivariate Polynomials via libSINGULAR diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx ---- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/polynomial/multi_polynomial.pyx 2021-05-28 11:18:15.139457600 -0600 +--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/multi_polynomial.pyx 2022-03-04 16:05:03.944464837 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" Base class for elements of multivariate polynomial rings """ diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx ---- src/sage/rings/polynomial/plural.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/polynomial/plural.pyx 2021-05-28 11:18:15.139457600 -0600 +--- src/sage/rings/polynomial/plural.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/plural.pyx 2022-03-04 16:05:03.944464837 -0700 @@ -1,3 +1,4 @@ +# distutils: include_dirs = /usr/include/singular /usr/include/factory r""" Noncommutative Polynomials via libSINGULAR/Plural diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx ---- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2021-05-28 11:18:15.139457600 -0600 +--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2022-03-04 16:05:03.944464837 -0700 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -169,8 +161,8 @@ diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/ring Univariate polynomials over `\CC` with interval coefficients using Arb. diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx ---- src/sage/rings/real_arb.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/real_arb.pyx 2021-05-28 11:18:15.140457600 -0600 +--- src/sage/rings/real_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/real_arb.pyx 2022-03-04 16:05:03.945464839 -0700 @@ -1,4 +1,5 @@ # -*- coding: utf-8 +# distutils: include_dirs = /usr/include/arb /usr/include/flint @@ -178,8 +170,8 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx Arbitrary precision real balls using Arb diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py ---- src/sage_setup/command/sage_build_cython.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage_setup/command/sage_build_cython.py 2021-05-28 12:09:14.113657210 -0600 +--- src/sage_setup/command/sage_build_cython.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage_setup/command/sage_build_cython.py 2022-03-04 16:05:03.945464839 -0700 @@ -209,6 +209,7 @@ class sage_build_cython(Command): self.library_order = library_order # Search for dependencies in the source tree and add to the list of include directories diff --git a/sagemath-flexiblas.patch b/sagemath-flexiblas.patch index 8c05e9b..fb94948 100644 --- a/sagemath-flexiblas.patch +++ b/sagemath-flexiblas.patch @@ -1,7 +1,7 @@ diff -up configure.orig configure ---- configure.orig 2021-08-22 02:45:52.000000000 -0600 -+++ configure 2021-08-26 13:40:30.029000877 -0600 -@@ -12703,12 +12703,12 @@ if test -n "$OPENBLAS_CFLAGS"; then +--- 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 pkg_cv_OPENBLAS_CFLAGS="$OPENBLAS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ @@ -17,7 +17,7 @@ diff -up configure.orig configure test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -12720,12 +12720,12 @@ if test -n "$OPENBLAS_LIBS"; then +@@ -16243,12 +16243,12 @@ if test -n "$OPENBLAS_LIBS"; then pkg_cv_OPENBLAS_LIBS="$OPENBLAS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ @@ -33,7 +33,7 @@ diff -up configure.orig configure test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -12746,9 +12746,9 @@ else +@@ -16269,9 +16269,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then @@ -45,7 +45,7 @@ diff -up configure.orig configure fi # Put the nasty error message in config.log where it belongs echo "$OPENBLAS_PKG_ERRORS" >&5 -@@ -12776,16 +12776,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ +@@ -16299,16 +16299,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif @@ -65,7 +65,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -12835,22 +12835,22 @@ else +@@ -16358,22 +16358,22 @@ else /* end confdefs.h. */ #include @@ -95,7 +95,7 @@ diff -up configure.orig configure return 1; ; return 0; -@@ -12903,7 +12903,7 @@ return cblas_dgemm (); +@@ -16426,7 +16426,7 @@ return cblas_dgemm (); return 0; } _ACEOF @@ -104,7 +104,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -12967,7 +12967,7 @@ return dgeqrf (); +@@ -16490,7 +16490,7 @@ return dgeqrf (); return 0; } _ACEOF @@ -113,7 +113,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13031,7 +13031,7 @@ return dgeqrf_ (); +@@ -16554,7 +16554,7 @@ return dgeqrf_ (); return 0; } _ACEOF @@ -122,7 +122,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13095,7 +13095,7 @@ return DGEQRF (); +@@ -16618,7 +16618,7 @@ return DGEQRF (); return 0; } _ACEOF @@ -131,7 +131,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13159,7 +13159,7 @@ return DGEQRF_ (); +@@ -16682,7 +16682,7 @@ return DGEQRF_ (); return 0; } _ACEOF @@ -140,7 +140,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13247,16 +13247,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ +@@ -16770,16 +16770,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif @@ -160,7 +160,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13306,22 +13306,22 @@ else +@@ -16829,22 +16829,22 @@ else /* end confdefs.h. */ #include @@ -190,7 +190,7 @@ diff -up configure.orig configure return 1; ; return 0; -@@ -13374,7 +13374,7 @@ return cblas_dgemm (); +@@ -16897,7 +16897,7 @@ return cblas_dgemm (); return 0; } _ACEOF @@ -199,7 +199,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13438,7 +13438,7 @@ return dgeqrf (); +@@ -16961,7 +16961,7 @@ return dgeqrf (); return 0; } _ACEOF @@ -208,7 +208,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13502,7 +13502,7 @@ return dgeqrf_ (); +@@ -17025,7 +17025,7 @@ return dgeqrf_ (); return 0; } _ACEOF @@ -217,7 +217,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13566,7 +13566,7 @@ return DGEQRF (); +@@ -17089,7 +17089,7 @@ return DGEQRF (); return 0; } _ACEOF @@ -226,7 +226,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13630,7 +13630,7 @@ return DGEQRF_ (); +@@ -17153,7 +17153,7 @@ return DGEQRF_ (); return 0; } _ACEOF @@ -235,7 +235,7 @@ diff -up configure.orig configure if test -z "$ac_lib"; then ac_res="none required" else -@@ -13705,12 +13705,12 @@ if test -n "$OPENBLASPCDIR"; then +@@ -17228,12 +17228,12 @@ if test -n "$OPENBLASPCDIR"; then pkg_cv_OPENBLASPCDIR="$OPENBLASPCDIR" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ @@ -251,7 +251,7 @@ diff -up configure.orig configure test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes -@@ -13925,7 +13925,7 @@ fi +@@ -17448,7 +17448,7 @@ fi if test x$sage_spkg_install_openblas != xyes; then : @@ -261,18 +261,18 @@ diff -up configure.orig configure if test x$sage_install_blas_pc = xyes; then : diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2021-08-26 13:39:46.040938448 -0600 -+++ src/sage/env.py 2021-08-26 13:40:30.029000877 -0600 -@@ -212,7 +212,7 @@ MAXIMA_FAS = var("MAXIMA_FAS") - KENZO_FAS = var("KENZO_FAS") - SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "") +--- 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") + FOURTITWO_CIRCUITS = var("FOURTITWO_CIRCUITS") + FOURTITWO_GROEBNER = var("FOURTITWO_GROEBNER") ARB_LIBRARY = var("ARB_LIBRARY", "arb") -CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "cblas:openblas:blas") +CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "flexiblas:cblas:openblas:blas") ECL_CONFIG = var("ECL_CONFIG", "ecl-config") NTL_INCDIR = var("NTL_INCDIR") NTL_LIBDIR = var("NTL_LIBDIR") -@@ -456,7 +456,7 @@ def cython_aliases(required_modules=('ff +@@ -467,7 +467,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-infinite-recursion.patch b/sagemath-infinite-recursion.patch new file mode 100644 index 0000000..4a8d0df --- /dev/null +++ b/sagemath-infinite-recursion.patch @@ -0,0 +1,22 @@ +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-disabled-reftypes.patch b/sagemath-intersphinx-disabled-reftypes.patch new file mode 100644 index 0000000..f80e600 --- /dev/null +++ b/sagemath-intersphinx-disabled-reftypes.patch @@ -0,0 +1,17 @@ +Fix this error: + +[polynomia] updating environment: [new config] 62 added, 0 changed, 0 removed +[polynomia] Extension error (sage.docs.conf): +[polynomia] Handler for event 'missing-reference' threw an exception (exception: No such config value: intersphinx_disabled_reftypes) + +diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py +--- src/sage/docs/conf.py.orig 2022-03-04 16:33:15.479009340 -0700 ++++ src/sage/docs/conf.py 2022-03-06 18:49:34.742628130 -0700 +@@ -910,6 +910,7 @@ def setup(app): + if app.srcdir.startswith(SAGE_DOC_SRC): + app.add_config_value('intersphinx_mapping', {}, False) + app.add_config_value('intersphinx_cache_limit', 5, False) ++ app.add_config_value('intersphinx_disabled_reftypes', [], False) + app.connect('config-inited', set_intersphinx_mappings) + app.connect('builder-inited', intersphinx.load_mappings) + # We do *not* fully initialize intersphinx since we call it by hand diff --git a/sagemath-primecount.patch b/sagemath-primecount.patch deleted file mode 100644 index 982ec73..0000000 --- a/sagemath-primecount.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -up src/sage/libs/primecount.pxd.orig src/sage/libs/primecount.pxd ---- src/sage/libs/primecount.pxd.orig 2020-10-24 11:37:59.000000000 -0600 -+++ src/sage/libs/primecount.pxd 2020-10-30 16:41:47.431983226 -0600 -@@ -17,6 +17,5 @@ cdef extern from "primecount.hpp" namesp - int get_num_threads() - - cppstring get_max_x() -- cppstring get_max_x(double alpha) - - cppstring primecount_version() diff --git a/sagemath-python3.patch b/sagemath-python3.patch index 866ecb4..0e47fce 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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/cpython/debugimpl.c 2021-05-28 11:39:54.261578894 -0600 +--- src/sage/cpython/debugimpl.c.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/cpython/debugimpl.c 2022-03-04 16:16:45.900676037 -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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/cpython/debug.pyx 2021-05-28 11:39:54.261578894 -0600 +--- src/sage/cpython/debug.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/cpython/debug.pyx 2022-03-04 16:16:45.900676037 -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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/geometry/triangulation/point_configuration.py 2021-05-28 11:39:54.263578895 -0600 -@@ -618,11 +618,11 @@ class PointConfiguration(UniqueRepresent +--- src/sage/geometry/triangulation/point_configuration.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/geometry/triangulation/point_configuration.py 2022-03-04 16:16:45.901676039 -0700 +@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ timeout = 600 @@ -54,8 +54,8 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge if verbose: print("#### TOPCOM input ####") diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py ---- src/sage/interfaces/frobby.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/frobby.py 2021-05-28 11:39:54.264578894 -0600 +--- src/sage/interfaces/frobby.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/interfaces/frobby.py 2022-03-04 16:16:45.901676039 -0700 @@ -78,7 +78,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) @@ -66,8 +66,8 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py frinput = str_to_bytes(input) else: diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py ---- src/sage/interfaces/gfan.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/gfan.py 2021-05-28 11:39:54.264578894 -0600 +--- src/sage/interfaces/gfan.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/interfaces/gfan.py 2022-03-04 16:16:45.901676039 -0700 @@ -61,7 +61,7 @@ class Gfan(object): print("gfan input:\n%s" % I) @@ -78,8 +78,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py # sometimes, gfan outputs stuff to stderr even though everything is fine diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ---- src/sage/interfaces/latte.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/latte.py 2021-05-28 11:39:54.265578894 -0600 +--- src/sage/interfaces/latte.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/interfaces/latte.py 2022-03-04 16:16:45.901676039 -0700 @@ -162,6 +162,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, @@ -97,8 +97,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ans, err = latte_proc.communicate(arg) diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx ---- src/sage/interfaces/sagespawn.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/sagespawn.pyx 2021-05-28 11:39:54.266578895 -0600 +--- src/sage/interfaces/sagespawn.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/interfaces/sagespawn.pyx 2022-03-04 16:16:45.902676041 -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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/libs/coxeter3/coxeter.pyx 2021-05-28 11:39:54.267578895 -0600 +--- src/sage/libs/coxeter3/coxeter.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/libs/coxeter3/coxeter.pyx 2022-03-04 16:16:45.902676041 -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 2021-05-28 11:01:40.384274506 -0600 -+++ src/sage/misc/sageinspect.py 2021-05-28 11:39:54.269578895 -0600 -@@ -462,12 +462,9 @@ class SageArgSpecVisitor(ast.NodeVisitor +--- src/sage/misc/sageinspect.py.orig 2022-03-04 15:50:57.336269352 -0700 ++++ src/sage/misc/sageinspect.py 2022-03-04 16:19:08.779910689 -0700 +@@ -504,12 +504,9 @@ class SageArgSpecVisitor(ast.NodeVisitor """ return node.id @@ -300,96 +300,27 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py INPUT: -@@ -475,17 +472,21 @@ class SageArgSpecVisitor(ast.NodeVisitor +@@ -523,7 +520,7 @@ class SageArgSpecVisitor(ast.NodeVisitor - OUTPUT: - -- - None, True, False. -+ - the boolean, number, or string the ``node`` represents - - EXAMPLES:: - -- sage: import ast, sage.misc.sageinspect as sms # py3 -- sage: visitor = sms.SageArgSpecVisitor() # py3 -- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) # py3 -- sage: [vis(n) for n in ['True', 'False', 'None']] # py3 -+ sage: import ast, sage.misc.sageinspect as sms -+ sage: visitor = sms.SageArgSpecVisitor() + sage: import ast, sage.misc.sageinspect as sms + sage: visitor = sms.SageArgSpecVisitor() +- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) + sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value) -+ sage: [vis(n) for n in ['True', 'False', 'None']] + sage: [vis(n) for n in ['True', 'False', 'None']] [True, False, None] -- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3 -+ sage: [type(vis(n)) for n in ['True', 'False', 'None']] - [, , ] -+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']] -+ ['abstract', u'syntax', 'tr\\ee'] -+ sage: [vis(n) for n in ['123', '0.0']] -+ [123, 0.0] - """ - - return node.value -@@ -519,57 +520,6 @@ class SageArgSpecVisitor(ast.NodeVisitor - """ - return node.arg - -- def visit_Num(self, node): -- """ -- Visit a Python AST :class:`ast.Num` node. -- -- INPUT: -- -- - ``node`` - the node instance to visit -- -- OUTPUT: -- -- - the number the ``node`` represents -- -- EXAMPLES:: -- -- sage: import ast, sage.misc.sageinspect as sms -- sage: visitor = sms.SageArgSpecVisitor() -- sage: vis = lambda x: visitor.visit_Num(ast.parse(x).body[0].value) -- sage: [vis(n) for n in ['123', '0.0', str(-pi.n())]] # py2 -- [123, 0.0, -3.14159265358979] -- sage: [vis(n) for n in ['123', '0.0']] # py3 -- [123, 0.0] -- -- .. NOTE:: -- -- On Python 3 negative numbers are parsed first, for some reason, as -- a UnaryOp node. -- """ -- return node.n -- -- def visit_Str(self, node): -- r""" -- Visit a Python AST :class:`ast.Str` node. -- -- INPUT: -- -- - ``node`` - the node instance to visit -- -- OUTPUT: -- -- - the string the ``node`` represents -- -- EXAMPLES:: -- -- sage: import ast, sage.misc.sageinspect as sms -- sage: visitor = sms.SageArgSpecVisitor() -- sage: vis = lambda x: visitor.visit_Str(ast.parse(x).body[0].value) -- sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']] -- ['abstract', u'syntax', 'tr\\ee'] -- """ -- return node.s -- - def visit_List(self, node): - """ - Visit a Python AST :class:`ast.List` node. + 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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/plot/plot3d/plot3d.py 2021-05-28 11:39:54.270578895 -0600 -@@ -185,7 +185,7 @@ class _Coordinates(object): +--- src/sage/plot/plot3d/plot3d.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/plot/plot3d/plot3d.py 2022-03-06 19:41:13.399013881 -0700 +@@ -148,6 +148,7 @@ from .shapes import arrow3d + from .base import Graphics3dGroup + from sage.plot.colors import rainbow + from .texture import Texture ++import inspect + + from sage.functions.trig import cos, sin + from sage.misc.sageinspect import sage_getargspec, is_function_or_cython_function +@@ -182,7 +183,7 @@ class _Coordinates(object): sage: arb((x+z,y*z,z), z, (x,y)) Arbitrary Coordinates coordinate transform (z in terms of x, y) """ @@ -399,9 +330,9 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) self.dep_var = dep_var diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx ---- src/sage/rings/integer.pyx.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/integer.pyx 2021-05-28 11:39:54.274578895 -0600 -@@ -7089,7 +7089,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c +--- src/sage/rings/integer.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/integer.pyx 2022-03-04 16:16:45.904676044 -0700 +@@ -7023,7 +7023,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c x += 1 # Strip spaces # Disallow a sign here @@ -411,9 +342,9 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx 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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/polynomial/pbori/pbori.pyx 2021-05-28 11:39:54.278578895 -0600 -@@ -4704,8 +4704,7 @@ cdef class PolynomialConstruct: +--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/polynomial/pbori/pbori.pyx 2022-03-04 16:16:45.905676046 -0700 +@@ -4730,8 +4730,7 @@ cdef class PolynomialConstruct: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) @@ -424,9 +355,9 @@ 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 2021-05-28 11:01:45.006275360 -0600 -+++ src/sage/rings/real_mpfi.pyx 2021-05-28 11:39:54.280578896 -0600 -@@ -1944,12 +1944,12 @@ cdef class RealIntervalFieldElement(Ring +--- src/sage/rings/real_mpfi.pyx.orig 2022-03-04 15:50:57.348269369 -0700 ++++ src/sage/rings/real_mpfi.pyx 2022-03-04 16:16:45.905676046 -0700 +@@ -1943,12 +1943,12 @@ cdef class RealIntervalFieldElement(Ring cdef long digits digits = strlen(lower_s) @@ -441,7 +372,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx digits -= 1 upper_expo -= digits -@@ -2118,7 +2118,7 @@ cdef class RealIntervalFieldElement(Ring +@@ -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) @@ -451,9 +382,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx 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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/rings/real_mpfr.pyx 2021-05-28 11:39:54.283578896 -0600 -@@ -2095,7 +2095,7 @@ cdef class RealNumber(sage.structure.ele +--- src/sage/rings/real_mpfr.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/rings/real_mpfr.pyx 2022-03-04 16:16:45.906676047 -0700 +@@ -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) @@ -463,9 +394,9 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx 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 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/structure/sage_object.pyx 2021-05-28 11:39:54.284578896 -0600 -@@ -688,7 +688,7 @@ cdef class SageObject: +--- src/sage/structure/sage_object.pyx.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/structure/sage_object.pyx 2022-03-04 16:16:45.906676047 -0700 +@@ -690,7 +690,7 @@ cdef class SageObject: try: s = self._interface_init_(I) except Exception: @@ -475,9 +406,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object. if c: try: diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2021-05-28 11:01:45.016275362 -0600 -+++ src/sage/symbolic/expression.pyx 2021-05-28 11:39:54.289578896 -0600 -@@ -13201,7 +13201,7 @@ cdef class hold_class: +--- src/sage/symbolic/expression.pyx.orig 2022-03-04 16:01:04.179126250 -0700 ++++ src/sage/symbolic/expression.pyx 2022-03-04 16:16:45.908676050 -0700 +@@ -14016,7 +14016,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ @@ -486,7 +417,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx def __exit__(self, *args): """ -@@ -13214,7 +13214,7 @@ cdef class hold_class: +@@ -14029,7 +14029,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ diff --git a/sagemath-qepcad.patch b/sagemath-qepcad.patch index 63cddee..fb68570 100644 --- a/sagemath-qepcad.patch +++ b/sagemath-qepcad.patch @@ -1,14 +1,14 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py ---- src/sage/interfaces/qepcad.py.orig 2021-05-09 16:00:11.000000000 -0600 -+++ src/sage/interfaces/qepcad.py 2021-05-28 11:52:46.749626841 -0600 +--- 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 @@ -530,7 +530,7 @@ TESTS: Check the qepcad configuration file:: -- sage: with open(os.path.join(SAGE_LOCAL, 'default.qepcadrc')) as f: # optional - qepcad -+ sage: with open('/usr/share/qepcad/default.qepcadrc')) as f: # optional - qepcad +- sage: with open(os.path.join(SAGE_LOCAL, 'etc', 'default.qepcadrc')) as f: # optional - qepcad ++ sage: with open(os.path.join('/usr/share/qepcad/default.qepcadrc')) as f: # optional - qepcad ....: f.readlines()[-1] - 'SINGULAR .../bin\n' + 'SINGULAR yes\n' @@ -605,7 +605,6 @@ AUTHORS: # http://www.gnu.org/licenses/ @@ -52,7 +52,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py cache = {} -- with open(os.path.join(SAGE_LOCAL, 'bin', 'qepcad.help')) as help: +- 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() == '@') diff --git a/sagemath-sagedoc.patch b/sagemath-sagedoc.patch index 1835eef..d391959 100644 --- a/sagemath-sagedoc.patch +++ b/sagemath-sagedoc.patch @@ -1,6 +1,6 @@ diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py ---- src/sage_docbuild/ext/multidocs.py.orig 2021-08-22 02:44:34.000000000 -0600 -+++ src/sage_docbuild/ext/multidocs.py 2021-08-26 13:11:24.937824557 -0600 +--- src/sage_docbuild/ext/multidocs.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage_docbuild/ext/multidocs.py 2022-03-04 16:08:42.795455456 -0700 @@ -84,8 +84,11 @@ def merge_environment(app, env): for ind in newalldoc: # treat subdocument source as orphaned file and don't complain @@ -16,15 +16,15 @@ diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs newcite = {} for ind, (path, tag, lineno) in citations.items(): diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py ---- src/sage/interfaces/singular.py.orig 2021-08-26 13:11:24.940824561 -0600 -+++ src/sage/interfaces/singular.py 2021-08-26 13:17:49.831262334 -0600 -@@ -2370,11 +2370,11 @@ def generate_docstring_dictionary(): +--- src/sage/interfaces/singular.py.orig 2022-01-30 06:41:50.000000000 -0700 ++++ src/sage/interfaces/singular.py 2022-03-04 16:09:20.555418442 -0700 +@@ -2330,11 +2330,11 @@ def generate_docstring_dictionary(): L, in_node, curr_node = [], False, None - from sage.libs.singular.singular import get_resource - singular_info_file = get_resource('i') -+ singular_info_file = '/usr/share/info/singular.hlp.gz' ++ singular_info_file = '/usr/share/info/singular.info.gz' # singular.hlp contains a few iso-8859-1 encoded special characters - with io.open(singular_info_file, diff --git a/sagemath-use-after-free.patch b/sagemath-use-after-free.patch new file mode 100644 index 0000000..da5dcef --- /dev/null +++ b/sagemath-use-after-free.patch @@ -0,0 +1,19 @@ +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.rpmlintrc b/sagemath.rpmlintrc deleted file mode 100644 index 5eea409..0000000 --- a/sagemath.rpmlintrc +++ /dev/null @@ -1,21 +0,0 @@ -# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON -# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors - -# The dictionary is missing some technical terms -addFilter(r'W: spelling-error .* (Extcode|iteratively|polytopes?|pre)') - -# The Requires ensure the symlinks will not dangle -addFilter(r'W: dangling-symlink') - -# This file is incorrectly detected as a devel file -addFilter(r'W: devel-file-in-non-devel-package .*sage-env-config') - -# objects.inv files are not text -addFilter(r'W: file-not-utf8 .*objects\.inv') -addFilter(r'W: wrong-file-end-of-line-encoding .*objects\.inv') - -# This file uses no symbols from glibc -addFilter(r'E: library-not-linked-against-libc .*/bit_vector_operations/cc\.cpython-38-x86_64-linux-gnu\.so') - -# Documentation is in the -doc subpackages -addFilter(r'W: no-documentation') diff --git a/sagemath.spec b/sagemath.spec index f474cfc..06673d0 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -41,9 +41,9 @@ %global elliptic_curves_pkg elliptic_curves-0.8.1 %global graphs_pkg graphs-20210214 %if %{with bundled_ipython} -%global ipython_ver 7.16.1 +%global ipython_ver 7.29.0 %global ipython_pkg ipython-%{ipython_ver} -%global prompt_toolkit_ver 3.0.5 +%global prompt_toolkit_ver 3.0.22 %global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver} %endif %if %{with bundled_jupyter_jsmol} @@ -51,7 +51,7 @@ %global jupyter_jsmol_pkg jupyter_jsmol-%{jupyter_jsmol_ver} %endif %if %{with bundled_memory_allocator} -%global memory_allocator_ver 0.1.0 +%global memory_allocator_ver 0.1.1 %global memory_allocator_pkg memory_allocator-%{memory_allocator_ver} %endif %if %{with bundled_pexpect} @@ -59,8 +59,8 @@ %endif %global polytopes_db_pkg polytopes_db-20170220 %global sagetex_pkg sagetex-3.5 -%global Sphinx_pkg Sphinx-4.0.1 -%global singular_pkg singular-4.2.0p3 +%global Sphinx_pkg Sphinx-4.2.0 +%global singular_pkg singular-4.2.1p3 %if %{with bundled_thebe} %global thebe_ver 9624e0a0 %global thebe_pkg thebe-%{thebe_ver} @@ -71,7 +71,7 @@ %endif # Spkg equivalents of required rpms; we pretend they are installed as spkgs. -%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 CoCoALib-0.99713 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.1 libsirocco-2.1.0 lrslib-071b mcqd-1.0 meataxe-1.0 primecount-7.1 qepcad-B.1.74 saclib-2.2.8 surf-1.0.6-gcc6 tdlib-0.9.1 +%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.77 CoCoALib-0.99718 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.1 libsirocco-2.1.0 lrslib-071b mcqd-1.0.0 meataxe-1.0 primecount-7.2 qepcad-B.1.74 saclib-2.2.8 surf-1.0.6-gcc6 tdlib-0.9.2 %ifarch %{ix86} x86_64 %global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2 @@ -88,8 +88,8 @@ Name: sagemath Summary: A free open-source mathematics software system -Version: 9.4 -Release: 3%{?dist} +Version: 9.5 +Release: 1%{?dist} # The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file # Additionally, every $files section has a comment with the license name # before files with that license @@ -128,64 +128,68 @@ Patch4: %{name}-rpmbuild.patch Patch5: %{name}-sagedoc.patch # work with all maxima-runtime lisp backend packages -Patch7: %{name}-maxima.patch - -# execute 4ti2 programs in $PATH not in $SAGE_ROOT/local/bin -Patch8: %{name}-4ti2.patch +Patch6: %{name}-maxima.patch # use jmol itself to export preview images # FIXME besides not using X and told so, fails if DISPLAY is not set -Patch9: %{name}-jmol.patch +Patch7: %{name}-jmol.patch # tell the user how to install the large Cremona database # add a missing commit() that causes large database construction to fail -Patch10: %{name}-cremona.patch +Patch8: %{name}-cremona.patch # adapt to python 3 and cython running in python 3 mode -Patch11: %{name}-python3.patch +Patch9: %{name}-python3.patch # remove the buildroot path from Cython output -Patch12: %{name}-buildroot.patch +Patch10: %{name}-buildroot.patch # update c++ standard to fix FTBFS -Patch13: %{name}-lcalc.patch +Patch11: %{name}-lcalc.patch # Use system gap directories and modernize libgap interface -Patch14: %{name}-libgap.patch +Patch12: %{name}-libgap.patch # Build fes -Patch15: %{name}-fes-build.patch +Patch13: %{name}-fes-build.patch # Side effect of using distro packages # https://bugzilla.redhat.com/show_bug.cgi?id=974769 -Patch16: %{name}-env.patch +Patch14: %{name}-env.patch # Correct unable to start QEPCAD within sage # https://bugzilla.redhat.com/show_bug.cgi?id=1243590 -Patch17: %{name}-qepcad.patch +Patch15: %{name}-qepcad.patch # Make the cvxopt backend check for 'optimal' as well as 'optimized' -Patch18: %{name}-cvxopt.patch +Patch16: %{name}-cvxopt.patch # Use flexiblas -Patch19: %{name}-flexiblas.patch +Patch17: %{name}-flexiblas.patch # Fix paths to latte-integrale binaries -Patch20: %{name}-latte.patch +Patch18: %{name}-latte.patch # Change rubiks binary names to match Fedora -Patch21: %{name}-rubiks.patch +Patch19: %{name}-rubiks.patch # Adapt to recent tdlib 0.9 -Patch22: %{name}-tdlib.patch +Patch20: %{name}-tdlib.patch # Use local objects.inv for intersphinx since no network on koji builders -Patch23: %{name}-intersphinx.patch +Patch21: %{name}-intersphinx.patch -# Remove an unused call to a primecount function that no longer exists -Patch24: %{name}-primecount.patch +# Fix a typo that leads to infinite recursion +Patch22: %{name}-infinite-recursion.patch + +# Fix a use-after-free bug +Patch23: %{name}-use-after-free.patch + +# Add a missing Sphinx config value +Patch24: %{name}-intersphinx-disabled-reftypes.patch BuildRequires: 4ti2 +BuildRequires: 4ti2-devel BuildRequires: appstream BuildRequires: arb-devel BuildRequires: bc @@ -207,18 +211,22 @@ BuildRequires: ecl %if %{with fes} BuildRequires: fes-devel %endif +BuildRequires: ffmpeg-free BuildRequires: flexiblas-devel BuildRequires: flint-devel BuildRequires: flintqs +BuildRequires: fonttools BuildRequires: gap-devel BuildRequires: gap-pkg-aclib BuildRequires: gap-pkg-alnuth BuildRequires: gap-pkg-atlasrep +BuildRequires: gap-pkg-autodoc BuildRequires: gap-pkg-autpgrp BuildRequires: gap-pkg-cohomolo BuildRequires: gap-pkg-corelg BuildRequires: gap-pkg-crime BuildRequires: gap-pkg-crisp +BuildRequires: gap-pkg-cryst BuildRequires: gap-pkg-crystcat BuildRequires: gap-pkg-ctbllib BuildRequires: gap-pkg-design @@ -227,15 +235,17 @@ BuildRequires: gap-pkg-factint BuildRequires: gap-pkg-fga BuildRequires: gap-pkg-gbnp BuildRequires: gap-pkg-genss -BuildRequires: gap-pkg-grape BuildRequires: gap-pkg-guava +BuildRequires: gap-pkg-hap BuildRequires: gap-pkg-hapcryst BuildRequires: gap-pkg-hecke +BuildRequires: gap-pkg-images BuildRequires: gap-pkg-irredsol BuildRequires: gap-pkg-jupyterkernel BuildRequires: gap-pkg-laguna BuildRequires: gap-pkg-liealgdb BuildRequires: gap-pkg-liepring +BuildRequires: gap-pkg-liering BuildRequires: gap-pkg-loops BuildRequires: gap-pkg-lpres BuildRequires: gap-pkg-mapclass @@ -259,6 +269,7 @@ BuildRequires: gcc-gfortran BuildRequires: gcc-objc BuildRequires: gcc-objc++ BuildRequires: gdb +BuildRequires: gengetopt BuildRequires: gfan BuildRequires: giac-devel BuildRequires: giac-doc @@ -302,6 +313,7 @@ BuildRequires: pari-galpol BuildRequires: pari-gp BuildRequires: pari-nftables BuildRequires: pari-seadata +BuildRequires: pdf2svg BuildRequires: perl-generators BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: perl(File::Slurp) @@ -310,11 +322,15 @@ BuildRequires: pkgconfig(cbc) BuildRequires: pkgconfig(eclib) BuildRequires: pkgconfig(factory) BuildRequires: pkgconfig(fplll) +BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gdlib) BuildRequires: pkgconfig(gf2x) BuildRequires: pkgconfig(gsl) BuildRequires: pkgconfig(igraph) +BuildRequires: pkgconfig(isl) +BuildRequires: pkgconfig(libavdevice) BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(libgvc) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libsemigroups) BuildRequires: pkgconfig(libzmq) @@ -323,14 +339,15 @@ BuildRequires: pkgconfig(m4ri) BuildRequires: pkgconfig(m4rie) BuildRequires: pkgconfig(nauty) BuildRequires: pkgconfig(openssl) -BuildRequires: pkgconfig(pynac) +BuildRequires: pkgconfig(primecount) +BuildRequires: pkgconfig(primesieve) BuildRequires: pkgconfig(readline) BuildRequires: pkgconfig(Singular) BuildRequires: pkgconfig(tk) BuildRequires: pkgconfig(zlib) BuildRequires: planarity-devel +BuildRequires: polymake BuildRequires: ppl-devel -BuildRequires: primecount-devel BuildRequires: python3-devel BuildRequires: python3-docs BuildRequires: python3-cypari2-devel @@ -342,20 +359,29 @@ BuildRequires: python3-pillow-devel BuildRequires: python3-pplpy-devel BuildRequires: python3-tdlib-devel BuildRequires: python3-tkinter +BuildRequires: pythran +BuildRequires: %{py3_dist argcomplete} BuildRequires: %{py3_dist argon2-cffi} %if %{with bundled_ipython} BuildRequires: %{py3_dist backcall} %endif +BuildRequires: %{py3_dist beniget} BuildRequires: %{py3_dist brial} +BuildRequires: %{py3_dist charset-normalizer} +BuildRequires: %{py3_dist cppy} BuildRequires: %{py3_dist cvxopt} BuildRequires: %{py3_dist cython} BuildRequires: %{py3_dist docutils} +BuildRequires: %{py3_dist flit-core} BuildRequires: %{py3_dist fpylll} +BuildRequires: %{py3_dist gast} BuildRequires: %{py3_dist gmpy2} %if %{with sphinx_hack} BuildRequires: %{py3_dist html5lib} BuildRequires: %{py3_dist imagesize} %endif +BuildRequires: %{py3_dist idna} +BuildRequires: %{py3_dist importlib-metadata} BuildRequires: %{py3_dist ipykernel} %if %{without bundled_ipython} BuildRequires: %{py3_dist ipython} @@ -364,8 +390,14 @@ BuildRequires: %{py3_dist ipywidgets} %if %{with bundled_ipython} BuildRequires: %{py3_dist jedi} %endif +BuildRequires: %{py3_dist jupyterlab-pygments} BuildRequires: %{py3_dist kiwisolver} BuildRequires: %{py3_dist matplotlib} +BuildRequires: %{py3_dist matplotlib-inline} +BuildRequires: %{py3_dist nbclient} +BuildRequires: %{py3_dist nbconvert} +BuildRequires: %{py3_dist nbformat} +BuildRequires: %{py3_dist nest-asyncio} BuildRequires: %{py3_dist networkx} BuildRequires: %{py3_dist notebook} BuildRequires: %{py3_dist pari-jupyter} @@ -381,7 +413,8 @@ BuildRequires: %{py3_dist pickleshare} BuildRequires: %{py3_dist pip} BuildRequires: %{py3_dist pkgconfig} BuildRequires: %{py3_dist pluggy} -BuildRequires: %{py3_dist psutil} +BuildRequires: %{py3_dist ply} +BuildRequires: %{py3_dist primecountpy} BuildRequires: %{py3_dist ptyprocess} BuildRequires: %{py3_dist py} BuildRequires: %{py3_dist pycryptosat} @@ -394,6 +427,7 @@ BuildRequires: %{py3_dist scipy} BuildRequires: %{py3_dist scons} BuildRequires: %{py3_dist setuptools} BuildRequires: %{py3_dist setuptools_scm} +BuildRequires: %{py3_dist setuptools_scm_git_archive} %if %{with bundled_ipython} BuildRequires: %{py3_dist simplegeneric} %endif @@ -401,12 +435,15 @@ BuildRequires: %{py3_dist six} BuildRequires: %{py3_dist sphinx} BuildRequires: %{py3_dist sympy} BuildRequires: %{py3_dist toml} +BuildRequires: %{py3_dist tomli} BuildRequires: %{py3_dist tox} BuildRequires: %{py3_dist typing-extensions} +BuildRequires: %{py3_dist urllib3} BuildRequires: %{py3_dist wheel} BuildRequires: %{py3_dist widgetsnbextension} BuildRequires: %{py3_dist zodb3} BuildRequires: qepcad-B +BuildRequires: qhull BuildRequires: R BuildRequires: ratpoints-devel BuildRequires: rubiks @@ -426,7 +463,6 @@ BuildRequires: tex(makecmds.sty) BuildRequires: web-assets-devel BuildRequires: xorg-x11-fonts-Type1 BuildRequires: xorg-x11-server-Xvfb -BuildRequires: yasm-devel BuildRequires: zn_poly-devel Requires: hicolor-icon-theme @@ -462,11 +498,13 @@ Requires: gap Requires: gap-pkg-aclib Requires: gap-pkg-alnuth Requires: gap-pkg-atlasrep +Requires: gap-pkg-autodoc Requires: gap-pkg-autpgrp Requires: gap-pkg-cohomolo Requires: gap-pkg-corelg Requires: gap-pkg-crime Requires: gap-pkg-crisp +Requires: gap-pkg-cryst Requires: gap-pkg-crystcat Requires: gap-pkg-ctbllib Requires: gap-pkg-design @@ -475,15 +513,17 @@ Requires: gap-pkg-factint Requires: gap-pkg-fga Requires: gap-pkg-gbnp Requires: gap-pkg-genss -Requires: gap-pkg-grape Requires: gap-pkg-guava +Requires: gap-pkg-hap Requires: gap-pkg-hapcryst Requires: gap-pkg-hecke +Requires: gap-pkg-images Requires: gap-pkg-irredsol Requires: gap-pkg-jupyterkernel Requires: gap-pkg-laguna Requires: gap-pkg-liealgdb Requires: gap-pkg-liepring +Requires: gap-pkg-liering Requires: gap-pkg-loops Requires: gap-pkg-lpres Requires: gap-pkg-mapclass @@ -522,21 +562,29 @@ Requires: pari-gp Requires: pari-nftables Requires: pari-seadata Requires: python3-tdlib +Requires: %{py3_dist argcomplete} %if %{with bundled_ipython} Requires: %{py3_dist backcall} %endif +Requires: %{py3_dist beniget} Requires: %{py3_dist brial} +Requires: %{py3_dist charset-normalizer} +Requires: %{py3_dist cppy} Requires: %{py3_dist cypari2} Requires: %{py3_dist cysignals} Requires: %{py3_dist cvxopt} Requires: %{py3_dist cython} Requires: %{py3_dist docutils} +Requires: %{py3_dist flit-core} Requires: %{py3_dist fpylll} +Requires: %{py3_dist gast} Requires: %{py3_dist gmpy2} %if %{with sphinx_hack} Requires: %{py3_dist html5lib} Requires: %{py3_dist imagesize} %endif +Requires: %{py3_dist idna} +Requires: %{py3_dist importlib-metadata} Requires: %{py3_dist ipykernel} %if %{without bundled_ipython} Requires: %{py3_dist ipython} @@ -546,6 +594,10 @@ Requires: %{py3_dist ipywidgets} Requires: %{py3_dist jedi} %endif Requires: %{py3_dist matplotlib} +Requires: %{py3_dist nbclient} +Requires: %{py3_dist nbconvert} +Requires: %{py3_dist nbformat} +Requires: %{py3_dist nest-asyncio} Requires: %{py3_dist networkx} %if %{with bundled_ipython} Requires: %{py3_dist path.py} @@ -557,7 +609,7 @@ Requires: %{py3_dist pexpect} Requires: %{py3_dist pickleshare} %endif Requires: %{py3_dist pplpy} -Requires: %{py3_dist psutil} +Requires: %{py3_dist primecountpy} Requires: %{py3_dist ptyprocess} Requires: %{py3_dist pycryptosat} %if %{with bundled_ipython} @@ -571,6 +623,7 @@ Requires: %{py3_dist simplegeneric} Requires: %{py3_dist six} Requires: %{py3_dist sphinx} Requires: %{py3_dist sympy} +Requires: %{py3_dist urllib3} Requires: %{py3_dist zodb3} Requires: qepcad-B Requires: Singular @@ -588,6 +641,10 @@ Provides: bundled(jupyter-jsmol) = %{jupyter_jsmol_ver} Provides: bundled(memory-allocator) = %{memory_allocator_ver} %endif +# This can be removed when Fedora 40 reaches EOL +Obsoletes: pynac < 0.7.29-3 +Obsoletes: pynac-devel < 0.7.29-3 + %description core This package contains the core sagemath python modules. @@ -774,6 +831,8 @@ Summary: Jupyter integration for sagemath Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python-jupyter-filesystem Requires: %{py3_dist argon2-cffi} +Requires: %{py3_dist jupyterlab-pygments} +Requires: %{py3_dist matplotlib-inline} Requires: %{py3_dist pari-jupyter} Requires: %{py3_dist widgetsnbextension} @@ -909,31 +968,31 @@ popd %patch3 %patch4 %patch5 +%patch6 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 -%patch13 -%patch14 %if %{with fes} -%patch15 +%patch13 %endif +%patch14 +%patch15 %patch16 %patch17 %patch18 %patch19 +%patch20 %patch21 %patch22 %patch23 %patch24 -sed -e 's|@@SAGE_LOCAL@@|%{SAGE_LOCAL}|' \ - -e 's|@@LIBDIR@@|%{_libdir}|g' \ - -i src/sage/env.py +sed -i 's|@@SAGE_LOCAL@@|%{SAGE_LOCAL}|' src/sage/env.py sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \ -e 's|@@BUILDROOT@@|%{buildroot}|' \ @@ -943,12 +1002,6 @@ sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \ # some .c files are not (re)generated find src/sage \( -name \*.pyx -o -name \*.pxd \) -exec touch {} \+ -# fix Singular paths -singver=$(sed 's/^.*-\([.[:digit:]]*\).*$/\1/' <<< %{singular_pkg}) -sed -e "s,SINGULARPATH=\",&%{_datadir}/singular/LIB:," \ - -e "s,\(SINGULAR_EXECUTABLE=\"\).*\",\1%{_libdir}/Singular/Singular\"," \ - -i src/bin/sage-env - # fix shebangs; some paths contains spaces, so use the null byte facility grep -FrlZ '#!%{_bindir}/env python3' | \ xargs -0 sed -i 's,#!%{_bindir}/env python3,#!%{python3},g' @@ -978,14 +1031,14 @@ sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \ # GAP does not have enough memory to load the entire workspace sed -i 's/64m/256m/' src/sage/interfaces/gap.py -# GAP does not have enough memory to build docs -sed -i 's/80/128/' src/sage_docbuild/build_options.py - # Fix detection of Fedora sed -i 's/yum/rpm/' build/bin/sage-guess-package-system -# Allow use of python 3.10 -sed -i 's/3\.10\.0/3.11.0/g' configure +# Allow use of gcc 12 +sed -i 's/1\[2-9\]\.\*)/1[3-9].*)/' configure + +# Allow use of python 3.11 +sed -i 's/3\.11\.0/3.12.0/g' configure # Do not build with -march=native sed -i 's/CFLAGS_MARCH="-march=native"/CFLAGS_MARCH=""/' configure @@ -995,18 +1048,13 @@ sed -i 's/CFLAGS_MARCH="-march=native"/CFLAGS_MARCH=""/' configure %build export LC_ALL=C.UTF-8 export CC=%{__cc} -export CPPFLAGS="-I%{_includedir}/arb -I%{_includedir}/cddlib" -export CFLAGS="%{build_cflags}" -export CXXFLAGS="%{build_cxxflags}" +export CPPFLAGS="-I%{_includedir}/4ti2 -I%{_includedir}/arb -I%{_includedir}/cddlib" export ECMBIN=%{_bindir}/gmp-ecm -export SAGE_PYTHON_VERSION=3 export SAGE_ROOT=%{buildroot}%{SAGE_ROOT} export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL} # Avoid buildroot in gcc command line (use _builddir instead) export SAGE_SRC="$PWD/src" export SAGE_INC=%{_includedir} -export SAGE_FORTRAN=%{_bindir}/gfortran -export SAGE_FORTRAN_LIB=`gfortran --print-file-name=libgfortran.so` export DESTDIR=%{buildroot} export SAGE_DEBUG=no # Use file in /tmp because there are issues with long pathnames @@ -1026,6 +1074,14 @@ export PATH=%{buildroot}%{_bindir}:$PATH export PYTHON=%{_bindir}/python3 export PYTHONPATH=%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}:$PYTHONPATH +# Make various programs visible to configure +module load 4ti2-%{_arch} +module load lrcalc-%{_arch} +module load surf-geometry-%{_arch} + +# Initialize polymake +polymake --reconfigure - <<< exit; + #------------------------------------------------------------------------ # Run the configure script to generate files export GSL_LIBS="-lgsl -lflexiblas -lm" @@ -1042,7 +1098,6 @@ export GSL_LIBS="-lgsl -lflexiblas -lm" --enable-frobby \ --enable-mcqd \ --enable-meataxe \ - --enable-primecount \ --enable-qepcad \ --enable-saclib \ --enable-sirocco \ @@ -1348,8 +1403,6 @@ export SINGULAR_DATA_DIR=%{_datadir} export SINGULAR_BIN_DIR=%{_libdir}/Singular export SINGULAR_SO=%{_libdir}/libSingular-$singver.so ##export PYTHONPATH="$SAGE_PYTHONPATH:\$SAGE_LOCAL/bin" -export SAGE_FORTRAN=%{_bindir}/gfortran -export SAGE_FORTRAN_LIB=\`gfortran --print-file-name=libgfortran.so\` export SYMPOW_DIR="\$DOT_SAGE/sympow" # Required for sage -gdb : \${SAGE_DEBUG:=no} @@ -1986,6 +2039,10 @@ end ######################################################################## %changelog +* Mon Mar 21 2022 Jerry James - 9.5-1 +- Version 9.5 +- Drop unnecessary -4ti2 and -primecount patches + * Sat Jan 22 2022 Fedora Release Engineering - 9.4-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 169d375..6a58dc9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 -SHA512 (sage-9.4.tar.gz) = cb634a14c5c594e1f76b1d1aa0fdd38560ffc5190df440e9e7d580eee7ddd7f7935d11fb993521eb26c6f68b7c76d1e4c146c53d3bc14435b9c8fb7dc9e56517 +SHA512 (sage-9.5.tar.gz) = 0c3649592b2ddf31f301e48c0727e16870fe9062c92ec8cd24f13728cf6ff1e45cbc263a967ca060a91f976eaee73fc6aa5a0dfd0b95b393e22cfaac1ef6767e