mirror of
https://src.fedoraproject.org/rpms/sagemath.git
synced 2025-04-22 11:45:56 -04:00
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:
parent
de0ac7db5f
commit
861d3bcc88
34 changed files with 1210 additions and 4460 deletions
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
|
diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
|
||||||
--- src/sage/sandpiles/sandpile.py.orig 2018-12-22 16:37:10.000000000 -0700
|
--- src/sage/sandpiles/sandpile.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/sandpiles/sandpile.py 2019-01-16 09:43:32.402089611 -0700
|
+++ src/sage/sandpiles/sandpile.py 2020-10-30 14:00:00.744208307 -0600
|
||||||
@@ -346,9 +346,6 @@ from sage.arith.all import falling_facto
|
@@ -347,9 +347,6 @@ from sage.arith.all import falling_facto
|
||||||
from sage.rings.all import Integer, PolynomialRing, QQ, ZZ
|
from sage.rings.all import Integer, PolynomialRing, QQ, ZZ
|
||||||
from sage.symbolic.all import I, pi, SR
|
from sage.symbolic.all import I, pi, SR
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
|
||||||
|
|
||||||
|
|
||||||
def _sandpile_help(cls, usage, verbose=True):
|
def _sandpile_help(cls, usage, verbose=True):
|
||||||
@@ -5163,7 +5160,7 @@ class SandpileDivisor(dict):
|
@@ -5174,7 +5171,7 @@ class SandpileDivisor(dict):
|
||||||
sign_file.close()
|
sign_file.close()
|
||||||
# compute
|
# compute
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
|
diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
|
||||||
--- src/sage/libs/arb/arb_wrap.h.orig 2019-10-25 14:39:21.831699616 -0300
|
--- src/sage/libs/arb/arb_wrap.h.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/libs/arb/arb_wrap.h 2019-10-25 14:39:53.520890155 -0300
|
+++ src/sage/libs/arb/arb_wrap.h 2020-10-30 16:10:40.145976088 -0600
|
||||||
@@ -11,17 +11,17 @@
|
@@ -11,18 +11,18 @@
|
||||||
#define ulong mp_limb_t
|
#define ulong mp_limb_t
|
||||||
#define slong mp_limb_signed_t
|
#define slong mp_limb_signed_t
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
|
||||||
-#include <acb_modular.h>
|
-#include <acb_modular.h>
|
||||||
-#include <acb_poly.h>
|
-#include <acb_poly.h>
|
||||||
-#include <arb.h>
|
-#include <arb.h>
|
||||||
|
-#include <arb_hypgeom.h>
|
||||||
-#include <arf.h>
|
-#include <arf.h>
|
||||||
-#include <bernoulli.h>
|
-#include <bernoulli.h>
|
||||||
-#include <mag.h>
|
-#include <mag.h>
|
||||||
|
@ -24,6 +25,7 @@ diff -up src/sage/libs/arb/arb_wrap.h.orig src/sage/libs/arb/arb_wrap.h
|
||||||
+#include <arb/acb_modular.h>
|
+#include <arb/acb_modular.h>
|
||||||
+#include <arb/acb_poly.h>
|
+#include <arb/acb_poly.h>
|
||||||
+#include <arb/arb.h>
|
+#include <arb/arb.h>
|
||||||
|
+#include <arb/arb_hypgeom.h>
|
||||||
+#include <arb/arf.h>
|
+#include <arb/arf.h>
|
||||||
+#include <arb/bernoulli.h>
|
+#include <arb/bernoulli.h>
|
||||||
+#include <arb/mag.h>
|
+#include <arb/mag.h>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/setup.py.orig src/setup.py
|
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
|
||||||
--- src/setup.py.orig 2019-10-03 16:02:47.728642827 -0300
|
--- src/sage_setup/command/sage_build_cython.py.orig 2020-10-30 16:04:33.325411659 -0600
|
||||||
+++ src/setup.py 2019-10-03 16:03:22.041859763 -0300
|
+++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:09:19.770071485 -0600
|
||||||
@@ -335,6 +335,9 @@ class sage_build_cython(Command):
|
@@ -262,6 +262,9 @@ class sage_build_cython(Command):
|
||||||
with open(self._version_file, 'w') as f:
|
with open(self._version_file, 'w') as f:
|
||||||
f.write(self._version_stamp)
|
f.write(self._version_stamp)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
|
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
|
||||||
--- src/sage/databases/cremona.py.orig 2019-10-03 14:57:32.516349793 -0300
|
--- src/sage/databases/cremona.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/databases/cremona.py 2019-10-03 14:57:45.084423307 -0300
|
+++ src/sage/databases/cremona.py 2020-10-30 14:02:27.778960819 -0600
|
||||||
@@ -850,7 +850,8 @@ class MiniCremonaDatabase(SQLDatabase):
|
@@ -854,7 +854,8 @@ class MiniCremonaDatabase(SQLDatabase):
|
||||||
message = "There is no elliptic curve with label " \
|
message = "There is no elliptic curve with label " \
|
||||||
+ label + " in the default database; try installing " \
|
+ label + " in the default database; try installing " \
|
||||||
+ "the optional package database_cremona_ellcurve which " \
|
+ "the optional package database_cremona_ellcurve which " \
|
||||||
|
@ -11,7 +11,7 @@ diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
|
||||||
raise ValueError(message)
|
raise ValueError(message)
|
||||||
ainvs = eval(c[0])
|
ainvs = eval(c[0])
|
||||||
data = {'cremona_label': label,
|
data = {'cremona_label': label,
|
||||||
@@ -1649,6 +1650,7 @@ class LargeCremonaDatabase(MiniCremonaDa
|
@@ -1659,6 +1660,7 @@ class LargeCremonaDatabase(MiniCremonaDa
|
||||||
con.executemany("UPDATE t_curve SET gens=? WHERE curve=?", \
|
con.executemany("UPDATE t_curve SET gens=? WHERE curve=?", \
|
||||||
curve_data)
|
curve_data)
|
||||||
print("Committing...")
|
print("Committing...")
|
||||||
|
|
|
@ -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)
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/env.py.orig src/sage/env.py
|
diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
--- src/sage/env.py.orig 2020-07-06 16:59:20.179973650 -0600
|
--- src/sage/env.py.orig 2020-10-30 16:09:54.834029866 -0600
|
||||||
+++ src/sage/env.py 2020-07-06 17:03:47.991916151 -0600
|
+++ src/sage/env.py 2020-10-30 16:10:20.089999891 -0600
|
||||||
@@ -158,14 +158,14 @@ var('SAGE_DATE', version.date)
|
@@ -159,14 +159,14 @@ var('SAGE_DATE', version.date)
|
||||||
var('SAGE_VERSION_BANNER', version.banner)
|
var('SAGE_VERSION_BANNER', version.banner)
|
||||||
|
|
||||||
# bunch of sage directories and files
|
# bunch of sage directories and files
|
||||||
|
@ -20,9 +20,9 @@ diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
-var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data'))
|
-var('SAGE_EXTCODE', join(SAGE_LIB, 'sage', 'ext_data'))
|
||||||
+var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc'))
|
+var('SAGE_EXTCODE', join('/usr', 'share', 'sagemath', 'etc'))
|
||||||
|
|
||||||
var('SAGE_ROOT', '@@SAGE_ROOT@@')
|
var('SAGE_ROOT') # no fallback for SAGE_ROOT
|
||||||
var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB)
|
var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB)
|
||||||
@@ -186,13 +186,13 @@ var('THEBE_DIR', joi
|
@@ -187,13 +187,13 @@ var('THEBE_DIR', joi
|
||||||
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
|
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
|
||||||
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
||||||
var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,156 +1,187 @@
|
||||||
diff -up src/module_list.py.orig src/module_list.py
|
diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
--- src/module_list.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/env.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/module_list.py 2020-07-06 16:38:17.108266850 -0600
|
+++ src/sage/env.py 2020-10-30 15:44:29.575821493 -0600
|
||||||
@@ -401,16 +401,16 @@ ext_modules = [
|
@@ -413,7 +413,8 @@ def cython_aliases():
|
||||||
Extension('sage.graphs.matchpoly',
|
aliases[var + "INCDIR"] = pc['include_dirs']
|
||||||
sources = ['sage/graphs/matchpoly.pyx']),
|
aliases[var + "LIBDIR"] = pc['library_dirs']
|
||||||
|
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
|
||||||
|
- aliases[var + "LIBRARIES"] = pc['libraries']
|
||||||
|
+ aliases[var + "LIBRARIES"] = pc['libraries'] + ['gomp']
|
||||||
|
+ aliases['Singular_INCDIR'] = ['/usr/include/singular', '/usr/include/factory']
|
||||||
|
|
||||||
- OptionalExtension("sage.graphs.mcqd",
|
# uname-specific flags
|
||||||
+ Extension("sage.graphs.mcqd",
|
UNAME = os.uname()
|
||||||
["sage/graphs/mcqd.pyx"],
|
diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
|
||||||
language = "c++",
|
--- src/sage/graphs/mcqd.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
- package = 'mcqd'),
|
+++ src/sage/graphs/mcqd.pyx 2020-10-30 15:47:32.294609185 -0600
|
||||||
+ libraries = ['mcqd']),
|
@@ -1,4 +1,5 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
+# distutils: libraries = mcqd
|
||||||
|
# sage_setup: distribution = sage-mcqd
|
||||||
|
|
||||||
- OptionalExtension("sage.graphs.bliss",
|
from sage.ext.memory_allocator cimport MemoryAllocator
|
||||||
+ Extension("sage.graphs.bliss",
|
diff -up src/sage/interfaces/primecount.pyx.orig src/sage/interfaces/primecount.pyx
|
||||||
["sage/graphs/bliss.pyx"],
|
--- src/sage/interfaces/primecount.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
language = "c++",
|
+++ src/sage/interfaces/primecount.pyx 2020-10-30 15:47:42.766597012 -0600
|
||||||
- libraries = ['bliss'],
|
@@ -1,3 +1,4 @@
|
||||||
- package = 'bliss'),
|
+# distutils: libraries = primecount
|
||||||
+ include_dirs = ['/usr/include/bliss'],
|
# sage_setup: distribution = sage-primecount
|
||||||
+ libraries = ['bliss']),
|
|
||||||
|
|
||||||
Extension('sage.graphs.planarity',
|
r"""
|
||||||
sources = ['sage/graphs/planarity.pyx'],
|
diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
|
||||||
@@ -429,10 +429,9 @@ ext_modules = [
|
--- src/sage/libs/arb/arb.pxd.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
Extension('sage.graphs.graph_decompositions.cutwidth',
|
+++ src/sage/libs/arb/arb.pxd 2020-10-30 15:47:18.918624733 -0600
|
||||||
sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']),
|
@@ -1,4 +1,5 @@
|
||||||
|
# distutils: libraries = gmp flint ARB_LIBRARY
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
# distutils: depends = arb.h
|
||||||
|
|
||||||
- OptionalExtension('sage.graphs.graph_decompositions.tdlib',
|
from sage.libs.arb.types cimport *
|
||||||
+ Extension('sage.graphs.graph_decompositions.tdlib',
|
diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx
|
||||||
sources = ['sage/graphs/graph_decompositions/tdlib.pyx'],
|
--- src/sage/libs/arb/arb_version.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
- language="c++",
|
+++ src/sage/libs/arb/arb_version.pyx 2020-10-30 15:54:30.743122593 -0600
|
||||||
- package = 'tdlib'),
|
@@ -1,4 +1,5 @@
|
||||||
+ language="c++"),
|
# -*- coding: utf-8
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
from sage.libs.arb.arb cimport arb_version
|
||||||
|
from sage.cpython.string cimport char_to_str
|
||||||
|
|
||||||
Extension('sage.graphs.graph_decompositions.clique_separators',
|
diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
|
||||||
sources = ['sage/graphs/graph_decompositions/clique_separators.pyx']),
|
--- src/sage/libs/arb/arith.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
@@ -494,9 +493,9 @@ ext_modules = [
|
+++ src/sage/libs/arb/arith.pyx 2020-10-30 15:54:53.191096510 -0600
|
||||||
##
|
@@ -1,3 +1,4 @@
|
||||||
################################
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
"""
|
||||||
|
Arithmetic functions using the arb library
|
||||||
|
"""
|
||||||
|
diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx
|
||||||
|
--- src/sage/libs/mpmath/ext_impl.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/libs/mpmath/ext_impl.pyx 2020-10-30 15:52:15.823279433 -0600
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+# distutils: include_dirs = /usr/include/flint
|
||||||
|
"""
|
||||||
|
This module provides the core implementation of multiprecision
|
||||||
|
floating-point arithmetic. Operations are done in-place.
|
||||||
|
diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx
|
||||||
|
--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/libs/mpmath/ext_libmp.pyx 2020-10-30 15:53:01.023226835 -0600
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+# distutils: include_dirs = /usr/include/flint
|
||||||
|
"""
|
||||||
|
Faster versions of some key functions in mpmath.libmp
|
||||||
|
"""
|
||||||
|
diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx
|
||||||
|
--- src/sage/libs/mpmath/ext_main.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/libs/mpmath/ext_main.pyx 2020-10-30 15:52:35.663256336 -0600
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+# distutils: include_dirs = /usr/include/flint
|
||||||
|
"""
|
||||||
|
mpmath floating-point numbers
|
||||||
|
|
||||||
- OptionalExtension("sage.interfaces.primecount",
|
diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
|
||||||
+ Extension("sage.interfaces.primecount",
|
--- src/sage/libs/mpmath/utils.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
["sage/interfaces/primecount.pyx"],
|
+++ src/sage/libs/mpmath/utils.pyx 2020-10-30 15:51:33.798328356 -0600
|
||||||
- package = "primecount"),
|
@@ -1,3 +1,4 @@
|
||||||
+ libraries = ["primecount"]),
|
+# distutils: include_dirs = /usr/include/flint
|
||||||
|
"""
|
||||||
|
Utilities for Sage-mpmath interaction
|
||||||
|
|
||||||
Extension('*', ['sage/interfaces/*.pyx']),
|
diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx
|
||||||
|
--- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2020-10-30 15:55:44.799036557 -0600
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
# distutils: libraries = ARB_LIBRARY
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
r"""
|
||||||
|
Arbitrary precision complex ball matrices using Arb
|
||||||
|
|
||||||
@@ -515,21 +514,19 @@ ext_modules = [
|
diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx
|
||||||
##
|
--- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
################################
|
+++ src/sage/matrix/matrix_cyclo_dense.pyx 2020-10-30 15:56:45.647965864 -0600
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
# distutils: libraries = ntl
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
"""
|
||||||
|
Matrices over Cyclotomic Fields
|
||||||
|
|
||||||
- OptionalExtension('sage.libs.coxeter3.coxeter',
|
diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx
|
||||||
+ Extension('sage.libs.coxeter3.coxeter',
|
--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
sources = ['sage/libs/coxeter3/coxeter.pyx'],
|
+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2020-10-30 15:57:50.862889413 -0600
|
||||||
- include_dirs = [os.path.join(SAGE_INC, 'coxeter')],
|
@@ -1,3 +1,4 @@
|
||||||
+ include_dirs = ['/usr/include/coxeter'],
|
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||||
language="c++",
|
"""
|
||||||
- libraries = ['coxeter3'],
|
Dense matrices over multivariate polynomials over fields
|
||||||
- package = 'coxeter3'),
|
|
||||||
+ libraries = ['coxeter3']),
|
|
||||||
|
|
||||||
Extension('sage.libs.ecl',
|
diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
|
||||||
sources = ["sage/libs/ecl.pyx"]),
|
--- src/sage/rings/complex_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/rings/complex_arb.pyx 2020-11-05 15:42:05.494453973 -0700
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
# -*- coding: utf-8
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
r"""
|
||||||
|
Arbitrary precision complex balls using Arb
|
||||||
|
|
||||||
- OptionalExtension("sage.libs.fes",
|
diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx
|
||||||
+ Extension("sage.libs.fes",
|
--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
["sage/libs/fes.pyx"],
|
+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2020-11-05 15:48:03.436448764 -0700
|
||||||
language = "c",
|
@@ -1,5 +1,6 @@
|
||||||
- libraries = ['fes'],
|
# distutils: libraries = ntl
|
||||||
- package = 'fes'),
|
# distutils: language = c++
|
||||||
+ libraries = ['fes']),
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
"""
|
||||||
|
Optimized Quadratic Number Field Elements
|
||||||
|
|
||||||
Extension('sage.libs.flint.flint',
|
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
||||||
sources = ["sage/libs/flint/flint.pyx"],
|
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2020-10-30 11:34:26.064980206 -0600
|
||||||
@@ -558,13 +555,14 @@ ext_modules = [
|
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2020-10-30 16:02:19.239570828 -0600
|
||||||
sources = ["sage/libs/homfly.pyx"],
|
@@ -1,3 +1,4 @@
|
||||||
libraries = ["homfly", "gc"]),
|
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||||
|
r"""
|
||||||
|
Multivariate Polynomials via libSINGULAR
|
||||||
|
|
||||||
- OptionalExtension('sage.libs.sirocco',
|
diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx
|
||||||
+ Extension('sage.libs.sirocco',
|
--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
sources = ["sage/libs/sirocco.pyx"],
|
+++ src/sage/rings/polynomial/multi_polynomial.pyx 2020-11-05 15:42:05.505453973 -0700
|
||||||
libraries = ["sirocco"],
|
@@ -1,3 +1,4 @@
|
||||||
- package="sirocco",
|
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||||
language = 'c++'),
|
r"""
|
||||||
|
Base class for elements of multivariate polynomial rings
|
||||||
|
"""
|
||||||
|
diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx
|
||||||
|
--- src/sage/rings/polynomial/plural.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/rings/polynomial/plural.pyx 2020-11-05 15:42:05.507453973 -0700
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||||
|
r"""
|
||||||
|
Noncommutative Polynomials via libSINGULAR/Plural
|
||||||
|
|
||||||
- Extension('*', ['sage/libs/linbox/*.pyx']),
|
diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx
|
||||||
+ Extension('*',
|
--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+ sources = ['sage/libs/linbox/*.pyx'],
|
+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2020-10-30 16:03:19.870498851 -0600
|
||||||
+ libraries = ["gomp"]),
|
@@ -1,4 +1,5 @@
|
||||||
|
# -*- coding: utf-8
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
r"""
|
||||||
|
Univariate polynomials over `\CC` with interval coefficients using Arb.
|
||||||
|
|
||||||
Extension('sage.libs.lcalc.lcalc_Lfunction',
|
diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
|
||||||
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
|
--- src/sage/rings/real_arb.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
@@ -581,10 +579,9 @@ ext_modules = [
|
+++ src/sage/rings/real_arb.pyx 2020-11-05 15:42:05.510453973 -0700
|
||||||
Extension('sage.libs.lrcalc.lrcalc',
|
@@ -1,4 +1,5 @@
|
||||||
sources = ["sage/libs/lrcalc/lrcalc.pyx"]),
|
# -*- coding: utf-8
|
||||||
|
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||||
|
r"""
|
||||||
|
Arbitrary precision real balls using Arb
|
||||||
|
|
||||||
- OptionalExtension("sage.libs.meataxe",
|
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
|
||||||
+ Extension("sage.libs.meataxe",
|
--- src/sage_setup/command/sage_build_cython.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
sources = ['sage/libs/meataxe.pyx'],
|
+++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:04:33.325411659 -0600
|
||||||
- libraries = ['mtx'],
|
@@ -59,6 +59,7 @@ if subprocess.call("""$CC --version | gr
|
||||||
- package = 'meataxe'),
|
|
||||||
+ libraries = ['mtx']),
|
|
||||||
|
|
||||||
Extension('*', ['sage/libs/pari/*.pyx']),
|
# Search for dependencies in the source tree and add to the list of include directories
|
||||||
|
include_dirs = sage_include_directories(use_sources=True)
|
||||||
|
+include_dirs.extend(['@@CYSIGNALS@@'])
|
||||||
|
|
||||||
@@ -830,7 +827,8 @@ ext_modules = [
|
# Look for libraries only in what is configured already through distutils
|
||||||
include_dirs = cblas_include_dirs),
|
# and environment variables
|
||||||
|
|
||||||
Extension('sage.matrix.matrix_integer_sparse',
|
|
||||||
- sources = ['sage/matrix/matrix_integer_sparse.pyx']),
|
|
||||||
+ sources = ['sage/matrix/matrix_integer_sparse.pyx'],
|
|
||||||
+ libraries = ['gomp']),
|
|
||||||
|
|
||||||
Extension('sage.matrix.matrix_mod2_dense',
|
|
||||||
sources = ['sage/matrix/matrix_mod2_dense.pyx'],
|
|
||||||
@@ -849,20 +847,21 @@ ext_modules = [
|
|
||||||
Extension('sage.matrix.matrix_modn_dense_float',
|
|
||||||
sources = ['sage/matrix/matrix_modn_dense_float.pyx'],
|
|
||||||
language="c++",
|
|
||||||
- libraries = cblas_libs,
|
|
||||||
+ libraries = cblas_libs + ['gomp'],
|
|
||||||
library_dirs = cblas_library_dirs,
|
|
||||||
include_dirs = cblas_include_dirs),
|
|
||||||
|
|
||||||
Extension('sage.matrix.matrix_modn_dense_double',
|
|
||||||
sources = ['sage/matrix/matrix_modn_dense_double.pyx'],
|
|
||||||
language="c++",
|
|
||||||
- libraries = cblas_libs,
|
|
||||||
+ libraries = cblas_libs + ['gomp'],
|
|
||||||
library_dirs = cblas_library_dirs,
|
|
||||||
include_dirs = cblas_include_dirs,
|
|
||||||
extra_compile_args = ["-D_XPG6"]),
|
|
||||||
|
|
||||||
Extension('sage.matrix.matrix_modn_sparse',
|
|
||||||
- sources = ['sage/matrix/matrix_modn_sparse.pyx']),
|
|
||||||
+ sources = ['sage/matrix/matrix_modn_sparse.pyx'],
|
|
||||||
+ libraries = ['gomp']),
|
|
||||||
|
|
||||||
Extension('sage.matrix.matrix_mpolynomial_dense',
|
|
||||||
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
|
|
||||||
@@ -892,10 +891,9 @@ ext_modules = [
|
|
||||||
Extension('sage.matrix.matrix_window',
|
|
||||||
sources = ['sage/matrix/matrix_window.pyx']),
|
|
||||||
|
|
||||||
- OptionalExtension("sage.matrix.matrix_gfpn_dense",
|
|
||||||
+ Extension("sage.matrix.matrix_gfpn_dense",
|
|
||||||
sources = ['sage/matrix/matrix_gfpn_dense.pyx'],
|
|
||||||
- libraries = ['mtx'],
|
|
||||||
- package = 'meataxe'),
|
|
||||||
+ libraries = ['mtx']),
|
|
||||||
|
|
||||||
Extension('sage.matrix.misc',
|
|
||||||
sources = ['sage/matrix/misc.pyx']),
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
|
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
|
||||||
--- src/sage/libs/fes.pyx.orig 2019-01-14 17:16:03.000000000 -0700
|
--- src/sage/libs/fes.pyx.orig 2020-10-30 11:34:23.271984468 -0600
|
||||||
+++ src/sage/libs/fes.pyx 2019-02-07 08:30:50.024227599 -0700
|
+++ src/sage/libs/fes.pyx 2020-10-30 14:44:49.462736771 -0600
|
||||||
@@ -11,7 +11,7 @@ variables. Performing a full exhaustive
|
@@ -14,7 +14,7 @@ variables. Performing a full exhaustive
|
||||||
take a **long** time. The number of variables can be artificially
|
take a **long** time. The number of variables can be artificially
|
||||||
reduced to 64 by specializing some of them.
|
reduced to 64 by specializing some of them.
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
|
||||||
non-linear.
|
non-linear.
|
||||||
|
|
||||||
AUTHORS:
|
AUTHORS:
|
||||||
@@ -71,7 +71,7 @@ from cysignals.signals cimport sig_on, s
|
@@ -72,7 +72,7 @@ from cysignals.signals cimport sig_on, s
|
||||||
cdef extern from "fes_interface.h":
|
cdef extern from "fes_interface.h":
|
||||||
ctypedef int (*solution_callback_t)(void *, uint64_t)
|
ctypedef int (*solution_callback_t)(void *, uint64_t)
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
|
||||||
|
|
||||||
|
|
||||||
from sage.rings.integer import Integer
|
from sage.rings.integer import Integer
|
||||||
@@ -217,7 +217,7 @@ def exhaustive_search(eqs, max_sols=Inf
|
@@ -218,7 +218,7 @@ def exhaustive_search(eqs, max_sols=Inf
|
||||||
|
|
||||||
# ------- runs the library
|
# ------- runs the library
|
||||||
sig_on()
|
sig_on()
|
||||||
|
|
|
@ -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"],
|
|
|
@ -1,7 +1,93 @@
|
||||||
diff -up src/module_list.py.orig src/module_list.py
|
diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300
|
--- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
|
||||||
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300
|
+++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
|
||||||
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include'
|
@@ -391,7 +391,7 @@ def cython_aliases():
|
||||||
|
aliases = {}
|
||||||
|
|
||||||
|
for lib in ['fflas-ffpack', 'givaro', 'gsl', 'linbox', 'Singular',
|
||||||
|
- 'libpng', 'gdlib', 'm4ri', 'zlib', 'cblas', 'lapack']:
|
||||||
|
+ 'libpng', 'gdlib', 'm4ri', 'zlib', 'flexiblas']:
|
||||||
|
var = lib.upper().replace("-", "") + "_"
|
||||||
|
if lib == 'zlib':
|
||||||
|
aliases[var + "CFLAGS"] = ""
|
||||||
|
diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx
|
||||||
|
--- src/sage/matrix/matrix_integer_dense.pyx.orig 2020-10-30 11:52:49.737274785 -0600
|
||||||
|
+++ src/sage/matrix/matrix_integer_dense.pyx 2020-10-31 17:58:56.243063508 -0600
|
||||||
|
@@ -1,8 +1,8 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# distutils: extra_compile_args = M4RI_CFLAGS
|
||||||
|
-# distutils: libraries = iml ntl gmp m CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = iml ntl gmp m FLEXIBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = M4RI_INCDIR FLEXIBLAS_INCDIR
|
||||||
|
"""
|
||||||
|
Dense matrices over the integer ring
|
||||||
|
|
||||||
|
diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matrix_modn_dense_double.pyx
|
||||||
|
--- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-11-05 15:44:59.390454421 -0700
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
-# distutils: libraries = CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = FLEXIBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = FLEXIBLAS_INCDIR
|
||||||
|
# distutils: extra_compile_args = -D_XPG6
|
||||||
|
"""
|
||||||
|
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{23}` using LinBox's ``Modular<double>``
|
||||||
|
diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix_modn_dense_float.pyx
|
||||||
|
--- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-11-05 15:44:59.391454421 -0700
|
||||||
|
+++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-11-05 15:45:54.965454564 -0700
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
-# distutils: libraries = CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = FLEXIBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = FLEXIBLAS_INCDIR
|
||||||
|
"""
|
||||||
|
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{11}` using LinBox's ``Modular<float>``
|
||||||
|
|
||||||
|
diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_rational_dense.pyx
|
||||||
|
--- src/sage/matrix/matrix_rational_dense.pyx.orig 2020-10-30 11:34:26.031980257 -0600
|
||||||
|
+++ src/sage/matrix/matrix_rational_dense.pyx 2020-10-31 17:58:10.490106273 -0600
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: extra_compile_args = -D_XPG6 M4RI_CFLAGS
|
||||||
|
-# distutils: libraries = iml ntl m CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = iml ntl m FLEXIBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = FLEXIBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = M4RI_INCDIR FLEXIBLAS_INCDIR
|
||||||
|
|
||||||
|
"""
|
||||||
|
Dense matrices over the rational field
|
||||||
|
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
||||||
|
--- src/sage/misc/cython.py.orig 2020-10-30 16:08:06.039158996 -0600
|
||||||
|
+++ src/sage/misc/cython.py 2020-10-30 16:24:09.037024792 -0600
|
||||||
|
@@ -35,10 +35,9 @@ from sage.cpython.string import str_to_b
|
||||||
|
|
||||||
|
|
||||||
|
# CBLAS can be one of multiple implementations
|
||||||
|
-cblas_pc = pkgconfig.parse('cblas')
|
||||||
|
-cblas_libs = list(cblas_pc['libraries'])
|
||||||
|
-cblas_library_dirs = list(cblas_pc['library_dirs'])
|
||||||
|
-cblas_include_dirs = list(cblas_pc['include_dirs'])
|
||||||
|
+cblas_libs = ['flexiblas']
|
||||||
|
+cblas_library_dirs = ['/usr/lib']
|
||||||
|
+cblas_include_dirs = ['/usr/include/flexiblas']
|
||||||
|
|
||||||
|
standard_libs = [
|
||||||
|
'mpfr', 'gmp', 'gmpxx', 'pari', 'm',
|
||||||
|
diff -up src/sage_setup/library_order.py.orig src/sage_setup/library_order.py
|
||||||
|
--- src/sage_setup/library_order.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage_setup/library_order.py 2020-10-31 12:11:54.313540360 -0600
|
||||||
|
@@ -10,20 +10,18 @@ import os
|
||||||
import pkgconfig
|
import pkgconfig
|
||||||
|
|
||||||
# CBLAS can be one of multiple implementations
|
# CBLAS can be one of multiple implementations
|
||||||
|
@ -17,31 +103,14 @@ diff -up src/module_list.py.orig src/module_list.py
|
||||||
if os.path.exists('/usr/lib/libblas.dll.a'):
|
if os.path.exists('/usr/lib/libblas.dll.a'):
|
||||||
cblas_libs = ['gslcblas']
|
cblas_libs = ['gslcblas']
|
||||||
|
|
||||||
-# LAPACK can be one of multiple implementations
|
# LAPACK can be one of multiple implementations
|
||||||
-lapack_pc = pkgconfig.parse('lapack')
|
-lapack_pc = pkgconfig.parse('lapack')
|
||||||
-lapack_libs = lapack_pc['libraries']
|
-lapack_libs = lapack_pc['libraries']
|
||||||
-lapack_library_dirs = lapack_pc['library_dirs']
|
-lapack_library_dirs = lapack_pc['library_dirs']
|
||||||
-lapack_include_dirs = lapack_pc['include_dirs']
|
-lapack_include_dirs = lapack_pc['include_dirs']
|
||||||
+lapack_libs = [ 'flexiblas' ]
|
+lapack_libs = ['flexiblas']
|
||||||
+lapack_library_dirs = ['/usr/lib']
|
+lapack_library_dirs = ['/usr/lib']
|
||||||
+lapack_include_dirs = ['/usr/include/flexiblas']
|
+lapack_include_dirs = ['/usr/include/flexiblas']
|
||||||
|
|
||||||
# GD image library
|
# GD image library
|
||||||
gd_pc = pkgconfig.parse('gdlib')
|
gd_pc = pkgconfig.parse('gdlib')
|
||||||
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
|
||||||
--- src/sage/misc/cython.py.orig 2019-10-03 16:51:42.848776173 -0300
|
|
||||||
+++ src/sage/misc/cython.py 2019-10-03 16:52:06.480917303 -0300
|
|
||||||
@@ -35,10 +35,9 @@ from sage.misc.sage_ostools import resto
|
|
||||||
|
|
||||||
|
|
||||||
# CBLAS can be one of multiple implementations
|
|
||||||
-cblas_pc = pkgconfig.parse('cblas')
|
|
||||||
-cblas_libs = list(cblas_pc['libraries'])
|
|
||||||
-cblas_library_dirs = list(cblas_pc['library_dirs'])
|
|
||||||
-cblas_include_dirs = list(cblas_pc['include_dirs'])
|
|
||||||
+cblas_libs = ['flexiblas']
|
|
||||||
+cblas_library_dirs = ['/usr/lib']
|
|
||||||
+cblas_include_dirs = ['/usr/include/flexiblas']
|
|
||||||
|
|
||||||
standard_libs = [
|
|
||||||
'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm',
|
|
||||||
|
|
|
@ -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")]
|
|
|
@ -1,9 +1,9 @@
|
||||||
diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py
|
diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py
|
||||||
--- src/sage/docs/conf.py.orig 2019-09-29 17:03:11.000000000 -0600
|
--- src/sage/docs/conf.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/docs/conf.py 2020-01-02 11:19:45.125646695 -0700
|
+++ src/sage/docs/conf.py 2020-10-30 16:41:06.481017695 -0600
|
||||||
@@ -169,9 +169,8 @@ todo_include_todos = True
|
@@ -189,9 +189,8 @@ def set_intersphinx_mappings(app, config
|
||||||
python_version = sys.version_info.major
|
|
||||||
intersphinx_mapping = {
|
app.config.intersphinx_mapping = {
|
||||||
'python': ('https://docs.python.org/',
|
'python': ('https://docs.python.org/',
|
||||||
- os.path.join(SAGE_DOC_SRC, "common",
|
- os.path.join(SAGE_DOC_SRC, "common",
|
||||||
- "python{}.inv".format(python_version))),
|
- "python{}.inv".format(python_version))),
|
||||||
|
@ -11,5 +11,5 @@ diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py
|
||||||
+ '/usr/share/doc/python3-docs/html/objects.inv'),
|
+ '/usr/share/doc/python3-docs/html/objects.inv'),
|
||||||
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')}
|
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')}
|
||||||
|
|
||||||
def set_intersphinx_mappings(app):
|
# Add master intersphinx mapping
|
||||||
"""
|
dst = os.path.join(invpath, 'objects.inv')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
|
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
|
||||||
--- src/sage/interfaces/jmoldata.py.orig 2018-12-22 16:37:08.000000000 -0700
|
--- src/sage/interfaces/jmoldata.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/jmoldata.py 2019-01-16 09:43:40.755939704 -0700
|
+++ src/sage/interfaces/jmoldata.py 2020-10-30 14:01:33.291052531 -0600
|
||||||
@@ -148,8 +148,6 @@ class JmolData(SageObject):
|
@@ -148,8 +148,6 @@ class JmolData(SageObject):
|
||||||
sage: print(os.path.exists(testfile)) # optional -- java
|
sage: print(os.path.exists(testfile)) # optional -- java
|
||||||
True
|
True
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
||||||
--- src/sage/interfaces/latte.py.orig 2019-10-03 16:52:46.496156266 -0300
|
--- src/sage/interfaces/latte.py.orig 2020-10-30 14:03:03.974899895 -0600
|
||||||
+++ src/sage/interfaces/latte.py 2019-10-03 16:53:00.776241550 -0300
|
+++ src/sage/interfaces/latte.py 2020-10-30 16:26:14.352878056 -0600
|
||||||
@@ -117,7 +117,7 @@ def count(arg, ehrhart_polynomial=False,
|
@@ -117,7 +117,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||||
|
|
||||||
arg = str_to_bytes(arg)
|
arg = str_to_bytes(arg)
|
||||||
|
|
|
@ -1,21 +1,10 @@
|
||||||
diff -up src/module_list.py.orig src/module_list.py
|
diff -up src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig src/sage/libs/lcalc/lcalc_Lfunction.pyx
|
||||||
--- src/module_list.py.orig 2019-10-03 16:00:44.899866273 -0300
|
--- src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/module_list.py 2019-10-03 16:00:56.451939308 -0300
|
+++ src/sage/libs/lcalc/lcalc_Lfunction.pyx 2020-10-30 14:40:53.875121354 -0600
|
||||||
@@ -548,7 +548,7 @@ ext_modules = [
|
@@ -1,5 +1,5 @@
|
||||||
Extension('sage.libs.lcalc.lcalc_Lfunction',
|
# distutils: libraries = m ntl Lfunction
|
||||||
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
|
-# distutils: extra_compile_args = -O3 -ffast-math
|
||||||
libraries = ['m', 'ntl', 'Lfunction'],
|
+# distutils: extra_compile_args = -std=gnu++11 -ffast-math
|
||||||
- extra_compile_args=["-O3", "-ffast-math"],
|
# distutils: language = c++
|
||||||
+ extra_compile_args=["-std=gnu++11", "-ffast-math"],
|
r"""
|
||||||
language = 'c++'),
|
Rubinstein's lcalc library
|
||||||
|
|
||||||
Extension('sage.libs.libecm',
|
|
||||||
diff -up src/sage/libs/lcalc/lcalc_sage.h.orig src/sage/libs/lcalc/lcalc_sage.h
|
|
||||||
--- src/sage/libs/lcalc/lcalc_sage.h.orig 2019-10-25 15:58:31.890166910 -0300
|
|
||||||
+++ src/sage/libs/lcalc/lcalc_sage.h 2019-10-25 15:59:02.535343196 -0300
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-#include "Lfunction/L.h"
|
|
||||||
+#include "libLfunction/L.h"
|
|
||||||
int *new_ints(int l)
|
|
||||||
{
|
|
||||||
return new int[l];
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/env.py.orig src/sage/env.py
|
diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
--- src/sage/env.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/env.py.orig 2020-10-30 15:44:29.575821493 -0600
|
||||||
+++ src/sage/env.py 2020-07-06 16:57:04.139002833 -0600
|
+++ src/sage/env.py 2020-10-30 16:09:54.834029866 -0600
|
||||||
@@ -181,7 +181,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi
|
@@ -182,7 +182,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi
|
||||||
var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs'))
|
var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs'))
|
||||||
var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves'))
|
var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves'))
|
||||||
var('POLYTOPE_DATA_DIR', join(SAGE_SHARE, 'reflexive_polytopes'))
|
var('POLYTOPE_DATA_DIR', join(SAGE_SHARE, 'reflexive_polytopes'))
|
||||||
|
@ -11,8 +11,8 @@ diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
|
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
|
||||||
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
||||||
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||||
--- src/sage/libs/gap/element.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/libs/gap/element.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/libs/gap/element.pyx 2020-07-06 16:57:04.140002833 -0600
|
+++ src/sage/libs/gap/element.pyx 2020-10-30 14:42:23.392975217 -0600
|
||||||
@@ -264,7 +264,7 @@ cdef Obj make_gap_string(sage_string) ex
|
@@ -264,7 +264,7 @@ cdef Obj make_gap_string(sage_string) ex
|
||||||
try:
|
try:
|
||||||
GAP_Enter()
|
GAP_Enter()
|
||||||
|
@ -76,7 +76,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||||
|
|
||||||
def is_permutation(self):
|
def is_permutation(self):
|
||||||
r"""
|
r"""
|
||||||
@@ -1458,7 +1458,7 @@ cdef class GapElement_Integer(GapElement
|
@@ -1469,7 +1469,7 @@ cdef class GapElement_Integer(GapElement
|
||||||
sage: N.IsInt()
|
sage: N.IsInt()
|
||||||
true
|
true
|
||||||
"""
|
"""
|
||||||
|
@ -85,7 +85,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||||
|
|
||||||
def _rational_(self):
|
def _rational_(self):
|
||||||
r"""
|
r"""
|
||||||
@@ -2797,7 +2797,7 @@ cdef class GapElement_List(GapElement):
|
@@ -2808,7 +2808,7 @@ cdef class GapElement_List(GapElement):
|
||||||
...
|
...
|
||||||
ValueError: too many indices
|
ValueError: too many indices
|
||||||
"""
|
"""
|
||||||
|
@ -94,7 +94,7 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||||
cdef Obj obj = self.value
|
cdef Obj obj = self.value
|
||||||
|
|
||||||
if isinstance(i, tuple):
|
if isinstance(i, tuple):
|
||||||
@@ -2868,7 +2868,7 @@ cdef class GapElement_List(GapElement):
|
@@ -2879,7 +2879,7 @@ cdef class GapElement_List(GapElement):
|
||||||
if not IS_MUTABLE_OBJ(self.value):
|
if not IS_MUTABLE_OBJ(self.value):
|
||||||
raise TypeError('immutable Gap object does not support item assignment')
|
raise TypeError('immutable Gap object does not support item assignment')
|
||||||
|
|
||||||
|
@ -104,8 +104,8 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||||
|
|
||||||
if isinstance(i, tuple):
|
if isinstance(i, tuple):
|
||||||
diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd
|
diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd
|
||||||
--- src/sage/libs/gap/gap_includes.pxd.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/libs/gap/gap_includes.pxd.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/libs/gap/gap_includes.pxd 2020-07-06 16:58:14.358987770 -0600
|
+++ src/sage/libs/gap/gap_includes.pxd 2020-10-30 14:42:23.392975217 -0600
|
||||||
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
|
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
|
||||||
|
|
||||||
cdef extern from "gap/system.h" nogil:
|
cdef extern from "gap/system.h" nogil:
|
||||||
|
@ -225,8 +225,8 @@ diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.
|
||||||
+ Obj NEW_STRING(Int len)
|
+ Obj NEW_STRING(Int len)
|
||||||
+ Obj MakeStringWithLen(const char *buf, size_t len)
|
+ Obj MakeStringWithLen(const char *buf, size_t len)
|
||||||
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
|
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
|
||||||
--- src/sage/libs/gap/util.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/libs/gap/util.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/libs/gap/util.pyx 2020-07-06 16:57:04.142002832 -0600
|
+++ src/sage/libs/gap/util.pyx 2020-10-30 14:42:23.393975216 -0600
|
||||||
@@ -386,7 +386,7 @@ cdef Obj gap_eval(str gap_string) except
|
@@ -386,7 +386,7 @@ cdef Obj gap_eval(str gap_string) except
|
||||||
"""
|
"""
|
||||||
initialize()
|
initialize()
|
||||||
|
|
|
@ -1,24 +1,12 @@
|
||||||
diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp
|
|
||||||
--- src/bin/sage-maxima.lisp.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/bin/sage-maxima.lisp 2020-07-06 16:43:41.194184363 -0600
|
|
||||||
@@ -4,3 +4,8 @@
|
|
||||||
|
|
||||||
(setf *prompt-prefix* "<sage-display>")
|
|
||||||
|
|
||||||
+#+clisp
|
|
||||||
+(setf
|
|
||||||
+ *error-output* (open "/dev/stderr" :direction :output)
|
|
||||||
+ *standard-input* (open "/dev/stdin" :direction :input)
|
|
||||||
+ *standard-output* (open "/dev/stdout" :direction :output))
|
|
||||||
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
|
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
|
||||||
--- src/sage/interfaces/maxima.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/interfaces/maxima.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/maxima.py 2020-07-06 16:44:55.895165348 -0600
|
+++ src/sage/interfaces/maxima.py 2020-10-30 13:59:17.007281872 -0600
|
||||||
@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect):
|
@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect):
|
||||||
Expect.__init__(self,
|
Expect.__init__(self,
|
||||||
name = 'maxima',
|
name = 'maxima',
|
||||||
prompt = r'\(\%i[0-9]+\) ',
|
prompt = r'\(\%i[0-9]+\) ',
|
||||||
- command = '"{0}" -p "{1}"'.format(MAXIMA, STARTUP),
|
- command = '{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
|
||||||
+ command = '"{0}" --disable-readline -p "{1}"'.format(MAXIMA, STARTUP),
|
+ command = '{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
|
||||||
env = {'TMPDIR': str(ECL_TMP)},
|
env = {'TMPDIR': str(ECL_TMP)},
|
||||||
script_subdirectory = script_subdirectory,
|
script_subdirectory = script_subdirectory,
|
||||||
restart_on_ctrlc = False,
|
restart_on_ctrlc = False,
|
||||||
|
@ -32,3 +20,15 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
|
||||||
self._eval_line('0;')
|
self._eval_line('0;')
|
||||||
|
|
||||||
# set random seed
|
# set random seed
|
||||||
|
diff -up src/sage/interfaces/sage-maxima.lisp.orig src/sage/interfaces/sage-maxima.lisp
|
||||||
|
--- src/sage/interfaces/sage-maxima.lisp.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/interfaces/sage-maxima.lisp 2020-10-30 13:58:16.806383103 -0600
|
||||||
|
@@ -4,3 +4,8 @@
|
||||||
|
|
||||||
|
(setf *prompt-prefix* "<sage-display>")
|
||||||
|
|
||||||
|
+#+clisp
|
||||||
|
+(setf
|
||||||
|
+ *error-output* (open "/dev/stderr" :direction :output)
|
||||||
|
+ *standard-input* (open "/dev/stdin" :direction :input)
|
||||||
|
+ *standard-output* (open "/dev/stdout" :direction :output))
|
||||||
|
|
|
@ -1,7 +1,93 @@
|
||||||
diff -up src/module_list.py.orig src/module_list.py
|
diff -up src/sage/env.py.orig src/sage/env.py
|
||||||
--- src/module_list.py.orig 2019-10-03 16:51:55.350850836 -0300
|
--- src/sage/env.py.orig 2020-10-30 16:10:20.089999891 -0600
|
||||||
+++ src/module_list.py 2019-10-03 16:52:06.479917297 -0300
|
+++ src/sage/env.py 2020-10-31 12:11:19.256615196 -0600
|
||||||
@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include'
|
@@ -391,7 +391,7 @@ def cython_aliases():
|
||||||
|
aliases = {}
|
||||||
|
|
||||||
|
for lib in ['fflas-ffpack', 'givaro', 'gsl', 'linbox', 'Singular',
|
||||||
|
- 'libpng', 'gdlib', 'm4ri', 'zlib', 'cblas', 'lapack']:
|
||||||
|
+ 'libpng', 'gdlib', 'm4ri', 'zlib', 'openblas']:
|
||||||
|
var = lib.upper().replace("-", "") + "_"
|
||||||
|
if lib == 'zlib':
|
||||||
|
aliases[var + "CFLAGS"] = ""
|
||||||
|
diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx
|
||||||
|
--- src/sage/matrix/matrix_integer_dense.pyx.orig 2020-10-30 11:52:49.737274785 -0600
|
||||||
|
+++ src/sage/matrix/matrix_integer_dense.pyx 2020-10-31 17:58:56.243063508 -0600
|
||||||
|
@@ -1,8 +1,8 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# distutils: extra_compile_args = M4RI_CFLAGS
|
||||||
|
-# distutils: libraries = iml ntl gmp m CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = iml ntl gmp m OPENBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = OPENBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = M4RI_INCDIR OPENBLAS_INCDIR
|
||||||
|
"""
|
||||||
|
Dense matrices over the integer ring
|
||||||
|
|
||||||
|
diff -up src/sage/matrix/matrix_modn_dense_double.pyx.orig src/sage/matrix/matrix_modn_dense_double.pyx
|
||||||
|
--- src/sage/matrix/matrix_modn_dense_double.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/matrix/matrix_modn_dense_double.pyx 2020-11-05 15:54:31.940411433 -0700
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
-# distutils: libraries = CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = OPENBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = OPENBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = OPENBLAS_INCDIR
|
||||||
|
# distutils: extra_compile_args = -D_XPG6
|
||||||
|
"""
|
||||||
|
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{23}` using LinBox's ``Modular<double>``
|
||||||
|
diff -up src/sage/matrix/matrix_modn_dense_float.pyx.orig src/sage/matrix/matrix_modn_dense_float.pyx
|
||||||
|
--- src/sage/matrix/matrix_modn_dense_float.pyx.orig 2020-11-05 15:54:31.940411433 -0700
|
||||||
|
+++ src/sage/matrix/matrix_modn_dense_float.pyx 2020-11-05 15:55:38.853405001 -0700
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: language = c++
|
||||||
|
-# distutils: libraries = CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = OPENBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = OPENBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = OPENBLAS_INCDIR
|
||||||
|
"""
|
||||||
|
Dense matrices over `\ZZ/n\ZZ` for `n < 2^{11}` using LinBox's ``Modular<float>``
|
||||||
|
|
||||||
|
diff -up src/sage/matrix/matrix_rational_dense.pyx.orig src/sage/matrix/matrix_rational_dense.pyx
|
||||||
|
--- src/sage/matrix/matrix_rational_dense.pyx.orig 2020-10-30 11:34:26.031980257 -0600
|
||||||
|
+++ src/sage/matrix/matrix_rational_dense.pyx 2020-10-31 17:58:10.490106273 -0600
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# distutils: extra_compile_args = -D_XPG6 M4RI_CFLAGS
|
||||||
|
-# distutils: libraries = iml ntl m CBLAS_LIBRARIES
|
||||||
|
-# distutils: library_dirs = CBLAS_LIBDIR
|
||||||
|
-# distutils: include_dirs = M4RI_INCDIR CBLAS_INCDIR
|
||||||
|
+# distutils: libraries = iml ntl m OPENBLAS_LIBRARIES
|
||||||
|
+# distutils: library_dirs = OPENBLAS_LIBDIR
|
||||||
|
+# distutils: include_dirs = M4RI_INCDIR OPENBLAS_INCDIR
|
||||||
|
|
||||||
|
"""
|
||||||
|
Dense matrices over the rational field
|
||||||
|
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
||||||
|
--- src/sage/misc/cython.py.orig 2020-10-30 16:08:06.039158996 -0600
|
||||||
|
+++ src/sage/misc/cython.py 2020-10-30 16:24:09.037024792 -0600
|
||||||
|
@@ -35,10 +35,9 @@ from sage.cpython.string import str_to_b
|
||||||
|
|
||||||
|
|
||||||
|
# CBLAS can be one of multiple implementations
|
||||||
|
-cblas_pc = pkgconfig.parse('cblas')
|
||||||
|
-cblas_libs = list(cblas_pc['libraries'])
|
||||||
|
-cblas_library_dirs = list(cblas_pc['library_dirs'])
|
||||||
|
-cblas_include_dirs = list(cblas_pc['include_dirs'])
|
||||||
|
+cblas_libs = ['openblas']
|
||||||
|
+cblas_library_dirs = ['/usr/lib']
|
||||||
|
+cblas_include_dirs = ['/usr/include/openblas']
|
||||||
|
|
||||||
|
standard_libs = [
|
||||||
|
'mpfr', 'gmp', 'gmpxx', 'pari', 'm',
|
||||||
|
diff -up src/sage_setup/library_order.py.orig src/sage_setup/library_order.py
|
||||||
|
--- src/sage_setup/library_order.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage_setup/library_order.py 2020-10-31 12:11:54.313540360 -0600
|
||||||
|
@@ -10,20 +10,18 @@ import os
|
||||||
import pkgconfig
|
import pkgconfig
|
||||||
|
|
||||||
# CBLAS can be one of multiple implementations
|
# CBLAS can be one of multiple implementations
|
||||||
|
@ -17,31 +103,14 @@ diff -up src/module_list.py.orig src/module_list.py
|
||||||
if os.path.exists('/usr/lib/libblas.dll.a'):
|
if os.path.exists('/usr/lib/libblas.dll.a'):
|
||||||
cblas_libs = ['gslcblas']
|
cblas_libs = ['gslcblas']
|
||||||
|
|
||||||
-# LAPACK can be one of multiple implementations
|
# LAPACK can be one of multiple implementations
|
||||||
-lapack_pc = pkgconfig.parse('lapack')
|
-lapack_pc = pkgconfig.parse('lapack')
|
||||||
-lapack_libs = lapack_pc['libraries']
|
-lapack_libs = lapack_pc['libraries']
|
||||||
-lapack_library_dirs = lapack_pc['library_dirs']
|
-lapack_library_dirs = lapack_pc['library_dirs']
|
||||||
-lapack_include_dirs = lapack_pc['include_dirs']
|
-lapack_include_dirs = lapack_pc['include_dirs']
|
||||||
+lapack_libs = [ 'lapack' ]
|
+lapack_libs = ['openblas']
|
||||||
+lapack_library_dirs = []
|
+lapack_library_dirs = ['/usr/lib']
|
||||||
+lapack_include_dirs = [ SAGE_INC + '/lapack' ]
|
+lapack_include_dirs = ['/usr/include/openblas']
|
||||||
|
|
||||||
# GD image library
|
# GD image library
|
||||||
gd_pc = pkgconfig.parse('gdlib')
|
gd_pc = pkgconfig.parse('gdlib')
|
||||||
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
|
||||||
--- src/sage/misc/cython.py.orig 2019-10-03 16:51:42.848776173 -0300
|
|
||||||
+++ src/sage/misc/cython.py 2019-10-03 16:52:06.480917303 -0300
|
|
||||||
@@ -35,10 +35,9 @@ from sage.misc.sage_ostools import resto
|
|
||||||
|
|
||||||
|
|
||||||
# CBLAS can be one of multiple implementations
|
|
||||||
-cblas_pc = pkgconfig.parse('cblas')
|
|
||||||
-cblas_libs = list(cblas_pc['libraries'])
|
|
||||||
-cblas_library_dirs = list(cblas_pc['library_dirs'])
|
|
||||||
-cblas_include_dirs = list(cblas_pc['include_dirs'])
|
|
||||||
+cblas_libs = ['openblas']
|
|
||||||
+cblas_library_dirs = ['/usr/lib']
|
|
||||||
+cblas_include_dirs = ['/usr/include/openblas']
|
|
||||||
|
|
||||||
standard_libs = [
|
|
||||||
'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm',
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
--- src/sage/libs/primecount.pxd.orig 2020-01-01 04:03:10.000000000 -0700
|
diff -up src/sage/libs/primecount.pxd.orig src/sage/libs/primecount.pxd
|
||||||
+++ src/sage/libs/primecount.pxd 2020-03-22 14:35:05.590527408 -0600
|
--- src/sage/libs/primecount.pxd.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
|
+++ src/sage/libs/primecount.pxd 2020-10-30 16:41:47.431983226 -0600
|
||||||
@@ -17,6 +17,5 @@ cdef extern from "primecount.hpp" namesp
|
@@ -17,6 +17,5 @@ cdef extern from "primecount.hpp" namesp
|
||||||
int get_num_threads()
|
int get_num_threads()
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,6 @@
|
||||||
diff -up build/pkgs/ipython/src/IPython/core/interactiveshell.py.orig build/pkgs/ipython/src/IPython/core/interactiveshell.py
|
|
||||||
--- build/pkgs/ipython/src/IPython/core/interactiveshell.py.orig 2018-07-28 18:24:17.000000000 -0600
|
|
||||||
+++ build/pkgs/ipython/src/IPython/core/interactiveshell.py 2020-05-07 09:19:44.916646996 -0600
|
|
||||||
@@ -2813,7 +2813,7 @@ class InteractiveShell(SingletonConfigur
|
|
||||||
|
|
||||||
try:
|
|
||||||
for i, node in enumerate(to_run_exec):
|
|
||||||
- mod = ast.Module([node])
|
|
||||||
+ mod = ast.Module([node], [])
|
|
||||||
code = compiler(mod, cell_name, "exec")
|
|
||||||
if self.run_code(code, result):
|
|
||||||
return True
|
|
||||||
diff -up build/pkgs/sagetex/src/extractsagecode.py.orig build/pkgs/sagetex/src/extractsagecode.py
|
|
||||||
--- build/pkgs/sagetex/src/extractsagecode.py.orig 2019-11-14 04:02:40.000000000 -0700
|
|
||||||
+++ build/pkgs/sagetex/src/extractsagecode.py 2020-02-25 13:42:46.674646884 -0700
|
|
||||||
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
|
|
||||||
|
|
||||||
try:
|
|
||||||
opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite'])
|
|
||||||
-except getopt.GetoptError, err:
|
|
||||||
+except getopt.GetoptError as err:
|
|
||||||
print(str(err))
|
|
||||||
usage()
|
|
||||||
sys.exit(2)
|
|
||||||
diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makestatic.py
|
|
||||||
--- build/pkgs/sagetex/src/makestatic.py.orig 2019-11-14 04:02:40.000000000 -0700
|
|
||||||
+++ build/pkgs/sagetex/src/makestatic.py 2020-02-25 13:42:46.674646884 -0700
|
|
||||||
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
|
|
||||||
|
|
||||||
try:
|
|
||||||
opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite'])
|
|
||||||
-except getopt.GetoptError, err:
|
|
||||||
+except getopt.GetoptError as err:
|
|
||||||
print(str(err))
|
|
||||||
usage()
|
|
||||||
sys.exit(2)
|
|
||||||
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
|
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
|
||||||
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-11-14 04:02:40.000000000 -0700
|
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2020-08-12 02:35:31.000000000 -0600
|
||||||
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-02-25 13:42:46.674646884 -0700
|
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-10-30 14:03:01.286904419 -0600
|
||||||
@@ -24,12 +24,11 @@
|
@@ -24,12 +24,11 @@
|
||||||
## You should have received a copy of the GNU General Public License along
|
## You should have received a copy of the GNU General Public License along
|
||||||
## with this program. If not, see <http://www.gnu.org/licenses/>.
|
## with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
@ -100,8 +64,8 @@ diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/re
|
||||||
if not password:
|
if not password:
|
||||||
from getpass import getpass
|
from getpass import getpass
|
||||||
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
|
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
|
||||||
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-11-14 04:02:40.000000000 -0700
|
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2020-08-12 02:35:31.000000000 -0600
|
||||||
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-02-25 13:42:46.674646884 -0700
|
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-10-30 14:03:01.286904419 -0600
|
||||||
@@ -132,7 +132,7 @@ class SageCodeExtractor():
|
@@ -132,7 +132,7 @@ class SageCodeExtractor():
|
||||||
|
|
||||||
def plotout(self, s, l, t):
|
def plotout(self, s, l, t):
|
||||||
|
@ -111,31 +75,10 @@ diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sage
|
||||||
self.result += '# format: %s' % t.format[0][1:-1] + '\n'
|
self.result += '# format: %s' % t.format[0][1:-1] + '\n'
|
||||||
self.result += t.code[1:-1] + '\n\n'
|
self.result += t.code[1:-1] + '\n\n'
|
||||||
|
|
||||||
diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite_state_machine.py
|
|
||||||
--- src/sage/combinat/finite_state_machine.py.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/combinat/finite_state_machine.py 2020-07-06 16:47:19.198130202 -0600
|
|
||||||
@@ -935,7 +935,7 @@ import six
|
|
||||||
from six.moves import range, zip_longest, zip
|
|
||||||
|
|
||||||
from IPython.lib.pretty import pretty
|
|
||||||
-import collections
|
|
||||||
+import collections, collections.abc
|
|
||||||
import itertools
|
|
||||||
from copy import copy, deepcopy
|
|
||||||
|
|
||||||
@@ -14159,7 +14159,7 @@ def is_FSMProcessIterator(PI):
|
|
||||||
|
|
||||||
|
|
||||||
class FSMProcessIterator(SageObject,
|
|
||||||
- collections.Iterator):
|
|
||||||
+ collections.abc.Iterator):
|
|
||||||
"""
|
|
||||||
This class takes an input, feeds it into a finite state machine
|
|
||||||
(automaton or transducer, in particular), tests whether this was
|
|
||||||
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
||||||
--- src/sage/cpython/debugimpl.c.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/cpython/debugimpl.c.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/cpython/debugimpl.c 2020-07-07 13:56:17.121624915 -0600
|
+++ src/sage/cpython/debugimpl.c 2020-10-30 14:03:01.299904398 -0600
|
||||||
@@ -155,6 +155,7 @@ static void _type_debug(PyTypeObject* tp
|
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
|
||||||
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
|
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
|
||||||
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
|
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
|
||||||
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
|
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
|
||||||
|
@ -143,7 +86,7 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
||||||
if HAVE_WEAKREFS(tp)
|
if HAVE_WEAKREFS(tp)
|
||||||
{
|
{
|
||||||
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
|
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
|
||||||
@@ -185,7 +186,6 @@ static void _type_debug(PyTypeObject* tp
|
@@ -178,7 +179,6 @@ static void _type_debug(PyTypeObject* tp
|
||||||
attr_pointer(tp_free);
|
attr_pointer(tp_free);
|
||||||
|
|
||||||
attr_pointer_meth(tp_repr, "__repr__");
|
attr_pointer_meth(tp_repr, "__repr__");
|
||||||
|
@ -152,8 +95,8 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
||||||
attr_pointer_meth(tp_call, "__call__");
|
attr_pointer_meth(tp_call, "__call__");
|
||||||
attr_pointer_meth(tp_str, "__str__");
|
attr_pointer_meth(tp_str, "__str__");
|
||||||
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
||||||
--- src/sage/cpython/debug.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/cpython/debug.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/cpython/debug.pyx 2020-07-07 13:57:49.169641697 -0600
|
+++ src/sage/cpython/debug.pyx 2020-10-30 14:03:01.300904396 -0600
|
||||||
@@ -232,6 +232,7 @@ def type_debug(cls):
|
@@ -232,6 +232,7 @@ def type_debug(cls):
|
||||||
tp_basicsize: 16
|
tp_basicsize: 16
|
||||||
tp_itemsize: 0
|
tp_itemsize: 0
|
||||||
|
@ -171,8 +114,8 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
||||||
tp_call (__call__): NULL
|
tp_call (__call__): NULL
|
||||||
tp_str (__str__): 0x7fc57d757020
|
tp_str (__str__): 0x7fc57d757020
|
||||||
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
|
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
|
||||||
--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/geometry/triangulation/point_configuration.py 2020-07-06 16:48:01.176121036 -0600
|
+++ src/sage/geometry/triangulation/point_configuration.py 2020-10-30 14:03:01.301904394 -0600
|
||||||
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
|
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
|
||||||
['{{0,1,2,4},{1,2,3,4}}']
|
['{{0,1,2,4},{1,2,3,4}}']
|
||||||
"""
|
"""
|
||||||
|
@ -187,70 +130,9 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge
|
||||||
|
|
||||||
if verbose:
|
if verbose:
|
||||||
print("#### TOPCOM input ####")
|
print("#### TOPCOM input ####")
|
||||||
diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py
|
|
||||||
--- src/sage/graphs/graph_latex.py.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/graphs/graph_latex.py 2020-07-06 16:48:01.177121036 -0600
|
|
||||||
@@ -1156,7 +1156,7 @@ class GraphLatex(SageObject):
|
|
||||||
#
|
|
||||||
elif name in color_dicts:
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, c in value.items():
|
|
||||||
try:
|
|
||||||
@@ -1165,42 +1165,42 @@ class GraphLatex(SageObject):
|
|
||||||
raise ValueError('%s option for %s needs to be a matplotlib color (always as a string), not %s' % (name, key, c))
|
|
||||||
elif name in positive_scalar_dicts:
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, x in value.items():
|
|
||||||
if not type(x) in [int, Integer, float, RealLiteral] or not x >= 0.0:
|
|
||||||
raise ValueError('%s option for %s needs to be a positive number, not %s' % (name, key, x))
|
|
||||||
elif name in boolean_dicts:
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, b in value.items():
|
|
||||||
if not isinstance(b, bool):
|
|
||||||
raise ValueError('%s option for %s needs to be True or False, not %s' % (name, key, b))
|
|
||||||
elif name == 'vertex_shapes':
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, s in value.items():
|
|
||||||
if s not in shape_names:
|
|
||||||
raise ValueError('%s option for %s needs to be a vertex shape, not %s' % (name, key, s))
|
|
||||||
elif name == 'vertex_label_placements':
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, p in value.items():
|
|
||||||
if not(p == 'center') and not(isinstance(p, tuple) and len(p) == 2 and type(p[0]) in number_types and p[0] >= 0 and type(p[1]) in number_types and p[1] >= 0):
|
|
||||||
raise ValueError('%s option for %s needs to be None or a pair of positive numbers, not %s' % (name, key, p))
|
|
||||||
elif name == 'edge_label_placements':
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, p in value.items():
|
|
||||||
if not(type(p) in [float, RealLiteral] and (0 <= p) and (p <= 1)) and not(p in label_places):
|
|
||||||
raise ValueError('%s option for %s needs to be a number between 0.0 and 1.0 or a place (like "above"), not %s' % (name, key, p))
|
|
||||||
elif name == 'loop_placements':
|
|
||||||
if not isinstance(value, dict):
|
|
||||||
- raise TypeError('%s option must be a dictionary, not %s' (name, value))
|
|
||||||
+ raise TypeError('%s option must be a dictionary, not %s' % (name, value))
|
|
||||||
else:
|
|
||||||
for key, p in value.items():
|
|
||||||
if not((isinstance(p, tuple)) and (len(p) == 2) and (p[0] >= 0) and (p[1] in compass_points)):
|
|
||||||
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
||||||
--- src/sage/interfaces/frobby.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/interfaces/frobby.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/frobby.py 2020-07-06 16:48:01.178121036 -0600
|
+++ src/sage/interfaces/frobby.py 2020-10-30 14:03:02.534902319 -0600
|
||||||
@@ -79,7 +79,7 @@ class Frobby:
|
@@ -79,7 +79,7 @@ class Frobby:
|
||||||
print("Frobby command: ", repr(command))
|
print("Frobby command: ", repr(command))
|
||||||
print("Frobby input:\n", input)
|
print("Frobby input:\n", input)
|
||||||
|
@ -261,41 +143,20 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
||||||
frinput = str_to_bytes(input)
|
frinput = str_to_bytes(input)
|
||||||
else:
|
else:
|
||||||
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
||||||
--- src/sage/interfaces/gfan.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/interfaces/gfan.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/gfan.py 2020-07-06 16:48:01.178121036 -0600
|
+++ src/sage/interfaces/gfan.py 2020-10-30 14:11:30.550047499 -0600
|
||||||
@@ -66,7 +66,7 @@ class Gfan(object):
|
@@ -62,7 +62,7 @@ class Gfan(object):
|
||||||
if six.PY2:
|
print("gfan input:\n%s" % I)
|
||||||
enc_kwargs = {}
|
|
||||||
else:
|
|
||||||
- enc_kwargs = {'encoding': 'latin-1'}
|
|
||||||
+ enc_kwargs = {'encoding': 'utf-8'}
|
|
||||||
|
|
||||||
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
|
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
|
||||||
**enc_kwargs)
|
- encoding='latin-1')
|
||||||
diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py
|
+ encoding='utf-8')
|
||||||
--- src/sage/interfaces/gp.py.orig 2020-05-20 16:33:41.000000000 -0600
|
ans, err = gfan_processes.communicate(input=I)
|
||||||
+++ src/sage/interfaces/gp.py 2020-07-06 16:48:01.179121036 -0600
|
|
||||||
@@ -934,17 +934,6 @@ class GpElement(ExpectElement):
|
|
||||||
"""
|
|
||||||
return repr(self.type()) == 't_STR'
|
|
||||||
|
|
||||||
- def __long__(self):
|
# sometimes, gfan outputs stuff to stderr even though everything is fine
|
||||||
- """
|
|
||||||
- Return Python long.
|
|
||||||
-
|
|
||||||
- EXAMPLES::
|
|
||||||
-
|
|
||||||
- sage: long(gp(10))
|
|
||||||
- 10L
|
|
||||||
- """
|
|
||||||
- return long(str(self))
|
|
||||||
-
|
|
||||||
def __float__(self):
|
|
||||||
"""
|
|
||||||
Return Python float.
|
|
||||||
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
||||||
--- src/sage/interfaces/latte.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/interfaces/latte.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/latte.py 2020-07-06 16:48:01.180121036 -0600
|
+++ src/sage/interfaces/latte.py 2020-10-30 14:03:03.974899895 -0600
|
||||||
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
|
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||||
latte_proc = Popen(args,
|
latte_proc = Popen(args,
|
||||||
stdin=PIPE, stdout=PIPE,
|
stdin=PIPE, stdout=PIPE,
|
||||||
|
@ -313,8 +174,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
||||||
|
|
||||||
ans, err = latte_proc.communicate(arg)
|
ans, err = latte_proc.communicate(arg)
|
||||||
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
|
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
|
||||||
--- src/sage/interfaces/sagespawn.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/interfaces/sagespawn.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/sagespawn.pyx 2020-07-06 16:48:01.180121036 -0600
|
+++ src/sage/interfaces/sagespawn.pyx 2020-10-30 14:03:03.975899894 -0600
|
||||||
@@ -1,6 +1,6 @@
|
@@ -1,6 +1,6 @@
|
||||||
"""
|
"""
|
||||||
Sage wrapper around pexpect's ``spawn`` class and
|
Sage wrapper around pexpect's ``spawn`` class and
|
||||||
|
@ -340,7 +201,7 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
|
||||||
from sage.interfaces.process cimport ContainChildren
|
from sage.interfaces.process cimport ContainChildren
|
||||||
|
|
||||||
|
|
||||||
@@ -171,7 +170,7 @@ class SageSpawn(spawn):
|
@@ -173,7 +172,7 @@ class SageSpawn(spawn):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
@ -349,7 +210,7 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
|
||||||
def close(self, force=None):
|
def close(self, force=None):
|
||||||
"""
|
"""
|
||||||
Quit the child process: send the quit string, close the
|
Quit the child process: send the quit string, close the
|
||||||
@@ -192,11 +191,7 @@ class SagePtyProcess(PtyProcess):
|
@@ -194,11 +193,7 @@ class SagePtyProcess(PtyProcess):
|
||||||
if self.quit_string is not None:
|
if self.quit_string is not None:
|
||||||
try:
|
try:
|
||||||
# This can fail if the process already exited
|
# This can fail if the process already exited
|
||||||
|
@ -362,11 +223,10 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
|
||||||
except (OSError, IOError):
|
except (OSError, IOError):
|
||||||
pass
|
pass
|
||||||
self.fileobj.close()
|
self.fileobj.close()
|
||||||
diff -up src/sage/lfunctions/lcalc.py.orig src/sage/lfunctions/lcalc.py
|
|
||||||
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
|
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
|
||||||
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-07-06 16:48:01.181121035 -0600
|
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-10-30 14:03:03.976899892 -0600
|
||||||
@@ -33,7 +33,7 @@ cdef class String:
|
@@ -37,7 +37,7 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -375,7 +235,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
hello
|
hello
|
||||||
sage: del s # optional - coxeter3
|
sage: del s # optional - coxeter3
|
||||||
"""
|
"""
|
||||||
@@ -44,11 +44,11 @@ cdef class String:
|
@@ -48,11 +48,11 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -389,7 +249,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
|
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
"""
|
"""
|
||||||
@@ -60,7 +60,7 @@ cdef class String:
|
@@ -64,7 +64,7 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -398,7 +258,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: hash(s) == hash('hello') # optional - coxeter3
|
sage: hash(s) == hash('hello') # optional - coxeter3
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
@@ -71,9 +71,9 @@ cdef class String:
|
@@ -75,9 +75,9 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -411,7 +271,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: ta1 == ta2 # optional - coxeter3
|
sage: ta1 == ta2 # optional - coxeter3
|
||||||
True
|
True
|
||||||
sage: tb != ta1 # optional - coxeter3
|
sage: tb != ta1 # optional - coxeter3
|
||||||
@@ -109,7 +109,7 @@ cdef class String:
|
@@ -113,7 +113,7 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -420,7 +280,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: len(s) # optional - coxeter3
|
sage: len(s) # optional - coxeter3
|
||||||
2
|
2
|
||||||
"""
|
"""
|
||||||
@@ -120,7 +120,7 @@ cdef class String:
|
@@ -124,7 +124,7 @@ cdef class String:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||||
|
@ -429,7 +289,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: TestSuite(s).run() # optional - coxeter3
|
sage: TestSuite(s).run() # optional - coxeter3
|
||||||
"""
|
"""
|
||||||
return (String, (repr(self),) )
|
return (String, (repr(self),) )
|
||||||
@@ -134,7 +134,7 @@ cdef class Type:
|
@@ -138,7 +138,7 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -438,7 +298,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
A
|
A
|
||||||
sage: del t # optional - coxeter3
|
sage: del t # optional - coxeter3
|
||||||
"""
|
"""
|
||||||
@@ -145,7 +145,7 @@ cdef class Type:
|
@@ -149,7 +149,7 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -447,7 +307,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
A
|
A
|
||||||
"""
|
"""
|
||||||
return bytes_to_str(self.x.name().ptr())
|
return bytes_to_str(self.x.name().ptr())
|
||||||
@@ -155,7 +155,7 @@ cdef class Type:
|
@@ -159,7 +159,7 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -456,7 +316,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: t.name() # optional - coxeter3
|
sage: t.name() # optional - coxeter3
|
||||||
A
|
A
|
||||||
"""
|
"""
|
||||||
@@ -171,8 +171,8 @@ cdef class Type:
|
@@ -175,8 +175,8 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -467,7 +327,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: hash(a) == hash(b) # optional - coxeter3
|
sage: hash(a) == hash(b) # optional - coxeter3
|
||||||
False
|
False
|
||||||
sage: d = {a: 1, b: 2} # optional - coxeter3
|
sage: d = {a: 1, b: 2} # optional - coxeter3
|
||||||
@@ -184,9 +184,9 @@ cdef class Type:
|
@@ -188,9 +188,9 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -480,7 +340,7 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: ta1 == ta2 # optional - coxeter3
|
sage: ta1 == ta2 # optional - coxeter3
|
||||||
True
|
True
|
||||||
sage: tb != ta1 # optional - coxeter3
|
sage: tb != ta1 # optional - coxeter3
|
||||||
@@ -220,7 +220,7 @@ cdef class Type:
|
@@ -224,7 +224,7 @@ cdef class Type:
|
||||||
EXAMPLES::
|
EXAMPLES::
|
||||||
|
|
||||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||||
|
@ -489,389 +349,65 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
||||||
sage: TestSuite(t).run() # optional - coxeter3
|
sage: TestSuite(t).run() # optional - coxeter3
|
||||||
"""
|
"""
|
||||||
return (Type, (repr(self), ))
|
return (Type, (repr(self), ))
|
||||||
@@ -257,7 +257,7 @@ cdef class CoxGroup(SageObject):
|
@@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
|
||||||
|
pass
|
||||||
type = type.lower()
|
type = type.lower()
|
||||||
rank = rank + 1
|
|
||||||
|
|
||||||
- type = 'B' if type == 'C' else type
|
- type = 'B' if type == 'C' else type
|
||||||
+ type = b'B' if type == 'C' else type.encode('utf-8')
|
+ type = b'B' if type == 'C' else type.encode('utf-8')
|
||||||
|
|
||||||
if rank == 0:
|
if rank == 0:
|
||||||
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
|
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
|
||||||
diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx
|
|
||||||
--- src/sage/misc/parser.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/misc/parser.pyx 2020-07-06 16:48:01.182121035 -0600
|
|
||||||
@@ -95,7 +95,7 @@ def token_to_str(int token):
|
|
||||||
|
|
||||||
|
|
||||||
cdef inline bint is_alphanumeric(char c):
|
|
||||||
- return 'a' <= c <= 'z' or 'A' <= c <= 'Z' or '0' <= c <= '9' or c == '_'
|
|
||||||
+ return c'a' <= c <= c'z' or c'A' <= c <= c'Z' or c'0' <= c <= c'9' or c == c'_'
|
|
||||||
|
|
||||||
cdef inline bint is_whitespace(char c):
|
|
||||||
return (c != 0) & (strchr(" \t\n\r", c) != NULL)
|
|
||||||
@@ -247,23 +247,23 @@ cdef class Tokenizer:
|
|
||||||
return EOS
|
|
||||||
|
|
||||||
# dipthongs
|
|
||||||
- if s[pos+1] == '=':
|
|
||||||
- if s[pos] == '<':
|
|
||||||
+ if s[pos+1] == c'=':
|
|
||||||
+ if s[pos] == c'<':
|
|
||||||
self.pos += 2
|
|
||||||
return LESS_EQ
|
|
||||||
- elif s[pos] == '>':
|
|
||||||
+ elif s[pos] == c'>':
|
|
||||||
self.pos += 2
|
|
||||||
return GREATER_EQ
|
|
||||||
- elif s[pos] == '!':
|
|
||||||
+ elif s[pos] == c'!':
|
|
||||||
self.pos += 2
|
|
||||||
return NOT_EQ
|
|
||||||
- elif s[pos] == '=':
|
|
||||||
+ elif s[pos] == c'=':
|
|
||||||
self.pos += 2
|
|
||||||
- return '='
|
|
||||||
+ return c'='
|
|
||||||
|
|
||||||
- elif s[pos] == '*' and s[pos+1] == '*':
|
|
||||||
+ elif s[pos] == c'*' and s[pos+1] == c'*':
|
|
||||||
self.pos += 2
|
|
||||||
- return '^'
|
|
||||||
+ return c'^'
|
|
||||||
|
|
||||||
# simple tokens
|
|
||||||
if strchr("+-*/^()=<>,[]{}!", s[pos]):
|
|
||||||
@@ -272,29 +272,29 @@ cdef class Tokenizer:
|
|
||||||
return type
|
|
||||||
|
|
||||||
# numeric literals
|
|
||||||
- if '0' <= s[pos] <= '9' or s[pos] == '.':
|
|
||||||
+ if c'0' <= s[pos] <= c'9' or s[pos] == c'.':
|
|
||||||
type = INT
|
|
||||||
seen_exp = False
|
|
||||||
seen_decimal = False
|
|
||||||
while True:
|
|
||||||
- if '0' <= s[pos] <= '9':
|
|
||||||
+ if c'0' <= s[pos] <= c'9':
|
|
||||||
pass
|
|
||||||
- elif s[pos] == '.':
|
|
||||||
+ elif s[pos] == c'.':
|
|
||||||
if seen_decimal or seen_exp:
|
|
||||||
self.pos = pos
|
|
||||||
return type
|
|
||||||
else:
|
|
||||||
type = FLOAT
|
|
||||||
seen_decimal = True
|
|
||||||
- elif s[pos] == 'e' or s[pos] == 'E':
|
|
||||||
+ elif s[pos] == c'e' or s[pos] == c'E':
|
|
||||||
if seen_exp:
|
|
||||||
self.pos = pos
|
|
||||||
return type
|
|
||||||
else:
|
|
||||||
type = FLOAT
|
|
||||||
seen_exp = True
|
|
||||||
- elif s[pos] == '+' or s[pos] == '-':
|
|
||||||
- if not (seen_exp and (s[pos-1] == 'e' or s[pos-1] == 'E')):
|
|
||||||
+ elif s[pos] == c'+' or s[pos] == c'-':
|
|
||||||
+ if not (seen_exp and (s[pos-1] == c'e' or s[pos-1] == c'E')):
|
|
||||||
self.pos = pos
|
|
||||||
return type
|
|
||||||
else:
|
|
||||||
@@ -573,13 +573,13 @@ cdef class Parser:
|
|
||||||
"""
|
|
||||||
cdef int token
|
|
||||||
all = []
|
|
||||||
- if tokens.next() == '(':
|
|
||||||
- token = ','
|
|
||||||
- while token == ',':
|
|
||||||
+ if tokens.next() == c'(':
|
|
||||||
+ token = c','
|
|
||||||
+ while token == c',':
|
|
||||||
all.append(self.p_list(tokens))
|
|
||||||
token = tokens.next()
|
|
||||||
|
|
||||||
- if token == ')':
|
|
||||||
+ if token == c')':
|
|
||||||
from sage.matrix.constructor import matrix
|
|
||||||
return matrix(all)
|
|
||||||
else:
|
|
||||||
@@ -601,8 +601,8 @@ cdef class Parser:
|
|
||||||
[(1, 2, 3), [a + 1, b + 2, c + 3, (d + 4,)]]
|
|
||||||
"""
|
|
||||||
all = []
|
|
||||||
- cdef int token = ','
|
|
||||||
- while token == ',':
|
|
||||||
+ cdef int token = c','
|
|
||||||
+ while token == c',':
|
|
||||||
token = tokens.peek()
|
|
||||||
if token == MATRIX:
|
|
||||||
tokens.next()
|
|
||||||
@@ -615,14 +615,14 @@ cdef class Parser:
|
|
||||||
else:
|
|
||||||
tokens.backtrack()
|
|
||||||
obj = self.p_eqn(tokens)
|
|
||||||
- elif token == '[':
|
|
||||||
+ elif token == c'[':
|
|
||||||
obj = self.p_list(tokens)
|
|
||||||
- elif token == '(':
|
|
||||||
+ elif token == c'(':
|
|
||||||
obj = self.p_tuple(tokens)
|
|
||||||
elif token == EOS:
|
|
||||||
return all
|
|
||||||
- elif token == ']' or token == ')':
|
|
||||||
- tokens.token = ','
|
|
||||||
+ elif token == c']' or token == c')':
|
|
||||||
+ tokens.token = c','
|
|
||||||
return all
|
|
||||||
else:
|
|
||||||
obj = self.p_eqn(tokens)
|
|
||||||
@@ -646,11 +646,11 @@ cdef class Parser:
|
|
||||||
[]
|
|
||||||
"""
|
|
||||||
cdef int token = tokens.next()
|
|
||||||
- if token != '[':
|
|
||||||
+ if token != c'[':
|
|
||||||
self.parse_error(tokens, "Malformed list")
|
|
||||||
all = self.p_sequence(tokens)
|
|
||||||
token = tokens.next()
|
|
||||||
- if token != ']':
|
|
||||||
+ if token != c']':
|
|
||||||
self.parse_error(tokens, "Malformed list")
|
|
||||||
return all
|
|
||||||
|
|
||||||
@@ -668,20 +668,20 @@ cdef class Parser:
|
|
||||||
cdef int start = tokens.pos
|
|
||||||
cdef int token = tokens.next()
|
|
||||||
cdef bint real_tuple = True
|
|
||||||
- if token != '(':
|
|
||||||
+ if token != c'(':
|
|
||||||
self.parse_error(tokens, "Malformed tuple")
|
|
||||||
all = self.p_sequence(tokens)
|
|
||||||
if len(all) == 1:
|
|
||||||
if tokens.last() != c',':
|
|
||||||
real_tuple = False
|
|
||||||
token = tokens.next()
|
|
||||||
- if token != ')':
|
|
||||||
+ if token != c')':
|
|
||||||
self.parse_error(tokens, "Malformed tuple")
|
|
||||||
if real_tuple:
|
|
||||||
return tuple(all)
|
|
||||||
else:
|
|
||||||
token = tokens.peek()
|
|
||||||
- if token == ',' or token == EOS:
|
|
||||||
+ if token == c',' or token == EOS:
|
|
||||||
return all[0]
|
|
||||||
else:
|
|
||||||
# we have to reparse the entire thing as an expression
|
|
||||||
@@ -717,15 +717,15 @@ cdef class Parser:
|
|
||||||
"""
|
|
||||||
lhs = self.p_expr(tokens)
|
|
||||||
cdef int op = tokens.next()
|
|
||||||
- if op == '=':
|
|
||||||
+ if op == c'=':
|
|
||||||
return lhs == self.p_expr(tokens)
|
|
||||||
elif op == NOT_EQ:
|
|
||||||
return lhs != self.p_expr(tokens)
|
|
||||||
- elif op == '<':
|
|
||||||
+ elif op == c'<':
|
|
||||||
return lhs < self.p_expr(tokens)
|
|
||||||
elif op == LESS_EQ:
|
|
||||||
return lhs <= self.p_expr(tokens)
|
|
||||||
- elif op == '>':
|
|
||||||
+ elif op == c'>':
|
|
||||||
return lhs > self.p_expr(tokens)
|
|
||||||
elif op == GREATER_EQ:
|
|
||||||
return lhs >= self.p_expr(tokens)
|
|
||||||
@@ -757,9 +757,9 @@ cdef class Parser:
|
|
||||||
cdef int op
|
|
||||||
operand1 = self.p_term(tokens)
|
|
||||||
op = tokens.next()
|
|
||||||
- while op == '+' or op == '-':
|
|
||||||
+ while op == c'+' or op == c'-':
|
|
||||||
operand2 = self.p_term(tokens)
|
|
||||||
- if op == '+':
|
|
||||||
+ if op == c'+':
|
|
||||||
operand1 = operand1 + operand2
|
|
||||||
else:
|
|
||||||
operand1 = operand1 - operand2
|
|
||||||
@@ -792,17 +792,17 @@ cdef class Parser:
|
|
||||||
operand1 = self.p_factor(tokens)
|
|
||||||
op = tokens.next()
|
|
||||||
if op == NAME and self.implicit_multiplication:
|
|
||||||
- op = '*'
|
|
||||||
+ op = c'*'
|
|
||||||
tokens.backtrack()
|
|
||||||
- while op == '*' or op == '/':
|
|
||||||
+ while op == c'*' or op == c'/':
|
|
||||||
operand2 = self.p_factor(tokens)
|
|
||||||
- if op == '*':
|
|
||||||
+ if op == c'*':
|
|
||||||
operand1 = operand1 * operand2
|
|
||||||
else:
|
|
||||||
operand1 = operand1 / operand2
|
|
||||||
op = tokens.next()
|
|
||||||
if op == NAME and self.implicit_multiplication:
|
|
||||||
- op = '*'
|
|
||||||
+ op = c'*'
|
|
||||||
tokens.backtrack()
|
|
||||||
tokens.backtrack()
|
|
||||||
return operand1
|
|
||||||
@@ -826,9 +826,9 @@ cdef class Parser:
|
|
||||||
t^11
|
|
||||||
"""
|
|
||||||
cdef int token = tokens.next()
|
|
||||||
- if token == '+':
|
|
||||||
+ if token == c'+':
|
|
||||||
return self.p_factor(tokens)
|
|
||||||
- elif token == '-':
|
|
||||||
+ elif token == c'-':
|
|
||||||
return -self.p_factor(tokens)
|
|
||||||
else:
|
|
||||||
tokens.backtrack()
|
|
||||||
@@ -862,13 +862,13 @@ cdef class Parser:
|
|
||||||
"""
|
|
||||||
operand1 = self.p_atom(tokens)
|
|
||||||
cdef int token = tokens.next()
|
|
||||||
- if token == '^':
|
|
||||||
+ if token == c'^':
|
|
||||||
operand2 = self.p_factor(tokens)
|
|
||||||
return operand1 ** operand2
|
|
||||||
- elif token == "!":
|
|
||||||
+ elif token == c"!":
|
|
||||||
from sage.functions.all import factorial
|
|
||||||
operand1 = factorial(operand1)
|
|
||||||
- if tokens.peek() == '^':
|
|
||||||
+ if tokens.peek() == c'^':
|
|
||||||
tokens.next()
|
|
||||||
operand2 = self.p_factor(tokens)
|
|
||||||
return operand1 ** operand2
|
|
||||||
@@ -913,20 +913,20 @@ cdef class Parser:
|
|
||||||
elif token == NAME:
|
|
||||||
name = tokens.last_token_string()
|
|
||||||
token = tokens.next()
|
|
||||||
- if token == '(':
|
|
||||||
+ if token == c'(':
|
|
||||||
func = self.callable_constructor(name)
|
|
||||||
args, kwds = self.p_args(tokens)
|
|
||||||
token = tokens.next()
|
|
||||||
- if token != ')':
|
|
||||||
+ if token != c')':
|
|
||||||
self.parse_error(tokens, "Bad function call")
|
|
||||||
return func(*args, **kwds)
|
|
||||||
else:
|
|
||||||
tokens.backtrack()
|
|
||||||
return self.variable_constructor(name)
|
|
||||||
- elif token == '(':
|
|
||||||
+ elif token == c'(':
|
|
||||||
expr = self.p_expr(tokens)
|
|
||||||
token = tokens.next()
|
|
||||||
- if token != ')':
|
|
||||||
+ if token != c')':
|
|
||||||
self.parse_error(tokens, "Mismatched parentheses")
|
|
||||||
return expr
|
|
||||||
else:
|
|
||||||
@@ -948,10 +948,10 @@ cdef class Parser:
|
|
||||||
"""
|
|
||||||
args = []
|
|
||||||
kwds = {}
|
|
||||||
- if tokens.peek() == ')':
|
|
||||||
+ if tokens.peek() == c')':
|
|
||||||
return args, kwds
|
|
||||||
- cdef int token = ','
|
|
||||||
- while token == ',':
|
|
||||||
+ cdef int token = c','
|
|
||||||
+ while token == c',':
|
|
||||||
arg = self.p_arg(tokens)
|
|
||||||
if isinstance(arg, tuple):
|
|
||||||
name, value = arg
|
|
||||||
@@ -993,11 +993,11 @@ cdef class Parser:
|
|
||||||
|
|
||||||
"""
|
|
||||||
cdef int token = tokens.next()
|
|
||||||
- if token == NAME and tokens.peek() == '=':
|
|
||||||
+ if token == NAME and tokens.peek() == c'=':
|
|
||||||
name = tokens.last_token_string()
|
|
||||||
tokens.next()
|
|
||||||
return name, self.p_expr(tokens)
|
|
||||||
- if token == "[" :
|
|
||||||
+ if token == c"[" :
|
|
||||||
tokens.backtrack()
|
|
||||||
return self.p_list(tokens)
|
|
||||||
else:
|
|
||||||
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
||||||
--- src/sage/misc/sageinspect.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/misc/sageinspect.py.orig 2020-11-01 10:38:08.203022437 -0700
|
||||||
+++ src/sage/misc/sageinspect.py 2020-07-09 16:11:23.134895309 -0600
|
+++ src/sage/misc/sageinspect.py 2020-11-01 10:43:43.355143620 -0700
|
||||||
@@ -485,35 +485,46 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
@@ -463,12 +463,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||||
return False
|
"""
|
||||||
return node.id
|
return node.id
|
||||||
|
|
||||||
- if six.PY3:
|
- def visit_NameConstant(self, node):
|
||||||
- def visit_NameConstant(self, node):
|
- """
|
||||||
- """
|
- Visit a Python AST :class:`ast.NameConstant` node.
|
||||||
- Visit a Python AST :class:`ast.NameConstant` node.
|
-
|
||||||
|
- This is an optimization added in Python 3.4 for the special cases
|
||||||
|
- of True, False, and None.
|
||||||
+ def visit_Constant(self, node):
|
+ def visit_Constant(self, node):
|
||||||
+ r"""
|
+ r"""
|
||||||
+ Visit a Python AST :class:`ast.Constant` node.
|
+ Visit a Python AST :class:`ast.Constant` node.
|
||||||
|
|
||||||
- This is an optimization added in Python 3.4 for the special cases
|
INPUT:
|
||||||
- of True, False, and None.
|
|
||||||
+ INPUT:
|
|
||||||
|
|
||||||
- INPUT:
|
@@ -476,17 +473,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||||
+ - ``node`` - the node instance to visit
|
|
||||||
|
|
||||||
- - ``node`` - the node instance to visit
|
OUTPUT:
|
||||||
+ OUTPUT:
|
|
||||||
|
|
||||||
- OUTPUT:
|
- - None, True, False.
|
||||||
+ - the boolean, number, or string the ``node`` represents
|
+ - the boolean, number, or string the ``node`` represents
|
||||||
|
|
||||||
- - None, True, False.
|
EXAMPLES::
|
||||||
+ EXAMPLES::
|
|
||||||
|
|
||||||
- EXAMPLES::
|
- sage: import ast, sage.misc.sageinspect as sms # py3
|
||||||
|
- sage: visitor = sms.SageArgSpecVisitor() # py3
|
||||||
|
- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) # py3
|
||||||
|
- sage: [vis(n) for n in ['True', 'False', 'None']] # py3
|
||||||
+ sage: import ast, sage.misc.sageinspect as sms
|
+ sage: import ast, sage.misc.sageinspect as sms
|
||||||
+ sage: visitor = sms.SageArgSpecVisitor()
|
+ sage: visitor = sms.SageArgSpecVisitor()
|
||||||
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
||||||
+ sage: [vis(n) for n in ['True', 'False', 'None']]
|
+ sage: [vis(n) for n in ['True', 'False', 'None']]
|
||||||
+ [True, False, None]
|
[True, False, None]
|
||||||
|
- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3
|
||||||
+ sage: [type(vis(n)) for n in ['True', 'False', 'None']]
|
+ sage: [type(vis(n)) for n in ['True', 'False', 'None']]
|
||||||
+ [<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
|
[<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
|
||||||
|
|
||||||
- sage: import ast, sage.misc.sageinspect as sms # py3
|
|
||||||
- sage: visitor = sms.SageArgSpecVisitor() # py3
|
|
||||||
- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) # py3
|
|
||||||
- sage: [vis(n) for n in ['True', 'False', 'None']] # py3
|
|
||||||
- [True, False, None]
|
|
||||||
- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3
|
|
||||||
- [<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
|
|
||||||
- """
|
|
||||||
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
|
||||||
+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
|
+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
|
||||||
+ ['abstract', u'syntax', 'tr\\ee']
|
+ ['abstract', u'syntax', 'tr\\ee']
|
||||||
|
+ sage: [vis(n) for n in ['123', '0.0']]
|
||||||
- return node.value
|
|
||||||
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
|
||||||
+ sage: [vis(n) for n in ['123', '0.0', str(-pi.n())]] # py2
|
|
||||||
+ [123, 0.0, -3.14159265358979]
|
|
||||||
+ sage: [vis(n) for n in ['123', '0.0']] # py3
|
|
||||||
+ [123, 0.0]
|
+ [123, 0.0]
|
||||||
+
|
"""
|
||||||
+ .. NOTE::
|
|
||||||
|
|
||||||
+ On Python 3 negative numbers are parsed first, for some reason, as
|
return node.value
|
||||||
+ a UnaryOp node.
|
@@ -520,57 +521,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||||
+ """
|
"""
|
||||||
+ return node.value
|
return node.arg
|
||||||
+
|
|
||||||
+ if six.PY3:
|
|
||||||
def visit_arg(self, node):
|
|
||||||
r"""
|
|
||||||
Visit a Python AST :class:`ast.arg` node.
|
|
||||||
@@ -543,57 +554,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
|
||||||
"""
|
|
||||||
return node.arg
|
|
||||||
|
|
||||||
- def visit_Num(self, node):
|
- def visit_Num(self, node):
|
||||||
- """
|
- """
|
||||||
|
@ -928,78 +464,22 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
||||||
"""
|
"""
|
||||||
Visit a Python AST :class:`ast.List` node.
|
Visit a Python AST :class:`ast.List` node.
|
||||||
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
||||||
--- src/sage/plot/plot3d/plot3d.py.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/plot/plot3d/plot3d.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/plot/plot3d/plot3d.py 2020-07-06 16:48:01.183121035 -0600
|
+++ src/sage/plot/plot3d/plot3d.py 2020-10-30 14:24:36.813732073 -0600
|
||||||
@@ -188,7 +188,8 @@ class _Coordinates(object):
|
@@ -186,7 +186,7 @@ class _Coordinates(object):
|
||||||
sage: arb((x+z,y*z,z), z, (x,y))
|
sage: arb((x+z,y*z,z), z, (x,y))
|
||||||
Arbitrary Coordinates coordinate transform (z in terms of x, y)
|
Arbitrary Coordinates coordinate transform (z in terms of x, y)
|
||||||
"""
|
"""
|
||||||
- all_vars = sage_getargspec(self.transform).args[1:]
|
- all_vars = sage_getargspec(self.transform).args[1:]
|
||||||
+ args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = inspect.getfullargspec(self.transform)
|
+ all_vars = inspect.getfullargspec(self.transform)[0][1:]
|
||||||
+ all_vars=args[1:]
|
|
||||||
if set(all_vars) != set(indep_vars + [dep_var]):
|
if set(all_vars) != set(indep_vars + [dep_var]):
|
||||||
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
|
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
|
||||||
self.dep_var = dep_var
|
self.dep_var = dep_var
|
||||||
diff -up src/sage/plot/point.py.orig src/sage/plot/point.py
|
|
||||||
--- src/sage/plot/point.py.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/plot/point.py 2020-07-06 16:48:01.184121035 -0600
|
|
||||||
@@ -29,7 +29,7 @@ TESTS::
|
|
||||||
from sage.misc.decorators import options, rename_keyword
|
|
||||||
from sage.plot.colors import to_mpl_color
|
|
||||||
from sage.plot.primitive import GraphicPrimitive_xydata
|
|
||||||
-import collections
|
|
||||||
+import collections.abc
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: create _allowed_options for 3D point classes to
|
|
||||||
@@ -343,7 +343,7 @@ def point(points, **kwds):
|
|
||||||
sage: point(iter([(1,2),(3,5)]))
|
|
||||||
Graphics object consisting of 1 graphics primitive
|
|
||||||
"""
|
|
||||||
- if isinstance(points, collections.Iterator):
|
|
||||||
+ if isinstance(points, collections.abc.Iterator):
|
|
||||||
points = list(points)
|
|
||||||
|
|
||||||
try:
|
|
||||||
diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_repr.py
|
|
||||||
--- src/sage/repl/display/fancy_repr.py.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/repl/display/fancy_repr.py 2020-07-06 16:48:01.184121035 -0600
|
|
||||||
@@ -15,7 +15,7 @@ Representations of objects
|
|
||||||
import types
|
|
||||||
|
|
||||||
from IPython.lib.pretty import (
|
|
||||||
- _safe_getattr, _baseclass_reprs,
|
|
||||||
+ _safe_getattr,
|
|
||||||
_type_pprinters,
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ class PlainPythonRepr(ObjectReprABC):
|
|
||||||
"""
|
|
||||||
klass = _safe_getattr(obj, '__class__', None) or type(obj)
|
|
||||||
klass_repr = _safe_getattr(klass, '__repr__', None)
|
|
||||||
- if klass_repr in _baseclass_reprs:
|
|
||||||
+ if klass_repr is object.__repr__:
|
|
||||||
p.text(klass_repr(obj))
|
|
||||||
else:
|
|
||||||
# A user-provided repr. Find newlines and replace them with p.break_()
|
|
||||||
diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_kernel/interact.py
|
|
||||||
--- src/sage/repl/ipython_kernel/interact.py.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/sage/repl/ipython_kernel/interact.py 2020-07-06 16:48:01.185121034 -0600
|
|
||||||
@@ -35,7 +35,8 @@ EXAMPLES::
|
|
||||||
|
|
||||||
from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons
|
|
||||||
from ipywidgets.widgets.interaction import interactive, signature
|
|
||||||
-from collections import Iterable, Iterator, OrderedDict
|
|
||||||
+from collections.abc import Iterable, Iterator
|
|
||||||
+from collections import OrderedDict
|
|
||||||
from .widgets import EvalText, SageColorPicker
|
|
||||||
from .widgets_sagenb import input_grid
|
|
||||||
from sage.structure.element import parent
|
|
||||||
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
||||||
--- src/sage/rings/integer.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/rings/integer.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/rings/integer.pyx 2020-07-06 16:48:01.187121034 -0600
|
+++ src/sage/rings/integer.pyx 2020-10-30 14:03:05.737896928 -0600
|
||||||
@@ -7135,7 +7135,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
@@ -7093,7 +7093,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
||||||
while x[0] == c' ': x += 1 # Strip spaces
|
x += 1 # Strip spaces
|
||||||
|
|
||||||
# Disallow a sign here
|
# Disallow a sign here
|
||||||
- if x[0] == '-' or x[0] == '+':
|
- if x[0] == '-' or x[0] == '+':
|
||||||
|
@ -1007,10 +487,10 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
||||||
x = "" # Force an error below
|
x = "" # Force an error below
|
||||||
|
|
||||||
assert base >= 2
|
assert base >= 2
|
||||||
diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx
|
diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
|
||||||
--- src/sage/rings/polynomial/pbori.pyx.orig 2020-07-06 16:13:17.464497408 -0600
|
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/rings/polynomial/pbori.pyx 2020-07-06 16:48:01.190121033 -0600
|
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2020-11-05 15:44:02.756454276 -0700
|
||||||
@@ -4764,8 +4764,7 @@ cdef class PolynomialConstruct:
|
@@ -4800,8 +4800,7 @@ cdef class PolynomialConstruct:
|
||||||
# So, it is just a conversion. [Simon King]
|
# So, it is just a conversion. [Simon King]
|
||||||
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
||||||
|
|
||||||
|
@ -1021,9 +501,9 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor
|
||||||
|
|
||||||
cdef class MonomialConstruct:
|
cdef class MonomialConstruct:
|
||||||
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||||
--- src/sage/rings/real_mpfi.pyx.orig 2020-07-06 16:19:17.719457638 -0600
|
--- src/sage/rings/real_mpfi.pyx.orig 2020-10-30 11:34:28.078977132 -0600
|
||||||
+++ src/sage/rings/real_mpfi.pyx 2020-07-06 16:48:01.192121033 -0600
|
+++ src/sage/rings/real_mpfi.pyx 2020-10-30 14:03:09.088891288 -0600
|
||||||
@@ -1941,12 +1941,12 @@ cdef class RealIntervalFieldElement(Ring
|
@@ -1955,12 +1955,12 @@ cdef class RealIntervalFieldElement(Ring
|
||||||
|
|
||||||
cdef long digits
|
cdef long digits
|
||||||
digits = strlen(lower_s)
|
digits = strlen(lower_s)
|
||||||
|
@ -1038,7 +518,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||||
digits -= 1
|
digits -= 1
|
||||||
upper_expo -= digits
|
upper_expo -= digits
|
||||||
|
|
||||||
@@ -2115,7 +2115,7 @@ cdef class RealIntervalFieldElement(Ring
|
@@ -2129,7 +2129,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||||
raise MemoryError("Unable to allocate memory for the mantissa of an interval")
|
raise MemoryError("Unable to allocate memory for the mantissa of an interval")
|
||||||
mpz_get_str(tmp_cstr, base, lower_mpz)
|
mpz_get_str(tmp_cstr, base, lower_mpz)
|
||||||
digits = strlen(tmp_cstr)
|
digits = strlen(tmp_cstr)
|
||||||
|
@ -1048,9 +528,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||||
mant_string = bytes_to_str(tmp_cstr+1)
|
mant_string = bytes_to_str(tmp_cstr+1)
|
||||||
sign_string = bytes_to_str(b'-')
|
sign_string = bytes_to_str(b'-')
|
||||||
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
||||||
--- src/sage/rings/real_mpfr.pyx.orig 2020-07-06 16:19:17.720457638 -0600
|
--- src/sage/rings/real_mpfr.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/rings/real_mpfr.pyx 2020-07-06 16:48:01.194121032 -0600
|
+++ src/sage/rings/real_mpfr.pyx 2020-11-05 15:44:02.769454276 -0700
|
||||||
@@ -2045,7 +2045,7 @@ cdef class RealNumber(sage.structure.ele
|
@@ -2091,7 +2091,7 @@ cdef class RealNumber(sage.structure.ele
|
||||||
if s is NULL:
|
if s is NULL:
|
||||||
raise RuntimeError("unable to convert an mpfr number to a string")
|
raise RuntimeError("unable to convert an mpfr number to a string")
|
||||||
# t contains just digits (no sign, decimal point or exponent)
|
# t contains just digits (no sign, decimal point or exponent)
|
||||||
|
@ -1060,9 +540,9 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
||||||
t = char_to_str(s + 1)
|
t = char_to_str(s + 1)
|
||||||
else:
|
else:
|
||||||
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
||||||
--- src/sage/structure/sage_object.pyx.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/sage/structure/sage_object.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/structure/sage_object.pyx 2020-07-06 16:48:01.194121032 -0600
|
+++ src/sage/structure/sage_object.pyx 2020-10-30 14:03:09.091891283 -0600
|
||||||
@@ -680,7 +680,7 @@ cdef class SageObject:
|
@@ -688,7 +688,7 @@ cdef class SageObject:
|
||||||
try:
|
try:
|
||||||
s = self._interface_init_(I)
|
s = self._interface_init_(I)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -1072,9 +552,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.
|
||||||
if c:
|
if c:
|
||||||
try:
|
try:
|
||||||
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||||
--- src/sage/symbolic/expression.pyx.orig 2020-07-06 16:22:36.515435688 -0600
|
--- src/sage/symbolic/expression.pyx.orig 2020-10-30 12:10:19.747169301 -0600
|
||||||
+++ src/sage/symbolic/expression.pyx 2020-07-06 16:48:01.198121032 -0600
|
+++ src/sage/symbolic/expression.pyx 2020-10-30 14:03:09.095891276 -0600
|
||||||
@@ -12990,7 +12990,7 @@ cdef class hold_class:
|
@@ -13071,7 +13071,7 @@ cdef class hold_class:
|
||||||
sage: SR(2)^5
|
sage: SR(2)^5
|
||||||
32
|
32
|
||||||
"""
|
"""
|
||||||
|
@ -1083,7 +563,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||||
|
|
||||||
def __exit__(self, *args):
|
def __exit__(self, *args):
|
||||||
"""
|
"""
|
||||||
@@ -13003,7 +13003,7 @@ cdef class hold_class:
|
@@ -13084,7 +13084,7 @@ cdef class hold_class:
|
||||||
sage: SR(2)^5
|
sage: SR(2)^5
|
||||||
32
|
32
|
||||||
"""
|
"""
|
||||||
|
@ -1092,25 +572,3 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""
|
"""
|
||||||
diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx
|
|
||||||
--- src/sage/symbolic/ring.pyx.orig 2020-07-06 16:20:02.592452688 -0600
|
|
||||||
+++ src/sage/symbolic/ring.pyx 2020-07-10 09:09:09.512400345 -0600
|
|
||||||
@@ -32,7 +32,6 @@ from sage.rings.all import RR, CC, ZZ
|
|
||||||
|
|
||||||
import keyword
|
|
||||||
import operator
|
|
||||||
-import parser
|
|
||||||
|
|
||||||
# Do not allow any of these keywords as identifiers for symbolic variables
|
|
||||||
KEYWORDS = set(keyword.kwlist).union(['exec', 'print', 'None', 'True',
|
|
||||||
@@ -1405,8 +1404,8 @@ def isidentifier(x):
|
|
||||||
pass # py2
|
|
||||||
|
|
||||||
try:
|
|
||||||
- code = parser.expr(x).compile()
|
|
||||||
+ code = compile(x, '<string>', 'eval')
|
|
||||||
except (MemoryError, OverflowError, SyntaxError,
|
|
||||||
- SystemError, parser.ParserError):
|
|
||||||
+ SystemError, ValueError):
|
|
||||||
return False
|
|
||||||
return len(code.co_names) == 1 and code.co_names[0] == x
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
|
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
|
||||||
--- src/sage/interfaces/qepcad.py.orig 2019-03-23 16:20:41.000000000 -0600
|
--- src/sage/interfaces/qepcad.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/qepcad.py 2019-04-08 13:32:00.509789984 -0600
|
+++ src/sage/interfaces/qepcad.py 2020-10-30 14:49:41.431265953 -0600
|
||||||
@@ -530,7 +530,7 @@ TESTS:
|
@@ -530,7 +530,7 @@ TESTS:
|
||||||
|
|
||||||
Check the qepcad configuration file::
|
Check the qepcad configuration file::
|
||||||
|
@ -10,9 +10,9 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
|
||||||
....: f.readlines()[-1]
|
....: f.readlines()[-1]
|
||||||
'SINGULAR .../bin\n'
|
'SINGULAR .../bin\n'
|
||||||
|
|
||||||
@@ -607,7 +607,6 @@ AUTHORS:
|
@@ -606,7 +606,6 @@ AUTHORS:
|
||||||
|
#*****************************************************************************
|
||||||
from __future__ import print_function, absolute_import
|
from __future__ import print_function, absolute_import
|
||||||
from six import string_types
|
|
||||||
|
|
||||||
-from sage.env import SAGE_LOCAL
|
-from sage.env import SAGE_LOCAL
|
||||||
import pexpect
|
import pexpect
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
|
diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
|
||||||
--- src/sage/misc/binary_tree.pyx.orig 2019-03-23 16:20:41.000000000 -0600
|
--- src/sage/misc/binary_tree.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/misc/binary_tree.pyx 2019-04-09 13:55:17.152716497 -0600
|
+++ src/sage/misc/binary_tree.pyx 2020-10-30 13:27:44.173427025 -0600
|
||||||
@@ -13,6 +13,8 @@ from cysignals.memory cimport sig_malloc
|
@@ -12,6 +12,8 @@ from cysignals.memory cimport sig_malloc
|
||||||
|
|
||||||
from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF
|
from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
|
||||||
cdef binary_tree_node *BinaryTreeNode(int key, object value):
|
cdef binary_tree_node *BinaryTreeNode(int key, object value):
|
||||||
cdef binary_tree_node *t
|
cdef binary_tree_node *t
|
||||||
t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node))
|
t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node))
|
||||||
@@ -122,10 +124,7 @@ cdef binary_tree_node *binary_tree_right
|
@@ -121,10 +123,7 @@ cdef binary_tree_node *binary_tree_right
|
||||||
cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self):
|
cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self):
|
||||||
cdef binary_tree_node *cur
|
cdef binary_tree_node *cur
|
||||||
cdef int right
|
cdef int right
|
||||||
|
@ -22,7 +22,7 @@ diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
|
||||||
if self.right == NULL:
|
if self.right == NULL:
|
||||||
return self.left
|
return self.left
|
||||||
if self.left == NULL:
|
if self.left == NULL:
|
||||||
@@ -502,7 +501,6 @@ class Test:
|
@@ -501,7 +500,6 @@ class Test:
|
||||||
|
|
||||||
sage: sage.misc.binary_tree.Test().random()
|
sage: sage.misc.binary_tree.Test().random()
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/all.py.orig src/sage/all.py
|
diff -up src/sage/all.py.orig src/sage/all.py
|
||||||
--- src/sage/all.py.orig 2019-06-27 11:31:07.149494781 -0600
|
--- src/sage/all.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/all.py 2019-06-27 11:32:11.332515672 -0600
|
+++ src/sage/all.py 2020-10-30 13:56:32.674557350 -0600
|
||||||
@@ -286,11 +286,11 @@ def _write_started_file():
|
@@ -324,11 +324,11 @@ def _write_started_file():
|
||||||
Check that the file exists when Sage is running (note, this file is not
|
Check that the file exists when Sage is running (note, this file is not
|
||||||
necessarily installed or used by downstream packages of Sage)::
|
necessarily installed or used by downstream packages of Sage)::
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,6 @@
|
||||||
diff -up src/module_list.py.orig src/module_list.py
|
|
||||||
--- src/module_list.py.orig 2019-10-03 14:49:57.072685858 -0300
|
|
||||||
+++ src/module_list.py 2019-10-03 14:50:05.889737429 -0300
|
|
||||||
@@ -2,7 +2,7 @@ import os
|
|
||||||
from distutils.extension import Extension
|
|
||||||
from sage.env import SAGE_LOCAL
|
|
||||||
|
|
||||||
-SAGE_INC = os.path.join(SAGE_LOCAL, 'include')
|
|
||||||
+SAGE_INC = '/usr/include'
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
### pkg-config setup
|
|
||||||
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
||||||
--- src/sage/misc/cython.py.orig 2019-10-03 14:49:48.553636029 -0300
|
--- src/sage/misc/cython.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/misc/cython.py 2019-10-03 14:50:05.890737435 -0300
|
+++ src/sage/misc/cython.py 2020-10-30 16:08:06.039158996 -0600
|
||||||
@@ -46,7 +46,7 @@ standard_libs = [
|
@@ -46,7 +46,7 @@ standard_libs = [
|
||||||
] + cblas_libs + [
|
] + cblas_libs + [
|
||||||
'ntl']
|
'ntl']
|
||||||
|
|
|
@ -1,306 +1,87 @@
|
||||||
diff -up build/pkgs/rubiks/src/dik/cube.c.orig build/pkgs/rubiks/src/dik/cube.c
|
diff -up src/sage/features/rubiks.py.orig src/sage/features/rubiks.py
|
||||||
--- build/pkgs/rubiks/src/dik/cube.c.orig 2008-01-04 01:26:59.000000000 -0700
|
--- src/sage/features/rubiks.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ build/pkgs/rubiks/src/dik/cube.c 2019-04-09 13:25:49.060985774 -0600
|
+++ src/sage/features/rubiks.py 2020-10-30 16:35:54.828279888 -0600
|
||||||
@@ -6,6 +6,7 @@ static void read_position();
|
@@ -30,7 +30,7 @@ class cu2(Executable):
|
||||||
|
sage: isinstance(cu2(), cu2)
|
||||||
|
True
|
||||||
|
"""
|
||||||
|
- Executable.__init__(self, "cu2", executable="cu2",
|
||||||
|
+ Executable.__init__(self, "cu2", executable="rubiks_cu2",
|
||||||
|
spkg="rubiks")
|
||||||
|
|
||||||
static int do_repeat = 0;
|
|
||||||
|
|
||||||
+int
|
@@ -53,7 +53,7 @@ class size222(Executable):
|
||||||
main(argc, argv)
|
sage: isinstance(size222(), size222)
|
||||||
int argc;
|
True
|
||||||
char *argv[];
|
"""
|
||||||
diff -up build/pkgs/rubiks/src/dik/globals.h.orig build/pkgs/rubiks/src/dik/globals.h
|
- Executable.__init__(self, "size222", executable="size222",
|
||||||
--- build/pkgs/rubiks/src/dik/globals.h.orig 2008-01-04 01:26:59.000000000 -0700
|
+ Executable.__init__(self, "size222", executable="rubiks_size222",
|
||||||
+++ build/pkgs/rubiks/src/dik/globals.h 2019-04-09 15:47:20.736919992 -0600
|
spkg="rubiks")
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define MAX_MOVES 30
|
|
||||||
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/permcube.c.orig build/pkgs/rubiks/src/dik/permcube.c
|
@@ -76,7 +76,7 @@ class optimal(Executable):
|
||||||
--- build/pkgs/rubiks/src/dik/permcube.c.orig 2008-01-04 01:26:59.000000000 -0700
|
sage: isinstance(optimal(), optimal)
|
||||||
+++ build/pkgs/rubiks/src/dik/permcube.c 2019-04-09 13:24:49.733911356 -0600
|
True
|
||||||
@@ -1,5 +1,6 @@
|
"""
|
||||||
#include "globals.h"
|
- Executable.__init__(self, "optimal", executable="optimal",
|
||||||
|
+ Executable.__init__(self, "optimal", executable="rubiks_optimal",
|
||||||
|
spkg="rubiks")
|
||||||
|
|
||||||
+int
|
|
||||||
perm_cube()
|
|
||||||
{
|
|
||||||
int i, j, k, tmp;
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/prntsol.c.orig build/pkgs/rubiks/src/dik/prntsol.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/prntsol.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/prntsol.c 2019-04-09 13:25:14.869519211 -0600
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
|
|
||||||
static char m[] = "FRUBLD";
|
@@ -99,7 +99,7 @@ class mcube(Executable):
|
||||||
|
sage: isinstance(mcube(), mcube)
|
||||||
|
True
|
||||||
|
"""
|
||||||
|
- Executable.__init__(self, "mcube", executable="mcube",
|
||||||
|
+ Executable.__init__(self, "mcube", executable="rubiks_mcube",
|
||||||
|
spkg="rubiks")
|
||||||
|
|
||||||
+void
|
|
||||||
prnt_sol()
|
|
||||||
{
|
|
||||||
int i, j, k;
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/setcube.c.orig build/pkgs/rubiks/src/dik/setcube.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/setcube.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/setcube.c 2019-04-09 13:26:52.427996988 -0600
|
|
||||||
@@ -24,7 +24,7 @@ static char edges[12][2][2] = {
|
|
||||||
{"FR", "RF"},
|
|
||||||
{"FL", "LF"}};
|
|
||||||
|
|
||||||
-static cube_found, orient_found;
|
@@ -122,7 +122,7 @@ class dikcube(Executable):
|
||||||
+static int cube_found, orient_found;
|
sage: isinstance(dikcube(), dikcube)
|
||||||
|
True
|
||||||
|
"""
|
||||||
|
- Executable.__init__(self, "dikcube", executable="dikcube",
|
||||||
|
+ Executable.__init__(self, "dikcube", executable="rubiks_dikcube",
|
||||||
|
spkg="rubiks")
|
||||||
|
|
||||||
static void find_corner(c)
|
|
||||||
char *c;
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/size222.c.orig build/pkgs/rubiks/src/dik/size222.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/size222.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/size222.c 2019-04-09 13:29:43.371327964 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define NOMAX
|
@@ -145,7 +145,7 @@ class cubex(Executable):
|
||||||
#include "trans/perm7.a"
|
sage: isinstance(cubex(), cubex)
|
||||||
@@ -17,6 +19,7 @@ int maximal;
|
True
|
||||||
int gcount;
|
"""
|
||||||
int givemax;
|
- Executable.__init__(self, "cubex", executable="cubex",
|
||||||
|
+ Executable.__init__(self, "cubex", executable="rubiks_cubex",
|
||||||
|
spkg="rubiks")
|
||||||
|
|
||||||
+void
|
|
||||||
do_pr(turns, count)
|
|
||||||
int turns, count;
|
|
||||||
{
|
|
||||||
@@ -29,6 +32,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
diff -up src/sage/interfaces/rubik.py.orig src/sage/interfaces/rubik.py
|
||||||
try_one(num, count)
|
--- src/sage/interfaces/rubik.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
int num, count;
|
+++ src/sage/interfaces/rubik.py 2020-10-30 16:37:38.173193027 -0600
|
||||||
{
|
@@ -96,7 +96,7 @@ class OptimalSolver:
|
||||||
@@ -64,6 +68,7 @@ int i, j, nnum, counted = 0, k, l, max =
|
"""
|
||||||
return counted;
|
Interface to Michael Reid's optimal Rubik's Cube solver.
|
||||||
}
|
"""
|
||||||
|
- __cmd = "optimal"
|
||||||
|
+ __cmd = "rubiks_optimal"
|
||||||
|
|
||||||
+void
|
def __init__(self, verbose=False, wait=True):
|
||||||
try(count)
|
self.verbose = verbose
|
||||||
int count;
|
@@ -185,7 +185,7 @@ move_map = {
|
||||||
{
|
|
||||||
@@ -93,6 +98,7 @@ TYPE j;
|
|
||||||
do_pr(count + 1, counted);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
class CubexSolver:
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/size333c.c.orig build/pkgs/rubiks/src/dik/size333c.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/size333c.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/size333c.c 2019-04-09 13:30:16.257814499 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define EQUIV
|
- __cmd = "cubex"
|
||||||
#define NOMAX
|
+ __cmd = "rubiks_cubex"
|
||||||
@@ -38,6 +40,7 @@ int maximal;
|
|
||||||
int gcount;
|
|
||||||
int givemax;
|
|
||||||
|
|
||||||
+void
|
def __call__(self, facets):
|
||||||
do_pr(turns, count)
|
return self.solve(facets)
|
||||||
int turns, count;
|
@@ -238,7 +238,7 @@ class CubexSolver:
|
||||||
{
|
|
||||||
@@ -50,6 +53,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
class DikSolver:
|
||||||
try_one(num, count)
|
|
||||||
int num, count;
|
|
||||||
{
|
|
||||||
@@ -122,6 +126,7 @@ int i, j, nnum, counted = 0, k, l, max,
|
|
||||||
return wcounted;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
- __cmd = "dikcube"
|
||||||
try(count)
|
+ __cmd = "rubiks_dikcube"
|
||||||
int count;
|
|
||||||
{
|
|
||||||
@@ -151,6 +156,7 @@ TYPE j;
|
|
||||||
do_pr(count + 1, counted);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
def __call__(self, facets):
|
||||||
main(argc, argv)
|
return self.solve(facets)
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/sizedom.c.orig build/pkgs/rubiks/src/dik/sizedom.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/sizedom.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/sizedom.c 2019-04-09 13:33:16.473000709 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define SUBGROUP
|
|
||||||
#define EQUIV
|
|
||||||
@@ -39,6 +41,7 @@ int maximal;
|
|
||||||
int gcount;
|
|
||||||
int givemax;
|
|
||||||
|
|
||||||
+void
|
|
||||||
do_pr(turns, count)
|
|
||||||
int turns, count;
|
|
||||||
{
|
|
||||||
@@ -51,6 +54,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
try_one(num, count)
|
|
||||||
int num, count;
|
|
||||||
{
|
|
||||||
@@ -175,6 +179,7 @@ int i, j, nnum, counted = 0, k, l, max,
|
|
||||||
return wcounted;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
try(count)
|
|
||||||
int count;
|
|
||||||
{
|
|
||||||
@@ -273,6 +278,7 @@ int cperm, eperm;
|
|
||||||
init_turn(cperm, eperm);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/sizekoc1.c.orig build/pkgs/rubiks/src/dik/sizekoc1.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/sizekoc1.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/sizekoc1.c 2019-04-09 13:34:37.327738285 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define EQUIV
|
|
||||||
#define NOMAX
|
|
||||||
@@ -28,6 +30,7 @@ int maximal;
|
|
||||||
int gcount;
|
|
||||||
int givemax;
|
|
||||||
|
|
||||||
+void
|
|
||||||
do_pr(turns, count)
|
|
||||||
int turns, count;
|
|
||||||
{
|
|
||||||
@@ -40,6 +43,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
try_one(num, count)
|
|
||||||
int num, count;
|
|
||||||
{
|
|
||||||
@@ -91,6 +95,7 @@ int i, j, nnum, counted = 0, k, l, max,
|
|
||||||
return wcounted;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
try(count)
|
|
||||||
int count;
|
|
||||||
{
|
|
||||||
@@ -120,6 +125,7 @@ TYPE j;
|
|
||||||
do_pr(count + 1, counted);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/sizekoc2.c.orig build/pkgs/rubiks/src/dik/sizekoc2.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/sizekoc2.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/sizekoc2.c 2019-04-09 13:35:21.151052650 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define EQUIV
|
|
||||||
#define NOMAX
|
|
||||||
@@ -28,6 +30,7 @@ int maximal;
|
|
||||||
int gcount;
|
|
||||||
int givemax;
|
|
||||||
|
|
||||||
+void
|
|
||||||
do_pr(turns, count)
|
|
||||||
int turns, count;
|
|
||||||
{
|
|
||||||
@@ -40,6 +43,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
try_one(num, count)
|
|
||||||
int num, count;
|
|
||||||
{
|
|
||||||
@@ -128,6 +132,7 @@ int i, j, nnum, counted = 0, k, l, max,
|
|
||||||
return wcounted;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
try(count)
|
|
||||||
int count;
|
|
||||||
{
|
|
||||||
@@ -157,6 +162,7 @@ TYPE j;
|
|
||||||
do_pr(count + 1, counted);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
diff -up build/pkgs/rubiks/src/dik/sizesquare.c.orig build/pkgs/rubiks/src/dik/sizesquare.c
|
|
||||||
--- build/pkgs/rubiks/src/dik/sizesquare.c.orig 2008-01-04 01:26:59.000000000 -0700
|
|
||||||
+++ build/pkgs/rubiks/src/dik/sizesquare.c 2019-04-09 13:31:57.537233176 -0600
|
|
||||||
@@ -1,4 +1,6 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#define NOMAX
|
|
||||||
#include "trans/perm4.a"
|
|
||||||
@@ -16,6 +18,7 @@ int maximal;
|
|
||||||
int gcount;
|
|
||||||
int givemax;
|
|
||||||
|
|
||||||
+void
|
|
||||||
do_pr(turns, count)
|
|
||||||
int turns, count;
|
|
||||||
{
|
|
||||||
@@ -28,6 +31,7 @@ int turns, count;
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
try_one(num, count)
|
|
||||||
int num, count;
|
|
||||||
{
|
|
||||||
@@ -56,6 +60,7 @@ int i, j, nnum, counted = 0, k, l, max =
|
|
||||||
return counted;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
try(count)
|
|
||||||
int count;
|
|
||||||
{
|
|
||||||
@@ -85,6 +90,7 @@ TYPE j;
|
|
||||||
do_pr(count + 1, counted);
|
|
||||||
}
|
|
||||||
|
|
||||||
+int
|
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
||||||
--- src/sage/doctest/control.py.orig 2019-10-03 14:51:45.323319025 -0300
|
--- src/sage/doctest/control.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/doctest/control.py 2019-10-03 14:52:24.063545626 -0300
|
+++ src/sage/doctest/control.py 2020-10-30 13:55:37.330649309 -0600
|
||||||
@@ -106,7 +106,6 @@ class DocTestDefaults(SageObject):
|
@@ -115,7 +115,6 @@ class DocTestDefaults(SageObject):
|
||||||
self.valgrind = False
|
self.valgrind = False
|
||||||
self.massif = False
|
self.massif = False
|
||||||
self.cachegrind = False
|
self.cachegrind = False
|
||||||
|
@ -9,7 +9,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
||||||
self.failed = False
|
self.failed = False
|
||||||
self.new = False
|
self.new = False
|
||||||
self.show_skipped = False
|
self.show_skipped = False
|
||||||
@@ -309,7 +308,7 @@ class DocTestController(SageObject):
|
@@ -318,7 +317,7 @@ class DocTestController(SageObject):
|
||||||
if options.gdb or options.debug:
|
if options.gdb or options.debug:
|
||||||
# Interactive debuggers: "infinite" timeout
|
# Interactive debuggers: "infinite" timeout
|
||||||
options.timeout = 0
|
options.timeout = 0
|
||||||
|
@ -18,7 +18,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
||||||
# Non-interactive debuggers: 48 hours
|
# Non-interactive debuggers: 48 hours
|
||||||
options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60))
|
options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60))
|
||||||
elif options.long:
|
elif options.long:
|
||||||
@@ -1105,13 +1104,8 @@ class DocTestController(SageObject):
|
@@ -1109,13 +1108,8 @@ class DocTestController(SageObject):
|
||||||
elif opt.cachegrind:
|
elif opt.cachegrind:
|
||||||
toolname = "cachegrind"
|
toolname = "cachegrind"
|
||||||
flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "")
|
flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "")
|
||||||
|
@ -32,7 +32,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
||||||
if "%s" in flags:
|
if "%s" in flags:
|
||||||
flags %= toolname + ".%p" # replace %s with toolname
|
flags %= toolname + ".%p" # replace %s with toolname
|
||||||
cmd += flags + sage_cmd
|
cmd += flags + sage_cmd
|
||||||
@@ -1196,10 +1190,10 @@ class DocTestController(SageObject):
|
@@ -1201,10 +1195,10 @@ class DocTestController(SageObject):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
opt = self.options
|
opt = self.options
|
||||||
|
@ -46,9 +46,9 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
|
||||||
return self.run_val_gdb()
|
return self.run_val_gdb()
|
||||||
else:
|
else:
|
||||||
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
|
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
|
||||||
--- src/sage/interfaces/singular.py.orig 2019-10-03 14:52:35.554612838 -0300
|
--- src/sage/interfaces/singular.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/interfaces/singular.py 2019-10-03 14:53:22.502887441 -0300
|
+++ src/sage/interfaces/singular.py 2020-10-30 13:55:37.332649306 -0600
|
||||||
@@ -2262,7 +2262,7 @@ def generate_docstring_dictionary():
|
@@ -2349,7 +2349,7 @@ def generate_docstring_dictionary():
|
||||||
nodes.clear()
|
nodes.clear()
|
||||||
node_names.clear()
|
node_names.clear()
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
|
||||||
|
|
||||||
new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*")
|
new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*")
|
||||||
new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*")
|
new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*")
|
||||||
@@ -2270,8 +2270,9 @@ def generate_docstring_dictionary():
|
@@ -2357,8 +2357,9 @@ def generate_docstring_dictionary():
|
||||||
L, in_node, curr_node = [], False, None
|
L, in_node, curr_node = [], False, None
|
||||||
|
|
||||||
# singular.hlp contains a few iso-5559-1 encoded special characters
|
# singular.hlp contains a few iso-5559-1 encoded special characters
|
||||||
|
@ -70,9 +70,9 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
|
||||||
m = re.match(new_node,line)
|
m = re.match(new_node,line)
|
||||||
if m:
|
if m:
|
||||||
diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py
|
diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py
|
||||||
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2019-10-03 14:53:32.585946418 -0300
|
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage_setup/docbuild/ext/multidocs.py 2019-10-03 14:54:02.207119676 -0300
|
+++ src/sage_setup/docbuild/ext/multidocs.py 2020-10-30 13:55:37.332649306 -0600
|
||||||
@@ -85,8 +85,11 @@ def merge_environment(app, env):
|
@@ -82,8 +82,11 @@ def merge_environment(app, env):
|
||||||
for ind in newalldoc:
|
for ind in newalldoc:
|
||||||
# treat subdocument source as orphaned file and don't complain
|
# treat subdocument source as orphaned file and don't complain
|
||||||
md = env.metadata.get(ind, dict())
|
md = env.metadata.get(ind, dict())
|
||||||
|
@ -85,4 +85,4 @@ diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/e
|
||||||
+ env.metadata[ind] = {'orphan'}
|
+ env.metadata[ind] = {'orphan'}
|
||||||
# merge the citations
|
# merge the citations
|
||||||
newcite = {}
|
newcite = {}
|
||||||
citations = docenv.domaindata["std"]["citations"]
|
for ind, (path, tag, lineno) in citations.items():
|
||||||
|
|
|
@ -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:
|
|
|
@ -1,171 +1,16 @@
|
||||||
diff -up src/bin/sage.orig src/bin/sage
|
diff -up src/bin/sage.orig src/bin/sage
|
||||||
--- src/bin/sage.orig 2020-05-20 16:33:41.000000000 -0600
|
--- src/bin/sage.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/bin/sage 2020-07-06 16:33:49.015329159 -0600
|
+++ src/bin/sage 2020-10-30 13:43:06.816896461 -0600
|
||||||
@@ -26,13 +26,10 @@ usage() {
|
@@ -29,7 +29,6 @@ usage() {
|
||||||
echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file"
|
echo " --gap [...] -- run Sage's Gap with given arguments"
|
||||||
echo " -advanced -- list all command line options"
|
echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments"
|
||||||
echo " -c <cmd> -- Evaluates cmd as sage code"
|
echo " -h -- print this help message"
|
||||||
- echo " -experimental -- list all experimental packages that can be installed"
|
- echo " --pip [...] -- invoke pip, the Python package manager"
|
||||||
echo " -gap [...] -- run Sage's Gap with given arguments"
|
echo " --maxima [...] -- run Sage's Maxima with given arguments"
|
||||||
echo " -gap3 [...] -- run Sage's Gap3 with given arguments"
|
echo " --mwrank [...] -- run Sage's mwrank with given arguments"
|
||||||
echo " -gp [...] -- run Sage's PARI/GP calculator with given arguments"
|
echo " --notebook=[...] -- start the Sage notebook (valid options are"
|
||||||
echo " -h, -? -- print this help message"
|
@@ -59,119 +58,6 @@ usage() {
|
||||||
- echo " -i [packages] -- install the given Sage packages"
|
# below, after sourcing sage-env.
|
||||||
- echo " -pip [...] -- invoke pip, the Python package manager"
|
|
||||||
echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)"
|
|
||||||
echo " -maxima [...] -- run Sage's Maxima with given arguments"
|
|
||||||
echo " -mwrank [...] -- run Sage's mwrank with given arguments"
|
|
||||||
@@ -40,7 +37,6 @@ usage() {
|
|
||||||
echo " 'default', 'sagenb', 'jupyter', and 'export')"
|
|
||||||
echo " Current default is 'export' from sagenb to jupyter"
|
|
||||||
echo " -n, --notebook -- shortcut for --notebook=default"
|
|
||||||
- echo " -optional -- list all optional packages that can be installed"
|
|
||||||
echo " -python [...] -- run the Python interpreter"
|
|
||||||
echo " -python2 [...] -- run the Python 2 interpreter"
|
|
||||||
echo " -python3 [...] -- run the Python 3 interpreter"
|
|
||||||
@@ -58,10 +54,6 @@ usage() {
|
|
||||||
echo " --optional - controls which optional tests are run"
|
|
||||||
echo " --sagenb - test all sagenb files"
|
|
||||||
echo " --help - show all testing options"
|
|
||||||
- echo " -upgrade [version] -- download, build and install the given version. Here,"
|
|
||||||
- echo " 'version' is a git branch or tag name. Useful values"
|
|
||||||
- echo " are 'master' (the current development version, this"
|
|
||||||
- echo " is the default) or a version number like '5.13'."
|
|
||||||
echo " -v, -version -- display Sage version information"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
@@ -81,11 +73,8 @@ usage_advanced() {
|
|
||||||
echo " -preparse <file.sage> -- preparse file.sage and produce corresponding file.sage.py"
|
|
||||||
echo " -q -- quiet; start with no banner"
|
|
||||||
echo " -root -- print the Sage root directory"
|
|
||||||
- echo " -gthread, -qthread, -q4thread, -wthread, -pylab"
|
|
||||||
- echo " -- pass the option through to ipython"
|
|
||||||
echo " -v, -version -- display Sage version information"
|
|
||||||
echo " -dumpversion -- print Sage version"
|
|
||||||
- echo " -git-branch -- print the current git branch"
|
|
||||||
|
|
||||||
echo
|
|
||||||
#### 1.......................26..................................................78
|
|
||||||
@@ -97,8 +86,6 @@ usage_advanced() {
|
|
||||||
echo " See the output of sage --notebook --help"
|
|
||||||
echo " for more details and examples of how to pass"
|
|
||||||
echo " optional arguments"
|
|
||||||
- echo " -bn, -build-and-notebook [...] -- build the Sage library then start"
|
|
||||||
- echo " the Sage notebook"
|
|
||||||
echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)"
|
|
||||||
echo " -n, -notebook [...] -- start the default Sage notebook (options are the"
|
|
||||||
echo " same as for the notebook command in Sage). See the"
|
|
||||||
@@ -119,18 +106,12 @@ usage_advanced() {
|
|
||||||
echo " Sage), passing additional options to IPython"
|
|
||||||
echo " -ipython3 [...] -- same as above, but using Python 3"
|
|
||||||
echo " -jupyter [...] -- run Sage's Jupyter with given arguments"
|
|
||||||
- echo " -kash [...] -- run Sage's Kash with given arguments"
|
|
||||||
- command -v kash &>/dev/null || \
|
|
||||||
echo " (not installed currently, run sage -i kash)"
|
|
||||||
echo " -lisp [...] -- run Lisp interpreter included with Sage"
|
|
||||||
echo " -M2 [...] -- run Sage's Macaulay2 with given arguments"
|
|
||||||
- command -v M2 &>/dev/null || \
|
|
||||||
- echo " (not installed currently, run sage -i macaulay2)"
|
|
||||||
echo " -maxima [...] -- run Sage's Maxima with given arguments"
|
|
||||||
echo " -mwrank [...] -- run Sage's mwrank with given arguments"
|
|
||||||
echo " -polymake [...] -- run Sage's Polymake with given arguments"
|
|
||||||
- command -v polymake &>/dev/null || \
|
|
||||||
- echo " (not installed currently, run sage -i polymake)"
|
|
||||||
echo " -python [...] -- run the Python interpreter"
|
|
||||||
echo " -python2 [...] -- run the Python 2 interpreter"
|
|
||||||
echo " -python3 [...] -- run the Python 3 interpreter"
|
|
||||||
@@ -147,55 +128,7 @@ usage_advanced() {
|
|
||||||
echo
|
|
||||||
#### 1.......................26..................................................78
|
|
||||||
#### |.....................--.|...................................................|
|
|
||||||
- echo "Installing packages and upgrading:"
|
|
||||||
- echo " -package [args] -- call the new package manager with given arguments."
|
|
||||||
- echo " Run without arguments for package-specific help."
|
|
||||||
- echo " -experimental -- list all experimental packages that can be installed"
|
|
||||||
- echo " -f [opts] [packages]-- shortcut for -i -f: force build of the given Sage"
|
|
||||||
- echo " packages"
|
|
||||||
- echo " -i [opts] [packages]-- install the given Sage packages. Options:"
|
|
||||||
- echo " -c -- run the packages' test suites"
|
|
||||||
- echo " -d -- only download, do not install packages"
|
|
||||||
- echo " -f -- force build: install the packages even"
|
|
||||||
- echo " if they are already installed"
|
|
||||||
- echo " -s -- do not delete the temporary build directories"
|
|
||||||
- echo " after a successful build"
|
|
||||||
- echo " -y -- reply yes to prompts about experimental"
|
|
||||||
- echo " and old-style packages; warning: there"
|
|
||||||
- echo " is no guarantee that these packages will"
|
|
||||||
- echo " build correctly; use at your own risk"
|
|
||||||
- echo " -n -- reply no to prompts about experimental"
|
|
||||||
- echo " and old-style packages"
|
|
||||||
- echo " -p [opts] [packages]-- install the given Sage packages, without dependency"
|
|
||||||
- echo " checking and with support for old-style spkgs."
|
|
||||||
- echo " Options are -c, -d and -s with the same meaning as"
|
|
||||||
- echo " for the -i command"
|
|
||||||
- echo " -info [packages] -- print the SPKG.txt of the given packages"
|
|
||||||
- echo " --location -- if needed, fix paths to make Sage relocatable"
|
|
||||||
- echo " -optional -- list all optional packages that can be installed"
|
|
||||||
- echo " -standard -- list all standard packages that can be installed"
|
|
||||||
- echo " -installed -- list all installed packages"
|
|
||||||
- echo " -upgrade [version] -- download, build and install the given version. Here,"
|
|
||||||
- echo " 'version' is a git branch or tag name. Useful values"
|
|
||||||
- echo " are 'master' (the current development version, this"
|
|
||||||
- echo " is the default) or a version number like '5.13'."
|
|
||||||
- echo " -pip [...] -- invoke pip, the Python package manager"
|
|
||||||
-
|
|
||||||
- echo
|
|
||||||
- #### 1.......................26..................................................78
|
|
||||||
- #### |.....................--.|...................................................|
|
|
||||||
- echo "Building and testing the Sage library:"
|
|
||||||
- echo " -b -- build Sage library."
|
|
||||||
- echo " -ba -- same as -b and rebuild all Cython code"
|
|
||||||
- echo " -ba-force -- same as -ba, but don't query before rebuilding"
|
|
||||||
- echo " -br -- build and run Sage"
|
|
||||||
- echo " -bt [...] -- build and test, options like -t below"
|
|
||||||
- echo " -btp <N> [...] -- build and test parallel, options like -tp below"
|
|
||||||
- echo " -btnew [...] -- build and test modified files, options like -tnew"
|
|
||||||
- echo " -fixdoctests <file.py> [output_file] [--long]"
|
|
||||||
- echo " -- replace failing doctests with the actual output. With"
|
|
||||||
- echo " optional output_file: redirect there. With the --long"
|
|
||||||
- echo " option: include #long time tests."
|
|
||||||
+ echo "Testing the Sage library:"
|
|
||||||
echo " -startuptime [module] -- display how long each component of Sage takes to"
|
|
||||||
echo " start up; optionally specify a module to get more"
|
|
||||||
echo " details about that particular module"
|
|
||||||
@@ -229,7 +162,6 @@ usage_advanced() {
|
|
||||||
echo " -coverage <files> -- give info about doctest coverage of files"
|
|
||||||
echo " -coverageall -- give summary info about doctest coverage of all"
|
|
||||||
echo " files in the Sage library"
|
|
||||||
- echo " -docbuild [lang/]<document> <html|pdf|...> -- Build the Sage documentation"
|
|
||||||
echo " -search_src <string> -- search through all the Sage library code for string"
|
|
||||||
echo " -search_doc <string> -- search through the Sage documentation for string"
|
|
||||||
echo " -grep <string> -- same as -search_src"
|
|
||||||
@@ -255,14 +187,6 @@ usage_advanced() {
|
|
||||||
echo
|
|
||||||
#### 1.......................26..................................................78
|
|
||||||
#### |.....................--.|...................................................|
|
|
||||||
- echo "Making Sage packages or distributions:"
|
|
||||||
- echo " -sdist -- build a source distribution of Sage"
|
|
||||||
- echo " -fix-pkg-checksums -- fix the checksums from build/pkgs directories from "
|
|
||||||
- echo " the packages located in upstream/"
|
|
||||||
-
|
|
||||||
- echo
|
|
||||||
- #### 1.......................26..................................................78
|
|
||||||
- #### |.....................--.|...................................................|
|
|
||||||
echo "Valgrind memory debugging:"
|
|
||||||
echo " -cachegrind -- run Sage using Valgrind's cachegrind tool. The log"
|
|
||||||
echo " files are named sage-cachegrind.PID can be found in"
|
|
||||||
@@ -276,9 +200,6 @@ usage_advanced() {
|
|
||||||
echo " -memcheck -- run Sage using Valgrind's memcheck tool. The log"
|
|
||||||
echo " files are named sage-memcheck.PID can be found in"
|
|
||||||
echo " $DOT_SAGE"
|
|
||||||
- echo " -omega -- run Sage using Valgrind's omega tool. The log"
|
|
||||||
- echo " files are named sage-omega.PID can be found in"
|
|
||||||
- echo " $DOT_SAGE"
|
|
||||||
echo " -valgrind -- this is an alias for -memcheck"
|
|
||||||
echo
|
|
||||||
echo "You can also use -- before a long option, e.g., 'sage --optional'."
|
|
||||||
@@ -288,115 +209,6 @@ usage_advanced() {
|
|
||||||
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
-# Special options to be processed without sage-env
|
-# Special options to be processed without sage-env
|
||||||
|
@ -239,6 +84,11 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- echo >&2 "Error: 'sage -i $OPT <package>' is no longer supported, use 'sage --info <package>' instead."
|
- echo >&2 "Error: 'sage -i $OPT <package>' is no longer supported, use 'sage --info <package>' instead."
|
||||||
- exit 2;;
|
- exit 2;;
|
||||||
- -f) FORCE_INSTALL=yes;;
|
- -f) FORCE_INSTALL=yes;;
|
||||||
|
- # Setting SAGE_CHECK here duplicates what we do in sage-spkg
|
||||||
|
- # but we need it in "make" already when there are (order-only)
|
||||||
|
- # dependencies on packages providing test infrastructure
|
||||||
|
- -c) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT"; export SAGE_CHECK=yes;;
|
||||||
|
- -w) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT"; export SAGE_CHECK=warn;;
|
||||||
- -*) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT";;
|
- -*) INSTALL_OPTIONS="$INSTALL_OPTIONS $OPT";;
|
||||||
- *) PACKAGES="$PACKAGES $OPT";;
|
- *) PACKAGES="$PACKAGES $OPT";;
|
||||||
- esac
|
- esac
|
||||||
|
@ -264,7 +114,7 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- # See https://trac.sagemath.org/ticket/25078
|
- # See https://trac.sagemath.org/ticket/25078
|
||||||
- if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then
|
- if ! echo "$ALL_TARGETS" | grep "^${PKG}$" >/dev/null; then
|
||||||
- echo >&2 "Error: package '$PKG' not found"
|
- echo >&2 "Error: package '$PKG' not found"
|
||||||
- echo >&2 "Note: if it is an old-style package, use -p instead of -i to install it"
|
- echo >&2 "Note: if it is an old-style package, installing these is no longer supported"
|
||||||
- exit 1
|
- exit 1
|
||||||
- fi
|
- fi
|
||||||
- $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG"
|
- $MAKE SAGE_SPKG="sage-spkg $INSTALL_OPTIONS" "$PKG"
|
||||||
|
@ -275,12 +125,11 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exit 0
|
- exit 0
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
-
|
|
||||||
-#####################################################################
|
-#####################################################################
|
||||||
# Report information about the Sage environment
|
# Report information about the Sage environment
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
@@ -445,20 +257,6 @@ fi
|
@@ -217,20 +103,6 @@ fi
|
||||||
|
|
||||||
# Prepare for running Sage, either interactively or non-interactively.
|
# Prepare for running Sage, either interactively or non-interactively.
|
||||||
sage_setup() {
|
sage_setup() {
|
||||||
|
@ -301,7 +150,7 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
if [ ! -d "$IPYTHONDIR" ]; then
|
if [ ! -d "$IPYTHONDIR" ]; then
|
||||||
# make sure that $DOT_SAGE exists so that ipython will happily
|
# make sure that $DOT_SAGE exists so that ipython will happily
|
||||||
# create its config directories there. If DOT_SAGE doesn't
|
# create its config directories there. If DOT_SAGE doesn't
|
||||||
@@ -469,20 +267,6 @@ sage_setup() {
|
@@ -241,20 +113,6 @@ sage_setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -322,7 +171,35 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
# Start an interactive Sage session, this function never returns.
|
# Start an interactive Sage session, this function never returns.
|
||||||
interactive_sage() {
|
interactive_sage() {
|
||||||
sage_setup
|
sage_setup
|
||||||
@@ -566,16 +350,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ]
|
@@ -292,8 +150,6 @@ usage_advanced() {
|
||||||
|
echo " --nodotsage -- run Sage without using the user's"
|
||||||
|
echo " .sage directory: create and use a temporary"
|
||||||
|
echo " .sage directory instead."
|
||||||
|
- echo " --gthread, --qthread, --q4thread, --wthread, --pylab"
|
||||||
|
- echo " -- pass the option through to IPython"
|
||||||
|
echo " --simple-prompt -- pass the option through to IPython: use"
|
||||||
|
echo " this option with sage-shell mode in emacs"
|
||||||
|
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
|
||||||
|
@@ -327,18 +183,9 @@ usage_advanced() {
|
||||||
|
echo " environment (not Sage), passing additional"
|
||||||
|
echo " additional options to IPython"
|
||||||
|
echo " --jupyter [...] -- run Sage's Jupyter with given arguments"
|
||||||
|
- echo " --kash [...] -- run Sage's Kash with the given arguments"
|
||||||
|
- command -v kash &>/dev/null || \
|
||||||
|
- echo " (not installed currently, run sage -i kash)"
|
||||||
|
- echo " --M2 [...] -- run Sage's Macaulay2 with the given arguments"
|
||||||
|
- command -v M2 &>/dev/null || \
|
||||||
|
- echo " (not installed currently, run sage -i macaulay2)"
|
||||||
|
echo " --maxima [...] -- run Sage's Maxima with the given arguments"
|
||||||
|
echo " --mwrank [...] -- run Sage's mwrank with the given arguments"
|
||||||
|
- echo " --pip [...] -- invoke pip, the Python package manager"
|
||||||
|
echo " --polymake [...] -- run Sage's Polymake with given arguments"
|
||||||
|
- command -v polymake &>/dev/null || \
|
||||||
|
- echo " (not installed currently, run sage -i polymake)"
|
||||||
|
echo " --python [...], --python3 [...]"
|
||||||
|
echo " -- run the Python 3 interpreter"
|
||||||
|
echo " -R [...] -- run Sage's R with the given arguments"
|
||||||
|
@@ -601,11 +448,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ]
|
||||||
exec ecl "$@"
|
exec ecl "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -330,29 +207,12 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- shift
|
- shift
|
||||||
- exec kash "$@"
|
- exec kash "$@"
|
||||||
-fi
|
-fi
|
||||||
-
|
|
||||||
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-fixdoctests "$@"
|
|
||||||
-fi
|
|
||||||
-
|
-
|
||||||
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
|
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
|
||||||
shift
|
shift
|
||||||
exec maxima "$@"
|
maxima_cmd=$(sage-config MAXIMA 2>/dev/null)
|
||||||
@@ -606,11 +380,6 @@ if [ "$1" = '--pip3' ]; then
|
@@ -630,11 +472,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then
|
||||||
exec "$SAGE_LOCAL"/bin/python3 -m pip "$@"
|
exec R "$@"
|
||||||
fi
|
|
||||||
|
|
||||||
-if [ "$1" = '-fix-pkg-checksums' -o "$1" = '--fix-pkg-checksums' ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-fix-pkg-checksums "$@"
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
if [ "$1" = '-python' -o "$1" = '--python' ]; then
|
|
||||||
shift
|
|
||||||
if [ "$SAGE_PYTHON3" = 'yes' ]; then
|
|
||||||
@@ -650,16 +419,6 @@ if [ "$1" = '-jupyter' -o "$1" = '--jupy
|
|
||||||
exec "$SAGE_LOCAL"/bin/jupyter "$@"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
-if [ "$1" = '-git' -o "$1" = '--git' ]; then
|
-if [ "$1" = '-git' -o "$1" = '--git' ]; then
|
||||||
|
@ -360,48 +220,22 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exec git "$@"
|
- exec git "$@"
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
-if [ "$1" = '-git-branch' -o "$1" = '--git-branch' ]; then
|
|
||||||
- shift
|
|
||||||
- exec git --git-dir="$SAGE_ROOT"/.git rev-parse --abbrev-ref HEAD
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
if [ "$1" = '-sh' -o "$1" = '--sh' -o "$1" = '-buildsh' -o "$1" = '--buildsh' ]; then
|
|
||||||
# AUTHORS:
|
|
||||||
# - Carl Witty and William Stein: initial version
|
|
||||||
@@ -792,20 +551,6 @@ EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
-# Test coverage of a module?
|
# sage --sh and sage --buildsh
|
||||||
-#####################################################################
|
|
||||||
-
|
|
||||||
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-coverage "$@"
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-coverageall "$@"
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-#####################################################################
|
|
||||||
# File conversion
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
@@ -836,11 +581,6 @@ fi
|
|
||||||
# Run Sage's versions of the standard Algebra/Geometry etc. software
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
@@ -804,11 +641,6 @@ fi
|
||||||
|
# build_sage, sage -b, sage -br, etc. could be moved to
|
||||||
|
# build/bin/sage-site. See #29111.
|
||||||
|
|
||||||
-build_sage() {
|
-build_sage() {
|
||||||
- maybe_sage_location
|
- maybe_sage_location
|
||||||
- ( cd "$SAGE_SRC" && $MAKE ) || exit $?
|
- ( cd "$SAGE_ROOT/build/make" && $MAKE sagelib-no-deps ) || exit $?
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then
|
if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then
|
||||||
sage-cleaner &>/dev/null &
|
sage-cleaner &>/dev/null &
|
||||||
exec sage-notebook "$@"
|
exec sage-notebook "$@"
|
||||||
@@ -851,13 +591,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not
|
@@ -819,13 +651,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not
|
||||||
exec sage-notebook "$@"
|
exec sage-notebook "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -412,11 +246,11 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exec sage-notebook --notebook=default "$@"
|
- exec sage-notebook --notebook=default "$@"
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then
|
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
|
||||||
shift
|
# Source inspection facilities, supported on sage-the-distribution and on distributions
|
||||||
sage-cleaner &>/dev/null &
|
# that package the Sage sources.
|
||||||
@@ -876,31 +609,12 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep
|
@@ -842,40 +667,12 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ];
|
||||||
exit 0
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
-if [ "$1" = '-b' ]; then
|
-if [ "$1" = '-b' ]; then
|
||||||
|
@ -434,8 +268,17 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
interactive_sage
|
interactive_sage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
-if [ "$1" = '-ba' -o "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
|
-if [ "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
|
||||||
- ( cd "$SAGE_SRC" && make clean )
|
- echo
|
||||||
|
- echo "WARNING: 'sage --ba-force' is deprecated; use 'sage -ba' instead."
|
||||||
|
- echo
|
||||||
|
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
|
||||||
|
- build_sage
|
||||||
|
- exit $?
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-if [ "$1" = '-ba' ]; then
|
||||||
|
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
|
||||||
- build_sage
|
- build_sage
|
||||||
- exit $?
|
- exit $?
|
||||||
-fi
|
-fi
|
||||||
|
@ -448,7 +291,7 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
sage_setup
|
sage_setup
|
||||||
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
|
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
|
||||||
if [ "$1" = '-tp' -o "$1" = '-btp' ]; then
|
if [ "$1" = '-tp' -o "$1" = '-btp' ]; then
|
||||||
@@ -912,16 +626,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1"
|
@@ -887,16 +684,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -465,10 +308,34 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
|
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
|
||||||
shift
|
shift
|
||||||
sage_setup
|
sage_setup
|
||||||
@@ -936,112 +640,6 @@ if [ "$1" = '-c' ]; then
|
@@ -904,21 +691,6 @@ if [ "$1" = '-testall' -o "$1" = "--test
|
||||||
exec sage-eval "$@"
|
exec sage-runtests -a "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
|
||||||
|
- shift
|
||||||
|
- exec sage-fixdoctests "$@"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
|
||||||
|
- shift
|
||||||
|
- exec sage-coverage "$@"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
|
||||||
|
- shift
|
||||||
|
- exec sage-coverageall "$@"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
|
||||||
|
exec sage-startuptime.py "$@"
|
||||||
|
fi
|
||||||
|
@@ -941,53 +713,6 @@ fi
|
||||||
|
# Creating and handling Sage distributions
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
-# The following could be moved to build/bin/sage-site. See #29111.
|
||||||
|
-
|
||||||
-if [ "$1" = '--location' ]; then
|
-if [ "$1" = '--location' ]; then
|
||||||
- maybe_sage_location
|
- maybe_sage_location
|
||||||
- exit 0
|
- exit 0
|
||||||
|
@ -514,26 +381,13 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exec sage-package $@
|
- exec sage-package $@
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
-if [ "$1" = '-optional' -o "$1" = "--optional" ]; then
|
if [ "$1" = '-optional' -o "$1" = "--optional" ]; then
|
||||||
- shift
|
shift
|
||||||
- exec sage-list-packages optional $@
|
exec sage-list-packages optional $@
|
||||||
-fi
|
@@ -1008,30 +733,6 @@ if [ "$1" = '-installed' -o "$1" = "--in
|
||||||
-
|
exec sage-list-packages all --installed-only $@
|
||||||
-if [ "$1" = '-experimental' -o "$1" = "--experimental" ]; then
|
fi
|
||||||
- shift
|
|
||||||
- exec sage-list-packages experimental $@
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if [ "$1" = '-standard' -o "$1" = "--standard" ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-list-packages standard $@
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if [ "$1" = '-installed' -o "$1" = "--installed" ]; then
|
|
||||||
- shift
|
|
||||||
- exec sage-list-packages all --installed-only $@
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if [ "$1" = '-p' ]; then
|
-if [ "$1" = '-p' ]; then
|
||||||
- shift
|
- shift
|
||||||
- # If there are no further arguments, display usage help.
|
- # If there are no further arguments, display usage help.
|
||||||
|
@ -558,27 +412,10 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exec sage-sdist "$@"
|
- exec sage-sdist "$@"
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
-if [ "$1" = '-rsyncdist' -o "$1" = "--rsyncdist" ]; then
|
#####################################################################
|
||||||
- if [ $# -ne 2 ]; then
|
# Debugging tools
|
||||||
- echo >&2 "** MISSING VERSION NUMBER! **"
|
#####################################################################
|
||||||
- exit 2
|
@@ -1075,12 +776,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
|
||||||
- fi
|
|
||||||
- maybe_sage_location
|
|
||||||
- exec sage-rsyncdist $2
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if [ "$1" = "-docbuild" -o "$1" = "--docbuild" ]; then
|
|
||||||
- # Redirect stdin from /dev/null. This helps with running TeX which
|
|
||||||
- # tends to ask interactive questions if something goes wrong. These
|
|
||||||
- # cause the build to hang. If stdin is /dev/null, TeX just aborts.
|
|
||||||
- shift
|
|
||||||
- exec sage-python -m sage_setup.docbuild "$@" </dev/null
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then
|
|
||||||
shift
|
|
||||||
sage_setup
|
|
||||||
@@ -1091,12 +689,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
|
|
||||||
exec sage-callgrind "$@"
|
exec sage-callgrind "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -588,39 +425,6 @@ diff -up src/bin/sage.orig src/bin/sage
|
||||||
- exec sage-omega "$@"
|
- exec sage-omega "$@"
|
||||||
-fi
|
-fi
|
||||||
-
|
-
|
||||||
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
|
if [ "$1" = '-gthread' -o "$1" = '-qthread' -o "$1" = '-q4thread' -o "$1" = '-wthread' -o "$1" = '-pylab' -o "$1" = '--simple-prompt' -o "$1" = '-simple-prompt' ]; then
|
||||||
exec sage-startuptime.py "$@"
|
# Intentionally no "shift" here
|
||||||
fi
|
interactive_sage "$@"
|
||||||
diff -up src/bin/sage-valgrind.orig src/bin/sage-valgrind
|
|
||||||
--- src/bin/sage-valgrind.orig 2020-05-20 16:33:41.000000000 -0600
|
|
||||||
+++ src/bin/sage-valgrind 2020-07-07 08:59:38.369847693 -0600
|
|
||||||
@@ -4,28 +4,7 @@ if [ -z $SAGE_EXTCODE ]; then
|
|
||||||
SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
|
|
||||||
fi
|
|
||||||
|
|
||||||
-SUPP=""
|
|
||||||
-# Our python2/3 spkgs and also Debian install these files as python.supp and python3.supp
|
|
||||||
-if [ "$SAGE_PYTHON_VERSION" = 2 ]; then
|
|
||||||
- PYTHON_SUPP_FILENAME="python.supp"
|
|
||||||
-else
|
|
||||||
- PYTHON_SUPP_FILENAME="python$SAGE_PYTHON_VERSION.supp"
|
|
||||||
-fi
|
|
||||||
-for dir in "$SAGE_LOCAL/lib/valgrind" "/usr/local/lib/valgrind" "/usr/lib64/valgrind" "/usr/lib/valgrind" ; do
|
|
||||||
- if [ -f "$dir"/"$PYTHON_SUPP_FILENAME" ]; then
|
|
||||||
- SUPP=" --suppressions=$dir/$PYTHON_SUPP_FILENAME"
|
|
||||||
- break
|
|
||||||
- fi
|
|
||||||
-done
|
|
||||||
-if [ -z "$SUPP" ] ; then
|
|
||||||
- echo "Python suppressions not found (not installed?), skipping"
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/pyalloc.supp"
|
|
||||||
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage.supp"
|
|
||||||
-SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage-additional.supp"
|
|
||||||
-
|
|
||||||
-MEMCHECK_FLAGS="--leak-resolution=high --leak-check=full --num-callers=25 $SUPP"
|
|
||||||
+MEMCHECK_FLAGS="--leak-resolution=high --leak-check=full --num-callers=25"
|
|
||||||
|
|
||||||
if [ "$SAGE_MEMCHECK_FLAGS" ]; then
|
|
||||||
echo "Overwriting memcheck flags with: $SAGE_MEMCHECK_FLAGS"
|
|
||||||
|
|
|
@ -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.
|
|
|
@ -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'))
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
diff -up src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp
|
diff -up src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp
|
||||||
--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2020-01-01 04:03:10.000000000 -0700
|
--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2020-10-24 11:37:59.000000000 -0600
|
||||||
+++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-02-25 13:59:23.612853911 -0700
|
+++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-10-30 16:40:43.904036700 -0600
|
||||||
@@ -2,8 +2,8 @@
|
@@ -2,8 +2,8 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
|
444
sagemath.spec
444
sagemath.spec
|
@ -4,11 +4,10 @@
|
||||||
%global _python_bytecompile_extra 0
|
%global _python_bytecompile_extra 0
|
||||||
|
|
||||||
%bcond_with bundled_pexpect
|
%bcond_with bundled_pexpect
|
||||||
%bcond_without bundled_ipython
|
%bcond_with bundled_ipython
|
||||||
%bcond_without bundled_ipywidgets
|
%bcond_without bundled_ipywidgets
|
||||||
%bcond_without bundled_thebe
|
%bcond_without bundled_thebe
|
||||||
%bcond_without bundled_threejs
|
%bcond_without bundled_threejs
|
||||||
%bcond_without bundled_widgetsnbextension
|
|
||||||
%bcond_without install_hack
|
%bcond_without install_hack
|
||||||
|
|
||||||
%if 0%{?fedora} >= 33
|
%if 0%{?fedora} >= 33
|
||||||
|
@ -51,38 +50,33 @@
|
||||||
%global flintqs_pkg flintqs-1.0
|
%global flintqs_pkg flintqs-1.0
|
||||||
%global graphs_pkg graphs-20161026
|
%global graphs_pkg graphs-20161026
|
||||||
%if %{with bundled_ipython}
|
%if %{with bundled_ipython}
|
||||||
%global ipython_ver 5.8.0
|
%global ipython_ver 7.13.0
|
||||||
%global ipython_pkg ipython-%{ipython_ver}
|
%global ipython_pkg ipython-%{ipython_ver}
|
||||||
%global prompt_toolkit_ver 1.0.15
|
%global prompt_toolkit_ver 3.0.5
|
||||||
%global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver}
|
%global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver}
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_ipywidgets}
|
%if %{with bundled_ipywidgets}
|
||||||
%global ipywidgets_ver 7.4.2
|
%global ipywidgets_ver 7.5.1
|
||||||
%global ipywidgets_pkg ipywidgets-%{ipywidgets_ver}
|
%global ipywidgets_pkg ipywidgets-%{ipywidgets_ver}
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_pexpect}
|
%if %{with bundled_pexpect}
|
||||||
%global pexpect_pkg pexpect-4.6.0
|
%global pexpect_pkg pexpect-4.8.0
|
||||||
%endif
|
%endif
|
||||||
%global polytopes_db_pkg polytopes_db-20170220
|
%global polytopes_db_pkg polytopes_db-20170220
|
||||||
%global rubiks_pkg rubiks-20070912
|
%global sagetex_pkg sagetex-3.5
|
||||||
%global sagetex_pkg sagetex-3.4
|
%global Sphinx_pkg Sphinx-3.1.2
|
||||||
%global Sphinx_pkg Sphinx-1.8.5
|
|
||||||
%global singular_pkg singular-4.1.1p2
|
%global singular_pkg singular-4.1.1p2
|
||||||
%if %{with bundled_thebe}
|
%if %{with bundled_thebe}
|
||||||
%global thebe_ver 9624e0a0
|
%global thebe_ver 9624e0a0
|
||||||
%global thebe_pkg thebe-%{thebe_ver}
|
%global thebe_pkg thebe-%{thebe_ver}
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_threejs}
|
%if %{with bundled_threejs}
|
||||||
%global threejs_ver r110
|
%global threejs_ver r117
|
||||||
%global threejs_pkg threejs-%{threejs_ver}
|
%global threejs_pkg threejs-%{threejs_ver}
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
%global widgetsnbextension_ver 3.4.2
|
|
||||||
%global widgetsnbextension_pkg widgetsnbextension-%{widgetsnbextension_ver}
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Spkg equivalents of required rpms; we pretend they are installed as spkgs.
|
# Spkg equivalents of required rpms; we pretend they are installed as spkgs.
|
||||||
%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 CoCoALib-0.99710 coxeter3-3.1 cryptominisat-5.7.1 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.0 libsirocco-2.0.2 lrslib-071 mcqd-1.0 meataxe-1.0 primecount-6.0 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0
|
%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 CoCoALib-0.99710 coxeter3-3.1 cryptominisat-5.7.1 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.0 libsirocco-2.0.2 lrslib-071 mcqd-1.0 meataxe-1.0 primecount-6.1 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0
|
||||||
|
|
||||||
%ifarch %{ix86} x86_64
|
%ifarch %{ix86} x86_64
|
||||||
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
|
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
|
||||||
|
@ -99,8 +93,8 @@
|
||||||
|
|
||||||
Name: sagemath
|
Name: sagemath
|
||||||
Summary: A free open-source mathematics software system
|
Summary: A free open-source mathematics software system
|
||||||
Version: 9.1
|
Version: 9.2
|
||||||
Release: 4%{?dist}
|
Release: 1%{?dist}
|
||||||
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
|
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
|
||||||
# Additionally, every $files section has a comment with the license name
|
# Additionally, every $files section has a comment with the license name
|
||||||
# before files with that license
|
# before files with that license
|
||||||
|
@ -123,8 +117,7 @@ Patch1: %{name}-random.patch
|
||||||
# Set of patches to work with system wide packages
|
# Set of patches to work with system wide packages
|
||||||
Patch2: %{name}-scripts.patch
|
Patch2: %{name}-scripts.patch
|
||||||
|
|
||||||
# remove call to not implemented sagemath "is_package_installed" interfaces
|
# Fix building extensions with system header files and libraries
|
||||||
# remove check for non free solvers
|
|
||||||
Patch3: %{name}-extensions.patch
|
Patch3: %{name}-extensions.patch
|
||||||
|
|
||||||
# helper to:
|
# helper to:
|
||||||
|
@ -158,63 +151,49 @@ Patch10: %{name}-cremona.patch
|
||||||
# adapt to python 3 and cython running in python 3 mode
|
# adapt to python 3 and cython running in python 3 mode
|
||||||
Patch11: %{name}-python3.patch
|
Patch11: %{name}-python3.patch
|
||||||
|
|
||||||
# adapt to ecl 20.4.24
|
|
||||||
Patch12: %{name}-ecl.patch
|
|
||||||
|
|
||||||
# remove the buildroot path from Cython output
|
# remove the buildroot path from Cython output
|
||||||
Patch13: %{name}-buildroot.patch
|
Patch12: %{name}-buildroot.patch
|
||||||
|
|
||||||
# update c++ standard to fix FTBFS
|
# update c++ standard to fix FTBFS
|
||||||
Patch14: %{name}-lcalc.patch
|
Patch13: %{name}-lcalc.patch
|
||||||
|
|
||||||
# Use system gap directories and modernize libgap interface
|
# Use system gap directories and modernize libgap interface
|
||||||
Patch16: %{name}-libgap.patch
|
Patch14: %{name}-libgap.patch
|
||||||
|
|
||||||
# Build fes
|
# Build fes
|
||||||
Patch17: %{name}-fes-build.patch
|
Patch15: %{name}-fes-build.patch
|
||||||
# Disable fes
|
|
||||||
Patch18: %{name}-fes.patch
|
|
||||||
|
|
||||||
# Side effect of using distro packages
|
# Side effect of using distro packages
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=974769
|
# https://bugzilla.redhat.com/show_bug.cgi?id=974769
|
||||||
Patch19: %{name}-sympy.patch
|
Patch16: %{name}-env.patch
|
||||||
|
|
||||||
# Correct unable to start QEPCAD within sage
|
# Correct unable to start QEPCAD within sage
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1243590
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1243590
|
||||||
Patch20: %{name}-qepcad.patch
|
Patch17: %{name}-qepcad.patch
|
||||||
|
|
||||||
# Correct path to arb headers
|
# Correct path to arb headers
|
||||||
Patch21: %{name}-arb.patch
|
Patch18: %{name}-arb.patch
|
||||||
|
|
||||||
# Add missing include paths
|
# Use flexiblas
|
||||||
Patch22: %{name}-includes.patch
|
Patch19: %{name}-flexiblas.patch
|
||||||
|
|
||||||
# Use [flexi/open]blas
|
# Use openblas
|
||||||
Patch23: %{name}-%{blaslib}.patch
|
Patch20: %{name}-openblas.patch
|
||||||
|
|
||||||
# Fix paths to latte-integrale binaries
|
# Fix paths to latte-integrale binaries
|
||||||
Patch24: %{name}-latte.patch
|
Patch21: %{name}-latte.patch
|
||||||
|
|
||||||
# Upstream fixes for random SIGFPEs due to ecl messing with the fp state
|
# Change rubiks binary names to match Fedora
|
||||||
Patch25: %{name}-sigfpe.patch
|
Patch22: %{name}-rubiks.patch
|
||||||
|
|
||||||
# Add some missing #includes and types in the rubiks code
|
|
||||||
Patch26: %{name}-rubiks.patch
|
|
||||||
|
|
||||||
# Fix an indentation error in sagetex
|
|
||||||
Patch27: %{name}-sagetex.patch
|
|
||||||
|
|
||||||
# Fix some path settings in the sage environment
|
|
||||||
Patch28: %{name}-env.patch
|
|
||||||
|
|
||||||
# Adapt to recent tdlib 0.9
|
# Adapt to recent tdlib 0.9
|
||||||
Patch29: %{name}-tdlib.patch
|
Patch23: %{name}-tdlib.patch
|
||||||
|
|
||||||
# Use local objects.inv for intersphinx since no network on koji builders
|
# Use local objects.inv for intersphinx since no network on koji builders
|
||||||
Patch30: %{name}-intersphinx.patch
|
Patch24: %{name}-intersphinx.patch
|
||||||
|
|
||||||
# Remove an unused call to a primecount function that no longer exists
|
# Remove an unused call to a primecount function that no longer exists
|
||||||
Patch31: %{name}-primecount.patch
|
Patch25: %{name}-primecount.patch
|
||||||
|
|
||||||
BuildRequires: 4ti2
|
BuildRequires: 4ti2
|
||||||
BuildRequires: arb-devel
|
BuildRequires: arb-devel
|
||||||
|
@ -224,54 +203,69 @@ BuildRequires: brial-devel
|
||||||
BuildRequires: cddlib-devel
|
BuildRequires: cddlib-devel
|
||||||
BuildRequires: cddlib-tools
|
BuildRequires: cddlib-tools
|
||||||
BuildRequires: cliquer-devel
|
BuildRequires: cliquer-devel
|
||||||
BuildRequires: coin-or-Cbc-devel
|
|
||||||
BuildRequires: coxeter-devel
|
BuildRequires: coxeter-devel
|
||||||
BuildRequires: desktop-file-utils
|
BuildRequires: desktop-file-utils
|
||||||
BuildRequires: dvipng
|
BuildRequires: dvipng
|
||||||
BuildRequires: ecl
|
BuildRequires: ecl
|
||||||
BuildRequires: eclib-devel
|
|
||||||
BuildRequires: factory-devel
|
|
||||||
%if %{with fes}
|
%if %{with fes}
|
||||||
BuildRequires: fes-devel
|
BuildRequires: fes-devel
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: flint-devel
|
BuildRequires: flint-devel
|
||||||
BuildRequires: gap-devel
|
BuildRequires: gap-devel
|
||||||
|
BuildRequires: gap-pkg-aclib
|
||||||
|
BuildRequires: gap-pkg-alnuth
|
||||||
|
BuildRequires: gap-pkg-atlasrep
|
||||||
|
BuildRequires: gap-pkg-autpgrp
|
||||||
BuildRequires: gap-pkg-cohomolo
|
BuildRequires: gap-pkg-cohomolo
|
||||||
BuildRequires: gap-pkg-corelg
|
BuildRequires: gap-pkg-corelg
|
||||||
BuildRequires: gap-pkg-crime
|
BuildRequires: gap-pkg-crime
|
||||||
|
BuildRequires: gap-pkg-crisp
|
||||||
|
BuildRequires: gap-pkg-crystcat
|
||||||
|
BuildRequires: gap-pkg-ctbllib
|
||||||
BuildRequires: gap-pkg-design
|
BuildRequires: gap-pkg-design
|
||||||
BuildRequires: gap-pkg-edim
|
BuildRequires: gap-pkg-edim
|
||||||
BuildRequires: gap-pkg-forms
|
BuildRequires: gap-pkg-factint
|
||||||
|
BuildRequires: gap-pkg-fga
|
||||||
|
BuildRequires: gap-pkg-gbnp
|
||||||
|
BuildRequires: gap-pkg-genss
|
||||||
|
BuildRequires: gap-pkg-grape
|
||||||
BuildRequires: gap-pkg-guava
|
BuildRequires: gap-pkg-guava
|
||||||
BuildRequires: gap-pkg-hapcryst
|
BuildRequires: gap-pkg-hapcryst
|
||||||
BuildRequires: gap-pkg-hecke
|
BuildRequires: gap-pkg-hecke
|
||||||
|
BuildRequires: gap-pkg-irredsol
|
||||||
BuildRequires: gap-pkg-jupyterkernel
|
BuildRequires: gap-pkg-jupyterkernel
|
||||||
|
BuildRequires: gap-pkg-laguna
|
||||||
BuildRequires: gap-pkg-liealgdb
|
BuildRequires: gap-pkg-liealgdb
|
||||||
BuildRequires: gap-pkg-liepring
|
BuildRequires: gap-pkg-liepring
|
||||||
BuildRequires: gap-pkg-loops
|
BuildRequires: gap-pkg-loops
|
||||||
BuildRequires: gap-pkg-lpres
|
BuildRequires: gap-pkg-lpres
|
||||||
BuildRequires: gap-pkg-mapclass
|
BuildRequires: gap-pkg-mapclass
|
||||||
BuildRequires: gap-pkg-nautytracesinterface
|
BuildRequires: gap-pkg-polenta
|
||||||
|
BuildRequires: gap-pkg-polycyclic
|
||||||
|
BuildRequires: gap-pkg-polymaking
|
||||||
BuildRequires: gap-pkg-qpa
|
BuildRequires: gap-pkg-qpa
|
||||||
|
BuildRequires: gap-pkg-quagroup
|
||||||
BuildRequires: gap-pkg-radiroot
|
BuildRequires: gap-pkg-radiroot
|
||||||
BuildRequires: gap-pkg-repsn
|
BuildRequires: gap-pkg-repsn
|
||||||
BuildRequires: gap-pkg-semigroups
|
BuildRequires: gap-pkg-resclasses
|
||||||
BuildRequires: gap-pkg-singular
|
BuildRequires: gap-pkg-singular
|
||||||
|
BuildRequires: gap-pkg-sla
|
||||||
|
BuildRequires: gap-pkg-sonata
|
||||||
|
BuildRequires: gap-pkg-sophus
|
||||||
|
BuildRequires: gap-pkg-tomlib
|
||||||
BuildRequires: gap-pkg-toric
|
BuildRequires: gap-pkg-toric
|
||||||
BuildRequires: gap-pkg-utils
|
BuildRequires: gap-pkg-utils
|
||||||
BuildRequires: gc-devel
|
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: gcc-gfortran
|
BuildRequires: gcc-gfortran
|
||||||
BuildRequires: gcc-objc
|
BuildRequires: gcc-objc
|
||||||
BuildRequires: gcc-objc++
|
BuildRequires: gcc-objc++
|
||||||
BuildRequires: gd-devel
|
|
||||||
BuildRequires: gdb
|
BuildRequires: gdb
|
||||||
BuildRequires: gfan
|
BuildRequires: gfan
|
||||||
BuildRequires: giac-devel
|
BuildRequires: giac-devel
|
||||||
|
BuildRequires: giac-doc
|
||||||
BuildRequires: glpk-devel
|
BuildRequires: glpk-devel
|
||||||
BuildRequires: gmp-ecm
|
BuildRequires: gmp-ecm
|
||||||
BuildRequires: gmp-ecm-devel
|
BuildRequires: gmp-ecm-devel
|
||||||
BuildRequires: gsl-devel
|
|
||||||
BuildRequires: ImageMagick
|
BuildRequires: ImageMagick
|
||||||
BuildRequires: iml-devel
|
BuildRequires: iml-devel
|
||||||
BuildRequires: jmol
|
BuildRequires: jmol
|
||||||
|
@ -281,16 +275,11 @@ BuildRequires: jsmath-fonts
|
||||||
BuildRequires: L-function-devel
|
BuildRequires: L-function-devel
|
||||||
BuildRequires: latte-integrale
|
BuildRequires: latte-integrale
|
||||||
BuildRequires: libbraiding-devel
|
BuildRequires: libbraiding-devel
|
||||||
BuildRequires: libfplll-devel
|
|
||||||
BuildRequires: libgap
|
BuildRequires: libgap
|
||||||
BuildRequires: libhomfly-devel
|
BuildRequires: libhomfly-devel
|
||||||
BuildRequires: libmpc-devel
|
BuildRequires: libmpc-devel
|
||||||
BuildRequires: libpng-devel
|
|
||||||
BuildRequires: linbox-devel
|
|
||||||
BuildRequires: lrcalc-devel
|
BuildRequires: lrcalc-devel
|
||||||
BuildRequires: lrslib-utils
|
BuildRequires: lrslib-utils
|
||||||
BuildRequires: m4ri-devel
|
|
||||||
BuildRequires: m4rie-devel
|
|
||||||
BuildRequires: mathjax
|
BuildRequires: mathjax
|
||||||
BuildRequires: maxima-runtime-ecl
|
BuildRequires: maxima-runtime-ecl
|
||||||
BuildRequires: mcqd-devel
|
BuildRequires: mcqd-devel
|
||||||
|
@ -305,23 +294,43 @@ BuildRequires: pari-galdata
|
||||||
BuildRequires: pari-gp
|
BuildRequires: pari-gp
|
||||||
BuildRequires: pari-seadata
|
BuildRequires: pari-seadata
|
||||||
BuildRequires: perl-generators
|
BuildRequires: perl-generators
|
||||||
|
BuildRequires: pkgconfig(bdw-gc)
|
||||||
|
BuildRequires: pkgconfig(cbc)
|
||||||
|
BuildRequires: pkgconfig(eclib)
|
||||||
|
BuildRequires: pkgconfig(factory)
|
||||||
|
BuildRequires: pkgconfig(fplll)
|
||||||
|
BuildRequires: pkgconfig(gdlib)
|
||||||
|
BuildRequires: pkgconfig(gsl)
|
||||||
|
BuildRequires: pkgconfig(libpng)
|
||||||
|
BuildRequires: pkgconfig(linbox)
|
||||||
|
BuildRequires: pkgconfig(m4ri)
|
||||||
|
BuildRequires: pkgconfig(m4rie)
|
||||||
|
BuildRequires: pkgconfig(pynac)
|
||||||
|
BuildRequires: pkgconfig(readline)
|
||||||
|
BuildRequires: pkgconfig(Singular)
|
||||||
|
BuildRequires: pkgconfig(sqlite3)
|
||||||
|
BuildRequires: pkgconfig(zlib)
|
||||||
BuildRequires: planarity-devel
|
BuildRequires: planarity-devel
|
||||||
BuildRequires: ppl-devel
|
BuildRequires: ppl-devel
|
||||||
BuildRequires: primecount-devel
|
BuildRequires: primecount-devel
|
||||||
BuildRequires: pynac-devel
|
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-docs
|
BuildRequires: python3-docs
|
||||||
BuildRequires: python3-cypari2-devel
|
BuildRequires: python3-cypari2-devel
|
||||||
BuildRequires: python3-cysignals-devel
|
BuildRequires: python3-cysignals-devel
|
||||||
|
%if %{without bundled_ipython}
|
||||||
|
BuildRequires: python3-ipython-sphinx
|
||||||
|
%endif
|
||||||
BuildRequires: python3-pillow-devel
|
BuildRequires: python3-pillow-devel
|
||||||
BuildRequires: python3-pplpy-devel
|
BuildRequires: python3-pplpy-devel
|
||||||
BuildRequires: python3-tdlib-devel
|
BuildRequires: python3-tdlib-devel
|
||||||
|
%if %{with bundled_ipython}
|
||||||
|
BuildRequires: %{py3_dist backcall}
|
||||||
|
%endif
|
||||||
BuildRequires: %{py3_dist brial}
|
BuildRequires: %{py3_dist brial}
|
||||||
BuildRequires: %{py3_dist cvxopt}
|
BuildRequires: %{py3_dist cvxopt}
|
||||||
BuildRequires: %{py3_dist cython}
|
BuildRequires: %{py3_dist cython}
|
||||||
BuildRequires: %{py3_dist docutils}
|
BuildRequires: %{py3_dist docutils}
|
||||||
BuildRequires: %{py3_dist fpylll}
|
BuildRequires: %{py3_dist fpylll}
|
||||||
BuildRequires: %{py3_dist future}
|
|
||||||
BuildRequires: %{py3_dist gmpy2}
|
BuildRequires: %{py3_dist gmpy2}
|
||||||
%if %{with sphinx_hack}
|
%if %{with sphinx_hack}
|
||||||
BuildRequires: %{py3_dist html5lib}
|
BuildRequires: %{py3_dist html5lib}
|
||||||
|
@ -331,6 +340,9 @@ BuildRequires: %{py3_dist ipykernel}
|
||||||
%if %{without bundled_ipython}
|
%if %{without bundled_ipython}
|
||||||
BuildRequires: %{py3_dist ipython}
|
BuildRequires: %{py3_dist ipython}
|
||||||
%endif
|
%endif
|
||||||
|
%if %{with bundled_ipython}
|
||||||
|
BuildRequires: %{py3_dist jedi}
|
||||||
|
%endif
|
||||||
BuildRequires: %{py3_dist kiwisolver}
|
BuildRequires: %{py3_dist kiwisolver}
|
||||||
BuildRequires: %{py3_dist matplotlib}
|
BuildRequires: %{py3_dist matplotlib}
|
||||||
BuildRequires: %{py3_dist networkx}
|
BuildRequires: %{py3_dist networkx}
|
||||||
|
@ -362,16 +374,16 @@ BuildRequires: %{py3_dist simplegeneric}
|
||||||
BuildRequires: %{py3_dist six}
|
BuildRequires: %{py3_dist six}
|
||||||
BuildRequires: %{py3_dist sphinx}
|
BuildRequires: %{py3_dist sphinx}
|
||||||
BuildRequires: %{py3_dist sympy}
|
BuildRequires: %{py3_dist sympy}
|
||||||
|
BuildRequires: %{py3_dist wheel}
|
||||||
|
BuildRequires: %{py3_dist widgetsnbextension}
|
||||||
BuildRequires: %{py3_dist zodb3}
|
BuildRequires: %{py3_dist zodb3}
|
||||||
BuildRequires: qepcad-B
|
BuildRequires: qepcad-B
|
||||||
BuildRequires: R
|
BuildRequires: R
|
||||||
BuildRequires: ratpoints-devel
|
BuildRequires: ratpoints-devel
|
||||||
BuildRequires: readline-devel
|
BuildRequires: rubiks
|
||||||
BuildRequires: rw-devel
|
BuildRequires: rw-devel
|
||||||
BuildRequires: sharedmeataxe-devel
|
BuildRequires: sharedmeataxe-devel
|
||||||
BuildRequires: Singular-devel
|
|
||||||
BuildRequires: sirocco-devel
|
BuildRequires: sirocco-devel
|
||||||
BuildRequires: stix-fonts
|
|
||||||
BuildRequires: suitesparse-devel
|
BuildRequires: suitesparse-devel
|
||||||
BuildRequires: symmetrica-devel
|
BuildRequires: symmetrica-devel
|
||||||
BuildRequires: sympow
|
BuildRequires: sympow
|
||||||
|
@ -383,17 +395,16 @@ BuildRequires: tex(makecmds.sty)
|
||||||
BuildRequires: web-assets-devel
|
BuildRequires: web-assets-devel
|
||||||
BuildRequires: xorg-x11-fonts-Type1
|
BuildRequires: xorg-x11-fonts-Type1
|
||||||
BuildRequires: xorg-x11-server-Xvfb
|
BuildRequires: xorg-x11-server-Xvfb
|
||||||
BuildRequires: zlib-devel
|
|
||||||
BuildRequires: zn_poly-devel
|
BuildRequires: zn_poly-devel
|
||||||
|
|
||||||
Requires: hicolor-icon-theme
|
Requires: hicolor-icon-theme
|
||||||
|
Requires: rubiks
|
||||||
Requires: %{name}-core = %{version}-%{release}
|
Requires: %{name}-core = %{version}-%{release}
|
||||||
Requires: %{name}-data = %{version}-%{release}
|
Requires: %{name}-data = %{version}-%{release}
|
||||||
%if %{with docs}
|
%if %{with docs}
|
||||||
Requires: %{name}-doc-en = %{version}-%{release}
|
Requires: %{name}-doc = %{version}-%{release}
|
||||||
%endif
|
%endif
|
||||||
Requires: %{name}-jupyter = %{version}-%{release}
|
Requires: %{name}-jupyter = %{version}-%{release}
|
||||||
Requires: %{name}-rubiks = %{version}-%{release}
|
|
||||||
Requires: %{name}-sagetex = %{version}-%{release}
|
Requires: %{name}-sagetex = %{version}-%{release}
|
||||||
|
|
||||||
%if %{with bundled_thebe}
|
%if %{with bundled_thebe}
|
||||||
|
@ -419,27 +430,47 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: 4ti2
|
Requires: 4ti2
|
||||||
Requires: cddlib-tools
|
Requires: cddlib-tools
|
||||||
Requires: gap
|
Requires: gap
|
||||||
|
Requires: gap-pkg-aclib
|
||||||
|
Requires: gap-pkg-alnuth
|
||||||
|
Requires: gap-pkg-atlasrep
|
||||||
|
Requires: gap-pkg-autpgrp
|
||||||
Requires: gap-pkg-cohomolo
|
Requires: gap-pkg-cohomolo
|
||||||
Requires: gap-pkg-corelg
|
Requires: gap-pkg-corelg
|
||||||
Requires: gap-pkg-crime
|
Requires: gap-pkg-crime
|
||||||
|
Requires: gap-pkg-crisp
|
||||||
|
Requires: gap-pkg-crystcat
|
||||||
|
Requires: gap-pkg-ctbllib
|
||||||
Requires: gap-pkg-design
|
Requires: gap-pkg-design
|
||||||
Requires: gap-pkg-edim
|
Requires: gap-pkg-edim
|
||||||
Requires: gap-pkg-forms
|
Requires: gap-pkg-factint
|
||||||
|
Requires: gap-pkg-fga
|
||||||
|
Requires: gap-pkg-gbnp
|
||||||
|
Requires: gap-pkg-genss
|
||||||
|
Requires: gap-pkg-grape
|
||||||
Requires: gap-pkg-guava
|
Requires: gap-pkg-guava
|
||||||
Requires: gap-pkg-hapcryst
|
Requires: gap-pkg-hapcryst
|
||||||
Requires: gap-pkg-hecke
|
Requires: gap-pkg-hecke
|
||||||
|
Requires: gap-pkg-irredsol
|
||||||
Requires: gap-pkg-jupyterkernel
|
Requires: gap-pkg-jupyterkernel
|
||||||
|
Requires: gap-pkg-laguna
|
||||||
Requires: gap-pkg-liealgdb
|
Requires: gap-pkg-liealgdb
|
||||||
Requires: gap-pkg-liepring
|
Requires: gap-pkg-liepring
|
||||||
Requires: gap-pkg-loops
|
Requires: gap-pkg-loops
|
||||||
Requires: gap-pkg-lpres
|
Requires: gap-pkg-lpres
|
||||||
Requires: gap-pkg-mapclass
|
Requires: gap-pkg-mapclass
|
||||||
Requires: gap-pkg-nautytracesinterface
|
Requires: gap-pkg-polenta
|
||||||
|
Requires: gap-pkg-polycyclic
|
||||||
|
Requires: gap-pkg-polymaking
|
||||||
Requires: gap-pkg-qpa
|
Requires: gap-pkg-qpa
|
||||||
|
Requires: gap-pkg-quagroup
|
||||||
Requires: gap-pkg-radiroot
|
Requires: gap-pkg-radiroot
|
||||||
Requires: gap-pkg-repsn
|
Requires: gap-pkg-repsn
|
||||||
Requires: gap-pkg-semigroups
|
Requires: gap-pkg-resclasses
|
||||||
Requires: gap-pkg-singular
|
Requires: gap-pkg-singular
|
||||||
|
Requires: gap-pkg-sla
|
||||||
|
Requires: gap-pkg-sonata
|
||||||
|
Requires: gap-pkg-sophus
|
||||||
|
Requires: gap-pkg-tomlib
|
||||||
Requires: gap-pkg-toric
|
Requires: gap-pkg-toric
|
||||||
Requires: gap-pkg-utils
|
Requires: gap-pkg-utils
|
||||||
Requires: gfan
|
Requires: gfan
|
||||||
|
@ -458,6 +489,9 @@ Requires: pari-galdata
|
||||||
Requires: pari-gp
|
Requires: pari-gp
|
||||||
Requires: pari-seadata
|
Requires: pari-seadata
|
||||||
Requires: python3-tdlib
|
Requires: python3-tdlib
|
||||||
|
%if %{with bundled_ipython}
|
||||||
|
Requires: %{py3_dist backcall}
|
||||||
|
%endif
|
||||||
Requires: %{py3_dist brial}
|
Requires: %{py3_dist brial}
|
||||||
Requires: %{py3_dist cypari2}
|
Requires: %{py3_dist cypari2}
|
||||||
Requires: %{py3_dist cysignals}
|
Requires: %{py3_dist cysignals}
|
||||||
|
@ -465,7 +499,6 @@ Requires: %{py3_dist cvxopt}
|
||||||
Requires: %{py3_dist cython}
|
Requires: %{py3_dist cython}
|
||||||
Requires: %{py3_dist docutils}
|
Requires: %{py3_dist docutils}
|
||||||
Requires: %{py3_dist fpylll}
|
Requires: %{py3_dist fpylll}
|
||||||
Requires: %{py3_dist future}
|
|
||||||
Requires: %{py3_dist gmpy2}
|
Requires: %{py3_dist gmpy2}
|
||||||
%if %{with sphinx_hack}
|
%if %{with sphinx_hack}
|
||||||
Requires: %{py3_dist html5lib}
|
Requires: %{py3_dist html5lib}
|
||||||
|
@ -475,6 +508,9 @@ Requires: %{py3_dist ipykernel}
|
||||||
%if %{without bundled_ipython}
|
%if %{without bundled_ipython}
|
||||||
Requires: %{py3_dist ipython}
|
Requires: %{py3_dist ipython}
|
||||||
%endif
|
%endif
|
||||||
|
%if %{with bundled_ipython}
|
||||||
|
Requires: %{py3_dist jedi}
|
||||||
|
%endif
|
||||||
Requires: %{py3_dist matplotlib}
|
Requires: %{py3_dist matplotlib}
|
||||||
Requires: %{py3_dist networkx}
|
Requires: %{py3_dist networkx}
|
||||||
%if %{with bundled_ipython}
|
%if %{with bundled_ipython}
|
||||||
|
@ -504,8 +540,6 @@ Requires: %{py3_dist sympy}
|
||||||
Requires: %{py3_dist zodb3}
|
Requires: %{py3_dist zodb3}
|
||||||
Requires: qepcad-B
|
Requires: qepcad-B
|
||||||
Requires: Singular
|
Requires: Singular
|
||||||
# Required by thebe; remove when it is unbundled
|
|
||||||
Requires: stix-fonts
|
|
||||||
Requires: sympow
|
Requires: sympow
|
||||||
Requires: tachyon
|
Requires: tachyon
|
||||||
Requires: texlive
|
Requires: texlive
|
||||||
|
@ -516,9 +550,6 @@ Provides: bundled(prompt_toolkit) = %{prompt_toolkit_ver}
|
||||||
%if %{with bundled_ipywidgets}
|
%if %{with bundled_ipywidgets}
|
||||||
Provides: bundled(ipywidgets) = %{ipywidgets_ver}
|
Provides: bundled(ipywidgets) = %{ipywidgets_ver}
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
Provides: bundled(widgetsnbextension) = %{widgetsnbextension_ver}
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description core
|
%description core
|
||||||
This package contains the core sagemath python modules.
|
This package contains the core sagemath python modules.
|
||||||
|
@ -621,6 +652,7 @@ ReflexivePolytope and ReflexivePolytopes commands.
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%package doc
|
%package doc
|
||||||
Summary: Documentation infrastructure files for %{name}
|
Summary: Documentation infrastructure files for %{name}
|
||||||
|
Requires: mathjax
|
||||||
|
|
||||||
%description doc
|
%description doc
|
||||||
This package contains the documentation infrastructure for %{name}.
|
This package contains the documentation infrastructure for %{name}.
|
||||||
|
@ -704,6 +736,7 @@ This package contains the Turkish %{name} documentation.
|
||||||
Summary: Jupyter integration for sagemath
|
Summary: Jupyter integration for sagemath
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: python-jupyter-filesystem
|
Requires: python-jupyter-filesystem
|
||||||
|
Requires: %{py3_dist widgetsnbextension}
|
||||||
|
|
||||||
# This can be removed when Fedora 31 reaches EOL
|
# This can be removed when Fedora 31 reaches EOL
|
||||||
Obsoletes: sagemath-notebook < 9.0-1
|
Obsoletes: sagemath-notebook < 9.0-1
|
||||||
|
@ -713,29 +746,6 @@ Provides: sagemath-notebook = %{version}-%{release}
|
||||||
This package contains a Jupyter integration for sagemath, replacing the
|
This package contains a Jupyter integration for sagemath, replacing the
|
||||||
defunct notebook functionality.
|
defunct notebook functionality.
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
%package rubiks
|
|
||||||
Summary: Several programs for working with Rubik's cubes
|
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
|
||||||
|
|
||||||
%description rubiks
|
|
||||||
Several programs for working with Rubik's cubes, by three different people.
|
|
||||||
In summary the three contributors are:
|
|
||||||
|
|
||||||
Michael Reid (GPL) http://www.math.ucf.edu/~reid/Rubik/optimal_solver.html
|
|
||||||
optimal - uses many pre-computed tables to find an optimal
|
|
||||||
solution to the 3x3x3 Rubik's cube
|
|
||||||
|
|
||||||
Dik T. Winter (MIT License)
|
|
||||||
cube - uses Kociemba's algorithm to iteratively find a short
|
|
||||||
solution to the 3x3x3 Rubik's cube
|
|
||||||
size222 - solves a 2x2x2 Rubik's cube
|
|
||||||
|
|
||||||
Eric Dietz (GPL) http://www.wrongway.org/?rubiksource
|
|
||||||
cu2 - A fast, non-optimal 2x2x2 solver
|
|
||||||
cubex - A fast, non-optimal 3x3x3 solver
|
|
||||||
mcube - A fast, non-optimal 4x4x4 solver
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%package sagetex
|
%package sagetex
|
||||||
Summary: Sagemath into LaTeX documents
|
Summary: Sagemath into LaTeX documents
|
||||||
|
@ -812,11 +822,6 @@ popd
|
||||||
pushd build/pkgs/pexpect
|
pushd build/pkgs/pexpect
|
||||||
tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz
|
tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz
|
||||||
mv %{pexpect_pkg} src
|
mv %{pexpect_pkg} src
|
||||||
pushd src
|
|
||||||
for diff in ../patches/*.patch; do
|
|
||||||
patch -p1 < $diff
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
@ -825,16 +830,6 @@ pushd build/pkgs/polytopes_db
|
||||||
mv %{polytopes_db_pkg} src
|
mv %{polytopes_db_pkg} src
|
||||||
popd
|
popd
|
||||||
|
|
||||||
pushd build/pkgs/rubiks
|
|
||||||
tar jxf ../../../upstream/%{rubiks_pkg}.tar.bz2
|
|
||||||
mv %{rubiks_pkg} src
|
|
||||||
pushd src
|
|
||||||
for diff in ../patches/*.patch; do
|
|
||||||
patch -p1 < $diff
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
pushd build/pkgs/sagetex
|
pushd build/pkgs/sagetex
|
||||||
tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz
|
tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz
|
||||||
mv %{sagetex_pkg} src
|
mv %{sagetex_pkg} src
|
||||||
|
@ -872,13 +867,6 @@ pushd build/pkgs/threejs
|
||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
pushd build/pkgs/widgetsnbextension
|
|
||||||
tar zxf ../../../upstream/%{widgetsnbextension_pkg}.tar.gz
|
|
||||||
mv %{widgetsnbextension_pkg} src
|
|
||||||
popd
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%patch0
|
%patch0
|
||||||
%patch1
|
%patch1
|
||||||
%patch2
|
%patch2
|
||||||
|
@ -894,27 +882,24 @@ popd
|
||||||
%patch12
|
%patch12
|
||||||
%patch13
|
%patch13
|
||||||
%patch14
|
%patch14
|
||||||
%patch16
|
|
||||||
|
|
||||||
%if %{with fes}
|
%if %{with fes}
|
||||||
%patch17
|
%patch15
|
||||||
%else
|
|
||||||
%patch18
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%patch16
|
||||||
|
%patch17
|
||||||
|
%patch18
|
||||||
|
%if "%{blaslib}" == "flexiblas"
|
||||||
%patch19
|
%patch19
|
||||||
|
%else
|
||||||
%patch20
|
%patch20
|
||||||
|
%endif
|
||||||
%patch21
|
%patch21
|
||||||
%patch22
|
%patch22
|
||||||
%patch23
|
%patch23
|
||||||
%patch24
|
%patch24
|
||||||
%patch25
|
%patch25
|
||||||
%patch26
|
|
||||||
%patch27
|
|
||||||
%patch28
|
|
||||||
%patch29
|
|
||||||
%patch30
|
|
||||||
%patch31
|
|
||||||
|
|
||||||
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
|
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
|
||||||
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
|
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
|
||||||
|
@ -923,7 +908,7 @@ sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
|
||||||
|
|
||||||
sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \
|
sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \
|
||||||
-e 's|@@BUILDROOT@@|%{buildroot}|' \
|
-e 's|@@BUILDROOT@@|%{buildroot}|' \
|
||||||
-i src/setup.py
|
-i src/sage_setup/command/sage_build_cython.py
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# some .c files are not (re)generated
|
# some .c files are not (re)generated
|
||||||
|
@ -968,6 +953,9 @@ sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \
|
||||||
# GAP does not have enough memory to load the entire workspace
|
# GAP does not have enough memory to load the entire workspace
|
||||||
sed -i 's/64m/256m/' src/sage/interfaces/gap.py
|
sed -i 's/64m/256m/' src/sage/interfaces/gap.py
|
||||||
|
|
||||||
|
# GAP does not have enough memory to build docs
|
||||||
|
sed -i 's/80/128/' src/sage_setup/docbuild/build_options.py
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
%build
|
%build
|
||||||
|
@ -976,7 +964,6 @@ export CC=%{__cc}
|
||||||
export CFLAGS="%{optflags}"
|
export CFLAGS="%{optflags}"
|
||||||
export CXXFLAGS="%{optflags}"
|
export CXXFLAGS="%{optflags}"
|
||||||
export SAGE_PYTHON_VERSION=3
|
export SAGE_PYTHON_VERSION=3
|
||||||
export SAGE_PYTHON3=yes
|
|
||||||
export SAGE_ROOT=%{buildroot}%{SAGE_ROOT}
|
export SAGE_ROOT=%{buildroot}%{SAGE_ROOT}
|
||||||
export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL}
|
export SAGE_LOCAL=%{buildroot}%{SAGE_LOCAL}
|
||||||
# Avoid buildroot in gcc command line (use _builddir instead)
|
# Avoid buildroot in gcc command line (use _builddir instead)
|
||||||
|
@ -1045,13 +1032,6 @@ pushd build/pkgs/ipywidgets/src
|
||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
pushd build/pkgs/widgetsnbextension/src
|
|
||||||
%__python3 setup.py build
|
|
||||||
%__python3 setup.py install --root %{_builddir}
|
|
||||||
popd
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%if %{with cython_hack}
|
%if %{with cython_hack}
|
||||||
cp -far %{python3_sitearch}/Cython %{_builddir}%{python3_sitearch}
|
cp -far %{python3_sitearch}/Cython %{_builddir}%{python3_sitearch}
|
||||||
BASE=$PWD/build/pkgs/cython/patches/
|
BASE=$PWD/build/pkgs/cython/patches/
|
||||||
|
@ -1084,10 +1064,6 @@ pushd build/pkgs/flintqs/src
|
||||||
make %{?_smp_mflags} CPP="g++ %{optflags} -fPIC"
|
make %{?_smp_mflags} CPP="g++ %{optflags} -fPIC"
|
||||||
popd
|
popd
|
||||||
|
|
||||||
pushd build/pkgs/rubiks/src
|
|
||||||
make %{?_smp_mflags} CC="gcc -fPIC" CXX="g++ -fPIC" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}"
|
|
||||||
popd
|
|
||||||
|
|
||||||
# last build command
|
# last build command
|
||||||
rm -fr $DOT_SAGE
|
rm -fr $DOT_SAGE
|
||||||
|
|
||||||
|
@ -1105,7 +1081,6 @@ export SAGE_SHARE=%{buildroot}%{SAGE_SHARE}
|
||||||
export SAGE_ETC=%{buildroot}%{SAGE_ETC}
|
export SAGE_ETC=%{buildroot}%{SAGE_ETC}
|
||||||
export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC}
|
export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC}
|
||||||
export SAGE_DOC=%{buildroot}%{SAGE_DOC}
|
export SAGE_DOC=%{buildroot}%{SAGE_DOC}
|
||||||
export SAGE_PYTHON3=yes
|
|
||||||
export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH}
|
export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH}
|
||||||
export DESTDIR=%{buildroot}
|
export DESTDIR=%{buildroot}
|
||||||
export SAGE_DEBUG=no
|
export SAGE_DEBUG=no
|
||||||
|
@ -1176,17 +1151,6 @@ pushd build/pkgs/flintqs/src
|
||||||
cp -fa src/QuadraticSieve $SAGE_LOCAL/bin
|
cp -fa src/QuadraticSieve $SAGE_LOCAL/bin
|
||||||
popd
|
popd
|
||||||
|
|
||||||
pushd build/pkgs/rubiks/src
|
|
||||||
cp -fa \
|
|
||||||
reid/optimal \
|
|
||||||
dietz/solver/cubex \
|
|
||||||
dietz/mcube/mcube \
|
|
||||||
dietz/cu2/cu2 \
|
|
||||||
dik/dikcube \
|
|
||||||
dik/size222 \
|
|
||||||
$SAGE_LOCAL/bin
|
|
||||||
popd
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
pushd $SAGE_LOCAL/bin/
|
pushd $SAGE_LOCAL/bin/
|
||||||
rm -f \
|
rm -f \
|
||||||
|
@ -1306,14 +1270,6 @@ pushd build/pkgs/threejs
|
||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
pushd build/pkgs/widgetsnbextension/src
|
|
||||||
%py3_install "--install-purelib=%{python3_sitelib}"
|
|
||||||
mv %{buildroot}%{_prefix}%{_sysconfdir} %{buildroot}%{_sysconfdir}
|
|
||||||
popd
|
|
||||||
%endif
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
) # source build/bin/sage-dist-helpers
|
) # source build/bin/sage-dist-helpers
|
||||||
|
|
||||||
|
@ -1329,7 +1285,6 @@ export SAGE_SHARE="$SAGE_SHARE"
|
||||||
export SAGE_EXTCODE="$SAGE_ETC"
|
export SAGE_EXTCODE="$SAGE_ETC"
|
||||||
export SAGE_ETC="$SAGE_ETC"
|
export SAGE_ETC="$SAGE_ETC"
|
||||||
export SAGE_SRC="%{buildroot}%{SAGE_SRC}"
|
export SAGE_SRC="%{buildroot}%{SAGE_SRC}"
|
||||||
export SAGE_PYTHON3=yes
|
|
||||||
##export SAGE_DOC="$SAGE_DOC"
|
##export SAGE_DOC="$SAGE_DOC"
|
||||||
##export SAGE_DOC_SRC="\$SAGE_DOC"
|
##export SAGE_DOC_SRC="\$SAGE_DOC"
|
||||||
##export SAGE_PKGS="\$SAGE_LOCAL/var/lib/sage/installed"
|
##export SAGE_PKGS="\$SAGE_LOCAL/var/lib/sage/installed"
|
||||||
|
@ -1467,10 +1422,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
|
||||||
|
|
||||||
# Fix permissions
|
# Fix permissions
|
||||||
find %{buildroot} -name '*.so' -exec chmod 755 {} \+
|
find %{buildroot} -name '*.so' -exec chmod 755 {} \+
|
||||||
pushd %{buildroot}%{SAGE_LOCAL}/bin
|
chmod 755 %{buildroot}%{SAGE_LOCAL}/bin/QuadraticSieve
|
||||||
chmod 755 QuadraticSieve
|
chmod 755 %{buildroot}%{python3_sitearch}/sage/ext_data/pari/dokchitser/testall
|
||||||
chmod 755 mcube dikcube cu2 size222 cubex optimal
|
|
||||||
popd
|
|
||||||
for file in `find %{buildroot} -name \*.py`; do
|
for file in `find %{buildroot} -name \*.py`; do
|
||||||
if head -1 $file | grep -q '^#!'; then
|
if head -1 $file | grep -q '^#!'; then
|
||||||
chmod +x $file
|
chmod +x $file
|
||||||
|
@ -1550,6 +1503,19 @@ chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage-list-packages
|
||||||
# Byte compile python files in nonstandard places
|
# Byte compile python files in nonstandard places
|
||||||
%py_byte_compile %{python3} %{buildroot}%{_texmf}/tex/latex/sagetex
|
%py_byte_compile %{python3} %{buildroot}%{_texmf}/tex/latex/sagetex
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
# Do not bundle mathjax
|
||||||
|
for dir in $(find %{buildroot}%{_docdir} -name _static); do
|
||||||
|
pushd $dir
|
||||||
|
for d in config extensions fonts jax localization MathJax.js test; do
|
||||||
|
if [ -d "$PWD/$d" ]; then
|
||||||
|
rm -fr $d
|
||||||
|
ln -s %{_datadir}/javascript/mathjax/$d $d
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
done
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# Jupyter integration
|
# Jupyter integration
|
||||||
pushd src
|
pushd src
|
||||||
|
@ -1605,9 +1571,9 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%dir %{SAGE_ROOT}
|
%dir %{SAGE_ROOT}
|
||||||
%doc %{SAGE_ROOT}/COPYING.txt
|
%doc %{SAGE_ROOT}/COPYING.txt
|
||||||
%dir %{SAGE_LOCAL}
|
%dir %{SAGE_LOCAL}/
|
||||||
%dir %{SAGE_LOCAL}/bin
|
%dir %{SAGE_LOCAL}/bin/
|
||||||
%dir %{SAGE_SHARE}
|
%dir %{SAGE_SHARE}/
|
||||||
%{SAGE_LOCAL}/bin/QuadraticSieve
|
%{SAGE_LOCAL}/bin/QuadraticSieve
|
||||||
%{SAGE_LOCAL}/bin/ecm
|
%{SAGE_LOCAL}/bin/ecm
|
||||||
%{SAGE_LOCAL}/bin/gap
|
%{SAGE_LOCAL}/bin/gap
|
||||||
|
@ -1620,12 +1586,12 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
||||||
%{SAGE_LOCAL}/include
|
%{SAGE_LOCAL}/include
|
||||||
%{SAGE_LOCAL}/lib
|
%{SAGE_LOCAL}/lib
|
||||||
%{SAGE_LOCAL}/share
|
%{SAGE_LOCAL}/share
|
||||||
%{SAGE_LOCAL}/var
|
%{SAGE_LOCAL}/var/
|
||||||
%ghost %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ver}
|
%ghost %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ver}
|
||||||
%{SAGE_ROOT}/doc
|
|
||||||
%{SAGE_ROOT}/devel
|
%{SAGE_ROOT}/devel
|
||||||
|
%{SAGE_ROOT}/doc
|
||||||
%{SAGE_ROOT}/share
|
%{SAGE_ROOT}/share
|
||||||
%dir %{SAGE_SRC}
|
%dir %{SAGE_SRC}/
|
||||||
%if %{with docs}
|
%if %{with docs}
|
||||||
%{SAGE_SRC}/doc
|
%{SAGE_SRC}/doc
|
||||||
%endif
|
%endif
|
||||||
|
@ -1637,17 +1603,17 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
||||||
%{_datadir}/applications/%{name}.desktop
|
%{_datadir}/applications/%{name}.desktop
|
||||||
%if %{with bundled_thebe}
|
%if %{with bundled_thebe}
|
||||||
# MIT
|
# MIT
|
||||||
%{SAGE_SHARE}/thebe
|
%{SAGE_SHARE}/thebe/
|
||||||
%endif
|
%endif
|
||||||
%if %{with bundled_threejs}
|
%if %{with bundled_threejs}
|
||||||
# MIT
|
# MIT
|
||||||
%{SAGE_SHARE}/threejs
|
%{SAGE_SHARE}/threejs/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files core
|
%files core
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{python3_sitearch}/sage
|
%{python3_sitearch}/sage/
|
||||||
%if %{without install_hack}
|
%if %{without install_hack}
|
||||||
%{python3_sitearch}/sage-*.egg-info
|
%{python3_sitearch}/sage-*.egg-info
|
||||||
%endif
|
%endif
|
||||||
|
@ -1661,27 +1627,27 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data
|
%files data
|
||||||
%dir %{SAGE_SHARE}
|
%dir %{SAGE_SHARE}/
|
||||||
%dir %{SAGE_ETC}
|
%dir %{SAGE_ETC}/
|
||||||
%{SAGE_ETC}/sage
|
%{SAGE_ETC}/sage
|
||||||
%{SAGE_ETC}/gprc.expect
|
%{SAGE_ETC}/gprc.expect
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-combinatorial_designs
|
%files data-combinatorial_designs
|
||||||
# Public Domain
|
# Public Domain
|
||||||
%{SAGE_SHARE}/combinatorial_designs
|
%{SAGE_SHARE}/combinatorial_designs/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-conway_polynomials
|
%files data-conway_polynomials
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_SHARE}/conway_polynomials
|
%{SAGE_SHARE}/conway_polynomials/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-elliptic_curves
|
%files data-elliptic_curves
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%dir %{SAGE_SHARE}/cremona/
|
%dir %{SAGE_SHARE}/cremona/
|
||||||
%{SAGE_SHARE}/cremona/cremona_mini.db
|
%{SAGE_SHARE}/cremona/cremona_mini.db
|
||||||
%{SAGE_SHARE}/ellcurves
|
%{SAGE_SHARE}/ellcurves/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-elliptic_curves_large
|
%files data-elliptic_curves_large
|
||||||
|
@ -1692,127 +1658,119 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-etc
|
%files data-etc
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_ETC}/doctest
|
%{SAGE_ETC}/doctest/
|
||||||
%{SAGE_ETC}/gap
|
%{SAGE_ETC}/gap/
|
||||||
%{SAGE_ETC}/images
|
%{SAGE_ETC}/kenzo/
|
||||||
%{SAGE_ETC}/kenzo
|
%{SAGE_ETC}/magma/
|
||||||
%{SAGE_ETC}/magma
|
%{SAGE_ETC}/mwrank/
|
||||||
%{SAGE_ETC}/mwrank
|
%{SAGE_ETC}/nbconvert/
|
||||||
%{SAGE_ETC}/nbconvert
|
|
||||||
%{SAGE_ETC}/nodoctest
|
%{SAGE_ETC}/nodoctest
|
||||||
%{SAGE_ETC}/pari
|
%{SAGE_ETC}/pari/
|
||||||
%{SAGE_ETC}/singular
|
%{SAGE_ETC}/singular/
|
||||||
%{SAGE_ETC}/threejs
|
%{SAGE_ETC}/threejs/
|
||||||
%{SAGE_ETC}/valgrind
|
%{SAGE_ETC}/valgrind/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-graphs
|
%files data-graphs
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_ETC}/graphs
|
%{SAGE_ETC}/graphs/
|
||||||
%{SAGE_SHARE}/graphs
|
%{SAGE_SHARE}/graphs/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files data-polytopes_db
|
%files data-polytopes_db
|
||||||
# GPL+
|
# GPL+
|
||||||
%{SAGE_SHARE}/reflexive_polytopes
|
%{SAGE_SHARE}/reflexive_polytopes/
|
||||||
|
|
||||||
%if %{with docs}
|
%if %{with docs}
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc
|
%files doc
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%dir %{SAGE_DOC}
|
%dir %{SAGE_DOC}/
|
||||||
%{SAGE_DOC}/common
|
%{SAGE_DOC}/common/
|
||||||
%dir %{SAGE_DOC}/html
|
%dir %{SAGE_DOC}/html/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-ca
|
%files doc-ca
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/ca
|
%{SAGE_DOC}/ca/
|
||||||
%{SAGE_DOC}/html/ca
|
%{SAGE_DOC}/html/ca/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-de
|
%files doc-de
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/de
|
%{SAGE_DOC}/de/
|
||||||
%{SAGE_DOC}/html/de
|
%{SAGE_DOC}/html/de/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-en
|
%files doc-en
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/en
|
%{SAGE_DOC}/en/
|
||||||
%{SAGE_DOC}/html/en
|
%{SAGE_DOC}/html/en/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-fr
|
%files doc-fr
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/fr
|
%{SAGE_DOC}/fr/
|
||||||
%{SAGE_DOC}/html/fr
|
%{SAGE_DOC}/html/fr/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-hu
|
%files doc-hu
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/hu
|
%{SAGE_DOC}/hu/
|
||||||
%{SAGE_DOC}/html/hu
|
%{SAGE_DOC}/html/hu/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-it
|
%files doc-it
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/it
|
%{SAGE_DOC}/it/
|
||||||
%{SAGE_DOC}/html/it
|
%{SAGE_DOC}/html/it/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-pt
|
%files doc-pt
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/pt
|
%{SAGE_DOC}/pt/
|
||||||
%{SAGE_DOC}/html/pt
|
%{SAGE_DOC}/html/pt/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-ru
|
%files doc-ru
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/ru
|
%{SAGE_DOC}/ru/
|
||||||
%{SAGE_DOC}/html/ru
|
%{SAGE_DOC}/html/ru/
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files doc-tr
|
%files doc-tr
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{SAGE_DOC}/tr
|
%{SAGE_DOC}/tr/
|
||||||
%{SAGE_DOC}/html/tr
|
%{SAGE_DOC}/html/tr/
|
||||||
# with docs
|
# with docs
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files jupyter
|
%files jupyter
|
||||||
%{SAGE_ETC}/notebook-ipython
|
%{SAGE_ETC}/notebook-ipython/
|
||||||
# LGPLv2+
|
# LGPLv2+
|
||||||
%if %{with bundled_widgetsnbextension}
|
|
||||||
%config(noreplace) %{_sysconfdir}/jupyter/nbconfig/notebook.d/*.json
|
|
||||||
%{_datadir}/jupyter/nbextensions/*
|
|
||||||
%{python3_sitelib}/widgetsnbextension*
|
|
||||||
%endif
|
|
||||||
%{_datadir}/jupyter/kernels/sagemath/
|
%{_datadir}/jupyter/kernels/sagemath/
|
||||||
|
%{_datadir}/jupyter/nbextensions/jsmol
|
||||||
#------------------------------------------------------------------------
|
%{_datadir}/jupyter/nbextensions/mathjax
|
||||||
%files rubiks
|
%{_datadir}/jupyter/nbextensions/threejs
|
||||||
# GPL+
|
|
||||||
%{SAGE_LOCAL}/bin/optimal
|
|
||||||
# MIT
|
|
||||||
%{SAGE_LOCAL}/bin/dikcube
|
|
||||||
%{SAGE_LOCAL}/bin/size222
|
|
||||||
# GPL+
|
|
||||||
%{SAGE_LOCAL}/bin/cu2
|
|
||||||
%{SAGE_LOCAL}/bin/cubex
|
|
||||||
%{SAGE_LOCAL}/bin/mcube
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
%files sagetex
|
%files sagetex
|
||||||
# GPLv2+
|
# GPLv2+
|
||||||
%{python3_sitearch}/sagetex*
|
%{python3_sitearch}/sagetex*
|
||||||
%{python3_sitearch}/__pycache__/sagetex*
|
%{python3_sitearch}/__pycache__/sagetex*
|
||||||
%{_texmf}/tex/latex/sagetex
|
%{_texmf}/tex/latex/sagetex/
|
||||||
%doc %{_docdir}/sagetex
|
%doc %{_docdir}/sagetex/
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Nov 10 2020 Jerry James <loganjerry@gmail.com> - 9.2-1
|
||||||
|
- Version 9.2 (bz 1891244)
|
||||||
|
- Unbundle widgetsnbextension (bz 1856311)
|
||||||
|
- Unbundle mathjax fonts (bz 1875606)
|
||||||
|
- Do not require the -doc subpackage from the main package (bz 1867123)
|
||||||
|
- Drop upstreamed patches: -ecl, -fes, -includes, -sagetex, -sigfpe, -sympy
|
||||||
|
|
||||||
* Wed Sep 30 2020 Jerry James <loganjerry@gmail.com> - 9.1-4
|
* Wed Sep 30 2020 Jerry James <loganjerry@gmail.com> - 9.1-4
|
||||||
- Rebuild for primecount 6.1
|
- Rebuild for primecount 6.1
|
||||||
- Bring back jmol/jsmol support
|
- Bring back jmol/jsmol support
|
||||||
|
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
||||||
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
|
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
|
||||||
SHA512 (sage-9.1.tar.gz) = 6df64ce9fadab4cf4b955c704d143b591a02264e85d6dfab1c50872a50cfab804310aad6a46b553d861294acac29dc65729666f251a64cbe648d020af1f411d1
|
SHA512 (sage-9.2.tar.gz) = d7e833919740dd9249b14fb0fc7fdc93ad6265dae9363fa2495c88274f0683c7aae2f7625f842584a95bd4f6a439d575a6532a945d6e50054355853d68e0275d
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue