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
--- src/sage/sandpiles/sandpile.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/sandpiles/sandpile.py 2019-01-16 09:43:32.402089611 -0700
@@ -346,9 +346,6 @@ from sage.arith.all import falling_facto
--- src/sage/sandpiles/sandpile.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/sandpiles/sandpile.py 2020-10-30 14:00:00.744208307 -0600
@@ -347,9 +347,6 @@ from sage.arith.all import falling_facto
from sage.rings.all import Integer, PolynomialRing, QQ, ZZ
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):
@@ -5163,7 +5160,7 @@ class SandpileDivisor(dict):
@@ -5174,7 +5171,7 @@ class SandpileDivisor(dict):
sign_file.close()
# compute
try:

View file

@ -1,7 +1,7 @@
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 2019-10-25 14:39:53.520890155 -0300
@@ -11,17 +11,17 @@
--- src/sage/libs/arb/arb_wrap.h.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/arb/arb_wrap.h 2020-10-30 16:10:40.145976088 -0600
@@ -11,18 +11,18 @@
#define ulong mp_limb_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_poly.h>
-#include <arb.h>
-#include <arb_hypgeom.h>
-#include <arf.h>
-#include <bernoulli.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_poly.h>
+#include <arb/arb.h>
+#include <arb/arb_hypgeom.h>
+#include <arb/arf.h>
+#include <arb/bernoulli.h>
+#include <arb/mag.h>

View file

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

View file

