Version 9.2 (bz 1891244)

- Unbundle widgetsnbextension (bz 1856311)
- Unbundle mathjax fonts (bz 1875606)
- Do not require the -doc subpackage from the main package (bz 1867123)
- Drop upstreamed patches: -ecl, -fes, -includes, -sagetex, -sigfpe, -sympy
This commit is contained in:
Jerry James 2020-11-11 16:28:59 -07:00
parent de0ac7db5f
commit 861d3bcc88
34 changed files with 1210 additions and 4460 deletions

View file

@ -1,7 +1,7 @@
diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
--- src/sage/sandpiles/sandpile.py.orig 2018-12-22 16:37:10.000000000 -0700 --- src/sage/sandpiles/sandpile.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/sandpiles/sandpile.py 2019-01-16 09:43:32.402089611 -0700 +++ src/sage/sandpiles/sandpile.py 2020-10-30 14:00:00.744208307 -0600
@@ -346,9 +346,6 @@ from sage.arith.all import falling_facto @@ -347,9 +347,6 @@ from sage.arith.all import falling_facto
from sage.rings.all import Integer, PolynomialRing, QQ, ZZ from sage.rings.all import Integer, PolynomialRing, QQ, ZZ
from sage.symbolic.all import I, pi, SR from sage.symbolic.all import I, pi, SR
@ -11,7 +11,7 @@ diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
def _sandpile_help(cls, usage, verbose=True): def _sandpile_help(cls, usage, verbose=True):
@@ -5163,7 +5160,7 @@ class SandpileDivisor(dict): @@ -5174,7 +5171,7 @@ class SandpileDivisor(dict):
sign_file.close() sign_file.close()
# compute # compute
try: try:

View file

@ -1,7 +1,7 @@
diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
--- src/sage/libs/arb/arb_wrap.h.orig 2019-10-25 14:39:21.831699616 -0300 --- src/sage/libs/arb/arb_wrap.h.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/arb/arb_wrap.h 2019-10-25 14:39:53.520890155 -0300 +++ src/sage/libs/arb/arb_wrap.h 2020-10-30 16:10:40.145976088 -0600
@@ -11,17 +11,17 @@ @@ -11,18 +11,18 @@
#define ulong mp_limb_t #define ulong mp_limb_t
#define slong mp_limb_signed_t #define slong mp_limb_signed_t
@ -13,6 +13,7 @@ diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
-#include <acb_modular.h> -#include <acb_modular.h>
-#include <acb_poly.h> -#include <acb_poly.h>
-#include <arb.h> -#include <arb.h>
-#include <arb_hypgeom.h>
-#include <arf.h> -#include <arf.h>
-#include <bernoulli.h> -#include <bernoulli.h>
-#include <mag.h> -#include <mag.h>
@ -24,6 +25,7 @@ diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
+#include <arb/acb_modular.h> +#include <arb/acb_modular.h>
+#include <arb/acb_poly.h> +#include <arb/acb_poly.h>
+#include <arb/arb.h> +#include <arb/arb.h>
+#include <arb/arb_hypgeom.h>
+#include <arb/arf.h> +#include <arb/arf.h>
+#include <arb/bernoulli.h> +#include <arb/bernoulli.h>
+#include <arb/mag.h> +#include <arb/mag.h>

View file

@ -1,7 +1,7 @@
diff -up src/setup.py.orig src/setup.py diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
--- src/setup.py.orig 2019-10-03 16:02:47.728642827 -0300 --- src/sage_setup/command/sage_build_cython.py.orig 2020-10-30 16:04:33.325411659 -0600
+++ src/setup.py 2019-10-03 16:03:22.041859763 -0300 +++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:09:19.770071485 -0600
@@ -335,6 +335,9 @@ class sage_build_cython(Command): @@ -262,6 +262,9 @@ class sage_build_cython(Command):
with open(self._version_file, 'w') as f: with open(self._version_file, 'w') as f:
f.write(self._version_stamp) f.write(self._version_stamp)

View file

@ -1,7 +1,7 @@
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
--- src/sage/databases/cremona.py.orig 2019-10-03 14:57:32.516349793 -0300 --- src/sage/databases/cremona.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/databases/cremona.py 2019-10-03 14:57:45.084423307 -0300 +++ src/sage/databases/cremona.py 2020-10-30 14:02:27.778960819 -0600
@@ -850,7 +850,8 @@ class MiniCremonaDatabase(SQLDatabase): @@ -854,7 +854,8 @@ class MiniCremonaDatabase(SQLDatabase):
message = "There is no elliptic curve with label " \ message = "There is no elliptic curve with label " \
+ label + " in the default database; try installing " \ + label + " in the default database; try installing " \
+ "the optional package database_cremona_ellcurve which " \ + "the optional package database_cremona_ellcurve which " \
@ -11,7 +11,7 @@ diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
raise ValueError(message) raise ValueError(message)
ainvs = eval(c[0]) ainvs = eval(c[0])
data = {'cremona_label': label, data = {'cremona_label': label,
@@ -1649,6 +1650,7 @@ class LargeCremonaDatabase(MiniCremonaDa @@ -1659,6 +1660,7 @@ class LargeCremonaDatabase(MiniCremonaDa
con.executemany("UPDATE t_curve SET gens=? WHERE curve=?", \ con.executemany("UPDATE t_curve SET gens=? WHERE curve=?", \
curve_data) curve_data)
print("Committing...") print("Committing...")

View file

@ -1,88 +0,0 @@
diff -up src/sage/libs/ecl.pxd.orig src/sage/libs/ecl.pxd
--- src/sage/libs/ecl.pxd.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/libs/ecl.pxd 2020-07-07 09:05:47.078665548 -0600
@@ -39,7 +39,6 @@ cdef extern from "ecl/ecl.h":
ECL_OPT_TRAP_SIGINT,
ECL_OPT_TRAP_SIGILL,
ECL_OPT_TRAP_SIGBUS,
- ECL_OPT_TRAP_SIGCHLD,
ECL_OPT_TRAP_SIGPIPE,
ECL_OPT_TRAP_INTERRUPT_SIGNAL,
ECL_OPT_SIGNAL_HANDLING_THREAD,
@@ -53,7 +52,6 @@ cdef extern from "ecl/ecl.h":
ECL_OPT_LISP_STACK_SAFETY_AREA,
ECL_OPT_C_STACK_SIZE,
ECL_OPT_C_STACK_SAFETY_AREA,
- ECL_OPT_SIGALTSTACK_SIZE,
ECL_OPT_HEAP_SIZE,
ECL_OPT_HEAP_SAFETY_AREA,
ECL_OPT_THREAD_INTERRUPT_SIGNAL,
diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx
--- src/sage/libs/ecl.pyx.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/libs/ecl.pyx 2020-07-07 09:07:43.622621879 -0600
@@ -15,7 +15,7 @@ Library interface to Embeddable Common L
#adapted to work with pure Python types.
from libc.stdlib cimport abort
-from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGCHLD
+from libc.signal cimport SIGINT, SIGBUS, SIGSEGV
from libc.signal cimport raise_ as signal_raise
from posix.signal cimport sigaction, sigaction_t
cimport cysignals.signals
@@ -139,7 +139,6 @@ def test_ecl_options():
ECL_OPT_TRAP_SIGINT = 1
ECL_OPT_TRAP_SIGILL = 1
ECL_OPT_TRAP_SIGBUS = 1
- ECL_OPT_TRAP_SIGCHLD = 0
ECL_OPT_TRAP_SIGPIPE = 1
ECL_OPT_TRAP_INTERRUPT_SIGNAL = 1
ECL_OPT_SIGNAL_HANDLING_THREAD = 0
@@ -153,7 +152,6 @@ def test_ecl_options():
ECL_OPT_LISP_STACK_SAFETY_AREA = ...
ECL_OPT_C_STACK_SIZE = ...
ECL_OPT_C_STACK_SAFETY_AREA = ...
- ECL_OPT_SIGALTSTACK_SIZE = 1
ECL_OPT_HEAP_SIZE = ...
ECL_OPT_HEAP_SAFETY_AREA = ...
ECL_OPT_THREAD_INTERRUPT_SIGNAL = ...
@@ -171,8 +169,6 @@ def test_ecl_options():
ecl_get_option(ECL_OPT_TRAP_SIGILL)))
print('ECL_OPT_TRAP_SIGBUS = {0}'.format(
ecl_get_option(ECL_OPT_TRAP_SIGBUS)))
- print('ECL_OPT_TRAP_SIGCHLD = {0}'.format(
- ecl_get_option(ECL_OPT_TRAP_SIGCHLD)))
print('ECL_OPT_TRAP_SIGPIPE = {0}'.format(
ecl_get_option(ECL_OPT_TRAP_SIGPIPE)))
print('ECL_OPT_TRAP_INTERRUPT_SIGNAL = {0}'.format(
@@ -199,8 +195,6 @@ def test_ecl_options():
ecl_get_option(ECL_OPT_C_STACK_SIZE)))
print('ECL_OPT_C_STACK_SAFETY_AREA = {0}'.format(
ecl_get_option(ECL_OPT_C_STACK_SAFETY_AREA)))
- print('ECL_OPT_SIGALTSTACK_SIZE = {0}'.format(
- ecl_get_option(ECL_OPT_SIGALTSTACK_SIZE)))
print('ECL_OPT_HEAP_SIZE = {0}'.format(
ecl_get_option(ECL_OPT_HEAP_SIZE)))
print('ECL_OPT_HEAP_SAFETY_AREA = {0}'.format(
@@ -243,9 +237,6 @@ def init_ecl():
if ecl_has_booted:
raise RuntimeError("ECL is already initialized")
- # we need it to stop handling SIGCHLD
- ecl_set_option(ECL_OPT_TRAP_SIGCHLD, 0);
-
#we keep our own GMP memory functions. ECL should not claim them
ecl_set_option(ECL_OPT_SET_GMP_MEMORY_FUNCTIONS,0);
@@ -266,12 +257,6 @@ def init_ecl():
sigaction(SIGBUS, NULL, &ecl_sigbus_handler)
sigaction(SIGSEGV, NULL, &ecl_sigsegv_handler)
- #verify that no SIGCHLD handler was installed
- cdef sigaction_t sig_test
- sigaction(SIGCHLD, NULL, &sig_test)
- assert sage_action[SIGCHLD].sa_handler == NULL # Sage does not set SIGCHLD handler
- assert sig_test.sa_handler == NULL # And ECL bootup did not set one
-
#and put the Sage signal handlers back
for i in range(1,32):
sigaction(i, &sage_action[i], NULL)

View file

@ -1,7 +1,7 @@
diff -up src/sage/env.py.orig src/sage/env.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-07-06 16:59:20.179973650 -0600 --- src/sage/env.py.orig 2020-10-30 16:09:54.834029866 -0600
+++ src/sage/env.py 2020-07-06 17:03:47.991916151 -0600 +++ src/sage/env.py 2020-10-30 16:10:20.089999891 -0600
@@ -158,14 +158,14 @@ var('SAGE_DATE', version.date) @@ -159,14 +159,14 @@ var('SAGE_DATE', version.date)
var('SAGE_VERSION_BANNER', version.banner) var('SAGE_VERSION_BANNER', version.banner)
# bunch of sage directories and files # bunch of sage directories and files
@ -20,9 +20,9 @@ diff -up src/sage/env.py.orig src/sage/env.py
-var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data')) -var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data'))
+var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc')) +var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc'))
var('SAGE_ROOT', '@@SAGE_ROOT@@') var('SAGE_ROOT') # no fallback for SAGE_ROOT
var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB) var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB)
@@ -186,13 +186,13 @@ var('THEBE_DIR', joi @@ -187,13 +187,13 @@ var('THEBE_DIR', joi
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs')) var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona')) var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona')) var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona'))

File diff suppressed because it is too large Load diff

View file

@ -1,156 +1,187 @@
diff -up src/module_list.py.orig src/module_list.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/module_list.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/env.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/module_list.py 2020-07-06 16:38:17.108266850 -0600 +++ src/sage/env.py 2020-10-30 15:44:29.575821493 -0600
@@ -401,16 +401,16 @@ ext_modules = [ @@ -413,7 +413,8 @@ def cython_aliases():
Extension('sage.graphs.matchpoly', aliases[var + "INCDIR"] = pc['include_dirs']
sources = ['sage/graphs/matchpoly.pyx']), aliases[var + "LIBDIR"] = pc['library_dirs']
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
- aliases[var + "LIBRARIES"] = pc['libraries']
+ aliases[var + "LIBRARIES"] = pc['libraries'] + ['gomp']
+ aliases['Singular_INCDIR'] = ['/usr/include/singular', '/usr/include/factory']
- OptionalExtension("sage.graphs.mcqd", # uname-specific flags
+ Extension("sage.graphs.mcqd", UNAME = os.uname()
["sage/graphs/mcqd.pyx"], diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
language = "c++", --- src/sage/graphs/mcqd.pyx.orig 2020-10-24 11:37:59.000000000 -0600
- package = 'mcqd'), +++ src/sage/graphs/mcqd.pyx 2020-10-30 15:47:32.294609185 -0600
+ libraries = ['mcqd']), @@ -1,4 +1,5 @@
# distutils: language = c++
+# distutils: libraries = mcqd
# sage_setup: distribution = sage-mcqd
- OptionalExtension("sage.graphs.bliss", from sage.ext.memory_allocator cimport MemoryAllocator
+ Extension("sage.graphs.bliss", diff -up src/sage/interfaces/primecount.pyx.orig src/sage/interfaces/primecount.pyx
["sage/graphs/bliss.pyx"], --- src/sage/interfaces/primecount.pyx.orig 2020-10-24 11:37:59.000000000 -0600
language = "c++", +++ src/sage/interfaces/primecount.pyx 2020-10-30 15:47:42.766597012 -0600
- libraries = ['bliss'], @@ -1,3 +1,4 @@
- package = 'bliss'), +# distutils: libraries = primecount
+ include_dirs = ['/usr/include/bliss'], # sage_setup: distribution = sage-primecount
+ libraries = ['bliss']),
Extension('sage.graphs.planarity', r"""
sources = ['sage/graphs/planarity.pyx'], diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
@@ -429,10 +429,9 @@ ext_modules = [ --- src/sage/libs/arb/arb.pxd.orig 2020-10-24 11:37:59.000000000 -0600
Extension('sage.graphs.graph_decompositions.cutwidth', +++ src/sage/libs/arb/arb.pxd 2020-10-30 15:47:18.918624733 -0600
sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']), @@ -1,4 +1,5 @@
# distutils: libraries = gmp flint ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
# distutils: depends = arb.h
- OptionalExtension('sage.graphs.graph_decompositions.tdlib', from sage.libs.arb.types cimport *
+ Extension('sage.graphs.graph_decompositions.tdlib', diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx
sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], --- src/sage/libs/arb/arb_version.pyx.orig 2020-10-24 11:37:59.000000000 -0600
- language="c++", +++ src/sage/libs/arb/arb_version.pyx 2020-10-30 15:54:30.743122593 -0600
- package = 'tdlib'), @@ -1,4 +1,5 @@
+ language="c++"), # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
from sage.libs.arb.arb cimport arb_version
from sage.cpython.string cimport char_to_str
Extension('sage.graphs.graph_decompositions.clique_separators', diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
sources = ['sage/graphs/graph_decompositions/clique_separators.pyx']), --- src/sage/libs/arb/arith.pyx.orig 2020-10-24 11:37:59.000000000 -0600
@@ -494,9 +493,9 @@ ext_modules = [ +++ src/sage/libs/arb/arith.pyx 2020-10-30 15:54:53.191096510 -0600
## @@ -1,3 +1,4 @@
################################ +# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Arithmetic functions using the arb library
"""
diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx
--- src/sage/libs/mpmath/ext_impl.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/mpmath/ext_impl.pyx 2020-10-30 15:52:15.823279433 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
This module provides the core implementation of multiprecision
floating-point arithmetic. Operations are done in-place.
diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx
--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/mpmath/ext_libmp.pyx 2020-10-30 15:53:01.023226835 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
Faster versions of some key functions in mpmath.libmp
"""
diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx
--- src/sage/libs/mpmath/ext_main.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/mpmath/ext_main.pyx 2020-10-30 15:52:35.663256336 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
mpmath floating-point numbers
- OptionalExtension("sage.interfaces.primecount", diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
+ Extension("sage.interfaces.primecount", --- src/sage/libs/mpmath/utils.pyx.orig 2020-10-24 11:37:59.000000000 -0600
["sage/interfaces/primecount.pyx"], +++ src/sage/libs/mpmath/utils.pyx 2020-10-30 15:51:33.798328356 -0600
- package = "primecount"), @@ -1,3 +1,4 @@
+ libraries = ["primecount"]), +# distutils: include_dirs = /usr/include/flint
"""
Utilities for Sage-mpmath interaction
Extension('*', ['sage/interfaces/*.pyx']), 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 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2020-10-30 15:55:44.799036557 -0600
@@ -1,4 +1,5 @@
# distutils: libraries = ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision complex ball matrices using Arb
@@ -515,21 +514,19 @@ ext_modules = [ 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 2020-10-24 11:37:59.000000000 -0600
################################ +++ src/sage/matrix/matrix_cyclo_dense.pyx 2020-10-30 15:56:45.647965864 -0600
@@ -1,5 +1,6 @@
# distutils: language = c++
# distutils: libraries = ntl
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Matrices over Cyclotomic Fields
- OptionalExtension('sage.libs.coxeter3.coxeter', diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx
+ Extension('sage.libs.coxeter3.coxeter', --- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2020-10-24 11:37:59.000000000 -0600
sources = ['sage/libs/coxeter3/coxeter.pyx'], +++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2020-10-30 15:57:50.862889413 -0600
- include_dirs = [os.path.join(SAGE_INC, 'coxeter')], @@ -1,3 +1,4 @@
+ include_dirs = ['/usr/include/coxeter'], +# distutils: include_dirs = /usr/include/singular /usr/include/factory
language="c++", """
- libraries = ['coxeter3'], Dense matrices over multivariate polynomials over fields
- package = 'coxeter3'),
+ libraries = ['coxeter3']),
Extension('sage.libs.ecl', diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
sources = ["sage/libs/ecl.pyx"]), --- src/sage/rings/complex_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/complex_arb.pyx 2020-11-05 15:42:05.494453973 -0700
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision complex balls using Arb
- OptionalExtension("sage.libs.fes", diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx
+ Extension("sage.libs.fes", --- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2020-10-24 11:37:59.000000000 -0600
["sage/libs/fes.pyx"], +++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2020-11-05 15:48:03.436448764 -0700
language = "c", @@ -1,5 +1,6 @@
- libraries = ['fes'], # distutils: libraries = ntl
- package = 'fes'), # distutils: language = c++
+ libraries = ['fes']), +# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Optimized Quadratic Number Field Elements
Extension('sage.libs.flint.flint', diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
sources = ["sage/libs/flint/flint.pyx"], --- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2020-10-30 11:34:26.064980206 -0600
@@ -558,13 +555,14 @@ ext_modules = [ +++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2020-10-30 16:02:19.239570828 -0600
sources = ["sage/libs/homfly.pyx"], @@ -1,3 +1,4 @@
libraries = ["homfly", "gc"]), +# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Multivariate Polynomials via libSINGULAR
- OptionalExtension('sage.libs.sirocco', diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx
+ Extension('sage.libs.sirocco', --- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2020-10-24 11:37:59.000000000 -0600
sources = ["sage/libs/sirocco.pyx"], +++ src/sage/rings/polynomial/multi_polynomial.pyx 2020-11-05 15:42:05.505453973 -0700
libraries = ["sirocco"], @@ -1,3 +1,4 @@
- package="sirocco", +# distutils: include_dirs = /usr/include/singular /usr/include/factory
language = 'c++'), 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 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/polynomial/plural.pyx 2020-11-05 15:42:05.507453973 -0700
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Noncommutative Polynomials via libSINGULAR/Plural
- Extension('*', ['sage/libs/linbox/*.pyx']), diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx
+ Extension('*', --- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+ sources = ['sage/libs/linbox/*.pyx'], +++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2020-10-30 16:03:19.870498851 -0600
+ libraries = ["gomp"]), @@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Univariate polynomials over `\CC` with interval coefficients using Arb.
Extension('sage.libs.lcalc.lcalc_Lfunction', diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'], --- src/sage/rings/real_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
@@ -581,10 +579,9 @@ ext_modules = [ +++ src/sage/rings/real_arb.pyx 2020-11-05 15:42:05.510453973 -0700
Extension('sage.libs.lrcalc.lrcalc', @@ -1,4 +1,5 @@
sources = ["sage/libs/lrcalc/lrcalc.pyx"]), # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision real balls using Arb
- OptionalExtension("sage.libs.meataxe", diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
+ Extension("sage.libs.meataxe", --- src/sage_setup/command/sage_build_cython.py.orig 2020-10-24 11:37:59.000000000 -0600
sources = ['sage/libs/meataxe.pyx'], +++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:04:33.325411659 -0600
- libraries = ['mtx'], @@ -59,6 +59,7 @@ if subprocess.call("""$CC --version | gr
- package = 'meataxe'),
+ libraries = ['mtx']),
Extension('*', ['sage/libs/pari/*.pyx']), # Search for dependencies in the source tree and add to the list of include directories
include_dirs = sage_include_directories(use_sources=True)
+include_dirs.extend(['@@CYSIGNALS@@'])
@@ -830,7 +827,8 @@ ext_modules = [ # Look for libraries only in what is configured already through distutils
include_dirs = cblas_include_dirs), # and environment variables
Extension('sage.matrix.matrix_integer_sparse',
- sources = ['sage/matrix/matrix_integer_sparse.pyx']),
+ sources = ['sage/matrix/matrix_integer_sparse.pyx'],
+ libraries = ['gomp']),
Extension('sage.matrix.matrix_mod2_dense',
sources = ['sage/matrix/matrix_mod2_dense.pyx'],
@@ -849,20 +847,21 @@ ext_modules = [
Extension('sage.matrix.matrix_modn_dense_float',
sources = ['sage/matrix/matrix_modn_dense_float.pyx'],
language="c++",
- libraries = cblas_libs,
+ libraries = cblas_libs + ['gomp'],
library_dirs = cblas_library_dirs,
include_dirs = cblas_include_dirs),
Extension('sage.matrix.matrix_modn_dense_double',
sources = ['sage/matrix/matrix_modn_dense_double.pyx'],
language="c++",
- libraries = cblas_libs,
+ libraries = cblas_libs + ['gomp'],
library_dirs = cblas_library_dirs,
include_dirs = cblas_include_dirs,
extra_compile_args = ["-D_XPG6"]),
Extension('sage.matrix.matrix_modn_sparse',
- sources = ['sage/matrix/matrix_modn_sparse.pyx']),
+ sources = ['sage/matrix/matrix_modn_sparse.pyx'],
+ libraries = ['gomp']),
Extension('sage.matrix.matrix_mpolynomial_dense',
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
@@ -892,10 +891,9 @@ ext_modules = [
Extension('sage.matrix.matrix_window',
sources = ['sage/matrix/matrix_window.pyx']),
- OptionalExtension("sage.matrix.matrix_gfpn_dense",
+ Extension("sage.matrix.matrix_gfpn_dense",
sources = ['sage/matrix/matrix_gfpn_dense.pyx'],
- libraries = ['mtx'],
- package = 'meataxe'),
+ libraries = ['mtx']),
Extension('sage.matrix.misc',
sources = ['sage/matrix/misc.pyx']),

View file

@ -1,7 +1,7 @@
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
--- src/sage/libs/fes.pyx.orig 2019-01-14 17:16:03.000000000 -0700 --- src/sage/libs/fes.pyx.orig 2020-10-30 11:34:23.271984468 -0600
+++ src/sage/libs/fes.pyx 2019-02-07 08:30:50.024227599 -0700 +++ src/sage/libs/fes.pyx 2020-10-30 14:44:49.462736771 -0600
@@ -11,7 +11,7 @@ variables. Performing a full exhaustive @@ -14,7 +14,7 @@ variables. Performing a full exhaustive
take a **long** time. The number of variables can be artificially take a **long** time. The number of variables can be artificially
reduced to 64 by specializing some of them. reduced to 64 by specializing some of them.
@ -10,7 +10,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
non-linear. non-linear.
AUTHORS: AUTHORS:
@@ -71,7 +71,7 @@ from cysignals.signals cimport sig_on, s @@ -72,7 +72,7 @@ from cysignals.signals cimport sig_on, s
cdef extern from "fes_interface.h": cdef extern from "fes_interface.h":
ctypedef int (*solution_callback_t)(void *, uint64_t) ctypedef int (*solution_callback_t)(void *, uint64_t)
@ -19,7 +19,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
from sage.rings.integer import Integer from sage.rings.integer import Integer
@@ -217,7 +217,7 @@ def exhaustive_search(eqs, max_sols=Inf @@ -218,7 +218,7 @@ def exhaustive_search(eqs, max_sols=Inf
# ------- runs the library # ------- runs the library
sig_on() sig_on()

View file

@ -1,18 +0,0 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2019-10-03 16:04:08.373152682 -0300
+++ src/module_list.py 2019-10-03 16:04:19.877225413 -0300
@@ -506,10 +506,10 @@ ext_modules = [
Extension('sage.libs.ecl',
sources = ["sage/libs/ecl.pyx"]),
- Extension("sage.libs.fes",
- ["sage/libs/fes.pyx"],
- language = "c",
- libraries = ['fes']),
+# Extension("sage.libs.fes",
+# ["sage/libs/fes.pyx"],
+# language = "c",
+# libraries = ['fes']),
Extension('sage.libs.flint.flint',
sources = ["sage/libs/flint/flint.pyx"],

View file

@ -1,7 +1,93 @@
diff -up src/module_list.py.orig src/module_list.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300 --- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300 +++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include' @@ -391,7 +391,7 @@ def cython_aliases():
aliases = {}
for lib in ['fflas-ffpack', 'givaro', 'gsl', 'linbox', 'Singular',
- 'libpng', 'gdlib', 'm4ri', 'zlib', 'cblas', 'lapack']:
+ 'libpng', 'gdlib', 'm4ri', 'zlib', 'flexiblas']:
var = lib.upper().replace("-", "") + "_"
if lib == 'zlib':
aliases[var + "CFLAGS"] = ""
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 2020-10-30 11:52:49.737274785 -0600
+++ src/sage/matrix/matrix_integer_dense.pyx 2020-10-31 17:58:56.243063508 -0600
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# distutils: extra_compile_args = M4RI_CFLAGS
-# distutils: libraries = iml ntl gmp m CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
+# distutils: libraries = iml ntl gmp m FLEXIBLAS_LIBRARIES
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
+# distutils: include_dirs = M4RI_INCDIR FLEXIBLAS_INCDIR
"""
Dense matrices over the integer ring
diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matrix_modn_dense_double.pyx
--- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-11-05 15:44:59.390454421 -0700
@@ -1,7 +1,7 @@
# distutils: language = c++
-# distutils: libraries = CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = CBLAS_INCDIR
+# distutils: libraries = FLEXIBLAS_LIBRARIES
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
+# distutils: include_dirs = FLEXIBLAS_INCDIR
# distutils: extra_compile_args = -D_XPG6
"""
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{23}` using LinBox's ``Modular<double>``
diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix_modn_dense_float.pyx
--- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-11-05 15:44:59.391454421 -0700
+++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-11-05 15:45:54.965454564 -0700
@@ -1,7 +1,7 @@
# distutils: language = c++
-# distutils: libraries = CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = CBLAS_INCDIR
+# distutils: libraries = FLEXIBLAS_LIBRARIES
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
+# distutils: include_dirs = FLEXIBLAS_INCDIR
"""
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{11}` using LinBox's ``Modular<float>``
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 2020-10-30 11:34:26.031980257 -0600
+++ src/sage/matrix/matrix_rational_dense.pyx 2020-10-31 17:58:10.490106273 -0600
@@ -1,7 +1,7 @@
# distutils: extra_compile_args = -D_XPG6 M4RI_CFLAGS
-# distutils: libraries = iml ntl m CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
+# distutils: libraries = iml ntl m FLEXIBLAS_LIBRARIES
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
+# distutils: include_dirs = M4RI_INCDIR FLEXIBLAS_INCDIR
"""
Dense matrices over the rational field
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2020-10-30 16:08:06.039158996 -0600
+++ src/sage/misc/cython.py 2020-10-30 16:24:09.037024792 -0600
@@ -35,10 +35,9 @@ from sage.cpython.string import str_to_b
# CBLAS can be one of multiple implementations
-cblas_pc = pkgconfig.parse('cblas')
-cblas_libs = list(cblas_pc['libraries'])
-cblas_library_dirs = list(cblas_pc['library_dirs'])
-cblas_include_dirs = list(cblas_pc['include_dirs'])
+cblas_libs = ['flexiblas']
+cblas_library_dirs = ['/usr/lib']
+cblas_include_dirs = ['/usr/include/flexiblas']
standard_libs = [
'mpfr', 'gmp', 'gmpxx', 'pari', 'm',
diff -up src/sage_setup/library_order.py.orig src/sage_setup/library_order.py
--- src/sage_setup/library_order.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage_setup/library_order.py 2020-10-31 12:11:54.313540360 -0600
@@ -10,20 +10,18 @@ import os
import pkgconfig import pkgconfig
# CBLAS can be one of multiple implementations # CBLAS can be one of multiple implementations
@ -17,31 +103,14 @@ diff -up src/module_list.py.orig src/module_list.py
if os.path.exists('/usr/lib/libblas.dll.a'): if os.path.exists('/usr/lib/libblas.dll.a'):
cblas_libs = ['gslcblas'] cblas_libs = ['gslcblas']
-# LAPACK can be one of multiple implementations # LAPACK can be one of multiple implementations
-lapack_pc = pkgconfig.parse('lapack') -lapack_pc = pkgconfig.parse('lapack')
-lapack_libs = lapack_pc['libraries'] -lapack_libs = lapack_pc['libraries']
-lapack_library_dirs = lapack_pc['library_dirs'] -lapack_library_dirs = lapack_pc['library_dirs']
-lapack_include_dirs = lapack_pc['include_dirs'] -lapack_include_dirs = lapack_pc['include_dirs']
+lapack_libs = [ 'flexiblas' ] +lapack_libs = ['flexiblas']
+lapack_library_dirs = ['/usr/lib'] +lapack_library_dirs = ['/usr/lib']
+lapack_include_dirs = ['/usr/include/flexiblas'] +lapack_include_dirs = ['/usr/include/flexiblas']
# GD image library # GD image library
gd_pc = pkgconfig.parse('gdlib') gd_pc = pkgconfig.parse('gdlib')
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2019-10-03 16:51:42.848776173 -0300
+++ src/sage/misc/cython.py 2019-10-03 16:52:06.480917303 -0300
@@ -35,10 +35,9 @@ from sage.misc.sage_ostools import resto
# CBLAS can be one of multiple implementations
-cblas_pc = pkgconfig.parse('cblas')
-cblas_libs = list(cblas_pc['libraries'])
-cblas_library_dirs = list(cblas_pc['library_dirs'])
-cblas_include_dirs = list(cblas_pc['include_dirs'])
+cblas_libs = ['flexiblas']
+cblas_library_dirs = ['/usr/lib']
+cblas_include_dirs = ['/usr/include/flexiblas']
standard_libs = [
'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm',

View file

@ -1,183 +0,0 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2020-02-25 13:53:37.097039897 -0700
+++ src/module_list.py 2020-02-26 14:43:39.912744735 -0700
@@ -44,6 +44,9 @@ zlib_libs = zlib_pc['libraries']
zlib_library_dirs = zlib_pc['library_dirs']
zlib_include_dirs = zlib_pc['include_dirs']
+# Singular
+singular_incs = [SAGE_INC + '/singular', SAGE_INC + '/factory']
+
#########################################################
### M4RI flags
#########################################################
@@ -60,6 +63,14 @@ except ValueError:
pass
#########################################################
+### ARB flags
+#########################################################
+
+arb_include_dirs = [os.path.join(SAGE_INC, 'flint'),
+ os.path.join(SAGE_INC, 'arb')]
+arb_libs = ['arb']
+
+#########################################################
### Library order
#########################################################
@@ -134,7 +145,8 @@ ext_modules = [
language='c++',
libraries = ["gmp", "m", "ntl"]),
- Extension('*', sources = ['sage/algebras/letterplace/*.pyx']),
+ Extension('*', sources = ['sage/algebras/letterplace/*.pyx'],
+ include_dirs = singular_incs),
Extension('*', sources = ['sage/algebras/finite_dimensional_algebras/*.pyx']),
@@ -562,7 +574,8 @@ ext_modules = [
[])),
Extension('sage.libs.lrcalc.lrcalc',
- sources = ["sage/libs/lrcalc/lrcalc.pyx"]),
+ sources = ["sage/libs/lrcalc/lrcalc.pyx"],
+ include_dirs = [os.path.join(SAGE_INC, 'lrcalc')]),
Extension("sage.libs.meataxe",
sources = ['sage/libs/meataxe.pyx'],
@@ -583,23 +596,28 @@ ext_modules = [
sources = ['sage/libs/readline.pyx'],
libraries = ['readline']),
- Extension('*', sources = ['sage/libs/singular/*.pyx']),
+ Extension('*', sources = ['sage/libs/singular/*.pyx'],
+ include_dirs = singular_incs),
Extension('sage.libs.symmetrica.symmetrica',
sources = ["sage/libs/symmetrica/symmetrica.pyx"],
libraries = ["symmetrica"]),
Extension('sage.libs.mpmath.utils',
- sources = ["sage/libs/mpmath/utils.pyx"]),
+ sources = ["sage/libs/mpmath/utils.pyx"],
+ include_dirs = [os.path.join(SAGE_INC, "flint")]),
Extension('sage.libs.mpmath.ext_impl',
- sources = ["sage/libs/mpmath/ext_impl.pyx"]),
+ sources = ["sage/libs/mpmath/ext_impl.pyx"],
+ include_dirs = [os.path.join(SAGE_INC, "flint")]),
Extension('sage.libs.mpmath.ext_main',
- sources = ["sage/libs/mpmath/ext_main.pyx"]),
+ sources = ["sage/libs/mpmath/ext_main.pyx"],
+ include_dirs = [os.path.join(SAGE_INC, "flint")]),
Extension('sage.libs.mpmath.ext_libmp',
- sources = ["sage/libs/mpmath/ext_libmp.pyx"]),
+ sources = ["sage/libs/mpmath/ext_libmp.pyx"],
+ include_dirs = [os.path.join(SAGE_INC, "flint")]),
###################################
##
@@ -607,7 +625,8 @@ ext_modules = [
##
###################################
- Extension('*', ["sage/libs/arb/*.pyx"]),
+ Extension('*', ["sage/libs/arb/*.pyx"],
+ include_dirs = arb_include_dirs),
###################################
##
@@ -779,7 +798,8 @@ ext_modules = [
Extension("sage.matrix.matrix_complex_ball_dense",
["sage/matrix/matrix_complex_ball_dense.pyx"],
- libraries=[arb_dylib_name]),
+ include_dirs = arb_include_dirs,
+ libraries=arb_libs),
Extension('sage.matrix.matrix_complex_double_dense',
sources = ['sage/matrix/matrix_complex_double_dense.pyx']),
@@ -787,6 +807,7 @@ ext_modules = [
Extension('sage.matrix.matrix_cyclo_dense',
sources = ['sage/matrix/matrix_cyclo_dense.pyx'],
language = "c++",
+ include_dirs = arb_include_dirs,
libraries=['ntl']),
Extension('sage.matrix.matrix_gap',
@@ -849,6 +870,7 @@ ext_modules = [
libraries = ['gomp']),
Extension('sage.matrix.matrix_mpolynomial_dense',
+ include_dirs = singular_incs,
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
Extension('sage.matrix.matrix_polynomial_dense',
@@ -1135,7 +1157,8 @@ ext_modules = [
language = 'c++'),
Extension("sage.rings.complex_arb",
- ["sage/rings/complex_arb.pyx"]),
+ ["sage/rings/complex_arb.pyx"],
+ include_dirs = arb_include_dirs),
Extension('sage.rings.complex_double',
sources = ['sage/rings/complex_double.pyx'],
@@ -1211,7 +1234,8 @@ ext_modules = [
sources = ['sage/rings/real_interval_absolute.pyx']),
Extension("sage.rings.real_arb",
- ["sage/rings/real_arb.pyx"]),
+ ["sage/rings/real_arb.pyx"],
+ include_dirs = arb_include_dirs),
Extension('sage.rings.real_lazy',
sources = ['sage/rings/real_lazy.pyx']),
@@ -1294,6 +1318,7 @@ ext_modules = [
Extension('sage.rings.number_field.number_field_element_quadratic',
sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'],
+ include_dirs = arb_include_dirs,
libraries=['ntl'],
language = 'c++'),
@@ -1433,12 +1458,15 @@ ext_modules = [
sources = ['sage/rings/polynomial/multi_polynomial.pyx']),
Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
+ include_dirs = singular_incs,
sources = ['sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx']),
Extension('sage.rings.polynomial.plural',
+ include_dirs = singular_incs,
sources = ['sage/rings/polynomial/plural.pyx']),
Extension('sage.rings.polynomial.multi_polynomial_libsingular',
+ include_dirs = singular_incs,
sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx']),
Extension('sage.rings.polynomial.multi_polynomial_ring_base',
@@ -1451,7 +1479,8 @@ ext_modules = [
sources = ['sage/rings/polynomial/polydict.pyx']),
Extension('sage.rings.polynomial.polynomial_complex_arb',
- sources = ['sage/rings/polynomial/polynomial_complex_arb.pyx']),
+ sources = ['sage/rings/polynomial/polynomial_complex_arb.pyx'],
+ include_dirs = arb_include_dirs),
Extension('sage.rings.polynomial.polynomial_compiled',
sources = ['sage/rings/polynomial/polynomial_compiled.pyx']),
diff -up src/setup.py.orig src/setup.py
--- src/setup.py.orig 2020-02-26 15:43:14.065012133 -0700
+++ src/setup.py 2020-02-26 15:52:14.558846775 -0700
@@ -85,6 +85,7 @@ keep_going = False
# search for dependencies and add to gcc -I<path>
include_dirs = sage_include_directories(use_sources=True)
+include_dirs.extend(['@@CYSIGNALS@@'])
# Look for libraries in $SAGE_LOCAL/lib
library_dirs = [os.path.join(SAGE_LOCAL, "lib")]

View file

@ -1,9 +1,9 @@
diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py
--- src/sage/docs/conf.py.orig 2019-09-29 17:03:11.000000000 -0600 --- src/sage/docs/conf.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/docs/conf.py 2020-01-02 11:19:45.125646695 -0700 +++ src/sage/docs/conf.py 2020-10-30 16:41:06.481017695 -0600
@@ -169,9 +169,8 @@ todo_include_todos = True @@ -189,9 +189,8 @@ def set_intersphinx_mappings(app, config
python_version = sys.version_info.major
intersphinx_mapping = { app.config.intersphinx_mapping = {
'python': ('https://docs.python.org/', 'python': ('https://docs.python.org/',
- os.path.join(SAGE_DOC_SRC, "common", - os.path.join(SAGE_DOC_SRC, "common",
- "python{}.inv".format(python_version))), - "python{}.inv".format(python_version))),
@ -11,5 +11,5 @@ diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py
+ '/usr/share/doc/python3-docs/html/objects.inv'), + '/usr/share/doc/python3-docs/html/objects.inv'),
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')} + 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')}
def set_intersphinx_mappings(app): # Add master intersphinx mapping
""" dst = os.path.join(invpath, 'objects.inv')

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
--- src/sage/interfaces/jmoldata.py.orig 2018-12-22 16:37:08.000000000 -0700 --- src/sage/interfaces/jmoldata.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/jmoldata.py 2019-01-16 09:43:40.755939704 -0700 +++ src/sage/interfaces/jmoldata.py 2020-10-30 14:01:33.291052531 -0600
@@ -148,8 +148,6 @@ class JmolData(SageObject): @@ -148,8 +148,6 @@ class JmolData(SageObject):
sage: print(os.path.exists(testfile)) # optional -- java sage: print(os.path.exists(testfile)) # optional -- java
True True

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2019-10-03 16:52:46.496156266 -0300 --- src/sage/interfaces/latte.py.orig 2020-10-30 14:03:03.974899895 -0600
+++ src/sage/interfaces/latte.py 2019-10-03 16:53:00.776241550 -0300 +++ src/sage/interfaces/latte.py 2020-10-30 16:26:14.352878056 -0600
@@ -117,7 +117,7 @@ def count(arg, ehrhart_polynomial=False, @@ -117,7 +117,7 @@ def count(arg, ehrhart_polynomial=False,
arg = str_to_bytes(arg) arg = str_to_bytes(arg)

View file

@ -1,21 +1,10 @@
diff -up src/module_list.py.orig src/module_list.py diff -up src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig src/sage/libs/lcalc/lcalc_Lfunction.pyx
--- src/module_list.py.orig 2019-10-03 16:00:44.899866273 -0300 --- src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/module_list.py 2019-10-03 16:00:56.451939308 -0300 +++ src/sage/libs/lcalc/lcalc_Lfunction.pyx 2020-10-30 14:40:53.875121354 -0600
@@ -548,7 +548,7 @@ ext_modules = [ @@ -1,5 +1,5 @@
Extension('sage.libs.lcalc.lcalc_Lfunction', # distutils: libraries = m ntl Lfunction
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'], -# distutils: extra_compile_args = -O3 -ffast-math
libraries = ['m', 'ntl', 'Lfunction'], +# distutils: extra_compile_args = -std=gnu++11 -ffast-math
- extra_compile_args=["-O3", "-ffast-math"], # distutils: language = c++
+ extra_compile_args=["-std=gnu++11", "-ffast-math"], r"""
language = 'c++'), Rubinstein's lcalc library
Extension('sage.libs.libecm',
diff -up src/sage/libs/lcalc/lcalc_sage.h.orig src/sage/libs/lcalc/lcalc_sage.h
--- src/sage/libs/lcalc/lcalc_sage.h.orig 2019-10-25 15:58:31.890166910 -0300
+++ src/sage/libs/lcalc/lcalc_sage.h 2019-10-25 15:59:02.535343196 -0300
@@ -1,4 +1,4 @@
-#include "Lfunction/L.h"
+#include "libLfunction/L.h"
int *new_ints(int l)
{
return new int[l];

View file

@ -1,7 +1,7 @@
diff -up src/sage/env.py.orig src/sage/env.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/env.py.orig 2020-10-30 15:44:29.575821493 -0600
+++ src/sage/env.py 2020-07-06 16:57:04.139002833 -0600 +++ src/sage/env.py 2020-10-30 16:09:54.834029866 -0600
@@ -181,7 +181,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi @@ -182,7 +182,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi
var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs')) var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs'))
var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves')) var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves'))
var('POLYTOPE_DATA_DIR', join(SAGE_SHARE, 'reflexive_polytopes')) var('POLYTOPE_DATA_DIR', join(SAGE_SHARE, 'reflexive_polytopes'))
@ -11,8 +11,8 @@ diff -up src/sage/env.py.orig src/sage/env.py
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs')) var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona')) var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
--- src/sage/libs/gap/element.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/libs/gap/element.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/gap/element.pyx 2020-07-06 16:57:04.140002833 -0600 +++ src/sage/libs/gap/element.pyx 2020-10-30 14:42:23.392975217 -0600
@@ -264,7 +264,7 @@ cdef Obj make_gap_string(sage_string) ex @@ -264,7 +264,7 @@ cdef Obj make_gap_string(sage_string) ex
try: try:
GAP_Enter() GAP_Enter()
@ -76,7 +76,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
def is_permutation(self): def is_permutation(self):
r""" r"""
@@ -1458,7 +1458,7 @@ cdef class GapElement_Integer(GapElement @@ -1469,7 +1469,7 @@ cdef class GapElement_Integer(GapElement
sage: N.IsInt() sage: N.IsInt()
true true
""" """
@ -85,7 +85,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
def _rational_(self): def _rational_(self):
r""" r"""
@@ -2797,7 +2797,7 @@ cdef class GapElement_List(GapElement): @@ -2808,7 +2808,7 @@ cdef class GapElement_List(GapElement):
... ...
ValueError: too many indices ValueError: too many indices
""" """
@ -94,7 +94,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
cdef Obj obj = self.value cdef Obj obj = self.value
if isinstance(i, tuple): if isinstance(i, tuple):
@@ -2868,7 +2868,7 @@ cdef class GapElement_List(GapElement): @@ -2879,7 +2879,7 @@ cdef class GapElement_List(GapElement):
if not IS_MUTABLE_OBJ(self.value): if not IS_MUTABLE_OBJ(self.value):
raise TypeError('immutable Gap object does not support item assignment') raise TypeError('immutable Gap object does not support item assignment')
@ -104,8 +104,8 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
if isinstance(i, tuple): if isinstance(i, tuple):
diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd
--- src/sage/libs/gap/gap_includes.pxd.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/libs/gap/gap_includes.pxd.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/gap/gap_includes.pxd 2020-07-06 16:58:14.358987770 -0600 +++ src/sage/libs/gap/gap_includes.pxd 2020-10-30 14:42:23.392975217 -0600
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint @@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
cdef extern from "gap/system.h" nogil: cdef extern from "gap/system.h" nogil:
@ -225,8 +225,8 @@ diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.
+ Obj NEW_STRING(Int len) + Obj NEW_STRING(Int len)
+ Obj MakeStringWithLen(const char *buf, size_t len) + Obj MakeStringWithLen(const char *buf, size_t len)
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
--- src/sage/libs/gap/util.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/libs/gap/util.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/gap/util.pyx 2020-07-06 16:57:04.142002832 -0600 +++ src/sage/libs/gap/util.pyx 2020-10-30 14:42:23.393975216 -0600
@@ -386,7 +386,7 @@ cdef Obj gap_eval(str gap_string) except @@ -386,7 +386,7 @@ cdef Obj gap_eval(str gap_string) except
""" """
initialize() initialize()

View file

@ -1,24 +1,12 @@
diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp
--- src/bin/sage-maxima.lisp.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/bin/sage-maxima.lisp 2020-07-06 16:43:41.194184363 -0600
@@ -4,3 +4,8 @@
(setf *prompt-prefix* "<sage-display>")
+#+clisp
+(setf
+ *error-output* (open "/dev/stderr" :direction :output)
+ *standard-input* (open "/dev/stdin" :direction :input)
+ *standard-output* (open "/dev/stdout" :direction :output))
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
--- src/sage/interfaces/maxima.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/interfaces/maxima.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/maxima.py 2020-07-06 16:44:55.895165348 -0600 +++ src/sage/interfaces/maxima.py 2020-10-30 13:59:17.007281872 -0600
@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect): @@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect):
Expect.__init__(self, Expect.__init__(self,
name = 'maxima', name = 'maxima',
prompt = r'\(\%i[0-9]+\) ', prompt = r'\(\%i[0-9]+\) ',
- command = '"{0}" -p "{1}"'.format(MAXIMA, STARTUP), - command = '{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
+ command = '"{0}" --disable-readline -p "{1}"'.format(MAXIMA, STARTUP), + command = '{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
env = {'TMPDIR': str(ECL_TMP)}, env = {'TMPDIR': str(ECL_TMP)},
script_subdirectory = script_subdirectory, script_subdirectory = script_subdirectory,
restart_on_ctrlc = False, restart_on_ctrlc = False,
@ -32,3 +20,15 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
self._eval_line('0;') self._eval_line('0;')
# set random seed # set random seed
diff -up src/sage/interfaces/sage-maxima.lisp.orig src/sage/interfaces/sage-maxima.lisp
--- src/sage/interfaces/sage-maxima.lisp.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/sage-maxima.lisp 2020-10-30 13:58:16.806383103 -0600
@@ -4,3 +4,8 @@
(setf *prompt-prefix* "<sage-display>")
+#+clisp
+(setf
+ *error-output* (open "/dev/stderr" :direction :output)
+ *standard-input* (open "/dev/stdin" :direction :input)
+ *standard-output* (open "/dev/stdout" :direction :output))

View file

@ -1,7 +1,93 @@
diff -up src/module_list.py.orig src/module_list.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300 --- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300 +++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include' @@ -391,7 +391,7 @@ def cython_aliases():
aliases = {}
for lib in ['fflas-ffpack', 'givaro', 'gsl', 'linbox', 'Singular',
- 'libpng', 'gdlib', 'm4ri', 'zlib', 'cblas', 'lapack']:
+ 'libpng', 'gdlib', 'm4ri', 'zlib', 'openblas']:
var = lib.upper().replace("-", "") + "_"
if lib == 'zlib':
aliases[var + "CFLAGS"] = ""
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 2020-10-30 11:52:49.737274785 -0600
+++ src/sage/matrix/matrix_integer_dense.pyx 2020-10-31 17:58:56.243063508 -0600
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# distutils: extra_compile_args = M4RI_CFLAGS
-# distutils: libraries = iml ntl gmp m CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
+# distutils: libraries = iml ntl gmp m OPENBLAS_LIBRARIES
+# distutils: library_dirs = OPENBLAS_LIBDIR
+# distutils: include_dirs = M4RI_INCDIR OPENBLAS_INCDIR
"""
Dense matrices over the integer ring
diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matrix_modn_dense_double.pyx
--- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-11-05 15:54:31.940411433 -0700
@@ -1,7 +1,7 @@
# distutils: language = c++
-# distutils: libraries = CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = CBLAS_INCDIR
+# distutils: libraries = OPENBLAS_LIBRARIES
+# distutils: library_dirs = OPENBLAS_LIBDIR
+# distutils: include_dirs = OPENBLAS_INCDIR
# distutils: extra_compile_args = -D_XPG6
"""
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{23}` using LinBox's ``Modular<double>``
diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix_modn_dense_float.pyx
--- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-11-05 15:54:31.940411433 -0700
+++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-11-05 15:55:38.853405001 -0700
@@ -1,7 +1,7 @@
# distutils: language = c++
-# distutils: libraries = CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = CBLAS_INCDIR
+# distutils: libraries = OPENBLAS_LIBRARIES
+# distutils: library_dirs = OPENBLAS_LIBDIR
+# distutils: include_dirs = OPENBLAS_INCDIR
"""
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{11}` using LinBox's ``Modular<float>``
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 2020-10-30 11:34:26.031980257 -0600
+++ src/sage/matrix/matrix_rational_dense.pyx 2020-10-31 17:58:10.490106273 -0600
@@ -1,7 +1,7 @@
# distutils: extra_compile_args = -D_XPG6 M4RI_CFLAGS
-# distutils: libraries = iml ntl m CBLAS_LIBRARIES
-# distutils: library_dirs = CBLAS_LIBDIR
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
+# distutils: libraries = iml ntl m OPENBLAS_LIBRARIES
+# distutils: library_dirs = OPENBLAS_LIBDIR
+# distutils: include_dirs = M4RI_INCDIR OPENBLAS_INCDIR
"""
Dense matrices over the rational field
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2020-10-30 16:08:06.039158996 -0600
+++ src/sage/misc/cython.py 2020-10-30 16:24:09.037024792 -0600
@@ -35,10 +35,9 @@ from sage.cpython.string import str_to_b
# CBLAS can be one of multiple implementations
-cblas_pc = pkgconfig.parse('cblas')
-cblas_libs = list(cblas_pc['libraries'])
-cblas_library_dirs = list(cblas_pc['library_dirs'])
-cblas_include_dirs = list(cblas_pc['include_dirs'])
+cblas_libs = ['openblas']
+cblas_library_dirs = ['/usr/lib']
+cblas_include_dirs = ['/usr/include/openblas']
standard_libs = [
'mpfr', 'gmp', 'gmpxx', 'pari', 'm',
diff -up src/sage_setup/library_order.py.orig src/sage_setup/library_order.py
--- src/sage_setup/library_order.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage_setup/library_order.py 2020-10-31 12:11:54.313540360 -0600
@@ -10,20 +10,18 @@ import os
import pkgconfig import pkgconfig
# CBLAS can be one of multiple implementations # CBLAS can be one of multiple implementations
@ -17,31 +103,14 @@ diff -up src/module_list.py.orig src/module_list.py
if os.path.exists('/usr/lib/libblas.dll.a'): if os.path.exists('/usr/lib/libblas.dll.a'):
cblas_libs = ['gslcblas'] cblas_libs = ['gslcblas']
-# LAPACK can be one of multiple implementations # LAPACK can be one of multiple implementations
-lapack_pc = pkgconfig.parse('lapack') -lapack_pc = pkgconfig.parse('lapack')
-lapack_libs = lapack_pc['libraries'] -lapack_libs = lapack_pc['libraries']
-lapack_library_dirs = lapack_pc['library_dirs'] -lapack_library_dirs = lapack_pc['library_dirs']
-lapack_include_dirs = lapack_pc['include_dirs'] -lapack_include_dirs = lapack_pc['include_dirs']
+lapack_libs = [ 'lapack' ] +lapack_libs = ['openblas']
+lapack_library_dirs = [] +lapack_library_dirs = ['/usr/lib']
+lapack_include_dirs = [ SAGE_INC + '/lapack' ] +lapack_include_dirs = ['/usr/include/openblas']
# GD image library # GD image library
gd_pc = pkgconfig.parse('gdlib') gd_pc = pkgconfig.parse('gdlib')
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2019-10-03 16:51:42.848776173 -0300
+++ src/sage/misc/cython.py 2019-10-03 16:52:06.480917303 -0300
@@ -35,10 +35,9 @@ from sage.misc.sage_ostools import resto
# CBLAS can be one of multiple implementations
-cblas_pc = pkgconfig.parse('cblas')
-cblas_libs = list(cblas_pc['libraries'])
-cblas_library_dirs = list(cblas_pc['library_dirs'])
-cblas_include_dirs = list(cblas_pc['include_dirs'])
+cblas_libs = ['openblas']
+cblas_library_dirs = ['/usr/lib']
+cblas_include_dirs = ['/usr/include/openblas']
standard_libs = [
'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm',

View file

@ -1,5 +1,6 @@
--- src/sage/libs/primecount.pxd.orig 2020-01-01 04:03:10.000000000 -0700 diff -up src/sage/libs/primecount.pxd.orig src/sage/libs/primecount.pxd
+++ src/sage/libs/primecount.pxd 2020-03-22 14:35:05.590527408 -0600 --- 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 @@ -17,6 +17,5 @@ cdef extern from "primecount.hpp" namesp
int get_num_threads() int get_num_threads()

View file

@ -1,42 +1,6 @@
diff -up build/pkgs/ipython/src/IPython/core/interactiveshell.py.orig build/pkgs/ipython/src/IPython/core/interactiveshell.py
--- build/pkgs/ipython/src/IPython/core/interactiveshell.py.orig 2018-07-28 18:24:17.000000000 -0600
+++ build/pkgs/ipython/src/IPython/core/interactiveshell.py 2020-05-07 09:19:44.916646996 -0600
@@ -2813,7 +2813,7 @@ class InteractiveShell(SingletonConfigur
try:
for i, node in enumerate(to_run_exec):
- mod = ast.Module([node])
+ mod = ast.Module([node], [])
code = compiler(mod, cell_name, "exec")
if self.run_code(code, result):
return True
diff -up build/pkgs/sagetex/src/extractsagecode.py.orig build/pkgs/sagetex/src/extractsagecode.py
--- build/pkgs/sagetex/src/extractsagecode.py.orig 2019-11-14 04:02:40.000000000 -0700
+++ build/pkgs/sagetex/src/extractsagecode.py 2020-02-25 13:42:46.674646884 -0700
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
try:
opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite'])
-except getopt.GetoptError, err:
+except getopt.GetoptError as err:
print(str(err))
usage()
sys.exit(2)
diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makestatic.py
--- build/pkgs/sagetex/src/makestatic.py.orig 2019-11-14 04:02:40.000000000 -0700
+++ build/pkgs/sagetex/src/makestatic.py 2020-02-25 13:42:46.674646884 -0700
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
try:
opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite'])
-except getopt.GetoptError, err:
+except getopt.GetoptError as err:
print(str(err))
usage()
sys.exit(2)
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-11-14 04:02:40.000000000 -0700 --- build/pkgs/sagetex/src/remote-sagetex.py.orig 2020-08-12 02:35:31.000000000 -0600
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-02-25 13:42:46.674646884 -0700 +++ build/pkgs/sagetex/src/remote-sagetex.py 2020-10-30 14:03:01.286904419 -0600
@@ -24,12 +24,11 @@ @@ -24,12 +24,11 @@
## You should have received a copy of the GNU General Public License along ## You should have received a copy of the GNU General Public License along
## with this program. If not, see <http://www.gnu.org/licenses/>. ## with this program. If not, see <http://www.gnu.org/licenses/>.
@ -100,8 +64,8 @@ diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/re
if not password: if not password:
from getpass import getpass from getpass import getpass
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-11-14 04:02:40.000000000 -0700 --- build/pkgs/sagetex/src/sagetexparse.py.orig 2020-08-12 02:35:31.000000000 -0600
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-02-25 13:42:46.674646884 -0700 +++ build/pkgs/sagetex/src/sagetexparse.py 2020-10-30 14:03:01.286904419 -0600
@@ -132,7 +132,7 @@ class SageCodeExtractor(): @@ -132,7 +132,7 @@ class SageCodeExtractor():
def plotout(self, s, l, t): def plotout(self, s, l, t):
@ -111,31 +75,10 @@ diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sage
self.result += '# format: %s' % t.format[0][1:-1] + '\n' self.result += '# format: %s' % t.format[0][1:-1] + '\n'
self.result += t.code[1:-1] + '\n\n' self.result += t.code[1:-1] + '\n\n'
diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite_state_machine.py
--- src/sage/combinat/finite_state_machine.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/combinat/finite_state_machine.py 2020-07-06 16:47:19.198130202 -0600
@@ -935,7 +935,7 @@ import six
from six.moves import range, zip_longest, zip
from IPython.lib.pretty import pretty
-import collections
+import collections, collections.abc
import itertools
from copy import copy, deepcopy
@@ -14159,7 +14159,7 @@ def is_FSMProcessIterator(PI):
class FSMProcessIterator(SageObject,
- collections.Iterator):
+ collections.abc.Iterator):
"""
This class takes an input, feeds it into a finite state machine
(automaton or transducer, in particular), tests whether this was
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
--- src/sage/cpython/debugimpl.c.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/cpython/debugimpl.c.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/cpython/debugimpl.c 2020-07-07 13:56:17.121624915 -0600 +++ src/sage/cpython/debugimpl.c 2020-10-30 14:03:01.299904398 -0600
@@ -155,6 +155,7 @@ static void _type_debug(PyTypeObject* tp @@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize); printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize); printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset); printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
@ -143,7 +86,7 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
if HAVE_WEAKREFS(tp) if HAVE_WEAKREFS(tp)
{ {
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset); printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
@@ -185,7 +186,6 @@ static void _type_debug(PyTypeObject* tp @@ -178,7 +179,6 @@ static void _type_debug(PyTypeObject* tp
attr_pointer(tp_free); attr_pointer(tp_free);
attr_pointer_meth(tp_repr, "__repr__"); attr_pointer_meth(tp_repr, "__repr__");
@ -152,8 +95,8 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
attr_pointer_meth(tp_call, "__call__"); attr_pointer_meth(tp_call, "__call__");
attr_pointer_meth(tp_str, "__str__"); attr_pointer_meth(tp_str, "__str__");
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
--- src/sage/cpython/debug.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/cpython/debug.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/cpython/debug.pyx 2020-07-07 13:57:49.169641697 -0600 +++ src/sage/cpython/debug.pyx 2020-10-30 14:03:01.300904396 -0600
@@ -232,6 +232,7 @@ def type_debug(cls): @@ -232,6 +232,7 @@ def type_debug(cls):
tp_basicsize: 16 tp_basicsize: 16
tp_itemsize: 0 tp_itemsize: 0
@ -171,8 +114,8 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
tp_call (__call__): NULL tp_call (__call__): NULL
tp_str (__str__): 0x7fc57d757020 tp_str (__str__): 0x7fc57d757020
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py 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 2020-05-20 16:33:41.000000000 -0600 --- src/sage/geometry/triangulation/point_configuration.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/geometry/triangulation/point_configuration.py 2020-07-06 16:48:01.176121036 -0600 +++ src/sage/geometry/triangulation/point_configuration.py 2020-10-30 14:03:01.301904394 -0600
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent @@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
['{{0,1,2,4},{1,2,3,4}}'] ['{{0,1,2,4},{1,2,3,4}}']
""" """
@ -187,70 +130,9 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge
if verbose: if verbose:
print("#### TOPCOM input ####") print("#### TOPCOM input ####")
diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py
--- src/sage/graphs/graph_latex.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/graphs/graph_latex.py 2020-07-06 16:48:01.177121036 -0600
@@ -1156,7 +1156,7 @@ class GraphLatex(SageObject):
#
elif name in color_dicts:
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, c in value.items():
try:
@@ -1165,42 +1165,42 @@ class GraphLatex(SageObject):
raise ValueError('%s option for %s needs to be a matplotlib color (always as a string), not %s' % (name, key, c))
elif name in positive_scalar_dicts:
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, x in value.items():
if not type(x) in [int, Integer, float, RealLiteral] or not x >= 0.0:
raise ValueError('%s option for %s needs to be a positive number, not %s' % (name, key, x))
elif name in boolean_dicts:
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, b in value.items():
if not isinstance(b, bool):
raise ValueError('%s option for %s needs to be True or False, not %s' % (name, key, b))
elif name == 'vertex_shapes':
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, s in value.items():
if s not in shape_names:
raise ValueError('%s option for %s needs to be a vertex shape, not %s' % (name, key, s))
elif name == 'vertex_label_placements':
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, p in value.items():
if not(p == 'center') and not(isinstance(p, tuple) and len(p) == 2 and type(p[0]) in number_types and p[0] >= 0 and type(p[1]) in number_types and p[1] >= 0):
raise ValueError('%s option for %s needs to be None or a pair of positive numbers, not %s' % (name, key, p))
elif name == 'edge_label_placements':
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, p in value.items():
if not(type(p) in [float, RealLiteral] and (0 <= p) and (p <= 1)) and not(p in label_places):
raise ValueError('%s option for %s needs to be a number between 0.0 and 1.0 or a place (like "above"), not %s' % (name, key, p))
elif name == 'loop_placements':
if not isinstance(value, dict):
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
else:
for key, p in value.items():
if not((isinstance(p, tuple)) and (len(p) == 2) and (p[0] >= 0) and (p[1] in compass_points)):
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
--- src/sage/interfaces/frobby.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/interfaces/frobby.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/frobby.py 2020-07-06 16:48:01.178121036 -0600 +++ src/sage/interfaces/frobby.py 2020-10-30 14:03:02.534902319 -0600
@@ -79,7 +79,7 @@ class Frobby: @@ -79,7 +79,7 @@ class Frobby:
print("Frobby command: ", repr(command)) print("Frobby command: ", repr(command))
print("Frobby input:\n", input) print("Frobby input:\n", input)
@ -261,41 +143,20 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
frinput = str_to_bytes(input) frinput = str_to_bytes(input)
else: else:
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
--- src/sage/interfaces/gfan.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/interfaces/gfan.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/gfan.py 2020-07-06 16:48:01.178121036 -0600 +++ src/sage/interfaces/gfan.py 2020-10-30 14:11:30.550047499 -0600
@@ -66,7 +66,7 @@ class Gfan(object): @@ -62,7 +62,7 @@ class Gfan(object):
if six.PY2: print("gfan input:\n%s" % I)
enc_kwargs = {}
else:
- enc_kwargs = {'encoding': 'latin-1'}
+ enc_kwargs = {'encoding': 'utf-8'}
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
**enc_kwargs) - encoding='latin-1')
diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py + encoding='utf-8')
--- src/sage/interfaces/gp.py.orig 2020-05-20 16:33:41.000000000 -0600 ans, err = gfan_processes.communicate(input=I)
+++ src/sage/interfaces/gp.py 2020-07-06 16:48:01.179121036 -0600
@@ -934,17 +934,6 @@ class GpElement(ExpectElement):
"""
return repr(self.type()) == 't_STR'
- def __long__(self): # sometimes, gfan outputs stuff to stderr even though everything is fine
- """
- Return Python long.
-
- EXAMPLES::
-
- sage: long(gp(10))
- 10L
- """
- return long(str(self))
-
def __float__(self):
"""
Return Python float.
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/interfaces/latte.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/latte.py 2020-07-06 16:48:01.180121036 -0600 +++ src/sage/interfaces/latte.py 2020-10-30 14:03:03.974899895 -0600
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False, @@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
latte_proc = Popen(args, latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE, stdin=PIPE, stdout=PIPE,
@ -313,8 +174,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
ans, err = latte_proc.communicate(arg) ans, err = latte_proc.communicate(arg)
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
--- src/sage/interfaces/sagespawn.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/interfaces/sagespawn.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/sagespawn.pyx 2020-07-06 16:48:01.180121036 -0600 +++ src/sage/interfaces/sagespawn.pyx 2020-10-30 14:03:03.975899894 -0600
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
""" """
Sage wrapper around pexpect's ``spawn`` class and Sage wrapper around pexpect's ``spawn`` class and
@ -340,7 +201,7 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
from sage.interfaces.process cimport ContainChildren from sage.interfaces.process cimport ContainChildren
@@ -171,7 +170,7 @@ class SageSpawn(spawn): @@ -173,7 +172,7 @@ class SageSpawn(spawn):
return ret return ret
@ -349,7 +210,7 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
def close(self, force=None): def close(self, force=None):
""" """
Quit the child process: send the quit string, close the Quit the child process: send the quit string, close the
@@ -192,11 +191,7 @@ class SagePtyProcess(PtyProcess): @@ -194,11 +193,7 @@ class SagePtyProcess(PtyProcess):
if self.quit_string is not None: if self.quit_string is not None:
try: try:
# This can fail if the process already exited # This can fail if the process already exited
@ -362,11 +223,10 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
except (OSError, IOError): except (OSError, IOError):
pass pass
self.fileobj.close() self.fileobj.close()
diff -up src/sage/lfunctions/lcalc.py.orig src/sage/lfunctions/lcalc.py
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-07-06 16:48:01.181121035 -0600 +++ src/sage/libs/coxeter3/coxeter.pyx 2020-10-30 14:03:03.976899892 -0600
@@ -33,7 +33,7 @@ cdef class String: @@ -37,7 +37,7 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -375,7 +235,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
hello hello
sage: del s # optional - coxeter3 sage: del s # optional - coxeter3
""" """
@@ -44,11 +44,11 @@ cdef class String: @@ -48,11 +48,11 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -389,7 +249,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
def __hash__(self): def __hash__(self):
""" """
@@ -60,7 +60,7 @@ cdef class String: @@ -64,7 +64,7 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -398,7 +258,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: hash(s) == hash('hello') # optional - coxeter3 sage: hash(s) == hash('hello') # optional - coxeter3
True True
""" """
@@ -71,9 +71,9 @@ cdef class String: @@ -75,9 +75,9 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -411,7 +271,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: ta1 == ta2 # optional - coxeter3 sage: ta1 == ta2 # optional - coxeter3
True True
sage: tb != ta1 # optional - coxeter3 sage: tb != ta1 # optional - coxeter3
@@ -109,7 +109,7 @@ cdef class String: @@ -113,7 +113,7 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -420,7 +280,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: len(s) # optional - coxeter3 sage: len(s) # optional - coxeter3
2 2
""" """
@@ -120,7 +120,7 @@ cdef class String: @@ -124,7 +124,7 @@ cdef class String:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
@ -429,7 +289,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: TestSuite(s).run() # optional - coxeter3 sage: TestSuite(s).run() # optional - coxeter3
""" """
return (String, (repr(self),) ) return (String, (repr(self),) )
@@ -134,7 +134,7 @@ cdef class Type: @@ -138,7 +138,7 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -438,7 +298,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
A A
sage: del t # optional - coxeter3 sage: del t # optional - coxeter3
""" """
@@ -145,7 +145,7 @@ cdef class Type: @@ -149,7 +149,7 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -447,7 +307,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
A A
""" """
return bytes_to_str(self.x.name().ptr()) return bytes_to_str(self.x.name().ptr())
@@ -155,7 +155,7 @@ cdef class Type: @@ -159,7 +159,7 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -456,7 +316,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: t.name() # optional - coxeter3 sage: t.name() # optional - coxeter3
A A
""" """
@@ -171,8 +171,8 @@ cdef class Type: @@ -175,8 +175,8 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -467,7 +327,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: hash(a) == hash(b) # optional - coxeter3 sage: hash(a) == hash(b) # optional - coxeter3
False False
sage: d = {a: 1, b: 2} # optional - coxeter3 sage: d = {a: 1, b: 2} # optional - coxeter3
@@ -184,9 +184,9 @@ cdef class Type: @@ -188,9 +188,9 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -480,7 +340,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: ta1 == ta2 # optional - coxeter3 sage: ta1 == ta2 # optional - coxeter3
True True
sage: tb != ta1 # optional - coxeter3 sage: tb != ta1 # optional - coxeter3
@@ -220,7 +220,7 @@ cdef class Type: @@ -224,7 +224,7 @@ cdef class Type:
EXAMPLES:: EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3 sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
@ -489,389 +349,65 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
sage: TestSuite(t).run() # optional - coxeter3 sage: TestSuite(t).run() # optional - coxeter3
""" """
return (Type, (repr(self), )) return (Type, (repr(self), ))
@@ -257,7 +257,7 @@ cdef class CoxGroup(SageObject): @@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
pass
type = type.lower() type = type.lower()
rank = rank + 1
- type = 'B' if type == 'C' else type - type = 'B' if type == 'C' else type
+ type = b'B' if type == 'C' else type.encode('utf-8') + type = b'B' if type == 'C' else type.encode('utf-8')
if rank == 0: if rank == 0:
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented") raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx
--- src/sage/misc/parser.pyx.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/misc/parser.pyx 2020-07-06 16:48:01.182121035 -0600
@@ -95,7 +95,7 @@ def token_to_str(int token):
cdef inline bint is_alphanumeric(char c):
- return 'a' <= c <= 'z' or 'A' <= c <= 'Z' or '0' <= c <= '9' or c == '_'
+ return c'a' <= c <= c'z' or c'A' <= c <= c'Z' or c'0' <= c <= c'9' or c == c'_'
cdef inline bint is_whitespace(char c):
return (c != 0) & (strchr(" \t\n\r", c) != NULL)
@@ -247,23 +247,23 @@ cdef class Tokenizer:
return EOS
# dipthongs
- if s[pos+1] == '=':
- if s[pos] == '<':
+ if s[pos+1] == c'=':
+ if s[pos] == c'<':
self.pos += 2
return LESS_EQ
- elif s[pos] == '>':
+ elif s[pos] == c'>':
self.pos += 2
return GREATER_EQ
- elif s[pos] == '!':
+ elif s[pos] == c'!':
self.pos += 2
return NOT_EQ
- elif s[pos] == '=':
+ elif s[pos] == c'=':
self.pos += 2
- return '='
+ return c'='
- elif s[pos] == '*' and s[pos+1] == '*':
+ elif s[pos] == c'*' and s[pos+1] == c'*':
self.pos += 2
- return '^'
+ return c'^'
# simple tokens
if strchr("+-*/^()=<>,[]{}!", s[pos]):
@@ -272,29 +272,29 @@ cdef class Tokenizer:
return type
# numeric literals
- if '0' <= s[pos] <= '9' or s[pos] == '.':
+ if c'0' <= s[pos] <= c'9' or s[pos] == c'.':
type = INT
seen_exp = False
seen_decimal = False
while True:
- if '0' <= s[pos] <= '9':
+ if c'0' <= s[pos] <= c'9':
pass
- elif s[pos] == '.':
+ elif s[pos] == c'.':
if seen_decimal or seen_exp:
self.pos = pos
return type
else:
type = FLOAT
seen_decimal = True
- elif s[pos] == 'e' or s[pos] == 'E':
+ elif s[pos] == c'e' or s[pos] == c'E':
if seen_exp:
self.pos = pos
return type
else:
type = FLOAT
seen_exp = True
- elif s[pos] == '+' or s[pos] == '-':
- if not (seen_exp and (s[pos-1] == 'e' or s[pos-1] == 'E')):
+ elif s[pos] == c'+' or s[pos] == c'-':
+ if not (seen_exp and (s[pos-1] == c'e' or s[pos-1] == c'E')):
self.pos = pos
return type
else:
@@ -573,13 +573,13 @@ cdef class Parser:
"""
cdef int token
all = []
- if tokens.next() == '(':
- token = ','
- while token == ',':
+ if tokens.next() == c'(':
+ token = c','
+ while token == c',':
all.append(self.p_list(tokens))
token = tokens.next()
- if token == ')':
+ if token == c')':
from sage.matrix.constructor import matrix
return matrix(all)
else:
@@ -601,8 +601,8 @@ cdef class Parser:
[(1, 2, 3), [a + 1, b + 2, c + 3, (d + 4,)]]
"""
all = []
- cdef int token = ','
- while token == ',':
+ cdef int token = c','
+ while token == c',':
token = tokens.peek()
if token == MATRIX:
tokens.next()
@@ -615,14 +615,14 @@ cdef class Parser:
else:
tokens.backtrack()
obj = self.p_eqn(tokens)
- elif token == '[':
+ elif token == c'[':
obj = self.p_list(tokens)
- elif token == '(':
+ elif token == c'(':
obj = self.p_tuple(tokens)
elif token == EOS:
return all
- elif token == ']' or token == ')':
- tokens.token = ','
+ elif token == c']' or token == c')':
+ tokens.token = c','
return all
else:
obj = self.p_eqn(tokens)
@@ -646,11 +646,11 @@ cdef class Parser:
[]
"""
cdef int token = tokens.next()
- if token != '[':
+ if token != c'[':
self.parse_error(tokens, "Malformed list")
all = self.p_sequence(tokens)
token = tokens.next()
- if token != ']':
+ if token != c']':
self.parse_error(tokens, "Malformed list")
return all
@@ -668,20 +668,20 @@ cdef class Parser:
cdef int start = tokens.pos
cdef int token = tokens.next()
cdef bint real_tuple = True
- if token != '(':
+ if token != c'(':
self.parse_error(tokens, "Malformed tuple")
all = self.p_sequence(tokens)
if len(all) == 1:
if tokens.last() != c',':
real_tuple = False
token = tokens.next()
- if token != ')':
+ if token != c')':
self.parse_error(tokens, "Malformed tuple")
if real_tuple:
return tuple(all)
else:
token = tokens.peek()
- if token == ',' or token == EOS:
+ if token == c',' or token == EOS:
return all[0]
else:
# we have to reparse the entire thing as an expression
@@ -717,15 +717,15 @@ cdef class Parser:
"""
lhs = self.p_expr(tokens)
cdef int op = tokens.next()
- if op == '=':
+ if op == c'=':
return lhs == self.p_expr(tokens)
elif op == NOT_EQ:
return lhs != self.p_expr(tokens)
- elif op == '<':
+ elif op == c'<':
return lhs < self.p_expr(tokens)
elif op == LESS_EQ:
return lhs <= self.p_expr(tokens)
- elif op == '>':
+ elif op == c'>':
return lhs > self.p_expr(tokens)
elif op == GREATER_EQ:
return lhs >= self.p_expr(tokens)
@@ -757,9 +757,9 @@ cdef class Parser:
cdef int op
operand1 = self.p_term(tokens)
op = tokens.next()
- while op == '+' or op == '-':
+ while op == c'+' or op == c'-':
operand2 = self.p_term(tokens)
- if op == '+':
+ if op == c'+':
operand1 = operand1 + operand2
else:
operand1 = operand1 - operand2
@@ -792,17 +792,17 @@ cdef class Parser:
operand1 = self.p_factor(tokens)
op = tokens.next()
if op == NAME and self.implicit_multiplication:
- op = '*'
+ op = c'*'
tokens.backtrack()
- while op == '*' or op == '/':
+ while op == c'*' or op == c'/':
operand2 = self.p_factor(tokens)
- if op == '*':
+ if op == c'*':
operand1 = operand1 * operand2
else:
operand1 = operand1 / operand2
op = tokens.next()
if op == NAME and self.implicit_multiplication:
- op = '*'
+ op = c'*'
tokens.backtrack()
tokens.backtrack()
return operand1
@@ -826,9 +826,9 @@ cdef class Parser:
t^11
"""
cdef int token = tokens.next()
- if token == '+':
+ if token == c'+':
return self.p_factor(tokens)
- elif token == '-':
+ elif token == c'-':
return -self.p_factor(tokens)
else:
tokens.backtrack()
@@ -862,13 +862,13 @@ cdef class Parser:
"""
operand1 = self.p_atom(tokens)
cdef int token = tokens.next()
- if token == '^':
+ if token == c'^':
operand2 = self.p_factor(tokens)
return operand1 ** operand2
- elif token == "!":
+ elif token == c"!":
from sage.functions.all import factorial
operand1 = factorial(operand1)
- if tokens.peek() == '^':
+ if tokens.peek() == c'^':
tokens.next()
operand2 = self.p_factor(tokens)
return operand1 ** operand2
@@ -913,20 +913,20 @@ cdef class Parser:
elif token == NAME:
name = tokens.last_token_string()
token = tokens.next()
- if token == '(':
+ if token == c'(':
func = self.callable_constructor(name)
args, kwds = self.p_args(tokens)
token = tokens.next()
- if token != ')':
+ if token != c')':
self.parse_error(tokens, "Bad function call")
return func(*args, **kwds)
else:
tokens.backtrack()
return self.variable_constructor(name)
- elif token == '(':
+ elif token == c'(':
expr = self.p_expr(tokens)
token = tokens.next()
- if token != ')':
+ if token != c')':
self.parse_error(tokens, "Mismatched parentheses")
return expr
else:
@@ -948,10 +948,10 @@ cdef class Parser:
"""
args = []
kwds = {}
- if tokens.peek() == ')':
+ if tokens.peek() == c')':
return args, kwds
- cdef int token = ','
- while token == ',':
+ cdef int token = c','
+ while token == c',':
arg = self.p_arg(tokens)
if isinstance(arg, tuple):
name, value = arg
@@ -993,11 +993,11 @@ cdef class Parser:
"""
cdef int token = tokens.next()
- if token == NAME and tokens.peek() == '=':
+ if token == NAME and tokens.peek() == c'=':
name = tokens.last_token_string()
tokens.next()
return name, self.p_expr(tokens)
- if token == "[" :
+ if token == c"[" :
tokens.backtrack()
return self.p_list(tokens)
else:
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/misc/sageinspect.py.orig 2020-11-01 10:38:08.203022437 -0700
+++ src/sage/misc/sageinspect.py 2020-07-09 16:11:23.134895309 -0600 +++ src/sage/misc/sageinspect.py 2020-11-01 10:43:43.355143620 -0700
@@ -485,35 +485,46 @@ class SageArgSpecVisitor(ast.NodeVisitor @@ -463,12 +463,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
return False """
return node.id return node.id
- if six.PY3: - def visit_NameConstant(self, node):
- def visit_NameConstant(self, node): - """
- """ - Visit a Python AST :class:`ast.NameConstant` node.
- Visit a Python AST :class:`ast.NameConstant` node. -
- This is an optimization added in Python 3.4 for the special cases
- of True, False, and None.
+ def visit_Constant(self, node): + def visit_Constant(self, node):
+ r""" + r"""
+ Visit a Python AST :class:`ast.Constant` node. + Visit a Python AST :class:`ast.Constant` node.
- This is an optimization added in Python 3.4 for the special cases INPUT:
- of True, False, and None.
+ INPUT:
- INPUT: @@ -476,17 +473,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
+ - ``node`` - the node instance to visit
- - ``node`` - the node instance to visit OUTPUT:
+ OUTPUT:
- OUTPUT: - - None, True, False.
+ - the boolean, number, or string the ``node`` represents + - the boolean, number, or string the ``node`` represents
- - None, True, False. EXAMPLES::
+ EXAMPLES::
- 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: import ast, sage.misc.sageinspect as sms
+ sage: visitor = sms.SageArgSpecVisitor() + sage: visitor = sms.SageArgSpecVisitor()
+ sage: vis = lambda x: visitor.visit_Constant(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] [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: [type(vis(n)) for n in ['True', 'False', 'None']]
+ [<type 'bool'>, <type 'bool'>, <type 'NoneType'>] [<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
- 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
- [True, False, None]
- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3
- [<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
- """
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']] + sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
+ ['abstract', u'syntax', 'tr\\ee'] + ['abstract', u'syntax', 'tr\\ee']
+ sage: [vis(n) for n in ['123', '0.0']]
- return node.value
+ sage: vis = lambda x: visitor.visit_Constant(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] + [123, 0.0]
+ """
+ .. NOTE::
+ On Python 3 negative numbers are parsed first, for some reason, as return node.value
+ a UnaryOp node. @@ -520,57 +521,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
+ """ """
+ return node.value return node.arg
+
+ if six.PY3:
def visit_arg(self, node):
r"""
Visit a Python AST :class:`ast.arg` node.
@@ -543,57 +554,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
"""
return node.arg
- def visit_Num(self, node): - def visit_Num(self, node):
- """ - """
@ -928,78 +464,22 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
""" """
Visit a Python AST :class:`ast.List` node. Visit a Python AST :class:`ast.List` node.
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
--- src/sage/plot/plot3d/plot3d.py.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/plot/plot3d/plot3d.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/plot/plot3d/plot3d.py 2020-07-06 16:48:01.183121035 -0600 +++ src/sage/plot/plot3d/plot3d.py 2020-10-30 14:24:36.813732073 -0600
@@ -188,7 +188,8 @@ class _Coordinates(object): @@ -186,7 +186,7 @@ class _Coordinates(object):
sage: arb((x+z,y*z,z), z, (x,y)) sage: arb((x+z,y*z,z), z, (x,y))
Arbitrary Coordinates coordinate transform (z in terms of x, y) Arbitrary Coordinates coordinate transform (z in terms of x, y)
""" """
- all_vars = sage_getargspec(self.transform).args[1:] - all_vars = sage_getargspec(self.transform).args[1:]
+ args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = inspect.getfullargspec(self.transform) + all_vars = inspect.getfullargspec(self.transform)[0][1:]
+ all_vars=args[1:]
if set(all_vars) != set(indep_vars + [dep_var]): if set(all_vars) != set(indep_vars + [dep_var]):
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) 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 self.dep_var = dep_var
diff -up src/sage/plot/point.py.orig src/sage/plot/point.py
--- src/sage/plot/point.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/plot/point.py 2020-07-06 16:48:01.184121035 -0600
@@ -29,7 +29,7 @@ TESTS::
from sage.misc.decorators import options, rename_keyword
from sage.plot.colors import to_mpl_color
from sage.plot.primitive import GraphicPrimitive_xydata
-import collections
+import collections.abc
# TODO: create _allowed_options for 3D point classes to
@@ -343,7 +343,7 @@ def point(points, **kwds):
sage: point(iter([(1,2),(3,5)]))
Graphics object consisting of 1 graphics primitive
"""
- if isinstance(points, collections.Iterator):
+ if isinstance(points, collections.abc.Iterator):
points = list(points)
try:
diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_repr.py
--- src/sage/repl/display/fancy_repr.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/repl/display/fancy_repr.py 2020-07-06 16:48:01.184121035 -0600
@@ -15,7 +15,7 @@ Representations of objects
import types
from IPython.lib.pretty import (
- _safe_getattr, _baseclass_reprs,
+ _safe_getattr,
_type_pprinters,
)
@@ -264,7 +264,7 @@ class PlainPythonRepr(ObjectReprABC):
"""
klass = _safe_getattr(obj, '__class__', None) or type(obj)
klass_repr = _safe_getattr(klass, '__repr__', None)
- if klass_repr in _baseclass_reprs:
+ if klass_repr is object.__repr__:
p.text(klass_repr(obj))
else:
# A user-provided repr. Find newlines and replace them with p.break_()
diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_kernel/interact.py
--- src/sage/repl/ipython_kernel/interact.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/repl/ipython_kernel/interact.py 2020-07-06 16:48:01.185121034 -0600
@@ -35,7 +35,8 @@ EXAMPLES::
from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons
from ipywidgets.widgets.interaction import interactive, signature
-from collections import Iterable, Iterator, OrderedDict
+from collections.abc import Iterable, Iterator
+from collections import OrderedDict
from .widgets import EvalText, SageColorPicker
from .widgets_sagenb import input_grid
from sage.structure.element import parent
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
--- src/sage/rings/integer.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/rings/integer.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/integer.pyx 2020-07-06 16:48:01.187121034 -0600 +++ src/sage/rings/integer.pyx 2020-10-30 14:03:05.737896928 -0600
@@ -7135,7 +7135,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c @@ -7093,7 +7093,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
while x[0] == c' ': x += 1 # Strip spaces x += 1 # Strip spaces
# Disallow a sign here # Disallow a sign here
- if x[0] == '-' or x[0] == '+': - if x[0] == '-' or x[0] == '+':
@ -1007,10 +487,10 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
x = "" # Force an error below x = "" # Force an error below
assert base >= 2 assert base >= 2
diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
--- src/sage/rings/polynomial/pbori.pyx.orig 2020-07-06 16:13:17.464497408 -0600 --- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/polynomial/pbori.pyx 2020-07-06 16:48:01.190121033 -0600 +++ src/sage/rings/polynomial/pbori/pbori.pyx 2020-11-05 15:44:02.756454276 -0700
@@ -4764,8 +4764,7 @@ cdef class PolynomialConstruct: @@ -4800,8 +4800,7 @@ cdef class PolynomialConstruct:
# So, it is just a conversion. [Simon King] # So, it is just a conversion. [Simon King]
return (<BooleanPolynomialRing>ring)._element_constructor_(x) return (<BooleanPolynomialRing>ring)._element_constructor_(x)
@ -1021,9 +501,9 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor
cdef class MonomialConstruct: cdef class MonomialConstruct:
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
--- src/sage/rings/real_mpfi.pyx.orig 2020-07-06 16:19:17.719457638 -0600 --- src/sage/rings/real_mpfi.pyx.orig 2020-10-30 11:34:28.078977132 -0600
+++ src/sage/rings/real_mpfi.pyx 2020-07-06 16:48:01.192121033 -0600 +++ src/sage/rings/real_mpfi.pyx 2020-10-30 14:03:09.088891288 -0600
@@ -1941,12 +1941,12 @@ cdef class RealIntervalFieldElement(Ring @@ -1955,12 +1955,12 @@ cdef class RealIntervalFieldElement(Ring
cdef long digits cdef long digits
digits = strlen(lower_s) digits = strlen(lower_s)
@ -1038,7 +518,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
digits -= 1 digits -= 1
upper_expo -= digits upper_expo -= digits
@@ -2115,7 +2115,7 @@ cdef class RealIntervalFieldElement(Ring @@ -2129,7 +2129,7 @@ cdef class RealIntervalFieldElement(Ring
raise MemoryError("Unable to allocate memory for the mantissa of an interval") raise MemoryError("Unable to allocate memory for the mantissa of an interval")
mpz_get_str(tmp_cstr, base, lower_mpz) mpz_get_str(tmp_cstr, base, lower_mpz)
digits = strlen(tmp_cstr) digits = strlen(tmp_cstr)
@ -1048,9 +528,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
mant_string = bytes_to_str(tmp_cstr+1) mant_string = bytes_to_str(tmp_cstr+1)
sign_string = bytes_to_str(b'-') sign_string = bytes_to_str(b'-')
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
--- src/sage/rings/real_mpfr.pyx.orig 2020-07-06 16:19:17.720457638 -0600 --- src/sage/rings/real_mpfr.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/real_mpfr.pyx 2020-07-06 16:48:01.194121032 -0600 +++ src/sage/rings/real_mpfr.pyx 2020-11-05 15:44:02.769454276 -0700
@@ -2045,7 +2045,7 @@ cdef class RealNumber(sage.structure.ele @@ -2091,7 +2091,7 @@ cdef class RealNumber(sage.structure.ele
if s is NULL: if s is NULL:
raise RuntimeError("unable to convert an mpfr number to a string") raise RuntimeError("unable to convert an mpfr number to a string")
# t contains just digits (no sign, decimal point or exponent) # t contains just digits (no sign, decimal point or exponent)
@ -1060,9 +540,9 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
t = char_to_str(s + 1) t = char_to_str(s + 1)
else: else:
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
--- src/sage/structure/sage_object.pyx.orig 2020-05-20 16:33:41.000000000 -0600 --- src/sage/structure/sage_object.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/structure/sage_object.pyx 2020-07-06 16:48:01.194121032 -0600 +++ src/sage/structure/sage_object.pyx 2020-10-30 14:03:09.091891283 -0600
@@ -680,7 +680,7 @@ cdef class SageObject: @@ -688,7 +688,7 @@ cdef class SageObject:
try: try:
s = self._interface_init_(I) s = self._interface_init_(I)
except Exception: except Exception:
@ -1072,9 +552,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.
if c: if c:
try: try:
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
--- src/sage/symbolic/expression.pyx.orig 2020-07-06 16:22:36.515435688 -0600 --- src/sage/symbolic/expression.pyx.orig 2020-10-30 12:10:19.747169301 -0600
+++ src/sage/symbolic/expression.pyx 2020-07-06 16:48:01.198121032 -0600 +++ src/sage/symbolic/expression.pyx 2020-10-30 14:03:09.095891276 -0600
@@ -12990,7 +12990,7 @@ cdef class hold_class: @@ -13071,7 +13071,7 @@ cdef class hold_class:
sage: SR(2)^5 sage: SR(2)^5
32 32
""" """
@ -1083,7 +563,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
def __exit__(self, *args): def __exit__(self, *args):
""" """
@@ -13003,7 +13003,7 @@ cdef class hold_class: @@ -13084,7 +13084,7 @@ cdef class hold_class:
sage: SR(2)^5 sage: SR(2)^5
32 32
""" """
@ -1092,25 +572,3 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
def start(self): def start(self):
""" """
diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx
--- src/sage/symbolic/ring.pyx.orig 2020-07-06 16:20:02.592452688 -0600
+++ src/sage/symbolic/ring.pyx 2020-07-10 09:09:09.512400345 -0600
@@ -32,7 +32,6 @@ from sage.rings.all import RR, CC, ZZ
import keyword
import operator
-import parser
# Do not allow any of these keywords as identifiers for symbolic variables
KEYWORDS = set(keyword.kwlist).union(['exec', 'print', 'None', 'True',
@@ -1405,8 +1404,8 @@ def isidentifier(x):
pass # py2
try:
- code = parser.expr(x).compile()
+ code = compile(x, '<string>', 'eval')
except (MemoryError, OverflowError, SyntaxError,
- SystemError, parser.ParserError):
+ SystemError, ValueError):
return False
return len(code.co_names) == 1 and code.co_names[0] == x

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
--- src/sage/interfaces/qepcad.py.orig 2019-03-23 16:20:41.000000000 -0600 --- src/sage/interfaces/qepcad.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/qepcad.py 2019-04-08 13:32:00.509789984 -0600 +++ src/sage/interfaces/qepcad.py 2020-10-30 14:49:41.431265953 -0600
@@ -530,7 +530,7 @@ TESTS: @@ -530,7 +530,7 @@ TESTS:
Check the qepcad configuration file:: Check the qepcad configuration file::
@ -10,9 +10,9 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
....: f.readlines()[-1] ....: f.readlines()[-1]
'SINGULAR .../bin\n' 'SINGULAR .../bin\n'
@@ -607,7 +607,6 @@ AUTHORS: @@ -606,7 +606,6 @@ AUTHORS:
#*****************************************************************************
from __future__ import print_function, absolute_import from __future__ import print_function, absolute_import
from six import string_types
-from sage.env import SAGE_LOCAL -from sage.env import SAGE_LOCAL
import pexpect import pexpect

View file

@ -1,7 +1,7 @@
diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
--- src/sage/misc/binary_tree.pyx.orig 2019-03-23 16:20:41.000000000 -0600 --- src/sage/misc/binary_tree.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/misc/binary_tree.pyx 2019-04-09 13:55:17.152716497 -0600 +++ src/sage/misc/binary_tree.pyx 2020-10-30 13:27:44.173427025 -0600
@@ -13,6 +13,8 @@ from cysignals.memory cimport sig_malloc @@ -12,6 +12,8 @@ from cysignals.memory cimport sig_malloc
from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF
@ -10,7 +10,7 @@ diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
cdef binary_tree_node *BinaryTreeNode(int key, object value): cdef binary_tree_node *BinaryTreeNode(int key, object value):
cdef binary_tree_node *t cdef binary_tree_node *t
t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node)) t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node))
@@ -122,10 +124,7 @@ cdef binary_tree_node *binary_tree_right @@ -121,10 +123,7 @@ cdef binary_tree_node *binary_tree_right
cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self): cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self):
cdef binary_tree_node *cur cdef binary_tree_node *cur
cdef int right cdef int right
@ -22,7 +22,7 @@ diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
if self.right == NULL: if self.right == NULL:
return self.left return self.left
if self.left == NULL: if self.left == NULL:
@@ -502,7 +501,6 @@ class Test: @@ -501,7 +500,6 @@ class Test:
sage: sage.misc.binary_tree.Test().random() sage: sage.misc.binary_tree.Test().random()
""" """

View file

@ -1,7 +1,7 @@
diff -up src/sage/all.py.orig src/sage/all.py diff -up src/sage/all.py.orig src/sage/all.py
--- src/sage/all.py.orig 2019-06-27 11:31:07.149494781 -0600 --- src/sage/all.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/all.py 2019-06-27 11:32:11.332515672 -0600 +++ src/sage/all.py 2020-10-30 13:56:32.674557350 -0600
@@ -286,11 +286,11 @@ def _write_started_file(): @@ -324,11 +324,11 @@ def _write_started_file():
Check that the file exists when Sage is running (note, this file is not Check that the file exists when Sage is running (note, this file is not
necessarily installed or used by downstream packages of Sage):: necessarily installed or used by downstream packages of Sage)::

View file

@ -1,18 +1,6 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2019-10-03 14:49:57.072685858 -0300
+++ src/module_list.py 2019-10-03 14:50:05.889737429 -0300
@@ -2,7 +2,7 @@ import os
from distutils.extension import Extension
from sage.env import SAGE_LOCAL
-SAGE_INC = os.path.join(SAGE_LOCAL, 'include')
+SAGE_INC = '/usr/include'
#########################################################
### pkg-config setup
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2019-10-03 14:49:48.553636029 -0300 --- src/sage/misc/cython.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/misc/cython.py 2019-10-03 14:50:05.890737435 -0300 +++ src/sage/misc/cython.py 2020-10-30 16:08:06.039158996 -0600
@@ -46,7 +46,7 @@ standard_libs = [ @@ -46,7 +46,7 @@ standard_libs = [
] + cblas_libs + [ ] + cblas_libs + [
'ntl'] 'ntl']

View file

@ -1,306 +1,87 @@
diff -up build/pkgs/rubiks/src/dik/cube.c.orig build/pkgs/rubiks/src/dik/cube.c diff -up src/sage/features/rubiks.py.orig src/sage/features/rubiks.py
--- build/pkgs/rubiks/src/dik/cube.c.orig 2008-01-04 01:26:59.000000000 -0700 --- src/sage/features/rubiks.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ build/pkgs/rubiks/src/dik/cube.c 2019-04-09 13:25:49.060985774 -0600 +++ src/sage/features/rubiks.py 2020-10-30 16:35:54.828279888 -0600
@@ -6,6 +6,7 @@ static void read_position(); @@ -30,7 +30,7 @@ class cu2(Executable):
sage: isinstance(cu2(), cu2)
True
"""
- Executable.__init__(self, "cu2", executable="cu2",
+ Executable.__init__(self, "cu2", executable="rubiks_cu2",
spkg="rubiks")
static int do_repeat = 0;
+int @@ -53,7 +53,7 @@ class size222(Executable):
main(argc, argv) sage: isinstance(size222(), size222)
int argc; True
char *argv[]; """
diff -up build/pkgs/rubiks/src/dik/globals.h.orig build/pkgs/rubiks/src/dik/globals.h - Executable.__init__(self, "size222", executable="size222",
--- build/pkgs/rubiks/src/dik/globals.h.orig 2008-01-04 01:26:59.000000000 -0700 + Executable.__init__(self, "size222", executable="rubiks_size222",
+++ build/pkgs/rubiks/src/dik/globals.h 2019-04-09 15:47:20.736919992 -0600 spkg="rubiks")
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define MAX_MOVES 30
diff -up build/pkgs/rubiks/src/dik/permcube.c.orig build/pkgs/rubiks/src/dik/permcube.c @@ -76,7 +76,7 @@ class optimal(Executable):
--- build/pkgs/rubiks/src/dik/permcube.c.orig 2008-01-04 01:26:59.000000000 -0700 sage: isinstance(optimal(), optimal)
+++ build/pkgs/rubiks/src/dik/permcube.c 2019-04-09 13:24:49.733911356 -0600 True
@@ -1,5 +1,6 @@ """
#include "globals.h" - Executable.__init__(self, "optimal", executable="optimal",
+ Executable.__init__(self, "optimal", executable="rubiks_optimal",
spkg="rubiks")
+int
perm_cube()
{
int i, j, k, tmp;
diff -up build/pkgs/rubiks/src/dik/prntsol.c.orig build/pkgs/rubiks/src/dik/prntsol.c
--- build/pkgs/rubiks/src/dik/prntsol.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/prntsol.c 2019-04-09 13:25:14.869519211 -0600
@@ -2,6 +2,7 @@
static char m[] = "FRUBLD"; @@ -99,7 +99,7 @@ class mcube(Executable):
sage: isinstance(mcube(), mcube)
True
"""
- Executable.__init__(self, "mcube", executable="mcube",
+ Executable.__init__(self, "mcube", executable="rubiks_mcube",
spkg="rubiks")
+void
prnt_sol()
{
int i, j, k;
diff -up build/pkgs/rubiks/src/dik/setcube.c.orig build/pkgs/rubiks/src/dik/setcube.c
--- build/pkgs/rubiks/src/dik/setcube.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/setcube.c 2019-04-09 13:26:52.427996988 -0600
@@ -24,7 +24,7 @@ static char edges[12][2][2] = {
{"FR", "RF"},
{"FL", "LF"}};
-static cube_found, orient_found; @@ -122,7 +122,7 @@ class dikcube(Executable):
+static int cube_found, orient_found; sage: isinstance(dikcube(), dikcube)
True
"""
- Executable.__init__(self, "dikcube", executable="dikcube",
+ Executable.__init__(self, "dikcube", executable="rubiks_dikcube",
spkg="rubiks")
static void find_corner(c)
char *c;
diff -up build/pkgs/rubiks/src/dik/size222.c.orig build/pkgs/rubiks/src/dik/size222.c
--- build/pkgs/rubiks/src/dik/size222.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/size222.c 2019-04-09 13:29:43.371327964 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define NOMAX @@ -145,7 +145,7 @@ class cubex(Executable):
#include "trans/perm7.a" sage: isinstance(cubex(), cubex)
@@ -17,6 +19,7 @@ int maximal; True
int gcount; """
int givemax; - Executable.__init__(self, "cubex", executable="cubex",
+ Executable.__init__(self, "cubex", executable="rubiks_cubex",
spkg="rubiks")
+void
do_pr(turns, count)
int turns, count;
{
@@ -29,6 +32,7 @@ int turns, count;
fflush(stdout);
}
+int diff -up src/sage/interfaces/rubik.py.orig src/sage/interfaces/rubik.py
try_one(num, count) --- src/sage/interfaces/rubik.py.orig 2020-10-24 11:37:59.000000000 -0600
int num, count; +++ src/sage/interfaces/rubik.py 2020-10-30 16:37:38.173193027 -0600
{ @@ -96,7 +96,7 @@ class OptimalSolver:
@@ -64,6 +68,7 @@ int i, j, nnum, counted = 0, k, l, max = """
return counted; Interface to Michael Reid's optimal Rubik's Cube solver.
} """
- __cmd = "optimal"
+ __cmd = "rubiks_optimal"
+void def __init__(self, verbose=False, wait=True):
try(count) self.verbose = verbose
int count; @@ -185,7 +185,7 @@ move_map = {
{
@@ -93,6 +98,7 @@ TYPE j;
do_pr(count + 1, counted);
}
+int class CubexSolver:
main(argc, argv)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/size333c.c.orig build/pkgs/rubiks/src/dik/size333c.c
--- build/pkgs/rubiks/src/dik/size333c.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/size333c.c 2019-04-09 13:30:16.257814499 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define EQUIV - __cmd = "cubex"
#define NOMAX + __cmd = "rubiks_cubex"
@@ -38,6 +40,7 @@ int maximal;
int gcount;
int givemax;
+void def __call__(self, facets):
do_pr(turns, count) return self.solve(facets)
int turns, count; @@ -238,7 +238,7 @@ class CubexSolver:
{
@@ -50,6 +53,7 @@ int turns, count;
fflush(stdout);
}
+int class DikSolver:
try_one(num, count)
int num, count;
{
@@ -122,6 +126,7 @@ int i, j, nnum, counted = 0, k, l, max,
return wcounted;
}
+void - __cmd = "dikcube"
try(count) + __cmd = "rubiks_dikcube"
int count;
{
@@ -151,6 +156,7 @@ TYPE j;
do_pr(count + 1, counted);
}
+int def __call__(self, facets):
main(argc, argv) return self.solve(facets)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/sizedom.c.orig build/pkgs/rubiks/src/dik/sizedom.c
--- build/pkgs/rubiks/src/dik/sizedom.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/sizedom.c 2019-04-09 13:33:16.473000709 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define SUBGROUP
#define EQUIV
@@ -39,6 +41,7 @@ int maximal;
int gcount;
int givemax;
+void
do_pr(turns, count)
int turns, count;
{
@@ -51,6 +54,7 @@ int turns, count;
fflush(stdout);
}
+int
try_one(num, count)
int num, count;
{
@@ -175,6 +179,7 @@ int i, j, nnum, counted = 0, k, l, max,
return wcounted;
}
+void
try(count)
int count;
{
@@ -273,6 +278,7 @@ int cperm, eperm;
init_turn(cperm, eperm);
}
+int
main(argc, argv)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/sizekoc1.c.orig build/pkgs/rubiks/src/dik/sizekoc1.c
--- build/pkgs/rubiks/src/dik/sizekoc1.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/sizekoc1.c 2019-04-09 13:34:37.327738285 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define EQUIV
#define NOMAX
@@ -28,6 +30,7 @@ int maximal;
int gcount;
int givemax;
+void
do_pr(turns, count)
int turns, count;
{
@@ -40,6 +43,7 @@ int turns, count;
fflush(stdout);
}
+int
try_one(num, count)
int num, count;
{
@@ -91,6 +95,7 @@ int i, j, nnum, counted = 0, k, l, max,
return wcounted;
}
+void
try(count)
int count;
{
@@ -120,6 +125,7 @@ TYPE j;
do_pr(count + 1, counted);
}
+int
main(argc, argv)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/sizekoc2.c.orig build/pkgs/rubiks/src/dik/sizekoc2.c
--- build/pkgs/rubiks/src/dik/sizekoc2.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/sizekoc2.c 2019-04-09 13:35:21.151052650 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define EQUIV
#define NOMAX
@@ -28,6 +30,7 @@ int maximal;
int gcount;
int givemax;
+void
do_pr(turns, count)
int turns, count;
{
@@ -40,6 +43,7 @@ int turns, count;
fflush(stdout);
}
+int
try_one(num, count)
int num, count;
{
@@ -128,6 +132,7 @@ int i, j, nnum, counted = 0, k, l, max,
return wcounted;
}
+void
try(count)
int count;
{
@@ -157,6 +162,7 @@ TYPE j;
do_pr(count + 1, counted);
}
+int
main(argc, argv)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/sizesquare.c.orig build/pkgs/rubiks/src/dik/sizesquare.c
--- build/pkgs/rubiks/src/dik/sizesquare.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/sizesquare.c 2019-04-09 13:31:57.537233176 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#define NOMAX
#include "trans/perm4.a"
@@ -16,6 +18,7 @@ int maximal;
int gcount;
int givemax;
+void
do_pr(turns, count)
int turns, count;
{
@@ -28,6 +31,7 @@ int turns, count;
fflush(stdout);
}
+int
try_one(num, count)
int num, count;
{
@@ -56,6 +60,7 @@ int i, j, nnum, counted = 0, k, l, max =
return counted;
}
+void
try(count)
int count;
{
@@ -85,6 +90,7 @@ TYPE j;
do_pr(count + 1, counted);
}
+int
main(argc, argv)
int argc;
char *argv[];

View file

@ -1,7 +1,7 @@
diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
--- src/sage/doctest/control.py.orig 2019-10-03 14:51:45.323319025 -0300 --- src/sage/doctest/control.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/doctest/control.py 2019-10-03 14:52:24.063545626 -0300 +++ src/sage/doctest/control.py 2020-10-30 13:55:37.330649309 -0600
@@ -106,7 +106,6 @@ class DocTestDefaults(SageObject): @@ -115,7 +115,6 @@ class DocTestDefaults(SageObject):
self.valgrind = False self.valgrind = False
self.massif = False self.massif = False
self.cachegrind = False self.cachegrind = False
@ -9,7 +9,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
self.failed = False self.failed = False
self.new = False self.new = False
self.show_skipped = False self.show_skipped = False
@@ -309,7 +308,7 @@ class DocTestController(SageObject): @@ -318,7 +317,7 @@ class DocTestController(SageObject):
if options.gdb or options.debug: if options.gdb or options.debug:
# Interactive debuggers: "infinite" timeout # Interactive debuggers: "infinite" timeout
options.timeout = 0 options.timeout = 0
@ -18,7 +18,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
# Non-interactive debuggers: 48 hours # Non-interactive debuggers: 48 hours
options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60)) options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60))
elif options.long: elif options.long:
@@ -1105,13 +1104,8 @@ class DocTestController(SageObject): @@ -1109,13 +1108,8 @@ class DocTestController(SageObject):
elif opt.cachegrind: elif opt.cachegrind:
toolname = "cachegrind" toolname = "cachegrind"
flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "") flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "")
@ -32,7 +32,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
if "%s" in flags: if "%s" in flags:
flags %= toolname + ".%p" # replace %s with toolname flags %= toolname + ".%p" # replace %s with toolname
cmd += flags + sage_cmd cmd += flags + sage_cmd
@@ -1196,10 +1190,10 @@ class DocTestController(SageObject): @@ -1201,10 +1195,10 @@ class DocTestController(SageObject):
""" """
opt = self.options opt = self.options
@ -46,9 +46,9 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
return self.run_val_gdb() return self.run_val_gdb()
else: else:
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
--- src/sage/interfaces/singular.py.orig 2019-10-03 14:52:35.554612838 -0300 --- src/sage/interfaces/singular.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/singular.py 2019-10-03 14:53:22.502887441 -0300 +++ src/sage/interfaces/singular.py 2020-10-30 13:55:37.332649306 -0600
@@ -2262,7 +2262,7 @@ def generate_docstring_dictionary(): @@ -2349,7 +2349,7 @@ def generate_docstring_dictionary():
nodes.clear() nodes.clear()
node_names.clear() node_names.clear()
@ -57,7 +57,7 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*") new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*")
new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*") new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*")
@@ -2270,8 +2270,9 @@ def generate_docstring_dictionary(): @@ -2357,8 +2357,9 @@ def generate_docstring_dictionary():
L, in_node, curr_node = [], False, None L, in_node, curr_node = [], False, None
# singular.hlp contains a few iso-5559-1 encoded special characters # singular.hlp contains a few iso-5559-1 encoded special characters
@ -70,9 +70,9 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
m = re.match(new_node,line) m = re.match(new_node,line)
if m: if m:
diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2019-10-03 14:53:32.585946418 -0300 --- src/sage_setup/docbuild/ext/multidocs.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage_setup/docbuild/ext/multidocs.py 2019-10-03 14:54:02.207119676 -0300 +++ src/sage_setup/docbuild/ext/multidocs.py 2020-10-30 13:55:37.332649306 -0600
@@ -85,8 +85,11 @@ def merge_environment(app, env): @@ -82,8 +82,11 @@ def merge_environment(app, env):
for ind in newalldoc: for ind in newalldoc:
# treat subdocument source as orphaned file and don't complain # treat subdocument source as orphaned file and don't complain
md = env.metadata.get(ind, dict()) md = env.metadata.get(ind, dict())
@ -85,4 +85,4 @@ diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/e
+ env.metadata[ind] = {'orphan'} + env.metadata[ind] = {'orphan'}
# merge the citations # merge the citations
newcite = {} newcite = {}
citations = docenv.domaindata["std"]["citations"] for ind, (path, tag, lineno) in citations.items():

View file

@ -1,12 +0,0 @@
diff -up build/pkgs/sagetex/src/run-sagetex-if-necessary.py.orig build/pkgs/sagetex/src/run-sagetex-if-necessary.py
--- build/pkgs/sagetex/src/run-sagetex-if-necessary.py.orig 2019-10-03 16:56:05.217343030 -0300
+++ build/pkgs/sagetex/src/run-sagetex-if-necessary.py 2019-10-03 16:56:23.334451227 -0300
@@ -64,7 +64,7 @@ if not uses_sagetex:
# if something goes wrong, assume we need to run Sage
run_sage = True
-ignore = r"^( _st_.goboom|print\('SageT| ?_st_.current_tex_line)"
+ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))"
try:
with open(src + '.sagetex.sage', 'r') as sagef:

View file

@ -1,171 +1,16 @@
diff -up src/bin/sage.orig src/bin/sage diff -up src/bin/sage.orig src/bin/sage
--- src/bin/sage.orig 2020-05-20 16:33:41.000000000 -0600 --- src/bin/sage.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/bin/sage 2020-07-06 16:33:49.015329159 -0600 +++ src/bin/sage 2020-10-30 13:43:06.816896461 -0600
@@ -26,13 +26,10 @@ usage() { @@ -29,7 +29,6 @@ usage() {
echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file" echo " --gap [...] -- run Sage's Gap with given arguments"
echo " -advanced -- list all command line options" echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments"
echo " -c <cmd> -- Evaluates cmd as sage code" echo " -h -- print this help message"
- echo " -experimental -- list all experimental packages that can be installed" - echo " --pip [...] -- invoke pip, the Python package manager"
echo " -gap [...] -- run Sage's Gap with given arguments" echo " --maxima [...] -- run Sage's Maxima with given arguments"
echo " -gap3 [...] -- run Sage's Gap3 with given arguments" echo " --mwrank [...] -- run Sage's mwrank with given arguments"
echo " -gp [...] -- run Sage's PARI/GP calculator with given arguments" echo " --notebook=[...] -- start the Sage notebook (valid options are"
echo " -h, -? -- print this help message" @@ -59,119 +58,6 @@ usage() {
- echo " -i [packages] -- install the given Sage packages" # below, after sourcing sage-env.
- echo " -pip [...] -- invoke pip, the Python package manager"
echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)"
echo " -maxima [...] -- run Sage's Maxima with given arguments"
echo " -mwrank [...] -- run Sage's mwrank with given arguments"
@@ -40,7 +37,6 @@ usage() {
echo " 'default', 'sagenb', 'jupyter', and 'export')"
echo " Current default is 'export' from sagenb to jupyter"
echo " -n, --notebook -- shortcut for --notebook=default"
- echo " -optional -- list all optional packages that can be installed"
echo " -python [...] -- run the Python interpreter"
echo " -python2 [...] -- run the Python 2 interpreter"
echo " -python3 [...] -- run the Python 3 interpreter"
@@ -58,10 +54,6 @@ usage() {
echo " --optional - controls which optional tests are run"
echo " --sagenb - test all sagenb files"
echo " --help - show all testing options"
- echo " -upgrade [version] -- download, build and install the given version. Here,"
- echo " 'version' is a git branch or tag name. Useful values"
- echo " are 'master' (the current development version, this"
- echo " is the default) or a version number like '5.13'."
echo " -v, -version -- display Sage version information"
exit 0
}
@@ -81,11 +73,8 @@ usage_advanced() {
echo " -preparse <file.sage> -- preparse file.sage and produce corresponding file.sage.py"
echo " -q -- quiet; start with no banner"
echo " -root -- print the Sage root directory"
- echo " -gthread, -qthread, -q4thread, -wthread, -pylab"
- echo " -- pass the option through to ipython"
echo " -v, -version -- display Sage version information"
echo " -dumpversion -- print Sage version"
- echo " -git-branch -- print the current git branch"
echo
#### 1.......................26..................................................78
@@ -97,8 +86,6 @@ usage_advanced() {
echo " See the output of sage --notebook --help"
echo " for more details and examples of how to pass"
echo " optional arguments"
- echo " -bn, -build-and-notebook [...] -- build the Sage library then start"
- echo " the Sage notebook"
echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)"
echo " -n, -notebook [...] -- start the default Sage notebook (options are the"
echo " same as for the notebook command in Sage). See the"
@@ -119,18 +106,12 @@ usage_advanced() {
echo " Sage), passing additional options to IPython"
echo " -ipython3 [...] -- same as above, but using Python 3"
echo " -jupyter [...] -- run Sage's Jupyter with given arguments"
- echo " -kash [...] -- run Sage's Kash with given arguments"
- command -v kash &>/dev/null || \
echo " (not installed currently, run sage -i kash)"
echo " -lisp [...] -- run Lisp interpreter included with Sage"
echo " -M2 [...] -- run Sage's Macaulay2 with given arguments"
- command -v M2 &>/dev/null || \
- echo " (not installed currently, run sage -i macaulay2)"
echo " -maxima [...] -- run Sage's Maxima with given arguments"
echo " -mwrank [...] -- run Sage's mwrank with given arguments"
echo " -polymake [...] -- run Sage's Polymake with given arguments"
- command -v polymake &>/dev/null || \
- echo " (not installed currently, run sage -i polymake)"
echo " -python [...] -- run the Python interpreter"
echo " -python2 [...] -- run the Python 2 interpreter"
echo " -python3 [...] -- run the Python 3 interpreter"
@@ -147,55 +128,7 @@ usage_advanced() {
echo
#### 1.......................26..................................................78
#### |.....................--.|...................................................|
- echo "Installing packages and upgrading:"
- echo " -package [args] -- call the new package manager with given arguments."
- echo " Run without arguments for package-specific help."
- echo " -experimental -- list all experimental packages that can be installed"
- echo " -f [opts] [packages]-- shortcut for -i -f: force build of the given Sage"
- echo " packages"
- echo " -i [opts] [packages]-- install the given Sage packages. Options:"
- echo " -c -- run the packages' test suites"
- echo " -d -- only download, do not install packages"
- echo " -f -- force build: install the packages even"
- echo " if they are already installed"
- echo " -s -- do not delete the temporary build directories"
- echo " after a successful build"
- echo " -y -- reply yes to prompts about experimental"
- echo " and old-style packages; warning: there"
- echo " is no guarantee that these packages will"
- echo " build correctly; use at your own risk"
- echo " -n -- reply no to prompts about experimental"
- echo " and old-style packages"
- echo " -p [opts] [packages]-- install the given Sage packages, without dependency"
- echo " checking and with support for old-style spkgs."
- echo " Options are -c, -d and -s with the same meaning as"
- echo " for the -i command"
- echo " -info [packages] -- print the SPKG.txt of the given packages"
- echo " --location -- if needed, fix paths to make Sage relocatable"
- echo " -optional -- list all optional packages that can be installed"
- echo " -standard -- list all standard packages that can be installed"
- echo " -installed -- list all installed packages"
- echo " -upgrade [version] -- download, build and install the given version. Here,"
- echo " 'version' is a git branch or tag name. Useful values"
- echo " are 'master' (the current development version, this"
- echo " is the default) or a version number like '5.13'."
- echo " -pip [...] -- invoke pip, the Python package manager"
-
- echo
- #### 1.......................26..................................................78
- #### |.....................--.|...................................................|
- echo "Building and testing the Sage library:"
- echo " -b -- build Sage library."
- echo " -ba -- same as -b and rebuild all Cython code"
- echo " -ba-force -- same as -ba, but don't query before rebuilding"
- echo " -br -- build and run Sage"
- echo " -bt [...] -- build and test, options like -t below"
- echo " -btp <N> [...] -- build and test parallel, options like -tp below"
- echo " -btnew [...] -- build and test modified files, options like -tnew"
- echo " -fixdoctests <file.py> [output_file] [--long]"
- echo " -- replace failing doctests with the actual output. With"
- echo " optional output_file: redirect there. With the --long"
- echo " option: include #long time tests."
+ echo "Testing the Sage library:"
echo " -startuptime [module] -- display how long each component of Sage takes to"
echo " start up; optionally specify a module to get more"
echo " details about that particular module"
@@ -229,7 +162,6 @@ usage_advanced() {
echo " -coverage <files> -- give info about doctest coverage of files"
echo " -coverageall -- give summary info about doctest coverage of all"
echo " files in the Sage library"
- echo " -docbuild [lang/]<document> <html|pdf|...> -- Build the Sage documentation"
echo " -search_src <string> -- search through all the Sage library code for string"
echo " -search_doc <string> -- search through the Sage documentation for string"
echo " -grep <string> -- same as -search_src"
@@ -255,14 +187,6 @@ usage_advanced() {
echo
#### 1.......................26..................................................78
#### |.....................--.|...................................................|
- echo "Making Sage packages or distributions:"
- echo " -sdist -- build a source distribution of Sage"
- echo " -fix-pkg-checksums -- fix the checksums from build/pkgs directories from "
- echo " the packages located in upstream/"
-
- echo
- #### 1.......................26..................................................78
- #### |.....................--.|...................................................|
echo "Valgrind memory debugging:"
echo " -cachegrind -- run Sage using Valgrind's cachegrind tool. The log"
echo " files are named sage-cachegrind.PID can be found in"
@@ -276,9 +200,6 @@ usage_advanced() {
echo " -memcheck -- run Sage using Valgrind's memcheck tool. The log"
echo " files are named sage-memcheck.PID can be found in"
echo " $DOT_SAGE"
- echo " -omega -- run Sage using Valgrind's omega tool. The log"
- echo " files are named sage-omega.PID can be found in"
- echo " $DOT_SAGE"
echo " -valgrind -- this is an alias for -memcheck"
echo
echo "You can also use -- before a long option, e.g., 'sage --optional'."
@@ -288,115 +209,6 @@ usage_advanced() {
##################################################################### #####################################################################
-# Special options to be processed without sage-env -# Special options to be processed without sage-env
@ -239,6 +84,11 @@ diff -up src/bin/sage.orig src/bin/sage
- echo >&2 "Error: 'sage -i $OPT <package>' is no longer supported, use 'sage --info <package>' instead." - echo >&2 "Error: 'sage -i $OPT <package>' is no longer supported, use 'sage --info <package>' instead."
- exit 2;; - exit 2;;
- -f) FORCE_INSTALL=yes;; - -f) FORCE_INSTALL=yes;;
- # Setting SAGE_CHECK here duplicates what we do in sage-spkg
- # but we need it in "make" already when there are (order-only)
- # dependencies on packages providing test infrastructure
- -c) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT"; export SAGE_CHECK=yes;;
- -w) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT"; export SAGE_CHECK=warn;;
- -*) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT";; - -*) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT";;
- *) PACKAGES="$PACKAGES $OPT";; - *) PACKAGES="$PACKAGES $OPT";;
- esac - esac
@ -264,7 +114,7 @@ diff -up src/bin/sage.orig src/bin/sage
- # See https://trac.sagemath.org/ticket/25078 - # See https://trac.sagemath.org/ticket/25078
- if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then - if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then
- echo >&2 "Error: package '$PKG' not found" - echo >&2 "Error: package '$PKG' not found"
- echo >&2 "Note: if it is an old-style package, use -p instead of -i to install it" - echo >&2 "Note: if it is an old-style package, installing these is no longer supported"
- exit 1 - exit 1
- fi - fi
- $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG" - $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG"
@ -275,12 +125,11 @@ diff -up src/bin/sage.orig src/bin/sage
- exit 0 - exit 0
-fi -fi
- -
-
-##################################################################### -#####################################################################
# Report information about the Sage environment # Report information about the Sage environment
##################################################################### #####################################################################
@@ -445,20 +257,6 @@ fi @@ -217,20 +103,6 @@ fi
# Prepare for running Sage, either interactively or non-interactively. # Prepare for running Sage, either interactively or non-interactively.
sage_setup() { sage_setup() {
@ -301,7 +150,7 @@ diff -up src/bin/sage.orig src/bin/sage
if [ ! -d "$IPYTHONDIR" ]; then if [ ! -d "$IPYTHONDIR" ]; then
# make sure that $DOT_SAGE exists so that ipython will happily # make sure that $DOT_SAGE exists so that ipython will happily
# create its config directories there. If DOT_SAGE doesn't # create its config directories there. If DOT_SAGE doesn't
@@ -469,20 +267,6 @@ sage_setup() { @@ -241,20 +113,6 @@ sage_setup() {
} }
@ -322,7 +171,35 @@ diff -up src/bin/sage.orig src/bin/sage
# Start an interactive Sage session, this function never returns. # Start an interactive Sage session, this function never returns.
interactive_sage() { interactive_sage() {
sage_setup sage_setup
@@ -566,16 +350,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] @@ -292,8 +150,6 @@ usage_advanced() {
echo " --nodotsage -- run Sage without using the user's"
echo " .sage directory: create and use a temporary"
echo " .sage directory instead."
- echo " --gthread, --qthread, --q4thread, --wthread, --pylab"
- echo " -- pass the option through to IPython"
echo " --simple-prompt -- pass the option through to IPython: use"
echo " this option with sage-shell mode in emacs"
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
@@ -327,18 +183,9 @@ usage_advanced() {
echo " environment (not Sage), passing additional"
echo " additional options to IPython"
echo " --jupyter [...] -- run Sage's Jupyter with given arguments"
- echo " --kash [...] -- run Sage's Kash with the given arguments"
- command -v kash &>/dev/null || \
- echo " (not installed currently, run sage -i kash)"
- echo " --M2 [...] -- run Sage's Macaulay2 with the given arguments"
- command -v M2 &>/dev/null || \
- echo " (not installed currently, run sage -i macaulay2)"
echo " --maxima [...] -- run Sage's Maxima with the given arguments"
echo " --mwrank [...] -- run Sage's mwrank with the given arguments"
- echo " --pip [...] -- invoke pip, the Python package manager"
echo " --polymake [...] -- run Sage's Polymake with given arguments"
- command -v polymake &>/dev/null || \
- echo " (not installed currently, run sage -i polymake)"
echo " --python [...], --python3 [...]"
echo " -- run the Python 3 interpreter"
echo " -R [...] -- run Sage's R with the given arguments"
@@ -601,11 +448,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ]
exec ecl "$@" exec ecl "$@"
fi fi
@ -330,29 +207,12 @@ diff -up src/bin/sage.orig src/bin/sage
- shift - shift
- exec kash "$@" - exec kash "$@"
-fi -fi
-
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
- shift
- exec sage-fixdoctests "$@"
-fi
- -
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
shift shift
exec maxima "$@" maxima_cmd=$(sage-config MAXIMA 2>/dev/null)
@@ -606,11 +380,6 @@ if [ "$1" = '--pip3' ]; then @@ -630,11 +472,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then
exec "$SAGE_LOCAL"/bin/python3 -m pip "$@" exec R "$@"
fi
-if [ "$1" = '-fix-pkg-checksums' -o "$1" = '--fix-pkg-checksums' ]; then
- shift
- exec sage-fix-pkg-checksums "$@"
-fi
-
if [ "$1" = '-python' -o "$1" = '--python' ]; then
shift
if [ "$SAGE_PYTHON3" = 'yes' ]; then
@@ -650,16 +419,6 @@ if [ "$1" = '-jupyter' -o "$1" = '--jupy
exec "$SAGE_LOCAL"/bin/jupyter "$@"
fi fi
-if [ "$1" = '-git' -o "$1" = '--git' ]; then -if [ "$1" = '-git' -o "$1" = '--git' ]; then
@ -360,48 +220,22 @@ diff -up src/bin/sage.orig src/bin/sage
- exec git "$@" - exec git "$@"
-fi -fi
- -
-if [ "$1" = '-git-branch' -o "$1" = '--git-branch' ]; then
- shift
- exec git --git-dir="$SAGE_ROOT"/.git rev-parse --abbrev-ref HEAD
-fi
-
if [ "$1" = '-sh' -o "$1" = '--sh' -o "$1" = '-buildsh' -o "$1" = '--buildsh' ]; then
# AUTHORS:
# - Carl Witty and William Stein: initial version
@@ -792,20 +551,6 @@ EOF
fi
##################################################################### #####################################################################
-# Test coverage of a module? # sage --sh and sage --buildsh
-#####################################################################
-
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
- shift
- exec sage-coverage "$@"
-fi
-
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
- shift
- exec sage-coverageall "$@"
-fi
-
-#####################################################################
# File conversion
#####################################################################
@@ -836,11 +581,6 @@ fi
# Run Sage's versions of the standard Algebra/Geometry etc. software
##################################################################### #####################################################################
@@ -804,11 +641,6 @@ fi
# build_sage, sage -b, sage -br, etc. could be moved to
# build/bin/sage-site. See #29111.
-build_sage() { -build_sage() {
- maybe_sage_location - maybe_sage_location
- ( cd "$SAGE_SRC" && $MAKE ) || exit $? - ( cd "$SAGE_ROOT/build/make" && $MAKE sagelib-no-deps ) || exit $?
-} -}
- -
if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then
sage-cleaner &>/dev/null & sage-cleaner &>/dev/null &
exec sage-notebook "$@" exec sage-notebook "$@"
@@ -851,13 +591,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not @@ -819,13 +651,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not
exec sage-notebook "$@" exec sage-notebook "$@"
fi fi
@ -412,11 +246,11 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-notebook --notebook=default "$@" - exec sage-notebook --notebook=default "$@"
-fi -fi
- -
if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
shift # Source inspection facilities, supported on sage-the-distribution and on distributions
sage-cleaner &>/dev/null & # that package the Sage sources.
@@ -876,31 +609,12 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep @@ -842,40 +667,12 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ];
exit 0 fi
fi fi
-if [ "$1" = '-b' ]; then -if [ "$1" = '-b' ]; then
@ -434,8 +268,17 @@ diff -up src/bin/sage.orig src/bin/sage
interactive_sage interactive_sage
fi fi
-if [ "$1" = '-ba' -o "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then -if [ "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
- ( cd "$SAGE_SRC" && make clean ) - echo
- echo "WARNING: 'sage --ba-force' is deprecated; use 'sage -ba' instead."
- echo
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
- build_sage
- exit $?
-fi
-
-if [ "$1" = '-ba' ]; then
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
- build_sage - build_sage
- exit $? - exit $?
-fi -fi
@ -448,7 +291,7 @@ diff -up src/bin/sage.orig src/bin/sage
sage_setup sage_setup
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
if [ "$1" = '-tp' -o "$1" = '-btp' ]; then if [ "$1" = '-tp' -o "$1" = '-btp' ]; then
@@ -912,16 +626,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" @@ -887,16 +684,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1"
fi fi
fi fi
@ -465,10 +308,34 @@ diff -up src/bin/sage.orig src/bin/sage
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
shift shift
sage_setup sage_setup
@@ -936,112 +640,6 @@ if [ "$1" = '-c' ]; then @@ -904,21 +691,6 @@ if [ "$1" = '-testall' -o "$1" = "--test
exec sage-eval "$@" exec sage-runtests -a "$@"
fi fi
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
- shift
- exec sage-fixdoctests "$@"
-fi
-
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
- shift
- exec sage-coverage "$@"
-fi
-
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
- shift
- exec sage-coverageall "$@"
-fi
-
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
exec sage-startuptime.py "$@"
fi
@@ -941,53 +713,6 @@ fi
# Creating and handling Sage distributions
#####################################################################
-# The following could be moved to build/bin/sage-site. See #29111.
-
-if [ "$1" = '--location' ]; then -if [ "$1" = '--location' ]; then
- maybe_sage_location - maybe_sage_location
- exit 0 - exit 0
@ -514,26 +381,13 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-package $@ - exec sage-package $@
-fi -fi
- -
-if [ "$1" = '-optional' -o "$1" = "--optional" ]; then if [ "$1" = '-optional' -o "$1" = "--optional" ]; then
- shift shift
- exec sage-list-packages optional $@ exec sage-list-packages optional $@
-fi @@ -1008,30 +733,6 @@ if [ "$1" = '-installed' -o "$1" = "--in
- exec sage-list-packages all --installed-only $@
-if [ "$1" = '-experimental' -o "$1" = "--experimental" ]; then fi
- shift
- exec sage-list-packages experimental $@
-fi
-
-if [ "$1" = '-standard' -o "$1" = "--standard" ]; then
- shift
- exec sage-list-packages standard $@
-fi
-
-if [ "$1" = '-installed' -o "$1" = "--installed" ]; then
- shift
- exec sage-list-packages all --installed-only $@
-fi
-
-if [ "$1" = '-p' ]; then -if [ "$1" = '-p' ]; then
- shift - shift
- # If there are no further arguments, display usage help. - # If there are no further arguments, display usage help.
@ -558,27 +412,10 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-sdist "$@" - exec sage-sdist "$@"
-fi -fi
- -
-if [ "$1" = '-rsyncdist' -o "$1" = "--rsyncdist" ]; then #####################################################################
- if [ $# -ne 2 ]; then # Debugging tools
- echo >&2 "** MISSING VERSION NUMBER! **" #####################################################################
- exit 2 @@ -1075,12 +776,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
- fi
- maybe_sage_location
- exec sage-rsyncdist $2
-fi
-
-if [ "$1" = "-docbuild" -o "$1" = "--docbuild" ]; then
- # Redirect stdin from /dev/null. This helps with running TeX which
- # tends to ask interactive questions if something goes wrong. These
- # cause the build to hang. If stdin is /dev/null, TeX just aborts.
- shift
- exec sage-python -m sage_setup.docbuild "$@" </dev/null
-fi
-
if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then
shift
sage_setup
@@ -1091,12 +689,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
exec sage-callgrind "$@" exec sage-callgrind "$@"
fi fi
@ -588,39 +425,6 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-omega "$@" - exec sage-omega "$@"
-fi -fi
- -
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then if [ "$1" = '-gthread' -o "$1" = '-qthread' -o "$1" = '-q4thread' -o "$1" = '-wthread' -o "$1" = '-pylab' -o "$1" = '--simple-prompt' -o "$1" = '-simple-prompt' ]; then
exec sage-startuptime.py "$@" # Intentionally no "shift" here
fi interactive_sage "$@"
diff -up src/bin/sage-valgrind.orig src/bin/sage-valgrind
--- src/bin/sage-valgrind.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/bin/sage-valgrind 2020-07-07 08:59:38.369847693 -0600
@@ -4,28 +4,7 @@ if [ -z $SAGE_EXTCODE ]; then
SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
fi
-SUPP=""
-# Our python2/3 spkgs and also Debian install these files as python.supp and python3.supp
-if [ "$SAGE_PYTHON_VERSION" = 2 ]; then
- PYTHON_SUPP_FILENAME="python.supp"
-else
- PYTHON_SUPP_FILENAME="python$SAGE_PYTHON_VERSION.supp"
-fi
-for dir in "$SAGE_LOCAL/lib/valgrind" "/usr/local/lib/valgrind" "/usr/lib64/valgrind" "/usr/lib/valgrind" ; do
- if [ -f "$dir"/"$PYTHON_SUPP_FILENAME" ]; then
- SUPP=" --suppressions=$dir/$PYTHON_SUPP_FILENAME"
- break
- fi
-done
-if [ -z "$SUPP" ] ; then
- echo "Python suppressions not found (not installed?), skipping"
-fi
-
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/pyalloc.supp"
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage.supp"
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage-additional.supp"
-
-MEMCHECK_FLAGS="--leak-resolution=high --leak-check=full --num-callers=25 $SUPP"
+MEMCHECK_FLAGS="--leak-resolution=high --leak-check=full --num-callers=25"
if [ "$SAGE_MEMCHECK_FLAGS" ]; then
echo "Overwriting memcheck flags with: $SAGE_MEMCHECK_FLAGS"

View file

@ -1,143 +0,0 @@
diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx
--- src/sage/libs/ecl.pyx.orig 2020-07-07 09:07:43.622621879 -0600
+++ src/sage/libs/ecl.pyx 2020-07-09 10:04:16.260992211 -0600
@@ -15,7 +15,7 @@ Library interface to Embeddable Common L
#adapted to work with pure Python types.
from libc.stdlib cimport abort
-from libc.signal cimport SIGINT, SIGBUS, SIGSEGV
+from libc.signal cimport SIGINT, SIGBUS, SIGSEGV, SIGFPE
from libc.signal cimport raise_ as signal_raise
from posix.signal cimport sigaction, sigaction_t
cimport cysignals.signals
@@ -47,9 +47,14 @@ cdef extern from "eclsig.h":
void ecl_sig_off()
cdef sigaction_t ecl_sigint_handler
cdef sigaction_t ecl_sigbus_handler
+ cdef sigaction_t ecl_sigfpe_handler
cdef sigaction_t ecl_sigsegv_handler
cdef mpz_t ecl_mpz_from_bignum(cl_object obj)
cdef cl_object ecl_bignum_from_mpz(mpz_t num)
+ cdef int fegetexcept()
+ cdef int feenableexcept(int)
+ cdef int fedisableexcept(int)
+ cdef int ecl_feflags
cdef cl_object string_to_object(char * s):
return ecl_read_from_cstring(s)
@@ -232,6 +237,7 @@ def init_ecl():
global ecl_has_booted
cdef char *argv[1]
cdef sigaction_t sage_action[32]
+ cdef int sage_fpes
cdef int i
if ecl_has_booted:
@@ -248,6 +254,8 @@ def init_ecl():
for i in range(1,32):
sigaction(i, NULL, &sage_action[i])
+ sage_fpes = fegetexcept()
+
#initialize ECL
ecl_set_option(ECL_OPT_SIGNAL_HANDLING_THREAD, 0)
cl_boot(1, argv)
@@ -255,12 +263,19 @@ def init_ecl():
#save signal handler from ECL
sigaction(SIGINT, NULL, &ecl_sigint_handler)
sigaction(SIGBUS, NULL, &ecl_sigbus_handler)
+ sigaction(SIGFPE, NULL, &ecl_sigfpe_handler)
sigaction(SIGSEGV, NULL, &ecl_sigsegv_handler)
+ #save ECL's floating point exception flags
+ ecl_feflags = fegetexcept()
+
#and put the Sage signal handlers back
for i in range(1,32):
sigaction(i, &sage_action[i], NULL)
+ fedisableexcept(ecl_feflags)
+ feenableexcept(sage_fpes)
+
#initialise list of objects and bind to global variable
# *SAGE-LIST-OF-OBJECTS* to make it rooted in the reachable tree for the GC
list_of_objects=cl_cons(Cnil,cl_cons(Cnil,Cnil))
diff -up src/sage/libs/eclsig.h.orig src/sage/libs/eclsig.h
--- src/sage/libs/eclsig.h.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/libs/eclsig.h 2020-07-09 10:01:25.618299374 -0600
@@ -9,25 +9,59 @@
#include <signal.h>
+
+/* Rummage around to determine how ECL was configured */
+#define ECL_AVOID_FPE_H /* Prevent some local includes */
+#include <ecl/config-internal.h>
+
+#ifdef HAVE_FENV_H
+#include <fenv.h>
+#ifndef FE_ALL_EXCEPT
+#define FE_ALL_EXCEPT FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INVALID
+#endif
+#else
+#ifndef FE_ALL_EXCEPT
+#define FE_ALL_EXCEPT 0
+#endif
+#endif
+
+#ifndef HAVE_FEENABLEEXCEPT
+/* These are GNU extensions */
+#define fegetexcept() 0
+#define feenablexcept(flags)
+#define fdisableexcept(flags)
+#endif
+
static struct sigaction ecl_sigint_handler;
static struct sigaction ecl_sigbus_handler;
+static struct sigaction ecl_sigfpe_handler;
static struct sigaction ecl_sigsegv_handler;
static struct sigaction sage_sigint_handler;
static struct sigaction sage_sigbus_handler;
+static struct sigaction sage_sigfpe_handler;
static struct sigaction sage_sigsegv_handler;
+static int ecl_feflags;
+static int sage_feflags;
static inline void set_ecl_signal_handler(void)
{
sigaction(SIGINT, &ecl_sigint_handler, &sage_sigint_handler);
sigaction(SIGBUS, &ecl_sigbus_handler, &sage_sigbus_handler);
+ sigaction(SIGFPE, &ecl_sigfpe_handler, &sage_sigfpe_handler);
sigaction(SIGSEGV, &ecl_sigsegv_handler, &sage_sigsegv_handler);
+ /* sage_feflags should be 0; we don't set them otherwise */
+ sage_feflags = fedisableexcept(FE_ALL_EXCEPT);
+ feenableexcept(ecl_feflags);
}
static inline void unset_ecl_signal_handler(void)
{
sigaction(SIGINT, &sage_sigint_handler, NULL);
sigaction(SIGBUS, &sage_sigbus_handler, NULL);
+ sigaction(SIGFPE, &sage_sigfpe_handler, NULL);
sigaction(SIGSEGV, &sage_sigsegv_handler, NULL);
+ ecl_feflags = fedisableexcept(FE_ALL_EXCEPT);
+ feenableexcept(sage_feflags);
}
/* This MUST be a macro because sig_on() must be in the same
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 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/libs/mpmath/ext_impl.pyx 2020-07-09 10:01:25.620299371 -0600
@@ -162,9 +162,9 @@ opts_double_precision.rounding = ROUND_N
opts_mini_prec.prec = 5
opts_mini_prec.rounding = ROUND_D
-cdef double _double_inf = float("1e300") * float("1e300")
-cdef double _double_ninf = -_double_inf
-cdef double _double_nan = _double_inf - _double_inf
+cdef double _double_inf = float("inf")
+cdef double _double_ninf = float("-inf")
+cdef double _double_nan = float("nan")
cdef inline void MPF_init(MPF *x):
"""Allocate space and set value to zero.

View file

@ -1,15 +0,0 @@
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-07-06 16:57:04.139002833 -0600
+++ src/sage/env.py 2020-07-06 16:59:20.179973650 -0600
@@ -167,9 +167,9 @@ var('SAGE_SPKG_INST', join(SAGE_LOC
var('SAGE_LIB', os.path.dirname(os.path.dirname(sage.__file__)))
var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data'))
-var('SAGE_ROOT') # no fallback for SAGE_ROOT
+var('SAGE_ROOT', '@@SAGE_ROOT@@')
var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB)
-var('SAGE_DOC_SRC', join(SAGE_ROOT, 'src', 'doc'), SAGE_DOC)
+var('SAGE_DOC_SRC', '@@SAGE_DOC@@')
var('SAGE_PKGS', join(SAGE_ROOT, 'build', 'pkgs'))
var('SAGE_ROOT_GIT', join(SAGE_ROOT, '.git'))

View file

@ -1,6 +1,6 @@
diff -up src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp diff -up src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp
--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2020-01-01 04:03:10.000000000 -0700 --- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-02-25 13:59:23.612853911 -0700 +++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-10-30 16:40:43.904036700 -0600
@@ -2,8 +2,8 @@ @@ -2,8 +2,8 @@
#include <map> #include <map>

View file

@ -4,11 +4,10 @@
%global _python_bytecompile_extra 0 %global _python_bytecompile_extra 0
%bcond_with bundled_pexpect %bcond_with bundled_pexpect
%bcond_without bundled_ipython %bcond_with bundled_ipython
%bcond_without bundled_ipywidgets %bcond_without bundled_ipywidgets
%bcond_without bundled_thebe %bcond_without bundled_thebe
%bcond_without bundled_threejs %bcond_without bundled_threejs
%bcond_without bundled_widgetsnbextension
%bcond_without install_hack %bcond_without install_hack
%if 0%{?fedora} >= 33 %if 0%{?fedora} >= 33
@ -51,38 +50,33 @@
%global flintqs_pkg flintqs-1.0 %global flintqs_pkg flintqs-1.0
%global graphs_pkg graphs-20161026 %global graphs_pkg graphs-20161026
%if %{with bundled_ipython} %if %{with bundled_ipython}
%global ipython_ver 5.8.0 %global ipython_ver 7.13.0
%global ipython_pkg ipython-%{ipython_ver} %global ipython_pkg ipython-%{ipython_ver}
%global prompt_toolkit_ver 1.0.15 %global prompt_toolkit_ver 3.0.5
%global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver} %global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver}
%endif %endif
%if %{with bundled_ipywidgets} %if %{with bundled_ipywidgets}
%global ipywidgets_ver 7.4.2 %global ipywidgets_ver 7.5.1
%global ipywidgets_pkg ipywidgets-%{ipywidgets_ver} %global ipywidgets_pkg ipywidgets-%{ipywidgets_ver}
%endif %endif
%if %{with bundled_pexpect} %if %{with bundled_pexpect}
%global pexpect_pkg pexpect-4.6.0 %global pexpect_pkg pexpect-4.8.0
%endif %endif
%global polytopes_db_pkg polytopes_db-20170220 %global polytopes_db_pkg polytopes_db-20170220
%global rubiks_pkg rubiks-20070912 %global sagetex_pkg sagetex-3.5
%global sagetex_pkg sagetex-3.4 %global Sphinx_pkg Sphinx-3.1.2
%global Sphinx_pkg Sphinx-1.8.5
%global singular_pkg singular-4.1.1p2 %global singular_pkg singular-4.1.1p2
%if %{with bundled_thebe} %if %{with bundled_thebe}
%global thebe_ver 9624e0a0 %global thebe_ver 9624e0a0
%global thebe_pkg thebe-%{thebe_ver} %global thebe_pkg thebe-%{thebe_ver}
%endif %endif
%if %{with bundled_threejs} %if %{with bundled_threejs}
%global threejs_ver r110 %global threejs_ver r117
%global threejs_pkg threejs-%{threejs_ver} %global threejs_pkg threejs-%{threejs_ver}
%endif %endif
%if %{with bundled_widgetsnbextension}
%global widgetsnbextension_ver 3.4.2
%global widgetsnbextension_pkg widgetsnbextension-%{widgetsnbextension_ver}
%endif
# Spkg equivalents of required rpms; we pretend they are installed as spkgs. # 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.99710 coxeter3-3.1 cryptominisat-5.7.1 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.0 libsirocco-2.0.2 lrslib-071 mcqd-1.0 meataxe-1.0 primecount-6.0 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0 %global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 CoCoALib-0.99710 coxeter3-3.1 cryptominisat-5.7.1 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.0 libsirocco-2.0.2 lrslib-071 mcqd-1.0 meataxe-1.0 primecount-6.1 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0
%ifarch %{ix86} x86_64 %ifarch %{ix86} x86_64
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2 %global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
@ -99,8 +93,8 @@
Name: sagemath Name: sagemath
Summary: A free open-source mathematics software system Summary: A free open-source mathematics software system
Version: 9.1 Version: 9.2
Release: 4%{?dist} Release: 1%{?dist}
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file # The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
# Additionally, every $files section has a comment with the license name # Additionally, every $files section has a comment with the license name
# before files with that license # before files with that license
@ -123,8 +117,7 @@ Patch1: %{name}-random.patch
# Set of patches to work with system wide packages # Set of patches to work with system wide packages
Patch2: %{name}-scripts.patch Patch2: %{name}-scripts.patch
# remove call to not implemented sagemath "is_package_installed" interfaces # Fix building extensions with system header files and libraries
# remove check for non free solvers
Patch3: %{name}-extensions.patch Patch3: %{name}-extensions.patch
# helper to: # helper to:
@ -158,63 +151,49 @@ Patch10: %{name}-cremona.patch
# adapt to python 3 and cython running in python 3 mode # adapt to python 3 and cython running in python 3 mode
Patch11: %{name}-python3.patch Patch11: %{name}-python3.patch
# adapt to ecl 20.4.24
Patch12: %{name}-ecl.patch
# remove the buildroot path from Cython output # remove the buildroot path from Cython output
Patch13: %{name}-buildroot.patch Patch12: %{name}-buildroot.patch
# update c++ standard to fix FTBFS # update c++ standard to fix FTBFS
Patch14: %{name}-lcalc.patch Patch13: %{name}-lcalc.patch
# Use system gap directories and modernize libgap interface # Use system gap directories and modernize libgap interface
Patch16: %{name}-libgap.patch Patch14: %{name}-libgap.patch
# Build fes # Build fes
Patch17: %{name}-fes-build.patch Patch15: %{name}-fes-build.patch
# Disable fes
Patch18: %{name}-fes.patch
# Side effect of using distro packages # Side effect of using distro packages
# https://bugzilla.redhat.com/show_bug.cgi?id=974769 # https://bugzilla.redhat.com/show_bug.cgi?id=974769
Patch19: %{name}-sympy.patch Patch16: %{name}-env.patch
# Correct unable to start QEPCAD within sage # Correct unable to start QEPCAD within sage
# https://bugzilla.redhat.com/show_bug.cgi?id=1243590 # https://bugzilla.redhat.com/show_bug.cgi?id=1243590
Patch20: %{name}-qepcad.patch Patch17: %{name}-qepcad.patch
# Correct path to arb headers # Correct path to arb headers
Patch21: %{name}-arb.patch Patch18: %{name}-arb.patch
# Add missing include paths # Use flexiblas
Patch22: %{name}-includes.patch Patch19: %{name}-flexiblas.patch
# Use [flexi/open]blas # Use openblas
Patch23: %{name}-%{blaslib}.patch Patch20: %{name}-openblas.patch
# Fix paths to latte-integrale binaries # Fix paths to latte-integrale binaries
Patch24: %{name}-latte.patch Patch21: %{name}-latte.patch
# Upstream fixes for random SIGFPEs due to ecl messing with the fp state # Change rubiks binary names to match Fedora
Patch25: %{name}-sigfpe.patch Patch22: %{name}-rubiks.patch
# Add some missing #includes and types in the rubiks code
Patch26: %{name}-rubiks.patch
# Fix an indentation error in sagetex
Patch27: %{name}-sagetex.patch
# Fix some path settings in the sage environment
Patch28: %{name}-env.patch
# Adapt to recent tdlib 0.9 # Adapt to recent tdlib 0.9
Patch29: %{name}-tdlib.patch Patch23: %{name}-tdlib.patch
# Use local objects.inv for intersphinx since no network on koji builders # Use local objects.inv for intersphinx since no network on koji builders
Patch30: %{name}-intersphinx.patch Patch24: %{name}-intersphinx.patch
# Remove an unused call to a primecount function that no longer exists # Remove an unused call to a primecount function that no longer exists
Patch31: %{name}-primecount.patch Patch25: %{name}-primecount.patch
BuildRequires: 4ti2 BuildRequires: 4ti2
BuildRequires: arb-devel BuildRequires: arb-devel
@ -224,54 +203,69 @@ BuildRequires: brial-devel
BuildRequires: cddlib-devel BuildRequires: cddlib-devel
BuildRequires: cddlib-tools BuildRequires: cddlib-tools
BuildRequires: cliquer-devel BuildRequires: cliquer-devel
BuildRequires: coin-or-Cbc-devel
BuildRequires: coxeter-devel BuildRequires: coxeter-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: dvipng BuildRequires: dvipng
BuildRequires: ecl BuildRequires: ecl
BuildRequires: eclib-devel
BuildRequires: factory-devel
%if %{with fes} %if %{with fes}
BuildRequires: fes-devel BuildRequires: fes-devel
%endif %endif
BuildRequires: flint-devel BuildRequires: flint-devel
BuildRequires: gap-devel BuildRequires: gap-devel
BuildRequires: gap-pkg-aclib
BuildRequires: gap-pkg-alnuth
BuildRequires: gap-pkg-atlasrep
BuildRequires: gap-pkg-autpgrp
BuildRequires: gap-pkg-cohomolo BuildRequires: gap-pkg-cohomolo
BuildRequires: gap-pkg-corelg BuildRequires: gap-pkg-corelg
BuildRequires: gap-pkg-crime BuildRequires: gap-pkg-crime
BuildRequires: gap-pkg-crisp
BuildRequires: gap-pkg-crystcat
BuildRequires: gap-pkg-ctbllib
BuildRequires: gap-pkg-design BuildRequires: gap-pkg-design
BuildRequires: gap-pkg-edim BuildRequires: gap-pkg-edim
BuildRequires: gap-pkg-forms 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-guava
BuildRequires: gap-pkg-hapcryst BuildRequires: gap-pkg-hapcryst
BuildRequires: gap-pkg-hecke BuildRequires: gap-pkg-hecke
BuildRequires: gap-pkg-irredsol
BuildRequires: gap-pkg-jupyterkernel BuildRequires: gap-pkg-jupyterkernel
BuildRequires: gap-pkg-laguna
BuildRequires: gap-pkg-liealgdb BuildRequires: gap-pkg-liealgdb
BuildRequires: gap-pkg-liepring BuildRequires: gap-pkg-liepring
BuildRequires: gap-pkg-loops BuildRequires: gap-pkg-loops
BuildRequires: gap-pkg-lpres BuildRequires: gap-pkg-lpres
BuildRequires: gap-pkg-mapclass BuildRequires: gap-pkg-mapclass
BuildRequires: gap-pkg-nautytracesinterface BuildRequires: gap-pkg-polenta
BuildRequires: gap-pkg-polycyclic
BuildRequires: gap-pkg-polymaking
BuildRequires: gap-pkg-qpa BuildRequires: gap-pkg-qpa
BuildRequires: gap-pkg-quagroup
BuildRequires: gap-pkg-radiroot BuildRequires: gap-pkg-radiroot
BuildRequires: gap-pkg-repsn BuildRequires: gap-pkg-repsn
BuildRequires: gap-pkg-semigroups BuildRequires: gap-pkg-resclasses
BuildRequires: gap-pkg-singular BuildRequires: gap-pkg-singular
BuildRequires: gap-pkg-sla
BuildRequires: gap-pkg-sonata
BuildRequires: gap-pkg-sophus
BuildRequires: gap-pkg-tomlib
BuildRequires: gap-pkg-toric BuildRequires: gap-pkg-toric
BuildRequires: gap-pkg-utils BuildRequires: gap-pkg-utils
BuildRequires: gc-devel
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: gcc-gfortran BuildRequires: gcc-gfortran
BuildRequires: gcc-objc BuildRequires: gcc-objc
BuildRequires: gcc-objc++ BuildRequires: gcc-objc++
BuildRequires: gd-devel
BuildRequires: gdb BuildRequires: gdb
BuildRequires: gfan BuildRequires: gfan
BuildRequires: giac-devel BuildRequires: giac-devel
BuildRequires: giac-doc
BuildRequires: glpk-devel BuildRequires: glpk-devel
BuildRequires: gmp-ecm BuildRequires: gmp-ecm
BuildRequires: gmp-ecm-devel BuildRequires: gmp-ecm-devel
BuildRequires: gsl-devel
BuildRequires: ImageMagick BuildRequires: ImageMagick
BuildRequires: iml-devel BuildRequires: iml-devel
BuildRequires: jmol BuildRequires: jmol
@ -281,16 +275,11 @@ BuildRequires: jsmath-fonts
BuildRequires: L-function-devel BuildRequires: L-function-devel
BuildRequires: latte-integrale BuildRequires: latte-integrale
BuildRequires: libbraiding-devel BuildRequires: libbraiding-devel
BuildRequires: libfplll-devel
BuildRequires: libgap BuildRequires: libgap
BuildRequires: libhomfly-devel BuildRequires: libhomfly-devel
BuildRequires: libmpc-devel BuildRequires: libmpc-devel
BuildRequires: libpng-devel
BuildRequires: linbox-devel
BuildRequires: lrcalc-devel BuildRequires: lrcalc-devel
BuildRequires: lrslib-utils BuildRequires: lrslib-utils
BuildRequires: m4ri-devel
BuildRequires: m4rie-devel
BuildRequires: mathjax BuildRequires: mathjax
BuildRequires: maxima-runtime-ecl BuildRequires: maxima-runtime-ecl
BuildRequires: mcqd-devel BuildRequires: mcqd-devel
@ -305,23 +294,43 @@ BuildRequires: pari-galdata
BuildRequires: pari-gp BuildRequires: pari-gp
BuildRequires: pari-seadata BuildRequires: pari-seadata
BuildRequires: perl-generators BuildRequires: perl-generators
BuildRequires: pkgconfig(bdw-gc)
BuildRequires: pkgconfig(cbc)
BuildRequires: pkgconfig(eclib)
BuildRequires: pkgconfig(factory)
BuildRequires: pkgconfig(fplll)
BuildRequires: pkgconfig(gdlib)
BuildRequires: pkgconfig(gsl)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(linbox)
BuildRequires: pkgconfig(m4ri)
BuildRequires: pkgconfig(m4rie)
BuildRequires: pkgconfig(pynac)
BuildRequires: pkgconfig(readline)
BuildRequires: pkgconfig(Singular)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(zlib)
BuildRequires: planarity-devel BuildRequires: planarity-devel
BuildRequires: ppl-devel BuildRequires: ppl-devel
BuildRequires: primecount-devel BuildRequires: primecount-devel
BuildRequires: pynac-devel
BuildRequires: python3-devel BuildRequires: python3-devel
BuildRequires: python3-docs BuildRequires: python3-docs
BuildRequires: python3-cypari2-devel BuildRequires: python3-cypari2-devel
BuildRequires: python3-cysignals-devel BuildRequires: python3-cysignals-devel
%if %{without bundled_ipython}
BuildRequires: python3-ipython-sphinx
%endif
BuildRequires: python3-pillow-devel BuildRequires: python3-pillow-devel
BuildRequires: python3-pplpy-devel BuildRequires: python3-pplpy-devel
BuildRequires: python3-tdlib-devel BuildRequires: python3-tdlib-devel
%if %{with bundled_ipython}
BuildRequires: %{py3_dist backcall}
%endif
BuildRequires: %{py3_dist brial} BuildRequires: %{py3_dist brial}
BuildRequires: %{py3_dist cvxopt} BuildRequires: %{py3_dist cvxopt}
BuildRequires: %{py3_dist cython} BuildRequires: %{py3_dist cython}
BuildRequires: %{py3_dist docutils} BuildRequires: %{py3_dist docutils}
BuildRequires: %{py3_dist fpylll} BuildRequires: %{py3_dist fpylll}
BuildRequires: %{py3_dist future}
BuildRequires: %{py3_dist gmpy2} BuildRequires: %{py3_dist gmpy2}
%if %{with sphinx_hack} %if %{with sphinx_hack}
BuildRequires: %{py3_dist html5lib} BuildRequires: %{py3_dist html5lib}
@ -331,6 +340,9 @@ BuildRequires: %{py3_dist ipykernel}
%if %{without bundled_ipython} %if %{without bundled_ipython}
BuildRequires: %{py3_dist ipython} BuildRequires: %{py3_dist ipython}
%endif %endif
%if %{with bundled_ipython}
BuildRequires: %{py3_dist jedi}
%endif
BuildRequires: %{py3_dist kiwisolver} BuildRequires: %{py3_dist kiwisolver}
BuildRequires: %{py3_dist matplotlib} BuildRequires: %{py3_dist matplotlib}
BuildRequires: %{py3_dist networkx} BuildRequires: %{py3_dist networkx}
@ -362,16 +374,16 @@ BuildRequires: %{py3_dist simplegeneric}
BuildRequires: %{py3_dist six} BuildRequires: %{py3_dist six}
BuildRequires: %{py3_dist sphinx} BuildRequires: %{py3_dist sphinx}
BuildRequires: %{py3_dist sympy} BuildRequires: %{py3_dist sympy}
BuildRequires: %{py3_dist wheel}
BuildRequires: %{py3_dist widgetsnbextension}
BuildRequires: %{py3_dist zodb3} BuildRequires: %{py3_dist zodb3}
BuildRequires: qepcad-B BuildRequires: qepcad-B
BuildRequires: R BuildRequires: R
BuildRequires: ratpoints-devel BuildRequires: ratpoints-devel
BuildRequires: readline-devel BuildRequires: rubiks
BuildRequires: rw-devel BuildRequires: rw-devel
BuildRequires: sharedmeataxe-devel BuildRequires: sharedmeataxe-devel
BuildRequires: Singular-devel
BuildRequires: sirocco-devel BuildRequires: sirocco-devel
BuildRequires: stix-fonts
BuildRequires: suitesparse-devel BuildRequires: suitesparse-devel
BuildRequires: symmetrica-devel BuildRequires: symmetrica-devel
BuildRequires: sympow BuildRequires: sympow
@ -383,17 +395,16 @@ BuildRequires: tex(makecmds.sty)
BuildRequires: web-assets-devel BuildRequires: web-assets-devel
BuildRequires: xorg-x11-fonts-Type1 BuildRequires: xorg-x11-fonts-Type1
BuildRequires: xorg-x11-server-Xvfb BuildRequires: xorg-x11-server-Xvfb
BuildRequires: zlib-devel
BuildRequires: zn_poly-devel BuildRequires: zn_poly-devel
Requires: hicolor-icon-theme Requires: hicolor-icon-theme
Requires: rubiks
Requires: %{name}-core = %{version}-%{release} Requires: %{name}-core = %{version}-%{release}
Requires: %{name}-data = %{version}-%{release} Requires: %{name}-data = %{version}-%{release}
%if %{with docs} %if %{with docs}
Requires: %{name}-doc-en = %{version}-%{release} Requires: %{name}-doc = %{version}-%{release}
%endif %endif
Requires: %{name}-jupyter = %{version}-%{release} Requires: %{name}-jupyter = %{version}-%{release}
Requires: %{name}-rubiks = %{version}-%{release}
Requires: %{name}-sagetex = %{version}-%{release} Requires: %{name}-sagetex = %{version}-%{release}
%if %{with bundled_thebe} %if %{with bundled_thebe}
@ -419,27 +430,47 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: 4ti2 Requires: 4ti2
Requires: cddlib-tools Requires: cddlib-tools
Requires: gap Requires: gap
Requires: gap-pkg-aclib
Requires: gap-pkg-alnuth
Requires: gap-pkg-atlasrep
Requires: gap-pkg-autpgrp
Requires: gap-pkg-cohomolo Requires: gap-pkg-cohomolo
Requires: gap-pkg-corelg Requires: gap-pkg-corelg
Requires: gap-pkg-crime Requires: gap-pkg-crime
Requires: gap-pkg-crisp
Requires: gap-pkg-crystcat
Requires: gap-pkg-ctbllib
Requires: gap-pkg-design Requires: gap-pkg-design
Requires: gap-pkg-edim Requires: gap-pkg-edim
Requires: gap-pkg-forms 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-guava
Requires: gap-pkg-hapcryst Requires: gap-pkg-hapcryst
Requires: gap-pkg-hecke Requires: gap-pkg-hecke
Requires: gap-pkg-irredsol
Requires: gap-pkg-jupyterkernel Requires: gap-pkg-jupyterkernel
Requires: gap-pkg-laguna
Requires: gap-pkg-liealgdb Requires: gap-pkg-liealgdb
Requires: gap-pkg-liepring Requires: gap-pkg-liepring
Requires: gap-pkg-loops Requires: gap-pkg-loops
Requires: gap-pkg-lpres Requires: gap-pkg-lpres
Requires: gap-pkg-mapclass Requires: gap-pkg-mapclass
Requires: gap-pkg-nautytracesinterface Requires: gap-pkg-polenta
Requires: gap-pkg-polycyclic
Requires: gap-pkg-polymaking
Requires: gap-pkg-qpa Requires: gap-pkg-qpa
Requires: gap-pkg-quagroup
Requires: gap-pkg-radiroot Requires: gap-pkg-radiroot
Requires: gap-pkg-repsn Requires: gap-pkg-repsn
Requires: gap-pkg-semigroups Requires: gap-pkg-resclasses
Requires: gap-pkg-singular Requires: gap-pkg-singular
Requires: gap-pkg-sla
Requires: gap-pkg-sonata
Requires: gap-pkg-sophus
Requires: gap-pkg-tomlib
Requires: gap-pkg-toric Requires: gap-pkg-toric
Requires: gap-pkg-utils Requires: gap-pkg-utils
Requires: gfan Requires: gfan
@ -458,6 +489,9 @@ Requires: pari-galdata
Requires: pari-gp Requires: pari-gp
Requires: pari-seadata Requires: pari-seadata
Requires: python3-tdlib Requires: python3-tdlib
%if %{with bundled_ipython}
Requires: %{py3_dist backcall}
%endif
Requires: %{py3_dist brial} Requires: %{py3_dist brial}
Requires: %{py3_dist cypari2} Requires: %{py3_dist cypari2}
Requires: %{py3_dist cysignals} Requires: %{py3_dist cysignals}
@ -465,7 +499,6 @@ Requires: %{py3_dist cvxopt}
Requires: %{py3_dist cython} Requires: %{py3_dist cython}
Requires: %{py3_dist docutils} Requires: %{py3_dist docutils}
Requires: %{py3_dist fpylll} Requires: %{py3_dist fpylll}
Requires: %{py3_dist future}
Requires: %{py3_dist gmpy2} Requires: %{py3_dist gmpy2}
%if %{with sphinx_hack} %if %{with sphinx_hack}
Requires: %{py3_dist html5lib} Requires: %{py3_dist html5lib}
@ -475,6 +508,9 @@ Requires: %{py3_dist ipykernel}
%if %{without bundled_ipython} %if %{without bundled_ipython}
Requires: %{py3_dist ipython} Requires: %{py3_dist ipython}
%endif %endif
%if %{with bundled_ipython}
Requires: %{py3_dist jedi}
%endif
Requires: %{py3_dist matplotlib} Requires: %{py3_dist matplotlib}
Requires: %{py3_dist networkx} Requires: %{py3_dist networkx}
%if %{with bundled_ipython} %if %{with bundled_ipython}
@ -504,8 +540,6 @@ Requires: %{py3_dist sympy}
Requires: %{py3_dist zodb3} Requires: %{py3_dist zodb3}
Requires: qepcad-B Requires: qepcad-B
Requires: Singular Requires: Singular
# Required by thebe; remove when it is unbundled
Requires: stix-fonts
Requires: sympow Requires: sympow
Requires: tachyon Requires: tachyon
Requires: texlive Requires: texlive
@ -516,9 +550,6 @@ Provides: bundled(prompt_toolkit) = %{prompt_toolkit_ver}
%if %{with bundled_ipywidgets} %if %{with bundled_ipywidgets}
Provides: bundled(ipywidgets) = %{ipywidgets_ver} Provides: bundled(ipywidgets) = %{ipywidgets_ver}
%endif %endif
%if %{with bundled_widgetsnbextension}
Provides: bundled(widgetsnbextension) = %{widgetsnbextension_ver}
%endif
%description core %description core
This package contains the core sagemath python modules. This package contains the core sagemath python modules.
@ -621,6 +652,7 @@ ReflexivePolytope and ReflexivePolytopes commands.
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%package doc %package doc
Summary: Documentation infrastructure files for %{name} Summary: Documentation infrastructure files for %{name}
Requires: mathjax
%description doc %description doc
This package contains the documentation infrastructure for %{name}. This package contains the documentation infrastructure for %{name}.
@ -704,6 +736,7 @@ This package contains the Turkish %{name} documentation.
Summary: Jupyter integration for sagemath Summary: Jupyter integration for sagemath
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: python-jupyter-filesystem Requires: python-jupyter-filesystem
Requires: %{py3_dist widgetsnbextension}
# This can be removed when Fedora 31 reaches EOL # This can be removed when Fedora 31 reaches EOL
Obsoletes: sagemath-notebook < 9.0-1 Obsoletes: sagemath-notebook < 9.0-1
@ -713,29 +746,6 @@ Provides: sagemath-notebook = %{version}-%{release}
This package contains a Jupyter integration for sagemath, replacing the This package contains a Jupyter integration for sagemath, replacing the
defunct notebook functionality. defunct notebook functionality.
#------------------------------------------------------------------------
%package rubiks
Summary: Several programs for working with Rubik's cubes
Requires: %{name}%{?_isa} = %{version}-%{release}
%description rubiks
Several programs for working with Rubik's cubes, by three different people.
In summary the three contributors are:
Michael Reid (GPL) http://www.math.ucf.edu/~reid/Rubik/optimal_solver.html
optimal - uses many pre-computed tables to find an optimal
solution to the 3x3x3 Rubik's cube
Dik T. Winter (MIT License)
cube - uses Kociemba's algorithm to iteratively find a short
solution to the 3x3x3 Rubik's cube
size222 - solves a 2x2x2 Rubik's cube
Eric Dietz (GPL) http://www.wrongway.org/?rubiksource
cu2 - A fast, non-optimal 2x2x2 solver
cubex - A fast, non-optimal 3x3x3 solver
mcube - A fast, non-optimal 4x4x4 solver
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%package sagetex %package sagetex
Summary: Sagemath into LaTeX documents Summary: Sagemath into LaTeX documents
@ -812,11 +822,6 @@ popd
pushd build/pkgs/pexpect pushd build/pkgs/pexpect
tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz
mv %{pexpect_pkg} src mv %{pexpect_pkg} src
pushd src
for diff in ../patches/*.patch; do
patch -p1 < $diff
done
popd
popd popd
%endif %endif
@ -825,16 +830,6 @@ pushd build/pkgs/polytopes_db
mv %{polytopes_db_pkg} src mv %{polytopes_db_pkg} src
popd popd
pushd build/pkgs/rubiks
tar jxf ../../../upstream/%{rubiks_pkg}.tar.bz2
mv %{rubiks_pkg} src
pushd src
for diff in ../patches/*.patch; do
patch -p1 < $diff
done
popd
popd
pushd build/pkgs/sagetex pushd build/pkgs/sagetex
tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz
mv %{sagetex_pkg} src mv %{sagetex_pkg} src
@ -872,13 +867,6 @@ pushd build/pkgs/threejs
popd popd
%endif %endif
%if %{with bundled_widgetsnbextension}
pushd build/pkgs/widgetsnbextension
tar zxf ../../../upstream/%{widgetsnbextension_pkg}.tar.gz
mv %{widgetsnbextension_pkg} src
popd
%endif
%patch0 %patch0
%patch1 %patch1
%patch2 %patch2
@ -894,27 +882,24 @@ popd
%patch12 %patch12
%patch13 %patch13
%patch14 %patch14
%patch16
%if %{with fes} %if %{with fes}
%patch17 %patch15
%else
%patch18
%endif %endif
%patch16
%patch17
%patch18
%if "%{blaslib}" == "flexiblas"
%patch19 %patch19
%else
%patch20 %patch20
%endif
%patch21 %patch21
%patch22 %patch22
%patch23 %patch23
%patch24 %patch24
%patch25 %patch25
%patch26
%patch27
%patch28
%patch29
%patch30
%patch31
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \ sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \ -e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
@ -923,7 +908,7 @@ sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \ sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \
-e 's|@@BUILDROOT@@|%{buildroot}|' \ -e 's|@@BUILDROOT@@|%{buildroot}|' \
-i src/setup.py -i src/sage_setup/command/sage_build_cython.py
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# some .c files are not (re)generated # some .c files are not (re)generated
@ -968,6 +953,9 @@ sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \
# GAP does not have enough memory to load the entire workspace # GAP does not have enough memory to load the entire workspace
sed -i 's/64m/256m/' src/sage/interfaces/gap.py 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_setup/docbuild/build_options.py
######################################################################## ########################################################################
%build %build
@ -976,7 +964,6 @@ export CC=%{__cc}
export CFLAGS="%{optflags}" export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}" export CXXFLAGS="%{optflags}"
export SAGE_PYTHON_VERSION=3 export SAGE_PYTHON_VERSION=3
export SAGE_PYTHON3=yes
export SAGE_ROOT=%{buildroot}%{SAGE_ROOT} export SAGE_ROOT=%{buildroot}%{SAGE_ROOT}
export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL} export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL}
# Avoid buildroot in gcc command line (use _builddir instead) # Avoid buildroot in gcc command line (use _builddir instead)
@ -1045,13 +1032,6 @@ pushd build/pkgs/ipywidgets/src
popd popd
%endif %endif
%if %{with bundled_widgetsnbextension}
pushd build/pkgs/widgetsnbextension/src
%__python3 setup.py build
%__python3 setup.py install --root %{_builddir}
popd
%endif
%if %{with cython_hack} %if %{with cython_hack}
cp -far %{python3_sitearch}/Cython %{_builddir}%{python3_sitearch} cp -far %{python3_sitearch}/Cython %{_builddir}%{python3_sitearch}
BASE=$PWD/build/pkgs/cython/patches/ BASE=$PWD/build/pkgs/cython/patches/
@ -1084,10 +1064,6 @@ pushd build/pkgs/flintqs/src
make %{?_smp_mflags} CPP="g++ %{optflags} -fPIC" make %{?_smp_mflags} CPP="g++ %{optflags} -fPIC"
popd popd
pushd build/pkgs/rubiks/src
make %{?_smp_mflags} CC="gcc -fPIC" CXX="g++ -fPIC" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}"
popd
# last build command # last build command
rm -fr $DOT_SAGE rm -fr $DOT_SAGE
@ -1105,7 +1081,6 @@ export SAGE_SHARE=%{buildroot}%{SAGE_SHARE}
export SAGE_ETC=%{buildroot}%{SAGE_ETC} export SAGE_ETC=%{buildroot}%{SAGE_ETC}
export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC} export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC}
export SAGE_DOC=%{buildroot}%{SAGE_DOC} export SAGE_DOC=%{buildroot}%{SAGE_DOC}
export SAGE_PYTHON3=yes
export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH} export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH}
export DESTDIR=%{buildroot} export DESTDIR=%{buildroot}
export SAGE_DEBUG=no export SAGE_DEBUG=no
@ -1176,17 +1151,6 @@ pushd build/pkgs/flintqs/src
cp -fa src/QuadraticSieve $SAGE_LOCAL/bin cp -fa src/QuadraticSieve $SAGE_LOCAL/bin
popd popd
pushd build/pkgs/rubiks/src
cp -fa \
reid/optimal \
dietz/solver/cubex \
dietz/mcube/mcube \
dietz/cu2/cu2 \
dik/dikcube \
dik/size222 \
$SAGE_LOCAL/bin
popd
#------------------------------------------------------------------------ #------------------------------------------------------------------------
pushd $SAGE_LOCAL/bin/ pushd $SAGE_LOCAL/bin/
rm -f \ rm -f \
@ -1306,14 +1270,6 @@ pushd build/pkgs/threejs
popd popd
%endif %endif
#------------------------------------------------------------------------
%if %{with bundled_widgetsnbextension}
pushd build/pkgs/widgetsnbextension/src
%py3_install "--install-purelib=%{python3_sitelib}"
mv %{buildroot}%{_prefix}%{_sysconfdir} %{buildroot}%{_sysconfdir}
popd
%endif
#------------------------------------------------------------------------ #------------------------------------------------------------------------
) # source build/bin/sage-dist-helpers ) # source build/bin/sage-dist-helpers
@ -1329,7 +1285,6 @@ export SAGE_SHARE="$SAGE_SHARE"
export SAGE_EXTCODE="$SAGE_ETC" export SAGE_EXTCODE="$SAGE_ETC"
export SAGE_ETC="$SAGE_ETC" export SAGE_ETC="$SAGE_ETC"
export SAGE_SRC="%{buildroot}%{SAGE_SRC}" export SAGE_SRC="%{buildroot}%{SAGE_SRC}"
export SAGE_PYTHON3=yes
##export SAGE_DOC="$SAGE_DOC" ##export SAGE_DOC="$SAGE_DOC"
##export SAGE_DOC_SRC="\$SAGE_DOC" ##export SAGE_DOC_SRC="\$SAGE_DOC"
##export SAGE_PKGS="\$SAGE_LOCAL/var/lib/sage/installed" ##export SAGE_PKGS="\$SAGE_LOCAL/var/lib/sage/installed"
@ -1467,10 +1422,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
# Fix permissions # Fix permissions
find %{buildroot} -name '*.so' -exec chmod 755 {} \+ find %{buildroot} -name '*.so' -exec chmod 755 {} \+
pushd %{buildroot}%{SAGE_LOCAL}/bin chmod 755 %{buildroot}%{SAGE_LOCAL}/bin/QuadraticSieve
chmod 755 QuadraticSieve chmod 755 %{buildroot}%{python3_sitearch}/sage/ext_data/pari/dokchitser/testall
chmod 755 mcube dikcube cu2 size222 cubex optimal
popd
for file in `find %{buildroot} -name \*.py`; do for file in `find %{buildroot} -name \*.py`; do
if head -1 $file | grep -q '^#!'; then if head -1 $file | grep -q '^#!'; then
chmod +x $file chmod +x $file
@ -1550,6 +1503,19 @@ chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage-list-packages
# Byte compile python files in nonstandard places # Byte compile python files in nonstandard places
%py_byte_compile %{python3} %{buildroot}%{_texmf}/tex/latex/sagetex %py_byte_compile %{python3} %{buildroot}%{_texmf}/tex/latex/sagetex
#------------------------------------------------------------------------
# Do not bundle mathjax
for dir in $(find %{buildroot}%{_docdir} -name _static); do
pushd $dir
for d in config extensions fonts jax localization MathJax.js test; do
if [ -d "$PWD/$d" ]; then
rm -fr $d
ln -s %{_datadir}/javascript/mathjax/$d $d
fi
done
popd
done
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# Jupyter integration # Jupyter integration
pushd src pushd src
@ -1605,9 +1571,9 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
# GPLv2+ # GPLv2+
%dir %{SAGE_ROOT} %dir %{SAGE_ROOT}
%doc %{SAGE_ROOT}/COPYING.txt %doc %{SAGE_ROOT}/COPYING.txt
%dir %{SAGE_LOCAL} %dir %{SAGE_LOCAL}/
%dir %{SAGE_LOCAL}/bin %dir %{SAGE_LOCAL}/bin/
%dir %{SAGE_SHARE} %dir %{SAGE_SHARE}/
%{SAGE_LOCAL}/bin/QuadraticSieve %{SAGE_LOCAL}/bin/QuadraticSieve
%{SAGE_LOCAL}/bin/ecm %{SAGE_LOCAL}/bin/ecm
%{SAGE_LOCAL}/bin/gap %{SAGE_LOCAL}/bin/gap
@ -1620,12 +1586,12 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
%{SAGE_LOCAL}/include %{SAGE_LOCAL}/include
%{SAGE_LOCAL}/lib %{SAGE_LOCAL}/lib
%{SAGE_LOCAL}/share %{SAGE_LOCAL}/share
%{SAGE_LOCAL}/var %{SAGE_LOCAL}/var/
%ghost %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ver} %ghost %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ver}
%{SAGE_ROOT}/doc
%{SAGE_ROOT}/devel %{SAGE_ROOT}/devel
%{SAGE_ROOT}/doc
%{SAGE_ROOT}/share %{SAGE_ROOT}/share
%dir %{SAGE_SRC} %dir %{SAGE_SRC}/
%if %{with docs} %if %{with docs}
%{SAGE_SRC}/doc %{SAGE_SRC}/doc
%endif %endif
@ -1637,17 +1603,17 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
%{_datadir}/applications/%{name}.desktop %{_datadir}/applications/%{name}.desktop
%if %{with bundled_thebe} %if %{with bundled_thebe}
# MIT # MIT
%{SAGE_SHARE}/thebe %{SAGE_SHARE}/thebe/
%endif %endif
%if %{with bundled_threejs} %if %{with bundled_threejs}
# MIT # MIT
%{SAGE_SHARE}/threejs %{SAGE_SHARE}/threejs/
%endif %endif
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files core %files core
# GPLv2+ # GPLv2+
%{python3_sitearch}/sage %{python3_sitearch}/sage/
%if %{without install_hack} %if %{without install_hack}
%{python3_sitearch}/sage-*.egg-info %{python3_sitearch}/sage-*.egg-info
%endif %endif
@ -1661,27 +1627,27 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data %files data
%dir %{SAGE_SHARE} %dir %{SAGE_SHARE}/
%dir %{SAGE_ETC} %dir %{SAGE_ETC}/
%{SAGE_ETC}/sage %{SAGE_ETC}/sage
%{SAGE_ETC}/gprc.expect %{SAGE_ETC}/gprc.expect
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-combinatorial_designs %files data-combinatorial_designs
# Public Domain # Public Domain
%{SAGE_SHARE}/combinatorial_designs %{SAGE_SHARE}/combinatorial_designs/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-conway_polynomials %files data-conway_polynomials
# GPLv2+ # GPLv2+
%{SAGE_SHARE}/conway_polynomials %{SAGE_SHARE}/conway_polynomials/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-elliptic_curves %files data-elliptic_curves
# GPLv2+ # GPLv2+
%dir %{SAGE_SHARE}/cremona/ %dir %{SAGE_SHARE}/cremona/
%{SAGE_SHARE}/cremona/cremona_mini.db %{SAGE_SHARE}/cremona/cremona_mini.db
%{SAGE_SHARE}/ellcurves %{SAGE_SHARE}/ellcurves/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-elliptic_curves_large %files data-elliptic_curves_large
@ -1692,127 +1658,119 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-etc %files data-etc
# GPLv2+ # GPLv2+
%{SAGE_ETC}/doctest %{SAGE_ETC}/doctest/
%{SAGE_ETC}/gap %{SAGE_ETC}/gap/
%{SAGE_ETC}/images %{SAGE_ETC}/kenzo/
%{SAGE_ETC}/kenzo %{SAGE_ETC}/magma/
%{SAGE_ETC}/magma %{SAGE_ETC}/mwrank/
%{SAGE_ETC}/mwrank %{SAGE_ETC}/nbconvert/
%{SAGE_ETC}/nbconvert
%{SAGE_ETC}/nodoctest %{SAGE_ETC}/nodoctest
%{SAGE_ETC}/pari %{SAGE_ETC}/pari/
%{SAGE_ETC}/singular %{SAGE_ETC}/singular/
%{SAGE_ETC}/threejs %{SAGE_ETC}/threejs/
%{SAGE_ETC}/valgrind %{SAGE_ETC}/valgrind/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-graphs %files data-graphs
# GPLv2+ # GPLv2+
%{SAGE_ETC}/graphs %{SAGE_ETC}/graphs/
%{SAGE_SHARE}/graphs %{SAGE_SHARE}/graphs/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files data-polytopes_db %files data-polytopes_db
# GPL+ # GPL+
%{SAGE_SHARE}/reflexive_polytopes %{SAGE_SHARE}/reflexive_polytopes/
%if %{with docs} %if %{with docs}
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc %files doc
# GPLv2+ # GPLv2+
%dir %{SAGE_DOC} %dir %{SAGE_DOC}/
%{SAGE_DOC}/common %{SAGE_DOC}/common/
%dir %{SAGE_DOC}/html %dir %{SAGE_DOC}/html/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-ca %files doc-ca
# GPLv2+ # GPLv2+
%{SAGE_DOC}/ca %{SAGE_DOC}/ca/
%{SAGE_DOC}/html/ca %{SAGE_DOC}/html/ca/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-de %files doc-de
# GPLv2+ # GPLv2+
%{SAGE_DOC}/de %{SAGE_DOC}/de/
%{SAGE_DOC}/html/de %{SAGE_DOC}/html/de/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-en %files doc-en
# GPLv2+ # GPLv2+
%{SAGE_DOC}/en %{SAGE_DOC}/en/
%{SAGE_DOC}/html/en %{SAGE_DOC}/html/en/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-fr %files doc-fr
# GPLv2+ # GPLv2+
%{SAGE_DOC}/fr %{SAGE_DOC}/fr/
%{SAGE_DOC}/html/fr %{SAGE_DOC}/html/fr/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-hu %files doc-hu
# GPLv2+ # GPLv2+
%{SAGE_DOC}/hu %{SAGE_DOC}/hu/
%{SAGE_DOC}/html/hu %{SAGE_DOC}/html/hu/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-it %files doc-it
# GPLv2+ # GPLv2+
%{SAGE_DOC}/it %{SAGE_DOC}/it/
%{SAGE_DOC}/html/it %{SAGE_DOC}/html/it/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-pt %files doc-pt
# GPLv2+ # GPLv2+
%{SAGE_DOC}/pt %{SAGE_DOC}/pt/
%{SAGE_DOC}/html/pt %{SAGE_DOC}/html/pt/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-ru %files doc-ru
# GPLv2+ # GPLv2+
%{SAGE_DOC}/ru %{SAGE_DOC}/ru/
%{SAGE_DOC}/html/ru %{SAGE_DOC}/html/ru/
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files doc-tr %files doc-tr
# GPLv2+ # GPLv2+
%{SAGE_DOC}/tr %{SAGE_DOC}/tr/
%{SAGE_DOC}/html/tr %{SAGE_DOC}/html/tr/
# with docs # with docs
%endif %endif
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files jupyter %files jupyter
%{SAGE_ETC}/notebook-ipython %{SAGE_ETC}/notebook-ipython/
# LGPLv2+ # LGPLv2+
%if %{with bundled_widgetsnbextension}
%config(noreplace) %{_sysconfdir}/jupyter/nbconfig/notebook.d/*.json
%{_datadir}/jupyter/nbextensions/*
%{python3_sitelib}/widgetsnbextension*
%endif
%{_datadir}/jupyter/kernels/sagemath/ %{_datadir}/jupyter/kernels/sagemath/
%{_datadir}/jupyter/nbextensions/jsmol
#------------------------------------------------------------------------ %{_datadir}/jupyter/nbextensions/mathjax
%files rubiks %{_datadir}/jupyter/nbextensions/threejs
# GPL+
%{SAGE_LOCAL}/bin/optimal
# MIT
%{SAGE_LOCAL}/bin/dikcube
%{SAGE_LOCAL}/bin/size222
# GPL+
%{SAGE_LOCAL}/bin/cu2
%{SAGE_LOCAL}/bin/cubex
%{SAGE_LOCAL}/bin/mcube
#------------------------------------------------------------------------ #------------------------------------------------------------------------
%files sagetex %files sagetex
# GPLv2+ # GPLv2+
%{python3_sitearch}/sagetex* %{python3_sitearch}/sagetex*
%{python3_sitearch}/__pycache__/sagetex* %{python3_sitearch}/__pycache__/sagetex*
%{_texmf}/tex/latex/sagetex %{_texmf}/tex/latex/sagetex/
%doc %{_docdir}/sagetex %doc %{_docdir}/sagetex/
######################################################################## ########################################################################
%changelog %changelog
* Tue Nov 10 2020 Jerry James <loganjerry@gmail.com> - 9.2-1
- Version 9.2 (bz 1891244)
- Unbundle widgetsnbextension (bz 1856311)
- Unbundle mathjax fonts (bz 1875606)
- Do not require the -doc subpackage from the main package (bz 1867123)
- Drop upstreamed patches: -ecl, -fes, -includes, -sagetex, -sigfpe, -sympy
* Wed Sep 30 2020 Jerry James <loganjerry@gmail.com> - 9.1-4 * Wed Sep 30 2020 Jerry James <loganjerry@gmail.com> - 9.1-4
- Rebuild for primecount 6.1 - Rebuild for primecount 6.1
- Bring back jmol/jsmol support - Bring back jmol/jsmol support

View file

@ -1,2 +1,2 @@
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
SHA512 (sage-9.1.tar.gz) = 6df64ce9fadab4cf4b955c704d143b591a02264e85d6dfab1c50872a50cfab804310aad6a46b553d861294acac29dc65729666f251a64cbe648d020af1f411d1 SHA512 (sage-9.2.tar.gz) = d7e833919740dd9249b14fb0fc7fdc93ad6265dae9363fa2495c88274f0683c7aae2f7625f842584a95bd4f6a439d575a6532a945d6e50054355853d68e0275d