@ -1,7 +1,7 @@
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 2019-10-03 14:57:45.084423307 -0300
@@ -850,7 +850,8 @@ class MiniCremonaDatabase(SQLDatabase):
--- src/sage/databases/cremona.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/databases/cremona.py 2020-10-30 14:02:27.778960819 -0600
@@ -854,7 +854,8 @@ class MiniCremonaDatabase(SQLDatabase):
message = "There is no elliptic curve with label " \
+ label + " in the default database; try installing " \
+ "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)
ainvs = eval(c[0])
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=?", \
curve_data)
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
--- src/sage/env.py.orig 2020-07-06 16:59:20.179973650 -0600
+++ src/sage/env.py 2020-07-06 17:03:47.991916151 -0600
@@ -158,14 +158,14 @@ var('SAGE_DATE', version.date)
--- src/sage/env.py.orig 2020-10-30 16:09:54.834029866 -0600
+++ src/sage/env.py 2020-10-30 16:10:20.089999891 -0600
@@ -159,14 +159,14 @@ var('SAGE_DATE', version.date)
var('SAGE_VERSION_BANNER', version.banner)
# 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('/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)
@@ -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('CREMONA_MINI_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
--- src/module_list.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/module_list.py 2020-07-06 16:38:17.108266850 -0600
@@ -401,16 +401,16 @@ ext_modules = [
Extension('sage.graphs.matchpoly',
sources = ['sage/graphs/matchpoly.pyx']),
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/env.py 2020-10-30 15:44:29.575821493 -0600
@@ -413,7 +413,8 @@ def cython_aliases():
aliases[var + "INCDIR"] = pc['include_dirs']
aliases[var + "LIBDIR"] = pc['library_dirs']
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
- aliases[var + "LIBRARIES"] = pc['libraries']
+ aliases[var + "LIBRARIES"] = pc['libraries'] + ['gomp']
+ aliases['Singular_INCDIR'] = ['/usr/include/singular', '/usr/include/factory']
- OptionalExtension("sage.graphs.mcqd",
+ Extension("sage.graphs.mcqd",
["sage/graphs/mcqd.pyx"],
language = "c++",
- package = 'mcqd'),
+ libraries = ['mcqd']),
# uname-specific flags
UNAME = os.uname()
diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
--- src/sage/graphs/mcqd.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/graphs/mcqd.pyx 2020-10-30 15:47:32.294609185 -0600
@@ -1,4 +1,5 @@
# distutils: language = c++
+# distutils: libraries = mcqd
# sage_setup: distribution = sage-mcqd
- OptionalExtension("sage.graphs.bliss",
+ Extension("sage.graphs.bliss",
["sage/graphs/bliss.pyx"],
language = "c++",
- libraries = ['bliss'],
- package = 'bliss'),
+ include_dirs = ['/usr/include/bliss'],
+ libraries = ['bliss']),
from sage.ext.memory_allocator cimport MemoryAllocator
diff -up src/sage/interfaces/primecount.pyx.orig src/sage/interfaces/primecount.pyx
--- src/sage/interfaces/primecount.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/primecount.pyx 2020-10-30 15:47:42.766597012 -0600
@@ -1,3 +1,4 @@
+# distutils: libraries = primecount
# sage_setup: distribution = sage-primecount
Extension('sage.graphs.planarity',
sources = ['sage/graphs/planarity.pyx'],
@@ -429,10 +429,9 @@ ext_modules = [
Extension('sage.graphs.graph_decompositions.cutwidth',
sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']),
r"""
diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
--- src/sage/libs/arb/arb.pxd.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/arb/arb.pxd 2020-10-30 15:47:18.918624733 -0600
@@ -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',
+ Extension('sage.graphs.graph_decompositions.tdlib',
sources = ['sage/graphs/graph_decompositions/tdlib.pyx'],
- language="c++",
- package = 'tdlib'),
+ language="c++"),
from sage.libs.arb.types cimport *
diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx
--- src/sage/libs/arb/arb_version.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/arb/arb_version.pyx 2020-10-30 15:54:30.743122593 -0600
@@ -1,4 +1,5 @@
# -*- 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',
sources = ['sage/graphs/graph_decompositions/clique_separators.pyx']),
@@ -494,9 +493,9 @@ ext_modules = [
##
################################
diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
--- src/sage/libs/arb/arith.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ 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",
+ Extension("sage.interfaces.primecount",
["sage/interfaces/primecount.pyx"],
- package = "primecount"),
+ libraries = ["primecount"]),
diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
--- src/sage/libs/mpmath/utils.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/mpmath/utils.pyx 2020-10-30 15:51:33.798328356 -0600
@@ -1,3 +1,4 @@
+# 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',
+ Extension('sage.libs.coxeter3.coxeter',
sources = ['sage/libs/coxeter3/coxeter.pyx'],
- include_dirs = [os.path.join(SAGE_INC, 'coxeter')],
+ include_dirs = ['/usr/include/coxeter'],
language="c++",
- libraries = ['coxeter3'],
- package = 'coxeter3'),
+ libraries = ['coxeter3']),
diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx
--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2020-10-30 15:57:50.862889413 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
"""
Dense matrices over multivariate polynomials over fields
Extension('sage.libs.ecl',
sources = ["sage/libs/ecl.pyx"]),
diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.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",
+ Extension("sage.libs.fes",
["sage/libs/fes.pyx"],
language = "c",
- libraries = ['fes'],
- package = 'fes'),
+ libraries = ['fes']),
diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx
--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2020-11-05 15:48:03.436448764 -0700
@@ -1,5 +1,6 @@
# distutils: libraries = ntl
# distutils: language = c++
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Optimized Quadratic Number Field Elements
Extension('sage.libs.flint.flint',
sources = ["sage/libs/flint/flint.pyx"],
@@ -558,13 +555,14 @@ ext_modules = [
sources = ["sage/libs/homfly.pyx"],
libraries = ["homfly", "gc"]),
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2020-10-30 11:34:26.064980206 -0600
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2020-10-30 16:02:19.239570828 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Multivariate Polynomials via libSINGULAR
- OptionalExtension('sage.libs.sirocco',
+ Extension('sage.libs.sirocco',
sources = ["sage/libs/sirocco.pyx"],
libraries = ["sirocco"],
- package="sirocco",
language = 'c++'),
diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx
--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/polynomial/multi_polynomial.pyx 2020-11-05 15:42:05.505453973 -0700
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Base class for elements of multivariate polynomial rings
"""
diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx
--- src/sage/rings/polynomial/plural.pyx.orig 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']),
+ Extension('*',
+ sources = ['sage/libs/linbox/*.pyx'],
+ libraries = ["gomp"]),
diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx
--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2020-10-30 16:03:19.870498851 -0600
@@ -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',
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
@@ -581,10 +579,9 @@ ext_modules = [
Extension('sage.libs.lrcalc.lrcalc',
sources = ["sage/libs/lrcalc/lrcalc.pyx"]),
diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
--- src/sage/rings/real_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/real_arb.pyx 2020-11-05 15:42:05.510453973 -0700
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision real balls using Arb
- OptionalExtension("sage.libs.meataxe",
+ Extension("sage.libs.meataxe",
sources = ['sage/libs/meataxe.pyx'],
- libraries = ['mtx'],
- package = 'meataxe'),
+ libraries = ['mtx']),
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
--- src/sage_setup/command/sage_build_cython.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:04:33.325411659 -0600
@@ -59,6 +59,7 @@ if subprocess.call("""$CC --version | gr
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 = [
include_dirs = cblas_include_dirs),
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']),
# Look for libraries only in what is configured already through distutils
# and environment variables

View file

@ -1,7 +1,7 @@
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 2019-02-07 08:30:50.024227599 -0700
@@ -11,7 +11,7 @@ variables. Performing a full exhaustive
--- src/sage/libs/fes.pyx.orig 2020-10-30 11:34:23.271984468 -0600
+++ src/sage/libs/fes.pyx 2020-10-30 14:44:49.462736771 -0600
@@ -14,7 +14,7 @@ variables. Performing a full exhaustive
take a **long** time. The number of variables can be artificially
reduced to 64 by specializing some of them.
@ -10,7 +10,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
non-linear.
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":
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
@@ -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
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
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include'
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
+++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
@@ -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
# 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'):
cblas_libs = ['gslcblas']
-# LAPACK can be one of multiple implementations
# LAPACK can be one of multiple implementations
-lapack_pc = pkgconfig.parse('lapack')
-lapack_libs = lapack_pc['libraries']
-lapack_library_dirs = lapack_pc['library_dirs']
-lapack_include_dirs = lapack_pc['include_dirs']
+lapack_libs = [ 'flexiblas' ]
+lapack_libs = ['flexiblas']
+lapack_library_dirs = ['/usr/lib']
+lapack_include_dirs = ['/usr/include/flexiblas']
# GD image library
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
--- src/sage/docs/conf.py.orig 2019-09-29 17:03:11.000000000 -0600
+++ src/sage/docs/conf.py 2020-01-02 11:19:45.125646695 -0700
@@ -169,9 +169,8 @@ todo_include_todos = True
python_version = sys.version_info.major
intersphinx_mapping = {
--- src/sage/docs/conf.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/docs/conf.py 2020-10-30 16:41:06.481017695 -0600
@@ -189,9 +189,8 @@ def set_intersphinx_mappings(app, config
app.config.intersphinx_mapping = {
'python': ('https://docs.python.org/',
- os.path.join(SAGE_DOC_SRC, "common",
- "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'),
+ '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
--- src/sage/interfaces/jmoldata.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/jmoldata.py 2019-01-16 09:43:40.755939704 -0700
--- src/sage/interfaces/jmoldata.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/jmoldata.py 2020-10-30 14:01:33.291052531 -0600
@@ -148,8 +148,6 @@ class JmolData(SageObject):
sage: print(os.path.exists(testfile)) # optional -- java
True

View file

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

View file

@ -1,21 +1,10 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2019-10-03 16:00:44.899866273 -0300
+++ src/module_list.py 2019-10-03 16:00:56.451939308 -0300
@@ -548,7 +548,7 @@ ext_modules = [
Extension('sage.libs.lcalc.lcalc_Lfunction',
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
libraries = ['m', 'ntl', 'Lfunction'],
- extra_compile_args=["-O3", "-ffast-math"],
+ extra_compile_args=["-std=gnu++11", "-ffast-math"],
language = 'c++'),
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];
diff -up src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig src/sage/libs/lcalc/lcalc_Lfunction.pyx
--- src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/lcalc/lcalc_Lfunction.pyx 2020-10-30 14:40:53.875121354 -0600
@@ -1,5 +1,5 @@
# distutils: libraries = m ntl Lfunction
-# distutils: extra_compile_args = -O3 -ffast-math
+# distutils: extra_compile_args = -std=gnu++11 -ffast-math
# distutils: language = c++
r"""
Rubinstein's lcalc library

View file

@ -1,7 +1,7 @@
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 2020-07-06 16:57:04.139002833 -0600
@@ -181,7 +181,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi
--- src/sage/env.py.orig 2020-10-30 15:44:29.575821493 -0600
+++ src/sage/env.py 2020-10-30 16:09:54.834029866 -0600
@@ -182,7 +182,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi
var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs'))
var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves'))
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('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
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 2020-07-06 16:57:04.140002833 -0600
--- src/sage/libs/gap/element.pyx.orig 2020-10-24 11:37:59.000000000 -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
try:
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):
r"""
@@ -1458,7 +1458,7 @@ cdef class GapElement_Integer(GapElement
@@ -1469,7 +1469,7 @@ cdef class GapElement_Integer(GapElement
sage: N.IsInt()
true
"""
@ -85,7 +85,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
def _rational_(self):
r"""
@@ -2797,7 +2797,7 @@ cdef class GapElement_List(GapElement):
@@ -2808,7 +2808,7 @@ cdef class GapElement_List(GapElement):
...
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
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):
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):
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 2020-07-06 16:58:14.358987770 -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-10-30 14:42:23.392975217 -0600
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
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 MakeStringWithLen(const char *buf, size_t len)
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 2020-07-06 16:57:04.142002832 -0600
--- src/sage/libs/gap/util.pyx.orig 2020-10-24 11:37:59.000000000 -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
"""
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
--- src/sage/interfaces/maxima.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/interfaces/maxima.py 2020-07-06 16:44:55.895165348 -0600
--- src/sage/interfaces/maxima.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/maxima.py 2020-10-30 13:59:17.007281872 -0600
@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect):
Expect.__init__(self,
name = 'maxima',
prompt = r'\(\%i[0-9]+\) ',
- command = '"{0}" -p "{1}"'.format(MAXIMA, STARTUP),
+ command = '"{0}" --disable-readline -p "{1}"'.format(MAXIMA, STARTUP),
- command = '{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
+ command = '{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
env = {'TMPDIR': str(ECL_TMP)},
script_subdirectory = script_subdirectory,
restart_on_ctrlc = False,
@ -32,3 +20,15 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
self._eval_line('0;')
# 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
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include'
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
+++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
@@ -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
# 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'):
cblas_libs = ['gslcblas']
-# LAPACK can be one of multiple implementations
# LAPACK can be one of multiple implementations
-lapack_pc = pkgconfig.parse('lapack')
-lapack_libs = lapack_pc['libraries']
-lapack_library_dirs = lapack_pc['library_dirs']
-lapack_include_dirs = lapack_pc['include_dirs']
+lapack_libs = [ 'lapack' ]
+lapack_library_dirs = []
+lapack_include_dirs = [ SAGE_INC + '/lapack' ]
+lapack_libs = ['openblas']
+lapack_library_dirs = ['/usr/lib']
+lapack_include_dirs = ['/usr/include/openblas']
# GD image library
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
+++ src/sage/libs/primecount.pxd 2020-03-22 14:35:05.590527408 -0600
diff -up src/sage/libs/primecount.pxd.orig src/sage/libs/primecount.pxd
--- src/sage/libs/primecount.pxd.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/primecount.pxd 2020-10-30 16:41:47.431983226 -0600
@@ -17,6 +17,5 @@ cdef extern from "primecount.hpp" namesp
int get_num_threads()

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
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-11-14 04:02:40.000000000 -0700
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-02-25 13:42:46.674646884 -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-10-30 14:03:01.286904419 -0600
@@ -24,12 +24,11 @@
## You should have received a copy of the GNU General Public License along
## 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:
from getpass import getpass
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 2020-02-25 13:42:46.674646884 -0700
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2020-08-12 02:35:31.000000000 -0600
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-10-30 14:03:01.286904419 -0600
@@ -132,7 +132,7 @@ class SageCodeExtractor():
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 += 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
--- src/sage/cpython/debugimpl.c.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/cpython/debugimpl.c 2020-07-07 13:56:17.121624915 -0600
@@ -155,6 +155,7 @@ static void _type_debug(PyTypeObject* tp
--- src/sage/cpython/debugimpl.c.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/cpython/debugimpl.c 2020-10-30 14:03:01.299904398 -0600
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
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)
{
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_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_str, "__str__");
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 2020-07-07 13:57:49.169641697 -0600
--- src/sage/cpython/debug.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/cpython/debug.pyx 2020-10-30 14:03:01.300904396 -0600
@@ -232,6 +232,7 @@ def type_debug(cls):
tp_basicsize: 16
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_str (__str__): 0x7fc57d757020
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/geometry/triangulation/point_configuration.py 2020-07-06 16:48:01.176121036 -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-10-30 14:03:01.301904394 -0600
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
['{{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:
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
--- src/sage/interfaces/frobby.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/interfaces/frobby.py 2020-07-06 16:48:01.178121036 -0600
--- src/sage/interfaces/frobby.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/frobby.py 2020-10-30 14:03:02.534902319 -0600
@@ -79,7 +79,7 @@ class Frobby:
print("Frobby command: ", repr(command))
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)
else:
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 2020-07-06 16:48:01.178121036 -0600
@@ -66,7 +66,7 @@ class Gfan(object):
if six.PY2:
enc_kwargs = {}
else:
- enc_kwargs = {'encoding': 'latin-1'}
+ enc_kwargs = {'encoding': 'utf-8'}
--- src/sage/interfaces/gfan.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/gfan.py 2020-10-30 14:11:30.550047499 -0600
@@ -62,7 +62,7 @@ class Gfan(object):
print("gfan input:\n%s" % I)
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
**enc_kwargs)
diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py
--- src/sage/interfaces/gp.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ 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'
- encoding='latin-1')
+ encoding='utf-8')
ans, err = gfan_processes.communicate(input=I)
- def __long__(self):
- """
- Return Python long.
-
- EXAMPLES::
-
- sage: long(gp(10))
- 10L
- """
- return long(str(self))
-
def __float__(self):
"""
Return Python float.
# sometimes, gfan outputs stuff to stderr even though everything is fine
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/interfaces/latte.py 2020-07-06 16:48:01.180121036 -0600
--- src/sage/interfaces/latte.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/latte.py 2020-10-30 14:03:03.974899895 -0600
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
latte_proc = Popen(args,
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)
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 2020-07-06 16:48:01.180121036 -0600
--- src/sage/interfaces/sagespawn.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/sagespawn.pyx 2020-10-30 14:03:03.975899894 -0600
@@ -1,6 +1,6 @@
"""
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
@@ -171,7 +170,7 @@ class SageSpawn(spawn):
@@ -173,7 +172,7 @@ class SageSpawn(spawn):
return ret
@ -349,7 +210,7 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
def close(self, force=None):
"""
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:
try:
# 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):
pass
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
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-07-06 16:48:01.181121035 -0600
@@ -33,7 +33,7 @@ cdef class String:
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-10-30 14:03:03.976899892 -0600
@@ -37,7 +37,7 @@ cdef class String:
EXAMPLES::
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
sage: del s # optional - coxeter3
"""
@@ -44,11 +44,11 @@ cdef class String:
@@ -48,11 +48,11 @@ cdef class String:
EXAMPLES::
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):
"""
@@ -60,7 +60,7 @@ cdef class String:
@@ -64,7 +64,7 @@ cdef class String:
EXAMPLES::
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
True
"""
@@ -71,9 +71,9 @@ cdef class String:
@@ -75,9 +75,9 @@ cdef class String:
EXAMPLES::
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
True
sage: tb != ta1 # optional - coxeter3
@@ -109,7 +109,7 @@ cdef class String:
@@ -113,7 +113,7 @@ cdef class String:
EXAMPLES::
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
2
"""
@@ -120,7 +120,7 @@ cdef class String:
@@ -124,7 +124,7 @@ cdef class String:
EXAMPLES::
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
"""
return (String, (repr(self),) )
@@ -134,7 +134,7 @@ cdef class Type:
@@ -138,7 +138,7 @@ cdef class Type:
EXAMPLES::
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
sage: del t # optional - coxeter3
"""
@@ -145,7 +145,7 @@ cdef class Type:
@@ -149,7 +149,7 @@ cdef class Type:
EXAMPLES::
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
"""
return bytes_to_str(self.x.name().ptr())
@@ -155,7 +155,7 @@ cdef class Type:
@@ -159,7 +159,7 @@ cdef class Type:
EXAMPLES::
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
A
"""
@@ -171,8 +171,8 @@ cdef class Type:
@@ -175,8 +175,8 @@ cdef class Type:
EXAMPLES::
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
False
sage: d = {a: 1, b: 2} # optional - coxeter3
@@ -184,9 +184,9 @@ cdef class Type:
@@ -188,9 +188,9 @@ cdef class Type:
EXAMPLES::
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
True
sage: tb != ta1 # optional - coxeter3
@@ -220,7 +220,7 @@ cdef class Type:
@@ -224,7 +224,7 @@ cdef class Type:
EXAMPLES::
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
"""
return (Type, (repr(self), ))
@@ -257,7 +257,7 @@ cdef class CoxGroup(SageObject):
@@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
pass
type = type.lower()
rank = rank + 1
- type = 'B' if type == 'C' else type
+ type = b'B' if type == 'C' else type.encode('utf-8')
if rank == 0:
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
--- src/sage/misc/sageinspect.py.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/misc/sageinspect.py 2020-07-09 16:11:23.134895309 -0600
@@ -485,35 +485,46 @@ class SageArgSpecVisitor(ast.NodeVisitor
return False
--- src/sage/misc/sageinspect.py.orig 2020-11-01 10:38:08.203022437 -0700
+++ src/sage/misc/sageinspect.py 2020-11-01 10:43:43.355143620 -0700
@@ -463,12 +463,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
"""
return node.id
- if six.PY3:
- def visit_NameConstant(self, node):
- """
- Visit a Python AST :class:`ast.NameConstant` node.
- def visit_NameConstant(self, 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):
+ r"""
+ Visit a Python AST :class:`ast.Constant` node.
- This is an optimization added in Python 3.4 for the special cases
- of True, False, and None.
+ INPUT:
INPUT:
- INPUT:
+ - ``node`` - the node instance to visit
@@ -476,17 +473,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
- - ``node`` - the node instance to visit
+ OUTPUT:
OUTPUT:
- OUTPUT:
- - None, True, False.
+ - 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: visitor = sms.SageArgSpecVisitor()
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
+ 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']]
+ [<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)
[<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
+ ['abstract', u'syntax', 'tr\\ee']
- 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
+ sage: [vis(n) for n in ['123', '0.0']]
+ [123, 0.0]
+
+ .. NOTE::
"""
+ On Python 3 negative numbers are parsed first, for some reason, as
+ a UnaryOp node.
+ """
+ return node.value
+
+ 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
return node.value
@@ -520,57 +521,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
"""
return node.arg
- 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.
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 2020-07-06 16:48:01.183121035 -0600
@@ -188,7 +188,8 @@ class _Coordinates(object):
--- src/sage/plot/plot3d/plot3d.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/plot/plot3d/plot3d.py 2020-10-30 14:24:36.813732073 -0600
@@ -186,7 +186,7 @@ class _Coordinates(object):
sage: arb((x+z,y*z,z), z, (x,y))
Arbitrary Coordinates coordinate transform (z in terms of x, y)
"""
- all_vars = sage_getargspec(self.transform).args[1:]
+ args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = inspect.getfullargspec(self.transform)
+ all_vars=args[1:]
+ all_vars = inspect.getfullargspec(self.transform)[0][1:]
if set(all_vars) != set(indep_vars + [dep_var]):
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
self.dep_var = dep_var
diff -up src/sage/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
--- src/sage/rings/integer.pyx.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/sage/rings/integer.pyx 2020-07-06 16:48:01.187121034 -0600
@@ -7135,7 +7135,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
while x[0] == c' ': x += 1 # Strip spaces
--- src/sage/rings/integer.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/integer.pyx 2020-10-30 14:03:05.737896928 -0600
@@ -7093,7 +7093,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
x += 1 # Strip spaces
# Disallow a sign here
- if x[0] == '-' or x[0] == '+':
@ -1007,10 +487,10 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
x = "" # Force an error below
assert base >= 2
diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx
--- src/sage/rings/polynomial/pbori.pyx.orig 2020-07-06 16:13:17.464497408 -0600
+++ src/sage/rings/polynomial/pbori.pyx 2020-07-06 16:48:01.190121033 -0600
@@ -4764,8 +4764,7 @@ cdef class PolynomialConstruct:
diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2020-11-05 15:44:02.756454276 -0700
@@ -4800,8 +4800,7 @@ cdef class PolynomialConstruct:
# So, it is just a conversion. [Simon King]
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:
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 2020-07-06 16:48:01.192121033 -0600
@@ -1941,12 +1941,12 @@ cdef class RealIntervalFieldElement(Ring
--- src/sage/rings/real_mpfi.pyx.orig 2020-10-30 11:34:28.078977132 -0600
+++ src/sage/rings/real_mpfi.pyx 2020-10-30 14:03:09.088891288 -0600
@@ -1955,12 +1955,12 @@ cdef class RealIntervalFieldElement(Ring
cdef long digits
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
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")
mpz_get_str(tmp_cstr, base, lower_mpz)
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)
sign_string = bytes_to_str(b'-')
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
--- src/sage/rings/real_mpfr.pyx.orig 2020-07-06 16:19:17.720457638 -0600
+++ src/sage/rings/real_mpfr.pyx 2020-07-06 16:48:01.194121032 -0600
@@ -2045,7 +2045,7 @@ cdef class RealNumber(sage.structure.ele
--- src/sage/rings/real_mpfr.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/rings/real_mpfr.pyx 2020-11-05 15:44:02.769454276 -0700
@@ -2091,7 +2091,7 @@ cdef class RealNumber(sage.structure.ele
if s is NULL:
raise RuntimeError("unable to convert an mpfr number to a string")
# t contains just digits (no sign, decimal point or exponent)
@ -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)
else:
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 2020-07-06 16:48:01.194121032 -0600
@@ -680,7 +680,7 @@ cdef class SageObject:
--- src/sage/structure/sage_object.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/structure/sage_object.pyx 2020-10-30 14:03:09.091891283 -0600
@@ -688,7 +688,7 @@ cdef class SageObject:
try:
s = self._interface_init_(I)
except Exception:
@ -1072,9 +552,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.
if c:
try:
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
--- src/sage/symbolic/expression.pyx.orig 2020-07-06 16:22:36.515435688 -0600
+++ src/sage/symbolic/expression.pyx 2020-07-06 16:48:01.198121032 -0600
@@ -12990,7 +12990,7 @@ cdef class hold_class:
--- src/sage/symbolic/expression.pyx.orig 2020-10-30 12:10:19.747169301 -0600
+++ src/sage/symbolic/expression.pyx 2020-10-30 14:03:09.095891276 -0600
@@ -13071,7 +13071,7 @@ cdef class hold_class:
sage: SR(2)^5
32
"""
@ -1083,7 +563,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
def __exit__(self, *args):
"""
@@ -13003,7 +13003,7 @@ cdef class hold_class:
@@ -13084,7 +13084,7 @@ cdef class hold_class:
sage: SR(2)^5
32
"""
@ -1092,25 +572,3 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
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
--- src/sage/interfaces/qepcad.py.orig 2019-03-23 16:20:41.000000000 -0600
+++ src/sage/interfaces/qepcad.py 2019-04-08 13:32:00.509789984 -0600
--- src/sage/interfaces/qepcad.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/qepcad.py 2020-10-30 14:49:41.431265953 -0600
@@ -530,7 +530,7 @@ TESTS:
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]
'SINGULAR .../bin\n'
@@ -607,7 +607,6 @@ AUTHORS:
@@ -606,7 +606,6 @@ AUTHORS:
#*****************************************************************************
from __future__ import print_function, absolute_import
from six import string_types
-from sage.env import SAGE_LOCAL
import pexpect

View file

@ -1,7 +1,7 @@
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 2019-04-09 13:55:17.152716497 -0600
@@ -13,6 +13,8 @@ from cysignals.memory cimport sig_malloc
--- src/sage/misc/binary_tree.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/misc/binary_tree.pyx 2020-10-30 13:27:44.173427025 -0600
@@ -12,6 +12,8 @@ from cysignals.memory cimport sig_malloc
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 *t
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 *cur
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:
return self.left
if self.left == NULL:
@@ -502,7 +501,6 @@ class Test:
@@ -501,7 +500,6 @@ class Test:
sage: sage.misc.binary_tree.Test().random()
"""

View file

@ -1,7 +1,7 @@
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 2019-06-27 11:32:11.332515672 -0600
@@ -286,11 +286,11 @@ def _write_started_file():
--- src/sage/all.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/all.py 2020-10-30 13:56:32.674557350 -0600
@@ -324,11 +324,11 @@ def _write_started_file():
Check that the file exists when Sage is running (note, this file is not
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
--- src/sage/misc/cython.py.orig 2019-10-03 14:49:48.553636029 -0300
+++ src/sage/misc/cython.py 2019-10-03 14:50:05.890737435 -0300
--- src/sage/misc/cython.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/misc/cython.py 2020-10-30 16:08:06.039158996 -0600
@@ -46,7 +46,7 @@ standard_libs = [
] + cblas_libs + [
'ntl']

View file

@ -1,306 +1,87 @@
diff -up build/pkgs/rubiks/src/dik/cube.c.orig build/pkgs/rubiks/src/dik/cube.c
--- build/pkgs/rubiks/src/dik/cube.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/cube.c 2019-04-09 13:25:49.060985774 -0600
@@ -6,6 +6,7 @@ static void read_position();
diff -up src/sage/features/rubiks.py.orig src/sage/features/rubiks.py
--- src/sage/features/rubiks.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/features/rubiks.py 2020-10-30 16:35:54.828279888 -0600
@@ -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
main(argc, argv)
int argc;
char *argv[];
diff -up build/pkgs/rubiks/src/dik/globals.h.orig build/pkgs/rubiks/src/dik/globals.h
--- build/pkgs/rubiks/src/dik/globals.h.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/globals.h 2019-04-09 15:47:20.736919992 -0600
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
@@ -53,7 +53,7 @@ class size222(Executable):
sage: isinstance(size222(), size222)
True
"""
- Executable.__init__(self, "size222", executable="size222",
+ Executable.__init__(self, "size222", executable="rubiks_size222",
spkg="rubiks")
#define MAX_MOVES 30
diff -up build/pkgs/rubiks/src/dik/permcube.c.orig build/pkgs/rubiks/src/dik/permcube.c
--- build/pkgs/rubiks/src/dik/permcube.c.orig 2008-01-04 01:26:59.000000000 -0700
+++ build/pkgs/rubiks/src/dik/permcube.c 2019-04-09 13:24:49.733911356 -0600
@@ -1,5 +1,6 @@
#include "globals.h"
@@ -76,7 +76,7 @@ class optimal(Executable):
sage: isinstance(optimal(), optimal)
True
"""
- 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;
+static int cube_found, orient_found;
@@ -122,7 +122,7 @@ class dikcube(Executable):
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
#include "trans/perm7.a"
@@ -17,6 +19,7 @@ int maximal;
int gcount;
int givemax;
@@ -145,7 +145,7 @@ class cubex(Executable):
sage: isinstance(cubex(), cubex)
True
"""
- 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
try_one(num, count)
int num, count;
{
@@ -64,6 +68,7 @@ int i, j, nnum, counted = 0, k, l, max =
return counted;
}
diff -up src/sage/interfaces/rubik.py.orig src/sage/interfaces/rubik.py
--- src/sage/interfaces/rubik.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/rubik.py 2020-10-30 16:37:38.173193027 -0600
@@ -96,7 +96,7 @@ class OptimalSolver:
"""
Interface to Michael Reid's optimal Rubik's Cube solver.
"""
- __cmd = "optimal"
+ __cmd = "rubiks_optimal"
+void
try(count)
int count;
{
@@ -93,6 +98,7 @@ TYPE j;
do_pr(count + 1, counted);
}
def __init__(self, verbose=False, wait=True):
self.verbose = verbose
@@ -185,7 +185,7 @@ move_map = {
+int
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>
class CubexSolver:
#define EQUIV
#define NOMAX
@@ -38,6 +40,7 @@ int maximal;
int gcount;
int givemax;
- __cmd = "cubex"
+ __cmd = "rubiks_cubex"
+void
do_pr(turns, count)
int turns, count;
{
@@ -50,6 +53,7 @@ int turns, count;
fflush(stdout);
}
def __call__(self, facets):
return self.solve(facets)
@@ -238,7 +238,7 @@ class CubexSolver:
+int
try_one(num, count)
int num, count;
{
@@ -122,6 +126,7 @@ int i, j, nnum, counted = 0, k, l, max,
return wcounted;
}
class DikSolver:
+void
try(count)
int count;
{
@@ -151,6 +156,7 @@ TYPE j;
do_pr(count + 1, counted);
}
- __cmd = "dikcube"
+ __cmd = "rubiks_dikcube"
+int
main(argc, argv)
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[];
def __call__(self, facets):
return self.solve(facets)

View file

@ -1,7 +1,7 @@
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 2019-10-03 14:52:24.063545626 -0300
@@ -106,7 +106,6 @@ class DocTestDefaults(SageObject):
--- src/sage/doctest/control.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/doctest/control.py 2020-10-30 13:55:37.330649309 -0600
@@ -115,7 +115,6 @@ class DocTestDefaults(SageObject):
self.valgrind = False
self.massif = 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.new = 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:
# Interactive debuggers: "infinite" timeout
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
options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60))
elif options.long:
@@ -1105,13 +1104,8 @@ class DocTestController(SageObject):
@@ -1109,13 +1108,8 @@ class DocTestController(SageObject):
elif opt.cachegrind:
toolname = "cachegrind"
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:
flags %= toolname + ".%p" # replace %s with toolname
cmd += flags + sage_cmd
@@ -1196,10 +1190,10 @@ class DocTestController(SageObject):
@@ -1201,10 +1195,10 @@ class DocTestController(SageObject):
"""
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()
else:
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 2019-10-03 14:53:22.502887441 -0300
@@ -2262,7 +2262,7 @@ def generate_docstring_dictionary():
--- src/sage/interfaces/singular.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/interfaces/singular.py 2020-10-30 13:55:37.332649306 -0600
@@ -2349,7 +2349,7 @@ def generate_docstring_dictionary():
nodes.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_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
# 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)
if m:
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 2019-10-03 14:54:02.207119676 -0300
@@ -85,8 +85,11 @@ def merge_environment(app, env):
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage_setup/docbuild/ext/multidocs.py 2020-10-30 13:55:37.332649306 -0600
@@ -82,8 +82,11 @@ def merge_environment(app, env):
for ind in newalldoc:
# treat subdocument source as orphaned file and don't complain
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'}
# merge the citations
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
--- src/bin/sage.orig 2020-05-20 16:33:41.000000000 -0600
+++ src/bin/sage 2020-07-06 16:33:49.015329159 -0600
@@ -26,13 +26,10 @@ usage() {
echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file"
echo " -advanced -- list all command line options"
echo " -c <cmd> -- Evaluates cmd as sage code"
- echo " -experimental -- list all experimental packages that can be installed"
echo " -gap [...] -- run Sage's Gap with given arguments"
echo " -gap3 [...] -- run Sage's Gap3 with given arguments"
echo " -gp [...] -- run Sage's PARI/GP calculator with given arguments"
echo " -h, -? -- print this help message"
- echo " -i [packages] -- install the given Sage packages"
- 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() {
--- src/bin/sage.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/bin/sage 2020-10-30 13:43:06.816896461 -0600
@@ -29,7 +29,6 @@ usage() {
echo " --gap [...] -- run Sage's Gap with given arguments"
echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments"
echo " -h -- print this help message"
- echo " --pip [...] -- invoke pip, the Python package manager"
echo " --maxima [...] -- run Sage's Maxima with given arguments"
echo " --mwrank [...] -- run Sage's mwrank with given arguments"
echo " --notebook=[...] -- start the Sage notebook (valid options are"
@@ -59,119 +58,6 @@ usage() {
# below, after sourcing 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."
- exit 2;;
- -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";;
- *) PACKAGES="$PACKAGES $OPT";;
- esac
@ -264,7 +114,7 @@ diff -up src/bin/sage.orig src/bin/sage
- # See https://trac.sagemath.org/ticket/25078
- if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then
- 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
- fi
- $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG"
@ -275,12 +125,11 @@ diff -up src/bin/sage.orig src/bin/sage
- exit 0
-fi
-
-
-#####################################################################
# 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.
sage_setup() {
@ -301,7 +150,7 @@ diff -up src/bin/sage.orig src/bin/sage
if [ ! -d "$IPYTHONDIR" ]; then
# make sure that $DOT_SAGE exists so that ipython will happily
# create its config directories there. If DOT_SAGE doesn't
@@ -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.
interactive_sage() {
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 "$@"
fi
@ -330,29 +207,12 @@ diff -up src/bin/sage.orig src/bin/sage
- shift
- exec kash "$@"
-fi
-
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
- shift
- exec sage-fixdoctests "$@"
-fi
-
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
shift
exec maxima "$@"
@@ -606,11 +380,6 @@ if [ "$1" = '--pip3' ]; then
exec "$SAGE_LOCAL"/bin/python3 -m pip "$@"
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 "$@"
maxima_cmd=$(sage-config MAXIMA 2>/dev/null)
@@ -630,11 +472,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then
exec R "$@"
fi
-if [ "$1" = '-git' -o "$1" = '--git' ]; then
@ -360,48 +220,22 @@ diff -up src/bin/sage.orig src/bin/sage
- exec git "$@"
-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?
-#####################################################################
-
-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
# sage --sh and sage --buildsh
#####################################################################
@@ -804,11 +641,6 @@ fi
# build_sage, sage -b, sage -br, etc. could be moved to
# build/bin/sage-site. See #29111.
-build_sage() {
- 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
sage-cleaner &>/dev/null &
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 "$@"
fi
@ -412,11 +246,11 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-notebook --notebook=default "$@"
-fi
-
if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then
shift
sage-cleaner &>/dev/null &
@@ -876,31 +609,12 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep
exit 0
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
# Source inspection facilities, supported on sage-the-distribution and on distributions
# that package the Sage sources.
@@ -842,40 +667,12 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ];
fi
fi
-if [ "$1" = '-b' ]; then
@ -434,8 +268,17 @@ diff -up src/bin/sage.orig src/bin/sage
interactive_sage
fi
-if [ "$1" = '-ba' -o "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
- ( cd "$SAGE_SRC" && make clean )
-if [ "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
- 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
- exit $?
-fi
@ -448,7 +291,7 @@ diff -up src/bin/sage.orig src/bin/sage
sage_setup
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
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
@ -465,10 +308,34 @@ diff -up src/bin/sage.orig src/bin/sage
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
shift
sage_setup
@@ -936,112 +640,6 @@ if [ "$1" = '-c' ]; then
exec sage-eval "$@"
@@ -904,21 +691,6 @@ if [ "$1" = '-testall' -o "$1" = "--test
exec sage-runtests -a "$@"
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
- maybe_sage_location
- exit 0
@ -514,26 +381,13 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-package $@
-fi
-
-if [ "$1" = '-optional' -o "$1" = "--optional" ]; then
- shift
- exec sage-list-packages optional $@
-fi
-
-if [ "$1" = '-experimental' -o "$1" = "--experimental" ]; then
- 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" = '-optional' -o "$1" = "--optional" ]; then
shift
exec sage-list-packages optional $@
@@ -1008,30 +733,6 @@ if [ "$1" = '-installed' -o "$1" = "--in
exec sage-list-packages all --installed-only $@
fi
-if [ "$1" = '-p' ]; then
- shift
- # 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 "$@"
-fi
-
-if [ "$1" = '-rsyncdist' -o "$1" = "--rsyncdist" ]; then
- if [ $# -ne 2 ]; then
- echo >&2 "** MISSING VERSION NUMBER! **"
- exit 2
- 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
#####################################################################
# Debugging tools
#####################################################################
@@ -1075,12 +776,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
exec sage-callgrind "$@"
fi
@ -588,39 +425,6 @@ diff -up src/bin/sage.orig src/bin/sage
- exec sage-omega "$@"
-fi
-
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
exec sage-startuptime.py "$@"
fi
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"
if [ "$1" = '-gthread' -o "$1" = '-qthread' -o "$1" = '-q4thread' -o "$1" = '-wthread' -o "$1" = '-pylab' -o "$1" = '--simple-prompt' -o "$1" = '-simple-prompt' ]; then
# Intentionally no "shift" here
interactive_sage "$@"

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
--- 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 2020-02-25 13:59:23.612853911 -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-10-30 16:40:43.904036700 -0600
@@ -2,8 +2,8 @@
#include <map>

View file

@ -4,11 +4,10 @@
%global _python_bytecompile_extra 0
%bcond_with bundled_pexpect
%bcond_without bundled_ipython
%bcond_with bundled_ipython
%bcond_without bundled_ipywidgets
%bcond_without bundled_thebe
%bcond_without bundled_threejs
%bcond_without bundled_widgetsnbextension
%bcond_without install_hack
%if 0%{?fedora} >= 33
@ -51,38 +50,33 @@
%global flintqs_pkg flintqs-1.0
%global graphs_pkg graphs-20161026
%if %{with bundled_ipython}
%global ipython_ver 5.8.0
%global ipython_ver 7.13.0
%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}
%endif
%if %{with bundled_ipywidgets}
%global ipywidgets_ver 7.4.2
%global ipywidgets_ver 7.5.1
%global ipywidgets_pkg ipywidgets-%{ipywidgets_ver}
%endif
%if %{with bundled_pexpect}
%global pexpect_pkg pexpect-4.6.0
%global pexpect_pkg pexpect-4.8.0
%endif
%global polytopes_db_pkg polytopes_db-20170220
%global rubiks_pkg rubiks-20070912
%global sagetex_pkg sagetex-3.4
%global Sphinx_pkg Sphinx-1.8.5
%global sagetex_pkg sagetex-3.5
%global Sphinx_pkg Sphinx-3.1.2
%global singular_pkg singular-4.1.1p2
%if %{with bundled_thebe}
%global thebe_ver 9624e0a0
%global thebe_pkg thebe-%{thebe_ver}
%endif
%if %{with bundled_threejs}
%global threejs_ver r110
%global threejs_ver r117
%global threejs_pkg threejs-%{threejs_ver}
%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.
%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
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
@ -99,8 +93,8 @@
Name: sagemath
Summary: A free open-source mathematics software system
Version: 9.1
Release: 4%{?dist}
Version: 9.2
Release: 1%{?dist}
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
# Additionally, every $files section has a comment with the license name
# before files with that license
@ -123,8 +117,7 @@ Patch1: %{name}-random.patch
# Set of patches to work with system wide packages
Patch2: %{name}-scripts.patch
# remove call to not implemented sagemath "is_package_installed" interfaces
# remove check for non free solvers
# Fix building extensions with system header files and libraries
Patch3: %{name}-extensions.patch
# helper to:
@ -158,63 +151,49 @@ Patch10: %{name}-cremona.patch
# adapt to python 3 and cython running in python 3 mode
Patch11: %{name}-python3.patch
# adapt to ecl 20.4.24
Patch12: %{name}-ecl.patch
# remove the buildroot path from Cython output
Patch13: %{name}-buildroot.patch
Patch12: %{name}-buildroot.patch
# update c++ standard to fix FTBFS
Patch14: %{name}-lcalc.patch
Patch13: %{name}-lcalc.patch
# Use system gap directories and modernize libgap interface
Patch16: %{name}-libgap.patch
Patch14: %{name}-libgap.patch
# Build fes
Patch17: %{name}-fes-build.patch
# Disable fes
Patch18: %{name}-fes.patch
Patch15: %{name}-fes-build.patch
# Side effect of using distro packages
# https://bugzilla.redhat.com/show_bug.cgi?id=974769
Patch19: %{name}-sympy.patch
Patch16: %{name}-env.patch
# Correct unable to start QEPCAD within sage
# https://bugzilla.redhat.com/show_bug.cgi?id=1243590
Patch20: %{name}-qepcad.patch
Patch17: %{name}-qepcad.patch
# Correct path to arb headers
Patch21: %{name}-arb.patch
Patch18: %{name}-arb.patch
# Add missing include paths
Patch22: %{name}-includes.patch
# Use flexiblas
Patch19: %{name}-flexiblas.patch
# Use [flexi/open]blas
Patch23: %{name}-%{blaslib}.patch
# Use openblas
Patch20: %{name}-openblas.patch
# 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
Patch25: %{name}-sigfpe.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
# Change rubiks binary names to match Fedora
Patch22: %{name}-rubiks.patch
# 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
Patch30: %{name}-intersphinx.patch
Patch24: %{name}-intersphinx.patch
# Remove an unused call to a primecount function that no longer exists
Patch31: %{name}-primecount.patch
Patch25: %{name}-primecount.patch
BuildRequires: 4ti2
BuildRequires: arb-devel
@ -224,54 +203,69 @@ BuildRequires: brial-devel
BuildRequires: cddlib-devel
BuildRequires: cddlib-tools
BuildRequires: cliquer-devel
BuildRequires: coin-or-Cbc-devel
BuildRequires: coxeter-devel
BuildRequires: desktop-file-utils
BuildRequires: dvipng
BuildRequires: ecl
BuildRequires: eclib-devel
BuildRequires: factory-devel
%if %{with fes}
BuildRequires: fes-devel
%endif
BuildRequires: flint-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-corelg
BuildRequires: gap-pkg-crime
BuildRequires: gap-pkg-crisp
BuildRequires: gap-pkg-crystcat
BuildRequires: gap-pkg-ctbllib
BuildRequires: gap-pkg-design
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-hapcryst
BuildRequires: gap-pkg-hecke
BuildRequires: gap-pkg-irredsol
BuildRequires: gap-pkg-jupyterkernel
BuildRequires: gap-pkg-laguna
BuildRequires: gap-pkg-liealgdb
BuildRequires: gap-pkg-liepring
BuildRequires: gap-pkg-loops
BuildRequires: gap-pkg-lpres
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-quagroup
BuildRequires: gap-pkg-radiroot
BuildRequires: gap-pkg-repsn
BuildRequires: gap-pkg-semigroups
BuildRequires: gap-pkg-resclasses
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-utils
BuildRequires: gc-devel
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
BuildRequires: gcc-objc
BuildRequires: gcc-objc++
BuildRequires: gd-devel
BuildRequires: gdb
BuildRequires: gfan
BuildRequires: giac-devel
BuildRequires: giac-doc
BuildRequires: glpk-devel
BuildRequires: gmp-ecm
BuildRequires: gmp-ecm-devel
BuildRequires: gsl-devel
BuildRequires: ImageMagick
BuildRequires: iml-devel
BuildRequires: jmol
@ -281,16 +275,11 @@ BuildRequires: jsmath-fonts
BuildRequires: L-function-devel
BuildRequires: latte-integrale
BuildRequires: libbraiding-devel
BuildRequires: libfplll-devel
BuildRequires: libgap
BuildRequires: libhomfly-devel
BuildRequires: libmpc-devel
BuildRequires: libpng-devel
BuildRequires: linbox-devel
BuildRequires: lrcalc-devel
BuildRequires: lrslib-utils
BuildRequires: m4ri-devel
BuildRequires: m4rie-devel
BuildRequires: mathjax
BuildRequires: maxima-runtime-ecl
BuildRequires: mcqd-devel
@ -305,23 +294,43 @@ BuildRequires: pari-galdata
BuildRequires: pari-gp
BuildRequires: pari-seadata
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: ppl-devel
BuildRequires: primecount-devel
BuildRequires: pynac-devel
BuildRequires: python3-devel
BuildRequires: python3-docs
BuildRequires: python3-cypari2-devel
BuildRequires: python3-cysignals-devel
%if %{without bundled_ipython}
BuildRequires: python3-ipython-sphinx
%endif
BuildRequires: python3-pillow-devel
BuildRequires: python3-pplpy-devel
BuildRequires: python3-tdlib-devel
%if %{with bundled_ipython}
BuildRequires: %{py3_dist backcall}
%endif
BuildRequires: %{py3_dist brial}
BuildRequires: %{py3_dist cvxopt}
BuildRequires: %{py3_dist cython}
BuildRequires: %{py3_dist docutils}
BuildRequires: %{py3_dist fpylll}
BuildRequires: %{py3_dist future}
BuildRequires: %{py3_dist gmpy2}
%if %{with sphinx_hack}
BuildRequires: %{py3_dist html5lib}
@ -331,6 +340,9 @@ BuildRequires: %{py3_dist ipykernel}
%if %{without bundled_ipython}
BuildRequires: %{py3_dist ipython}
%endif
%if %{with bundled_ipython}
BuildRequires: %{py3_dist jedi}
%endif
BuildRequires: %{py3_dist kiwisolver}
BuildRequires: %{py3_dist matplotlib}
BuildRequires: %{py3_dist networkx}
@ -362,16 +374,16 @@ BuildRequires: %{py3_dist simplegeneric}
BuildRequires: %{py3_dist six}
BuildRequires: %{py3_dist sphinx}
BuildRequires: %{py3_dist sympy}
BuildRequires: %{py3_dist wheel}
BuildRequires: %{py3_dist widgetsnbextension}
BuildRequires: %{py3_dist zodb3}
BuildRequires: qepcad-B
BuildRequires: R
BuildRequires: ratpoints-devel
BuildRequires: readline-devel
BuildRequires: rubiks
BuildRequires: rw-devel
BuildRequires: sharedmeataxe-devel
BuildRequires: Singular-devel
BuildRequires: sirocco-devel
BuildRequires: stix-fonts
BuildRequires: suitesparse-devel
BuildRequires: symmetrica-devel
BuildRequires: sympow
@ -383,17 +395,16 @@ BuildRequires: tex(makecmds.sty)
BuildRequires: web-assets-devel
BuildRequires: xorg-x11-fonts-Type1
BuildRequires: xorg-x11-server-Xvfb
BuildRequires: zlib-devel
BuildRequires: zn_poly-devel
Requires: hicolor-icon-theme
Requires: rubiks
Requires: %{name}-core = %{version}-%{release}
Requires: %{name}-data = %{version}-%{release}
%if %{with docs}
Requires: %{name}-doc-en = %{version}-%{release}
Requires: %{name}-doc = %{version}-%{release}
%endif
Requires: %{name}-jupyter = %{version}-%{release}
Requires: %{name}-rubiks = %{version}-%{release}
Requires: %{name}-sagetex = %{version}-%{release}
%if %{with bundled_thebe}
@ -419,27 +430,47 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: 4ti2
Requires: cddlib-tools
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-corelg
Requires: gap-pkg-crime
Requires: gap-pkg-crisp
Requires: gap-pkg-crystcat
Requires: gap-pkg-ctbllib
Requires: gap-pkg-design
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-hapcryst
Requires: gap-pkg-hecke
Requires: gap-pkg-irredsol
Requires: gap-pkg-jupyterkernel
Requires: gap-pkg-laguna
Requires: gap-pkg-liealgdb
Requires: gap-pkg-liepring
Requires: gap-pkg-loops
Requires: gap-pkg-lpres
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-quagroup
Requires: gap-pkg-radiroot
Requires: gap-pkg-repsn
Requires: gap-pkg-semigroups
Requires: gap-pkg-resclasses
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-utils
Requires: gfan
@ -458,6 +489,9 @@ Requires: pari-galdata
Requires: pari-gp
Requires: pari-seadata
Requires: python3-tdlib
%if %{with bundled_ipython}
Requires: %{py3_dist backcall}
%endif
Requires: %{py3_dist brial}
Requires: %{py3_dist cypari2}
Requires: %{py3_dist cysignals}
@ -465,7 +499,6 @@ Requires: %{py3_dist cvxopt}
Requires: %{py3_dist cython}
Requires: %{py3_dist docutils}
Requires: %{py3_dist fpylll}
Requires: %{py3_dist future}
Requires: %{py3_dist gmpy2}
%if %{with sphinx_hack}
Requires: %{py3_dist html5lib}
@ -475,6 +508,9 @@ Requires: %{py3_dist ipykernel}
%if %{without bundled_ipython}
Requires: %{py3_dist ipython}
%endif
%if %{with bundled_ipython}
Requires: %{py3_dist jedi}
%endif
Requires: %{py3_dist matplotlib}
Requires: %{py3_dist networkx}
%if %{with bundled_ipython}
@ -504,8 +540,6 @@ Requires: %{py3_dist sympy}
Requires: %{py3_dist zodb3}
Requires: qepcad-B
Requires: Singular
# Required by thebe; remove when it is unbundled
Requires: stix-fonts
Requires: sympow
Requires: tachyon
Requires: texlive
@ -516,9 +550,6 @@ Provides: bundled(prompt_toolkit) = %{prompt_toolkit_ver}
%if %{with bundled_ipywidgets}
Provides: bundled(ipywidgets) = %{ipywidgets_ver}
%endif
%if %{with bundled_widgetsnbextension}
Provides: bundled(widgetsnbextension) = %{widgetsnbextension_ver}
%endif
%description core
This package contains the core sagemath python modules.
@ -621,6 +652,7 @@ ReflexivePolytope and ReflexivePolytopes commands.
#------------------------------------------------------------------------
%package doc
Summary: Documentation infrastructure files for %{name}
Requires: mathjax
%description doc
This package contains the documentation infrastructure for %{name}.
@ -704,6 +736,7 @@ This package contains the Turkish %{name} documentation.
Summary: Jupyter integration for sagemath
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: python-jupyter-filesystem
Requires: %{py3_dist widgetsnbextension}
# This can be removed when Fedora 31 reaches EOL
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
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
Summary: Sagemath into LaTeX documents
@ -812,11 +822,6 @@ popd
pushd build/pkgs/pexpect
tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz
mv %{pexpect_pkg} src
pushd src
for diff in ../patches/*.patch; do
patch -p1 < $diff
done
popd
popd
%endif
@ -825,16 +830,6 @@ pushd build/pkgs/polytopes_db
mv %{polytopes_db_pkg} src
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
tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz
mv %{sagetex_pkg} src
@ -872,13 +867,6 @@ pushd build/pkgs/threejs
popd
%endif
%if %{with bundled_widgetsnbextension}
pushd build/pkgs/widgetsnbextension
tar zxf ../../../upstream/%{widgetsnbextension_pkg}.tar.gz
mv %{widgetsnbextension_pkg} src
popd
%endif
%patch0
%patch1
%patch2
@ -894,27 +882,24 @@ popd
%patch12
%patch13
%patch14
%patch16
%if %{with fes}
%patch17
%else
%patch18
%patch15
%endif
%patch16
%patch17
%patch18
%if "%{blaslib}" == "flexiblas"
%patch19
%else
%patch20
%endif
%patch21
%patch22
%patch23
%patch24
%patch25
%patch26
%patch27
%patch28
%patch29
%patch30
%patch31
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
@ -923,7 +908,7 @@ sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \
-e 's|@@BUILDROOT@@|%{buildroot}|' \
-i src/setup.py
-i src/sage_setup/command/sage_build_cython.py
#------------------------------------------------------------------------
# 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
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
@ -976,7 +964,6 @@ export CC=%{__cc}
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
export SAGE_PYTHON_VERSION=3
export SAGE_PYTHON3=yes
export SAGE_ROOT=%{buildroot}%{SAGE_ROOT}
export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL}
# Avoid buildroot in gcc command line (use _builddir instead)
@ -1045,13 +1032,6 @@ pushd build/pkgs/ipywidgets/src
popd
%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}
cp -far %{python3_sitearch}/Cython %{_builddir}%{python3_sitearch}
BASE=$PWD/build/pkgs/cython/patches/
@ -1084,10 +1064,6 @@ pushd build/pkgs/flintqs/src
make %{?_smp_mflags} CPP="g++ %{optflags} -fPIC"
popd
pushd build/pkgs/rubiks/src
make %{?_smp_mflags} CC="gcc -fPIC" CXX="g++ -fPIC" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}"
popd
# last build command
rm -fr $DOT_SAGE
@ -1105,7 +1081,6 @@ export SAGE_SHARE=%{buildroot}%{SAGE_SHARE}
export SAGE_ETC=%{buildroot}%{SAGE_ETC}
export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC}
export SAGE_DOC=%{buildroot}%{SAGE_DOC}
export SAGE_PYTHON3=yes
export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH}
export DESTDIR=%{buildroot}
export SAGE_DEBUG=no
@ -1176,17 +1151,6 @@ pushd build/pkgs/flintqs/src
cp -fa src/QuadraticSieve $SAGE_LOCAL/bin
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/
rm -f \
@ -1306,14 +1270,6 @@ pushd build/pkgs/threejs
popd
%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
@ -1329,7 +1285,6 @@ export SAGE_SHARE="$SAGE_SHARE"
export SAGE_EXTCODE="$SAGE_ETC"
export SAGE_ETC="$SAGE_ETC"
export SAGE_SRC="%{buildroot}%{SAGE_SRC}"
export SAGE_PYTHON3=yes
##export SAGE_DOC="$SAGE_DOC"
##export SAGE_DOC_SRC="\$SAGE_DOC"
##export SAGE_PKGS="\$SAGE_LOCAL/var/lib/sage/installed"
@ -1467,10 +1422,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
# Fix permissions
find %{buildroot} -name '*.so' -exec chmod 755 {} \+
pushd %{buildroot}%{SAGE_LOCAL}/bin
chmod 755 QuadraticSieve
chmod 755 mcube dikcube cu2 size222 cubex optimal
popd
chmod 755 %{buildroot}%{SAGE_LOCAL}/bin/QuadraticSieve
chmod 755 %{buildroot}%{python3_sitearch}/sage/ext_data/pari/dokchitser/testall
for file in `find %{buildroot} -name \*.py`; do
if head -1 $file | grep -q '^#!'; then
chmod +x $file
@ -1550,6 +1503,19 @@ chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage-list-packages
# Byte compile python files in nonstandard places
%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
pushd src
@ -1605,9 +1571,9 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
# GPLv2+
%dir %{SAGE_ROOT}
%doc %{SAGE_ROOT}/COPYING.txt
%dir %{SAGE_LOCAL}
%dir %{SAGE_LOCAL}/bin
%dir %{SAGE_SHARE}
%dir %{SAGE_LOCAL}/
%dir %{SAGE_LOCAL}/bin/
%dir %{SAGE_SHARE}/
%{SAGE_LOCAL}/bin/QuadraticSieve
%{SAGE_LOCAL}/bin/ecm
%{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}/lib
%{SAGE_LOCAL}/share
%{SAGE_LOCAL}/var
%{SAGE_LOCAL}/var/
%ghost %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ver}
%{SAGE_ROOT}/doc
%{SAGE_ROOT}/devel
%{SAGE_ROOT}/doc
%{SAGE_ROOT}/share
%dir %{SAGE_SRC}
%dir %{SAGE_SRC}/
%if %{with docs}
%{SAGE_SRC}/doc
%endif
@ -1637,17 +1603,17 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
%{_datadir}/applications/%{name}.desktop
%if %{with bundled_thebe}
# MIT
%{SAGE_SHARE}/thebe
%{SAGE_SHARE}/thebe/
%endif
%if %{with bundled_threejs}
# MIT
%{SAGE_SHARE}/threejs
%{SAGE_SHARE}/threejs/
%endif
#------------------------------------------------------------------------
%files core
# GPLv2+
%{python3_sitearch}/sage
%{python3_sitearch}/sage/
%if %{without install_hack}
%{python3_sitearch}/sage-*.egg-info
%endif
@ -1661,27 +1627,27 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
#------------------------------------------------------------------------
%files data
%dir %{SAGE_SHARE}
%dir %{SAGE_ETC}
%dir %{SAGE_SHARE}/
%dir %{SAGE_ETC}/
%{SAGE_ETC}/sage
%{SAGE_ETC}/gprc.expect
#------------------------------------------------------------------------
%files data-combinatorial_designs
# Public Domain
%{SAGE_SHARE}/combinatorial_designs
%{SAGE_SHARE}/combinatorial_designs/
#------------------------------------------------------------------------
%files data-conway_polynomials
# GPLv2+
%{SAGE_SHARE}/conway_polynomials
%{SAGE_SHARE}/conway_polynomials/
#------------------------------------------------------------------------
%files data-elliptic_curves
# GPLv2+
%dir %{SAGE_SHARE}/cremona/
%{SAGE_SHARE}/cremona/cremona_mini.db
%{SAGE_SHARE}/ellcurves
%{SAGE_SHARE}/ellcurves/
#------------------------------------------------------------------------
%files data-elliptic_curves_large
@ -1692,127 +1658,119 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
#------------------------------------------------------------------------
%files data-etc
# GPLv2+
%{SAGE_ETC}/doctest
%{SAGE_ETC}/gap
%{SAGE_ETC}/images
%{SAGE_ETC}/kenzo
%{SAGE_ETC}/magma
%{SAGE_ETC}/mwrank
%{SAGE_ETC}/nbconvert
%{SAGE_ETC}/doctest/
%{SAGE_ETC}/gap/
%{SAGE_ETC}/kenzo/
%{SAGE_ETC}/magma/
%{SAGE_ETC}/mwrank/
%{SAGE_ETC}/nbconvert/
%{SAGE_ETC}/nodoctest
%{SAGE_ETC}/pari
%{SAGE_ETC}/singular
%{SAGE_ETC}/threejs
%{SAGE_ETC}/valgrind
%{SAGE_ETC}/pari/
%{SAGE_ETC}/singular/
%{SAGE_ETC}/threejs/
%{SAGE_ETC}/valgrind/
#------------------------------------------------------------------------
%files data-graphs
# GPLv2+
%{SAGE_ETC}/graphs
%{SAGE_SHARE}/graphs
%{SAGE_ETC}/graphs/
%{SAGE_SHARE}/graphs/
#------------------------------------------------------------------------
%files data-polytopes_db
# GPL+
%{SAGE_SHARE}/reflexive_polytopes
%{SAGE_SHARE}/reflexive_polytopes/
%if %{with docs}
#------------------------------------------------------------------------
%files doc
# GPLv2+
%dir %{SAGE_DOC}
%{SAGE_DOC}/common
%dir %{SAGE_DOC}/html
%dir %{SAGE_DOC}/
%{SAGE_DOC}/common/
%dir %{SAGE_DOC}/html/
#------------------------------------------------------------------------
%files doc-ca
# GPLv2+
%{SAGE_DOC}/ca
%{SAGE_DOC}/html/ca
%{SAGE_DOC}/ca/
%{SAGE_DOC}/html/ca/
#------------------------------------------------------------------------
%files doc-de
# GPLv2+
%{SAGE_DOC}/de
%{SAGE_DOC}/html/de
%{SAGE_DOC}/de/
%{SAGE_DOC}/html/de/
#------------------------------------------------------------------------
%files doc-en
# GPLv2+
%{SAGE_DOC}/en
%{SAGE_DOC}/html/en
%{SAGE_DOC}/en/
%{SAGE_DOC}/html/en/
#------------------------------------------------------------------------
%files doc-fr
# GPLv2+
%{SAGE_DOC}/fr
%{SAGE_DOC}/html/fr
%{SAGE_DOC}/fr/
%{SAGE_DOC}/html/fr/
#------------------------------------------------------------------------
%files doc-hu
# GPLv2+
%{SAGE_DOC}/hu
%{SAGE_DOC}/html/hu
%{SAGE_DOC}/hu/
%{SAGE_DOC}/html/hu/
#------------------------------------------------------------------------
%files doc-it
# GPLv2+
%{SAGE_DOC}/it
%{SAGE_DOC}/html/it
%{SAGE_DOC}/it/
%{SAGE_DOC}/html/it/
#------------------------------------------------------------------------
%files doc-pt
# GPLv2+
%{SAGE_DOC}/pt
%{SAGE_DOC}/html/pt
%{SAGE_DOC}/pt/
%{SAGE_DOC}/html/pt/
#------------------------------------------------------------------------
%files doc-ru
# GPLv2+
%{SAGE_DOC}/ru
%{SAGE_DOC}/html/ru
%{SAGE_DOC}/ru/
%{SAGE_DOC}/html/ru/
#------------------------------------------------------------------------
%files doc-tr
# GPLv2+
%{SAGE_DOC}/tr
%{SAGE_DOC}/html/tr
%{SAGE_DOC}/tr/
%{SAGE_DOC}/html/tr/
# with docs
%endif
#------------------------------------------------------------------------
%files jupyter
%{SAGE_ETC}/notebook-ipython
%{SAGE_ETC}/notebook-ipython/
# LGPLv2+
%if %{with bundled_widgetsnbextension}
%config(noreplace) %{_sysconfdir}/jupyter/nbconfig/notebook.d/*.json
%{_datadir}/jupyter/nbextensions/*
%{python3_sitelib}/widgetsnbextension*
%endif
%{_datadir}/jupyter/kernels/sagemath/
#------------------------------------------------------------------------
%files rubiks
# 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
%{_datadir}/jupyter/nbextensions/jsmol
%{_datadir}/jupyter/nbextensions/mathjax
%{_datadir}/jupyter/nbextensions/threejs
#------------------------------------------------------------------------
%files sagetex
# GPLv2+
%{python3_sitearch}/sagetex*
%{python3_sitearch}/__pycache__/sagetex*
%{_texmf}/tex/latex/sagetex
%doc %{_docdir}/sagetex
%{_texmf}/tex/latex/sagetex/
%doc %{_docdir}/sagetex/
########################################################################
%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
- Rebuild for primecount 6.1
- Bring back jmol/jsmol support

View file

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