Update to sagemath 8.5.

Also:
- Bundle ipython again; Fedora version is too far ahead.  Also have to bundle
  prompt_toolkit since Fedora version is too far ahead of bundled ipython.
- Drop LANGUAGES variable setting, now ignored by the sagemath build system.
- Drop unused SAGE_CBLAS variable from /usr/bin/sage.
- Do not force the C locale when launching sagemath.
- Allow the user to override SAGE_DEBUG in /usr/bin/sage.
- Add -ecm, -giac, and -latte patches to fix interactions with external tools.
- Add -sigfpe patch from upstream.
This commit is contained in:
Jerry James 2019-01-17 19:27:08 -07:00
parent eaa777c690
commit 55beead27c
31 changed files with 674 additions and 684 deletions

View file

@ -1,6 +1,6 @@
diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py
--- src/sage/sandpiles/sandpile.py.orig 2018-10-17 17:14:17.000000000 -0600
+++ src/sage/sandpiles/sandpile.py 2018-10-25 13:18:34.198894883 -0600
--- src/sage/sandpiles/sandpile.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/sandpiles/sandpile.py 2019-01-16 09:43:32.402089611 -0700
@@ -344,9 +344,6 @@ from sage.arith.all import falling_facto
from sage.rings.all import Integer, PolynomialRing, QQ, ZZ
from sage.symbolic.all import I, pi, SR

View file

@ -1,6 +1,6 @@
diff -up src/sage/libs/arb/acb_hypgeom.pxd.orig src/sage/libs/arb/acb_hypgeom.pxd
--- src/sage/libs/arb/acb_hypgeom.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/acb_hypgeom.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/acb_hypgeom.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/acb_hypgeom.pxd 2019-01-16 09:46:54.148469344 -0700
@@ -2,7 +2,7 @@
from sage.libs.arb.types cimport *
@ -11,8 +11,8 @@ diff -up src/sage/libs/arb/acb_hypgeom.pxd.orig src/sage/libs/arb/acb_hypgeom.px
long acb_hypgeom_pfq_choose_n(acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long prec)
void acb_hypgeom_pfq_sum_forward(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec)
diff -up src/sage/libs/arb/acb_mat.pxd.orig src/sage/libs/arb/acb_mat.pxd
--- src/sage/libs/arb/acb_mat.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/acb_mat.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/acb_mat.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/acb_mat.pxd 2019-01-16 09:46:54.148469344 -0700
@@ -1,6 +1,6 @@
from sage.libs.arb.types cimport acb_t, acb_mat_t, acb_poly_t
@ -22,8 +22,8 @@ diff -up src/sage/libs/arb/acb_mat.pxd.orig src/sage/libs/arb/acb_mat.pxd
unsigned int acb_mat_ncols(acb_mat_t mat)
acb_t acb_mat_entry(acb_mat_t mat, unsigned long i, unsigned long j)
diff -up src/sage/libs/arb/acb_modular.pxd.orig src/sage/libs/arb/acb_modular.pxd
--- src/sage/libs/arb/acb_modular.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/acb_modular.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/acb_modular.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/acb_modular.pxd 2019-01-16 09:46:54.149469326 -0700
@@ -3,7 +3,7 @@
from sage.libs.arb.types cimport *
from sage.libs.flint.types cimport fmpz_poly_t
@ -34,8 +34,8 @@ diff -up src/sage/libs/arb/acb_modular.pxd.orig src/sage/libs/arb/acb_modular.px
void acb_modular_j(acb_t z, const acb_t tau, long prec)
void acb_modular_eta(acb_t z, const acb_t tau, long prec)
diff -up src/sage/libs/arb/acb_poly.pxd.orig src/sage/libs/arb/acb_poly.pxd
--- src/sage/libs/arb/acb_poly.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/acb_poly.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/acb_poly.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/acb_poly.pxd 2019-01-16 09:46:54.149469326 -0700
@@ -3,7 +3,7 @@
from sage.libs.arb.types cimport *
from sage.libs.flint.types cimport fmpz_poly_t, fmpq_poly_t
@ -46,8 +46,8 @@ diff -up src/sage/libs/arb/acb_poly.pxd.orig src/sage/libs/arb/acb_poly.pxd
void acb_poly_clear(acb_poly_t poly)
void acb_poly_fit_length(acb_poly_t poly, long len)
diff -up src/sage/libs/arb/acb.pxd.orig src/sage/libs/arb/acb.pxd
--- src/sage/libs/arb/acb.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/acb.pxd 2018-08-29 10:43:48.571623007 -0600
--- src/sage/libs/arb/acb.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/acb.pxd 2019-01-16 09:46:54.149469326 -0700
@@ -3,7 +3,7 @@
from sage.libs.arb.types cimport *
from sage.libs.flint.types cimport fmpz_t, fmpq_t
@ -58,8 +58,8 @@ diff -up src/sage/libs/arb/acb.pxd.orig src/sage/libs/arb/acb.pxd
arb_t acb_realref(acb_t x)
arb_t acb_imagref(acb_t x)
diff -up src/sage/libs/arb/arf.pxd.orig src/sage/libs/arb/arf.pxd
--- src/sage/libs/arb/arf.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/arf.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/arf.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/arf.pxd 2019-01-16 09:46:54.149469326 -0700
@@ -5,7 +5,7 @@ from sage.libs.gmp.types cimport mpz_t
from sage.libs.flint.types cimport fmpz_t
from sage.libs.mpfr.types cimport mpfr_t, mpfr_rnd_t
@ -70,8 +70,8 @@ diff -up src/sage/libs/arb/arf.pxd.orig src/sage/libs/arb/arf.pxd
void arf_clear(arf_t x)
void arf_zero(arf_t x)
diff -up src/sage/libs/arb/bernoulli.pxd.orig src/sage/libs/arb/bernoulli.pxd
--- src/sage/libs/arb/bernoulli.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/bernoulli.pxd 2018-08-29 10:43:48.572622995 -0600
--- src/sage/libs/arb/bernoulli.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/bernoulli.pxd 2019-01-16 09:46:54.149469326 -0700
@@ -2,5 +2,5 @@
from ..flint.types cimport fmpq_t, ulong
@ -80,8 +80,8 @@ diff -up src/sage/libs/arb/bernoulli.pxd.orig src/sage/libs/arb/bernoulli.pxd
+cdef extern from "arb/bernoulli.h":
void bernoulli_fmpq_ui(fmpq_t b, ulong n)
diff -up src/sage/libs/arb/mag.pxd.orig src/sage/libs/arb/mag.pxd
--- src/sage/libs/arb/mag.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/mag.pxd 2018-08-29 10:43:48.573622983 -0600
--- src/sage/libs/arb/mag.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/mag.pxd 2019-01-16 09:46:54.150469309 -0700
@@ -3,7 +3,7 @@
from sage.libs.arb.types cimport *
from sage.libs.flint.types cimport fmpz_t, fmpq_t
@ -92,8 +92,8 @@ diff -up src/sage/libs/arb/mag.pxd.orig src/sage/libs/arb/mag.pxd
void mag_clear(mag_t x)
void mag_init_set(mag_t x, const mag_t y)
diff -up src/sage/libs/arb/types.pxd.orig src/sage/libs/arb/types.pxd
--- src/sage/libs/arb/types.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/arb/types.pxd 2018-08-29 10:43:48.573622983 -0600
--- src/sage/libs/arb/types.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/arb/types.pxd 2019-01-16 09:46:54.150469309 -0700
@@ -1,4 +1,4 @@
-cdef extern from "mag.h":
+cdef extern from "arb/mag.h":

View file

@ -1,5 +1,6 @@
--- src/setup.py.orig 2018-10-16 09:07:30.086993782 -0600
+++ src/setup.py 2018-10-16 09:10:20.586710425 -0600
diff -up src/setup.py.orig src/setup.py
--- src/setup.py.orig 2019-01-04 11:05:11.337077724 -0700
+++ src/setup.py 2019-01-16 09:45:32.570933224 -0700
@@ -387,6 +387,9 @@ class sage_build_cython(Command):
with open(self._version_file, 'w') as f:
f.write(self._version_stamp)

View file

@ -1,7 +1,7 @@
diff -up src/sage/numerical/backends/coin_backend.pyx.orig src/sage/numerical/backends/coin_backend.pyx
--- src/sage/numerical/backends/coin_backend.pyx.orig 2018-05-16 13:40:23.571130540 -0600
+++ src/sage/numerical/backends/coin_backend.pyx 2018-05-16 13:41:06.750534427 -0600
@@ -762,8 +762,8 @@ cdef class CoinBackend(GenericBackend):
--- src/sage/numerical/backends/coin_backend.pyx.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/numerical/backends/coin_backend.pyx 2019-01-16 09:45:52.386577640 -0700
@@ -765,8 +765,8 @@ cdef class CoinBackend(GenericBackend):
model.setLogLevel(old_logLevel)
# multithreading

View file

@ -1,6 +1,6 @@
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
--- src/sage/databases/cremona.py.orig 2018-10-17 17:13:36.000000000 -0600
+++ src/sage/databases/cremona.py 2018-10-25 13:24:02.644939224 -0600
--- src/sage/databases/cremona.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/databases/cremona.py 2019-01-04 10:29:55.578694061 -0700
@@ -53,7 +53,6 @@ from sage.misc.prandom import randint
import sage.schemes.elliptic_curves.constructor as elliptic
@ -9,7 +9,7 @@ diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
from sage.env import CREMONA_MINI_DATA_DIR, CREMONA_LARGE_DATA_DIR
from sage.misc.all import walltime
@@ -825,14 +824,6 @@ class MiniCremonaDatabase(SQLDatabase):
@@ -835,14 +834,6 @@ class MiniCremonaDatabase(SQLDatabase):
if N < self.largest_conductor():
message = "There is no elliptic curve with label " + label \
+ " in the database"
@ -24,7 +24,7 @@ diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
raise ValueError(message)
ainvs = eval(c[0])
data = {'cremona_label': label,
@@ -1673,10 +1664,12 @@ def CremonaDatabase(name=None,mini=None,
@@ -1683,10 +1674,12 @@ def CremonaDatabase(name=None,mini=None,
if name is None and not set_global:
return _db
if set_global and name is None:

12
sagemath-ecm.patch Normal file
View file

@ -0,0 +1,12 @@
diff -up src/sage/interfaces/ecm.py.orig src/sage/interfaces/ecm.py
--- src/sage/interfaces/ecm.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/ecm.py 2019-01-15 10:26:31.060040736 -0700
@@ -256,7 +256,7 @@ class ECM(SageObject):
"""
print("Enter numbers to run ECM on them.")
print("Press control-C to exit.")
- os.system(self._cmd)
+ os.system(' '.join(self._cmd))
# Recommended settings from
# http://www.mersennewiki.org/index.php/Elliptic_Curve_Method

View file

@ -1,92 +1,7 @@
--- build/pkgs/sagenb/src/sagenb/misc/sphinxify.py.orig 2018-10-25 14:14:33.031253545 -0600
+++ build/pkgs/sagenb/src/sagenb/misc/sphinxify.py 2018-10-25 15:33:56.358876835 -0600
@@ -133,7 +133,7 @@ def sphinxify(docstring, format='html'):
# "/media/...path.../blah.png"
# to
# "/doc/static/reference/media/...path.../blah.png"
- output = re.sub("""src=['"](/?\.\.)*/?media/([^"']*)['"]""",
+ output = re.sub("""src=['"](/?\\.\\.)*/?media/([^"']*)['"]""",
'src="/doc/static/reference/media/\\2"',
output)
# Remove spurious \(, \), \[, \].
--- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2018-10-25 13:30:02.499892169 -0600
+++ build/pkgs/sagenb/src/sagenb/misc/support.py 2018-10-25 14:14:33.032253542 -0600
@@ -550,7 +550,7 @@ try:
return args[0].__getattribute__(str(self))(*args[1:], **kwds)
def automatic_name_eval(s, globals, max_names=10000):
- """
+ r"""
Exec the string ``s`` in the scope of the ``globals``
dictionary, and if any :exc:`NameError`\ s are raised, try to
fix them by defining the variable that caused the error to be
--- build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig 2018-10-25 13:30:55.707737342 -0600
+++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2018-10-25 14:14:33.032253542 -0600
@@ -441,7 +441,7 @@ class Cell_generic(object):
return isinstance(self, Cell)
def is_auto_cell(self):
- """
+ r"""
Returns whether this is an automatically evaluated generic
cell. This is always false for :class:`Cell_generic`\ s and
:class:`TextCell`\ s.
@@ -647,7 +647,7 @@ class TextCell(Cell_generic):
return self._text
def set_cell_output_type(self, typ='wrap'):
- """
+ r"""
Sets this text cell's output type. This does nothing for
:class:`TextCell`\ s.
@@ -1320,8 +1320,8 @@ class Cell(Cell_generic):
if len(s) == 0:
return False
s = s[0]
- return bool(re.search('(?<!\w)interact\s*\(.*\).*', s) or
- re.search('\s*@\s*interact', s))
+ return bool(re.search(r'(?<!\w)interact\s*\(.*\).*', s) or
+ re.search(r'\s*@\s*interact', s))
def is_interacting(self):
r"""
@@ -1344,7 +1344,7 @@ class Cell(Cell_generic):
return hasattr(self, 'interact')
def stop_interacting(self):
- """
+ r"""
Stops :func:`sagenb.notebook.interact.interact`\ ion for this
compute cell.
--- build/pkgs/sagenb/src/sagenb/notebook/worksheet.py.orig 2018-05-22 10:01:48.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/notebook/worksheet.py 2018-10-17 14:41:08.634154908 -0600
@@ -61,8 +61,8 @@ from flask_babel import gettext, lazy_ge
_ = gettext
# Set some constants that will be used for regular expressions below.
-whitespace = re.compile('\s') # Match any whitespace character
-non_whitespace = re.compile('\S')
+whitespace = re.compile(r'\s') # Match any whitespace character
+non_whitespace = re.compile(r'\S')
# The file to which the Sage code that will be evaluated is written.
CODE_PY = "___code___.py"
--- src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py.orig 2018-10-17 17:13:35.000000000 -0600
+++ src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py 2018-10-25 14:14:33.033253539 -0600
@@ -2023,7 +2023,7 @@ class QuiverMutationType_Reducible(Quive
@cached_method
def class_size(self):
- """
+ r"""
If it is known, the size of the mutation class of all quivers
which are mutation equivalent to the standard quiver of
``self`` (up to isomorphism) is returned.
--- src/sage/combinat/crystals/alcove_path.py.orig 2018-10-17 17:13:35.000000000 -0600
+++ src/sage/combinat/crystals/alcove_path.py 2018-10-25 15:37:04.294360718 -0600
@@ -389,7 +389,7 @@ class CrystalOfAlcovePaths(UniqueReprese
diff -up src/sage/combinat/crystals/alcove_path.py.orig src/sage/combinat/crystals/alcove_path.py
--- src/sage/combinat/crystals/alcove_path.py.orig 2018-12-22 16:37:07.000000000 -0700
+++ src/sage/combinat/crystals/alcove_path.py 2019-01-04 11:16:55.320833974 -0700
@@ -383,7 +383,7 @@ class CrystalOfAlcovePaths(UniqueReprese
One can compute all vertices of the crystal by finding all the
admissible subsets of the `\lambda`-chain (see method
@ -95,8 +10,9 @@
search algorithm.
.. WARNING::
--- src/sage/homology/homology_group.py.orig 2018-10-17 17:13:47.000000000 -0600
+++ src/sage/homology/homology_group.py 2018-10-25 15:54:54.683421705 -0600
diff -up src/sage/homology/homology_group.py.orig src/sage/homology/homology_group.py
--- src/sage/homology/homology_group.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/homology/homology_group.py 2019-01-04 11:17:37.136047323 -0700
@@ -109,7 +109,7 @@ class HomologyGroup_class(AdditiveAbelia
sage: from sage.homology.homology_group import HomologyGroup
sage: H = HomologyGroup(7, ZZ, [4,4,4,4,4,7,7])
@ -106,3 +22,15 @@
sage: latex(HomologyGroup(6, ZZ))
\ZZ^{6}
"""
diff -up src/sage/rings/number_field/number_field.py.orig src/sage/rings/number_field/number_field.py
--- src/sage/rings/number_field/number_field.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/rings/number_field/number_field.py 2019-01-08 16:25:39.730547708 -0700
@@ -6613,7 +6613,7 @@ class NumberField_generic(WithEqualityBy
return U
def S_unit_solutions(self, S=[], prec=106, include_exponents=False, include_bound=False, proof=None):
- """
+ r"""
Return all solutions to the S-unit equation ``x + y = 1`` over K.
INPUT:

View file

@ -1,7 +1,7 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2018-10-17 17:13:35.000000000 -0600
+++ src/module_list.py 2018-10-25 11:33:55.361930982 -0600
@@ -358,16 +358,16 @@ ext_modules = [
diff -up src/module_list.py.origsrc/module_list.py
--- src/module_list.py.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/module_list.py 2019-01-16 09:42:29.021226961 -0700
@@ -357,16 +357,16 @@ ext_modules = [
Extension('sage.graphs.matchpoly',
sources = ['sage/graphs/matchpoly.pyx']),
@ -27,7 +27,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.graphs.planarity',
sources = ['sage/graphs/planarity.pyx'],
@@ -386,10 +386,10 @@ ext_modules = [
@@ -385,10 +385,10 @@ ext_modules = [
Extension('sage.graphs.graph_decompositions.cutwidth',
sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']),
@ -42,7 +42,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.graphs.spanning_tree',
sources = ['sage/graphs/spanning_tree.pyx']),
@@ -461,21 +461,20 @@ ext_modules = [
@@ -460,21 +460,20 @@ ext_modules = [
##
################################
@ -72,7 +72,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.libs.flint.flint',
sources = ["sage/libs/flint/flint.pyx"],
@@ -841,10 +840,10 @@ ext_modules = [
@@ -840,10 +839,10 @@ ext_modules = [
Extension('sage.matrix.matrix_window',
sources = ['sage/matrix/matrix_window.pyx']),
@ -87,7 +87,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.matrix.misc',
sources = ['sage/matrix/misc.pyx']),
@@ -1021,26 +1020,25 @@ ext_modules = [
@@ -1020,26 +1019,25 @@ ext_modules = [
Extension("sage.numerical.backends.interactivelp_backend",
["sage/numerical/backends/interactivelp_backend.pyx"]),

View file

@ -1,6 +1,6 @@
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
--- src/sage/libs/fes.pyx.orig 2017-11-08 08:26:29.835214502 -0500
+++ src/sage/libs/fes.pyx 2017-11-08 08:26:38.707214842 -0500
--- src/sage/libs/fes.pyx.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/fes.pyx 2019-01-17 09:46:02.925523575 -0700
@@ -86,8 +86,8 @@ from sage.rings.polynomial.pbori import
from sage.arith.all import binomial
from sage.combinat.subset import Subsets

View file

@ -1,7 +1,7 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2018-08-29 08:35:19.927079956 -0600
+++ src/module_list.py 2018-08-29 10:41:05.127643255 -0600
@@ -471,10 +471,10 @@ ext_modules = [
--- src/module_list.py.orig 2019-01-16 09:45:43.332740109 -0700
+++ src/module_list.py 2019-01-16 09:46:10.613250567 -0700
@@ -470,10 +470,10 @@ ext_modules = [
Extension('sage.libs.ecl',
sources = ["sage/libs/ecl.pyx"]),

15
sagemath-giac.patch Normal file
View file

@ -0,0 +1,15 @@
diff -up src/sage/interfaces/giac.py.orig src/sage/interfaces/giac.py
--- src/sage/interfaces/giac.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/giac.py 2019-01-15 15:10:47.399759655 -0700
@@ -617,10 +617,7 @@ If you got giac from the spkg then ``$PR
'4\n3'
sage: s='g(x):={\nx+1;\nx+2;\n}'
sage: giac(s)
- (x)->{
- x+1;
- x+2;
- }
+ (x)->[x+1,x+2]
sage: giac.g(5)
7
"""

View file

@ -1,7 +1,7 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2018-10-25 11:40:44.400943439 -0600
+++ src/module_list.py 2018-10-25 16:16:46.618825285 -0600
@@ -45,6 +45,9 @@ zlib_libs = zlib_pc['libraries']
--- src/module_list.py.orig 2019-01-16 09:46:10.613250567 -0700
+++ src/module_list.py 2019-01-16 09:47:07.804224297 -0700
@@ -44,6 +44,9 @@ zlib_libs = zlib_pc['libraries']
zlib_library_dirs = zlib_pc['library_dirs']
zlib_include_dirs = zlib_pc['include_dirs']
@ -11,7 +11,7 @@ diff -up src/module_list.py.orig src/module_list.py
#########################################################
### M4RI flags
#########################################################
@@ -61,6 +64,14 @@ except ValueError:
@@ -60,6 +63,14 @@ except ValueError:
pass
#########################################################
@ -26,7 +26,7 @@ diff -up src/module_list.py.orig src/module_list.py
### Library order
#########################################################
@@ -134,7 +145,8 @@ ext_modules = [
@@ -133,7 +144,8 @@ ext_modules = [
language='c++',
libraries = ["gmp", "m", "ntl"]),
@ -36,7 +36,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('*', sources = ['sage/algebras/finite_dimensional_algebras/*.pyx']),
@@ -524,7 +536,8 @@ ext_modules = [
@@ -523,7 +535,8 @@ ext_modules = [
[])),
Extension('sage.libs.lrcalc.lrcalc',
@ -46,7 +46,7 @@ diff -up src/module_list.py.orig src/module_list.py
OptionalExtension("sage.libs.meataxe",
sources = ['sage/libs/meataxe.pyx'],
@@ -546,23 +559,28 @@ ext_modules = [
@@ -545,23 +558,28 @@ ext_modules = [
sources = ['sage/libs/readline.pyx'],
libraries = ['readline']),
@ -80,7 +80,7 @@ diff -up src/module_list.py.orig src/module_list.py
###################################
##
@@ -570,7 +588,8 @@ ext_modules = [
@@ -569,7 +587,8 @@ ext_modules = [
##
###################################
@ -90,7 +90,7 @@ diff -up src/module_list.py.orig src/module_list.py
###################################
##
@@ -742,7 +761,8 @@ ext_modules = [
@@ -741,7 +760,8 @@ ext_modules = [
Extension("sage.matrix.matrix_complex_ball_dense",
["sage/matrix/matrix_complex_ball_dense.pyx"],
@ -100,7 +100,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.matrix.matrix_complex_double_dense',
sources = ['sage/matrix/matrix_complex_double_dense.pyx']),
@@ -750,6 +770,7 @@ ext_modules = [
@@ -749,6 +769,7 @@ ext_modules = [
Extension('sage.matrix.matrix_cyclo_dense',
sources = ['sage/matrix/matrix_cyclo_dense.pyx'],
language = "c++",
@ -108,7 +108,7 @@ diff -up src/module_list.py.orig src/module_list.py
libraries=['ntl']),
Extension('sage.matrix.matrix_gap',
@@ -812,6 +833,7 @@ ext_modules = [
@@ -811,6 +832,7 @@ ext_modules = [
sources = ['sage/matrix/matrix_modn_sparse.pyx']),
Extension('sage.matrix.matrix_mpolynomial_dense',
@ -116,7 +116,7 @@ diff -up src/module_list.py.orig src/module_list.py
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
Extension('sage.matrix.matrix_polynomial_dense',
@@ -1109,7 +1131,8 @@ ext_modules = [
@@ -1108,7 +1130,8 @@ ext_modules = [
language = 'c++'),
Extension("sage.rings.complex_arb",
@ -126,7 +126,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.rings.complex_double',
sources = ['sage/rings/complex_double.pyx'],
@@ -1179,7 +1202,8 @@ ext_modules = [
@@ -1184,7 +1207,8 @@ ext_modules = [
sources = ['sage/rings/real_interval_absolute.pyx']),
Extension("sage.rings.real_arb",
@ -136,7 +136,7 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.rings.real_lazy',
sources = ['sage/rings/real_lazy.pyx']),
@@ -1262,6 +1286,7 @@ ext_modules = [
@@ -1267,6 +1291,7 @@ ext_modules = [
Extension('sage.rings.number_field.number_field_element_quadratic',
sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'],
@ -144,7 +144,7 @@ diff -up src/module_list.py.orig src/module_list.py
libraries=['ntl'],
language = 'c++'),
@@ -1401,12 +1426,15 @@ ext_modules = [
@@ -1406,12 +1431,15 @@ ext_modules = [
sources = ['sage/rings/polynomial/multi_polynomial.pyx']),
Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
@ -160,7 +160,7 @@ diff -up src/module_list.py.orig src/module_list.py
sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx']),
Extension('sage.rings.polynomial.multi_polynomial_ring_base',
@@ -1419,7 +1447,8 @@ ext_modules = [
@@ -1424,7 +1452,8 @@ ext_modules = [
sources = ['sage/rings/polynomial/polydict.pyx']),
Extension('sage.rings.polynomial.polynomial_complex_arb',
@ -170,9 +170,9 @@ diff -up src/module_list.py.orig src/module_list.py
Extension('sage.rings.polynomial.polynomial_compiled',
sources = ['sage/rings/polynomial/polynomial_compiled.pyx']),
diff -du src/setup.py.orig src/setup.py
--- src/setup.py.orig 2018-10-25 14:05:20.779815082 -0600
+++ src/setup.py 2018-10-25 16:16:46.619825283 -0600
diff -up src/setup.py.orig src/setup.py
--- src/setup.py.orig 2019-01-16 09:45:32.570933224 -0700
+++ src/setup.py 2019-01-16 09:47:07.805224279 -0700
@@ -85,6 +85,7 @@ except KeyError:
# search for dependencies and add to gcc -I<path>

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
--- src/sage/interfaces/jmoldata.py.orig 2018-10-17 17:13:47.000000000 -0600
+++ src/sage/interfaces/jmoldata.py 2018-10-25 13:22:07.965272901 -0600
--- src/sage/interfaces/jmoldata.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/jmoldata.py 2019-01-16 09:43:40.755939704 -0700
@@ -148,8 +148,6 @@ class JmolData(SageObject):
sage: print(os.path.exists(testfile)) # optional -- java
True

21
sagemath-latte.patch Normal file
View file

@ -0,0 +1,21 @@
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2019-01-16 09:44:45.946769879 -0700
+++ src/sage/interfaces/latte.py 2019-01-16 09:47:33.355765786 -0700
@@ -112,7 +112,7 @@ def count(arg, ehrhart_polynomial=False,
# Check that LattE is present
Latte().require()
- args = ['count']
+ args = ['latte-count']
if ehrhart_polynomial and multivariate_generating_function:
raise ValueError
if ehrhart_polynomial:
@@ -305,7 +305,7 @@ def integrate(arg, polynomial=None, algo
# Check that LattE is present
Latte().require()
- args = ['integrate']
+ args = ['latte-integrate']
got_polynomial = True if polynomial is not None else False

View file

@ -1,20 +1,12 @@
diff -up src/sage/libs/lcalc/lcalc_Lfunction.pxd.orig src/sage/libs/lcalc/lcalc_Lfunction.pxd
--- src/sage/libs/lcalc/lcalc_Lfunction.pxd.orig 2018-05-05 16:21:24.000000000 -0600
+++ src/sage/libs/lcalc/lcalc_Lfunction.pxd 2018-05-22 13:31:10.717337490 -0600
@@ -1,6 +1,6 @@
# Lcalc requires GNU extensions, it does not strictly conform to any
# C++ standard: https://trac.sagemath.org/ticket/23341
-# distutils: extra_compile_args = -std=gnu++98
+# distutils: extra_compile_args = -std=gnu++11
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2019-01-16 09:42:41.397004883 -0700
+++ src/module_list.py 2019-01-16 09:45:43.332740109 -0700
@@ -513,7 +513,7 @@ ext_modules = [
Extension('sage.libs.lcalc.lcalc_Lfunction',
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
libraries = ['m', 'ntl', 'Lfunction'],
- extra_compile_args=["-O3", "-ffast-math"],
+ extra_compile_args=["-std=gnu++11", "-ffast-math"],
language = 'c++'),
cdef extern from "lcalc_sage.h":
ctypedef struct doublevec "std::vector<double>":
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 2018-05-05 16:21:24.000000000 -0600
+++ src/sage/libs/lcalc/lcalc_sage.h 2018-05-22 13:30:32.012839737 -0600
@@ -1,4 +1,4 @@
-#include "libLfunction/L.h"
+#include "Lfunction/L.h"
int *new_ints(int l)
{
Extension('sage.libs.libecm',

View file

@ -1,6 +1,6 @@
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2018-10-17 17:13:36.000000000 -0600
+++ src/sage/env.py 2018-10-25 14:10:21.564960823 -0600
--- src/sage/env.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/env.py 2019-01-04 11:08:22.825475344 -0700
@@ -164,7 +164,7 @@ _add_variable_or_fallback('CONWAY_POLYNO
_add_variable_or_fallback('GRAPHS_DATA_DIR', opj('$SAGE_SHARE','graphs'))
_add_variable_or_fallback('ELLCURVE_DATA_DIR',opj('$SAGE_SHARE','ellcurves'))
@ -11,8 +11,8 @@ diff -up src/sage/env.py.orig src/sage/env.py
_add_variable_or_fallback('COMBINATORIAL_DESIGN_DATA_DIR', opj('$SAGE_SHARE', 'combinatorial_designs'))
_add_variable_or_fallback('CREMONA_MINI_DATA_DIR', opj('$SAGE_SHARE', 'cremona'))
diff -up src/sage/libs/gap/test/main.c.orig src/sage/libs/gap/test/main.c
--- src/sage/libs/gap/test/main.c.orig 2018-10-17 17:13:52.000000000 -0600
+++ src/sage/libs/gap/test/main.c 2018-10-25 14:05:51.458727612 -0600
--- src/sage/libs/gap/test/main.c.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/gap/test/main.c 2019-01-04 11:08:22.842475024 -0700
@@ -22,7 +22,7 @@ void eval(char* cmd) {
libgap_start_interaction(cmd);
@ -23,9 +23,9 @@ diff -up src/sage/libs/gap/test/main.c.orig src/sage/libs/gap/test/main.c
char* out = libgap_get_output();
libgap_exit();
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
--- src/sage/libs/gap/util.pyx.orig 2018-10-25 13:50:51.168295628 -0600
+++ src/sage/libs/gap/util.pyx 2018-10-25 14:05:51.458727612 -0600
@@ -25,6 +25,8 @@ from sage.cpython.string cimport str_to_
--- src/sage/libs/gap/util.pyx.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/gap/util.pyx 2019-01-04 11:08:22.843475005 -0700
@@ -27,6 +27,8 @@ from sage.cpython.string cimport str_to_
from sage.interfaces.gap_workspace import prepare_workspace_dir
from sage.env import SAGE_LOCAL, GAP_ROOT_DIR
@ -34,16 +34,16 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
############################################################################
### Hooking into the GAP memory management #################################
@@ -164,7 +166,7 @@ def gap_root():
@@ -185,7 +187,7 @@ def gap_root():
sage: from sage.libs.gap.util import gap_root
sage: gap_root() # random output
- '/home/vbraun/opt/sage-5.3.rc0/local/gap/latest'
+ '/usr/lib/gap'
"""
import os.path
if os.path.exists(GAP_ROOT_DIR):
@@ -232,6 +234,7 @@ cdef initialize():
try:
if os.path.exists(GAP_ROOT_DIR):
@@ -251,6 +253,7 @@ cdef initialize():
libgap_initialize(argc, argv)
gap_error_msg = char_to_str(libgap_get_output())
libgap_finish_interaction()

View file

@ -1,6 +1,6 @@
diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp
--- src/bin/sage-maxima.lisp.orig 2018-10-17 17:13:34.000000000 -0600
+++ src/bin/sage-maxima.lisp 2018-10-25 13:14:53.465538639 -0600
--- src/bin/sage-maxima.lisp.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/bin/sage-maxima.lisp 2019-01-16 09:43:18.550338178 -0700
@@ -4,3 +4,8 @@
(setf *prompt-prefix* "<sage-display>")
@ -11,8 +11,8 @@ diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp
+ *standard-input* (open "/dev/stdin" :direction :input)
+ *standard-output* (open "/dev/stdout" :direction :output))
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
--- src/sage/interfaces/maxima.py.orig 2018-10-17 17:13:51.000000000 -0600
+++ src/sage/interfaces/maxima.py 2018-10-25 13:16:00.326343444 -0600
--- src/sage/interfaces/maxima.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/maxima.py 2019-01-16 09:43:18.552338143 -0700
@@ -546,7 +546,7 @@ class Maxima(MaximaAbstract, Expect):
Expect.__init__(self,
name = 'maxima',

View file

@ -1,6 +1,6 @@
diff -up src/sage/libs/mpfr/__init__.pxd.orig src/sage/libs/mpfr/__init__.pxd
--- src/sage/libs/mpfr/__init__.pxd.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/libs/mpfr/__init__.pxd 2018-08-29 10:41:34.027286042 -0600
--- src/sage/libs/mpfr/__init__.pxd.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/mpfr/__init__.pxd 2019-01-04 11:10:25.215172876 -0700
@@ -96,7 +96,6 @@ cdef extern from "mpfr.h":
int mpfr_sqrt(mpfr_t rop, mpfr_t op, mpfr_rnd_t rnd)
int mpfr_sqrt_ui(mpfr_t rop, unsigned long int op, mpfr_rnd_t rnd)
@ -10,9 +10,9 @@ diff -up src/sage/libs/mpfr/__init__.pxd.orig src/sage/libs/mpfr/__init__.pxd
int mpfr_pow(mpfr_t rop, mpfr_t op1, mpfr_t op2, mpfr_rnd_t rnd)
int mpfr_pow_ui(mpfr_t rop, mpfr_t op1, unsigned long int op2, mpfr_rnd_t rnd)
diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx
--- src/sage/rings/complex_mpc.pyx.orig 2018-08-03 05:10:09.000000000 -0600
+++ src/sage/rings/complex_mpc.pyx 2018-08-29 10:41:34.027286042 -0600
@@ -2225,7 +2225,7 @@ cdef class MPComplexNumber(sage.structur
--- src/sage/rings/complex_mpc.pyx.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/rings/complex_mpc.pyx 2019-01-04 11:10:25.217172839 -0700
@@ -2222,7 +2222,7 @@ cdef class MPComplexNumber(sage.structur
cdef RealNumber a,r
a = self.argument()/n
r = self.abs()
@ -22,8 +22,8 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx
cdef MPComplexNumber z
z = self._new()
diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.pyx
--- src/sage/rings/complex_number.pyx.orig 2018-08-03 05:10:09.000000000 -0600
+++ src/sage/rings/complex_number.pyx 2018-08-29 10:41:34.027286042 -0600
--- src/sage/rings/complex_number.pyx.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/rings/complex_number.pyx 2019-01-04 11:10:25.218172820 -0700
@@ -2276,7 +2276,7 @@ cdef class ComplexNumber(sage.structure.
rho = abs(self)
arg = self.argument() / n
@ -34,9 +34,9 @@ diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.py
mpfr_sin_cos(z.__im, z.__re, arg.value, rnd)
mpfr_mul(z.__re, z.__re, r, rnd)
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
--- src/sage/rings/real_mpfr.pyx.orig 2018-08-03 05:10:09.000000000 -0600
+++ src/sage/rings/real_mpfr.pyx 2018-08-29 10:41:34.028286030 -0600
@@ -5370,7 +5370,7 @@ cdef class RealNumber(sage.structure.ele
--- src/sage/rings/real_mpfr.pyx.orig 2019-01-04 12:22:18.194171036 -0700
+++ src/sage/rings/real_mpfr.pyx 2019-01-16 09:46:36.794780751 -0700
@@ -5384,7 +5384,7 @@ cdef class RealNumber(sage.structure.ele
if algorithm == 1:
x = self._new()
sig_on()

View file

@ -1,7 +1,7 @@
diff -up src/sage/graphs/graph_generators.py.orig src/sage/graphs/graph_generators.py
--- src/sage/graphs/graph_generators.py.orig 2018-10-17 17:13:47.000000000 -0600
+++ src/sage/graphs/graph_generators.py 2018-10-25 14:04:50.496901422 -0600
@@ -911,7 +911,7 @@ class GraphGenerators():
--- src/sage/graphs/graph_generators.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/graphs/graph_generators.py 2019-01-16 09:45:21.999122930 -0700
@@ -912,7 +912,7 @@ class GraphGenerators():
else:
enc_kwargs = {'encoding': 'latin-1'}

View file

@ -1,7 +1,7 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2018-05-16 14:13:22.021406801 -0600
+++ src/module_list.py 2018-05-16 14:15:57.654208949 -0600
@@ -12,7 +12,7 @@ SAGE_INC = '/usr/include'
--- src/module_list.py.orig 2019-01-16 09:47:07.804224297 -0700
+++ src/module_list.py 2019-01-16 09:47:21.611976523 -0700
@@ -11,7 +11,7 @@ SAGE_INC = '/usr/include'
import pkgconfig
# CBLAS can be one of multiple implementations
@ -10,7 +10,7 @@ diff -up src/module_list.py.orig src/module_list.py
cblas_libs = cblas_pc['libraries']
cblas_library_dirs = cblas_pc['library_dirs']
cblas_include_dirs = cblas_pc['include_dirs']
@@ -21,11 +21,9 @@ cblas_include_dirs = cblas_pc['include_d
@@ -20,11 +20,9 @@ cblas_include_dirs = cblas_pc['include_d
if os.path.exists('/usr/lib/libblas.dll.a'):
cblas_libs = ['gslcblas']
@ -26,9 +26,9 @@ diff -up src/module_list.py.orig src/module_list.py
# GD image library
gd_pc = pkgconfig.parse('gdlib')
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2018-05-16 13:16:29.207708998 -0600
+++ src/sage/misc/cython.py 2018-05-16 14:15:57.656208921 -0600
@@ -40,7 +40,7 @@ from sage.misc.sage_ostools import resto
--- src/sage/misc/cython.py.orig 2019-01-04 10:27:47.031123276 -0700
+++ src/sage/misc/cython.py 2019-01-04 11:18:40.060863533 -0700
@@ -39,7 +39,7 @@ from sage.misc.sage_ostools import resto
# CBLAS can be one of multiple implementations

View file

@ -1,53 +1,7 @@
--- build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py.orig 2018-01-24 04:17:47.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py 2018-10-25 13:25:53.284617298 -0600
@@ -2,7 +2,12 @@
"""
from __future__ import absolute_import
import os
-import urllib, urlparse
+try:
+ from urllib.request import urlopen
+ from urllib.parse import urlparse
+except ImportError:
+ from urlparse import urlparse
+ from urllib import urlopen
from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app
from .decorators import login_required, guest_or_login_required, with_lock
from flask_babel import Babel, gettext, ngettext, lazy_gettext
--- build/pkgs/sagenb/src/sagenb/misc/sphinxify.py.orig 2018-06-10 13:56:16.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/misc/sphinxify.py 2018-10-25 13:29:39.187960000 -0600
@@ -19,6 +19,7 @@ AUTHORS:
import os
import re
import shutil
+import six.moves
from tempfile import mkdtemp
# We import Sphinx on demand, to reduce Sage startup time.
@@ -94,9 +95,8 @@ def sphinxify(docstring, format='html'):
suffix = '.txt'
output_name = base_name + suffix
- filed = open(rst_name, 'w')
- filed.write(docstring)
- filed.close()
+ with open(rst_name, 'w') as filed:
+ filed.write(docstring)
# Sphinx constructor: Sphinx(srcdir, confdir, outdir, doctreedir,
# buildername, confoverrides, status, warning, freshenv).
@@ -120,8 +120,8 @@ def sphinxify(docstring, format='html'):
sys.path = old_sys_path
#We need to remove "_" from __builtin__ that the gettext module installs
- import __builtin__
- __builtin__.__dict__.pop('_', None)
+ from six.moves import builtins
+ builtins.__dict__.pop('_', None)
if os.path.exists(output_name):
output = open(output_name, 'r').read()
@@ -481,7 +481,7 @@ skip_picklability_check_modules = [
diff -up build/pkgs/sagenb/src/sagenb/misc/sphinxify.py.orig build/pkgs/sagenb/src/sagenb/misc/sphinxify.py
--- build/pkgs/sagenb/src/sagenb/misc/sphinxify.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/misc/sphinxify.py 2019-01-04 10:34:03.550082474 -0700
@@ -480,7 +480,7 @@ skip_picklability_check_modules = [
#'sage.misc.nested_class_test', # for test only
'sage.misc.latex',
'sage.misc.explain_pickle',
@ -56,7 +10,7 @@
]
def check_nested_class_picklability(app, what, name, obj, skip, options):
@@ -532,7 +532,7 @@ def skip_member(app, what, name, obj, sk
@@ -531,7 +531,7 @@ def skip_member(app, what, name, obj, sk
if 'SAGE_CHECK_NESTED' in os.environ:
check_nested_class_picklability(app, what, name, obj, skip, options)
@ -65,277 +19,42 @@
return True
if (hasattr(obj, '__name__') and obj.__name__.find('.') != -1 and
--- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2018-05-22 10:01:48.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/misc/support.py 2018-10-25 13:30:02.499892169 -0600
@@ -17,7 +17,7 @@ import sys
import pydoc
from six import iteritems
-import __builtin__
+import builtins
try:
from cPickle import PicklingError
@@ -467,7 +467,7 @@ def cython_import(filename, verbose=Fals
use_cache=use_cache,
create_local_c_file=create_local_c_file)
sys.path.append(build_dir)
- return __builtin__.__import__(name)
+ return builtins.__import__(name)
def cython_import_all(filename, globals, verbose=False, compile_message=False,
--- build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig 2018-08-29 08:44:38.823169061 -0600
+++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2018-10-25 13:30:55.707737342 -0600
@@ -20,6 +20,7 @@ import shutil
import textwrap
import time
from cgi import escape
+from sys import maxsize
from sagenb.misc.misc import (word_wrap, strip_string_literals,
set_restrictive_permissions, unicode_str,
@@ -701,9 +702,8 @@ class Cell(Cell_generic):
# start with a random integer so that evaluations of the cell
# from different runs have different version numbers.
- from sys import maxint
from random import randint
- self._version = randint(0,maxint)
+ self._version = randint(0,maxsize)
def __repr__(self):
"""
@@ -2189,9 +2189,8 @@ class Cell(Cell_generic):
except AttributeError:
# start with a random integer so that evaluations of the cell
# from different runs have different version numbers.
- from sys import maxint
from random import randint
- self._version = randint(0,maxint)
+ self._version = randint(0,maxsize)
return self._version
def time(self):
--- build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig 2018-01-24 04:17:38.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2018-10-25 13:35:09.227001150 -0600
@@ -7,7 +7,7 @@ file.
This takes an HTML document, i.e., Sage documentation, and returns it in
the editable format (notebook worksheet format with evaluable examples). It
-also returns a string representing the CSS link for the document. The SGML
+also returns a string representing the CSS link for the document. The HTML
parser is setup to return only the body of the HTML documentation page and
to re-format Sage examples and type-setting.
diff -up build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py
--- build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2019-01-04 10:39:26.659076379 -0700
@@ -25,7 +25,7 @@ This module contains three classes:
.. NOTE::
.. NOTE::
- This extension of sgmllib.SGMLParser was partly inspired by Mark
- This extension of htmllib.HTMLParser was partly inspired by Mark
+ This extension of html.parser.HTMLParser was partly inspired by Mark
Pilgrim's 'Dive Into Python' examples.
AUTHORS:
@@ -111,14 +111,14 @@ WARNING:
#############################################################################
from __future__ import unicode_literals
-from sgmllib import SGMLParser
+from html.parser import HTMLParser
from htmlentitydefs import entitydefs
from flask import Markup
from sagenb.misc.misc import unicode_str
-class genericHTMLProcessor(SGMLParser):
+class genericHTMLProcessor(HTMLParser):
r"""
This class gathers the methods that are common to both classes
:class:`sagenb.notebook.SphinxHTMLProcessor` and
@@ -155,16 +155,16 @@ class genericHTMLProcessor(SGMLParser):
@@ -155,7 +155,7 @@ class genericHTMLProcessor(HTMLParser):
u'<h1 class="title">Title</h1>\n\n<p>nSome text</p>\n\n\n\n'
"""
- # self.feed() is a SGMLParser method and starts everything
"""
- # self.feed() is a HTMLParser method and starts everything
+ # self.feed() is an HTMLParser method and starts everything
# off; Most of the functions here are extensions to
- # SGMLParser, and may never actually be visibly called here.
+ # HTMLParser, and may never actually be visibly called here.
# HTMLParser, and may never actually be visibly called here.
# This module works with unicode literals. In case that input data is
# ascii, exceptions may occur. So, input data must be converted to
# unicode if it were not.
doc_in = unicode_str(doc_in)
- self.feed(doc_in) #SGMLParser call
- self.close() #SGMLParser call
+ self.feed(doc_in) #HTMLParser call
+ self.close() #HTMLParser call
self.hand_off_temp_pieces('to_doc_pieces')
return self.all_pieces.replace('\\(', '').replace('\\)', '').replace('\\[', '').replace('\\]', '')
@@ -390,7 +390,7 @@ class genericHTMLProcessor(SGMLParser):
else:
# first occurrence of an output string
# write /// denoting output
- if output_flag == False:
+ if output_flag is False:
piece += '///'
if p:
piece += '\n' + p
@@ -400,7 +400,29 @@ class genericHTMLProcessor(SGMLParser):
piece += p
piece += '\n}}}\n\n'
return Markup(piece).unescape()
-
+
+ def handle_starttag(self, tag, attrs):
+ """
+ introduced when replacing SGMLParser by HTMLParser
+ """
+ try:
+ method = getattr(self, 'start_' + tag)
+ except AttributeError:
+ self.unknown_starttag(tag, attrs)
+ else:
+ method(attrs)
+
+ def handle_endtag(self, tag):
+ """
+ introduced when replacing SGMLParser by HTMLParser
+ """
+ try:
+ method = getattr(self, 'end_' + tag)
+ except AttributeError:
+ self.unknown_endtag(tag)
+ else:
+ method()
+
##############################################
## General tag handlers
## These just append their HTML to self.temp_pieces.
@@ -473,6 +495,7 @@ class genericHTMLProcessor(SGMLParser):
"""
if self.keep_data:
self.temp_pieces.append(data)
+
def handle_charref(self, ref):
r"""
INPUT:
@@ -540,6 +563,7 @@ class genericHTMLProcessor(SGMLParser):
"""
if self.keep_data:
self.temp_pieces.append("<!--%(data)s-->" % locals())
+
def handle_pi(self, text):
r"""
Handle processing instructions
@@ -585,7 +609,7 @@ class genericHTMLProcessor(SGMLParser):
"""
if self.keep_data:
self.temp_pieces.append("<!%(text)s>" % locals())
-
+
##############################################
## Specific tag handlers
def start_body(self, attrs):
@@ -634,6 +658,7 @@ class genericHTMLProcessor(SGMLParser):
['bunch ', 'of ', 'tmp ', 'strings']
"""
pass
+
def end_html(self):
r"""
INPUT:
@@ -658,7 +683,7 @@ class SphinxHTMLProcessor(genericHTMLPro
def reset(self):
r"""
Initialize necessary variables. Called by
- :meth:`SGMLParser.__init__`.
+ :meth:`HTMLParser.__init__`.
EXAMPLES::
@@ -685,8 +710,8 @@ class SphinxHTMLProcessor(genericHTMLPro
# counters
self.cellcount = 0
-
- SGMLParser.reset(self)
+
+ HTMLParser.reset(self)
def false_positive_input_output_cell(self, cell_piece):
r"""
@@ -733,7 +758,7 @@ class SphinxHTMLProcessor(genericHTMLPro
Once we hit the <div> tag in a highlighted block,
hand of all of the pieces we've encountered so far
and ignore the tag.
-
+
INPUT:
- ``attrs`` - list of tuple
@@ -835,7 +860,7 @@ class SphinxHTMLProcessor(genericHTMLPro
self.hand_off_temp_pieces('to_cell_pieces')
return
self.temp_pieces.append("</div>")
-
+
def start_pre(self, attrs):
r"""
Ignore tag <pre> when inside highligh div.
@@ -1000,6 +1025,7 @@ class SphinxHTMLProcessor(genericHTMLPro
if self.in_highlight_div:
return
self.unknown_starttag('span', attrs)
+
def end_span(self):
r"""
Ignore all spans that occur within highlighted blocks
@@ -1095,7 +1121,7 @@ class docutilsHTMLProcessor(genericHTMLP
def reset(self):
r"""
Initialize necessary variables. Called by
- :meth:`SGMLParser.__init__`.
+ :meth:`HTMLParser.__init__`.
EXAMPLES::
@@ -1125,8 +1151,8 @@ class docutilsHTMLProcessor(genericHTMLP
# counters
self.cellcount = 0
-
- SGMLParser.reset(self)
+
+ HTMLParser.reset(self)
def false_positive_input_output_cell(self, cell_piece):
r"""
@@ -1162,7 +1188,7 @@ class docutilsHTMLProcessor(genericHTMLP
piece = piece.replace('}','}&nbsp;')
piece += '\n</pre>'
return piece
-
+
#############################################
## Specific tag handlers
##
--- build/pkgs/sagenb/src/sagenb/notebook/notebook.py.orig 2018-05-22 10:16:28.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/notebook/notebook.py 2018-10-25 13:35:37.122921027 -0600
@@ -1268,7 +1268,7 @@ class Notebook(object):
W.set_not_computing()
def quit(self):
- for W in self.__worksheets.values():
+ for W in list(self.__worksheets.values()):
W.quit()
def update_worksheet_processes(self):
diff -up build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py.orig build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py
--- build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py 2019-01-05 10:36:28.072250833 -0700
@@ -59,7 +59,7 @@ class Parser:
'parent': r'(?:%s)?' % re.escape(PARENT_PREFIX),
}
url_rule = r'%(url_guard)s(%(url)s)\:([^\s\<%(punct)s]|([%(punct)s][^\s\<%(punct)s]))+' % {
- 'url_guard': ur'(^|(?<!\w))',
+ 'url_guard': r'(^|(?<!\w))',
'url': url_pattern,
'punct': punct_pattern,
}
diff -up build/pkgs/sagetex/src/extractsagecode.py.orig build/pkgs/sagetex/src/extractsagecode.py
--- build/pkgs/sagetex/src/extractsagecode.py.orig 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/extractsagecode.py 2018-10-25 13:36:23.465787905 -0600
+++ build/pkgs/sagetex/src/extractsagecode.py 2019-01-04 10:40:25.729978335 -0700
@@ -45,8 +45,8 @@ See the SageTeX documentation for more d
try:
@ -347,8 +66,9 @@
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 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/makestatic.py 2018-10-25 13:36:41.193736977 -0600
+++ build/pkgs/sagetex/src/makestatic.py 2019-01-04 10:40:50.967509206 -0700
@@ -45,8 +45,8 @@ See the SageTeX documentation for more d
try:
@ -360,8 +80,9 @@
usage()
sys.exit(2)
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/remote-sagetex.py 2018-10-25 13:38:40.218395127 -0600
+++ build/pkgs/sagetex/src/remote-sagetex.py 2019-01-04 10:43:03.728041391 -0700
@@ -24,12 +24,11 @@
## You should have received a copy of the GNU General Public License along
## with this program. If not, see <http://www.gnu.org/licenses/>.
@ -424,8 +145,9 @@
if not password:
from getpass import getpass
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 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/run-sagetex-if-necessary.py 2018-10-25 13:39:39.506224849 -0600
+++ build/pkgs/sagetex/src/run-sagetex-if-necessary.py 2019-01-04 10:44:12.087770682 -0700
@@ -58,7 +58,7 @@ with open(src + '.tex') as texf:
break
@ -465,8 +187,9 @@
else:
- print 'Not necessary to run Sage on {0}.'.format(src)
+ print('Not necessary to run Sage on {0}.'.format(src))
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/sagetexparse.py 2018-10-25 13:40:02.522158738 -0600
+++ build/pkgs/sagetex/src/sagetexparse.py 2019-01-04 10:44:35.398337372 -0700
@@ -52,7 +52,7 @@ class SoutParser():
try:
OneOrMore(parselabel).parseFile(fn)
@ -476,8 +199,9 @@
sys.exit(1)
def newlabel(self, s, l, t):
self.label.append(t.result[1:-1])
diff -up build/pkgs/sagetex/src/sagetex.py.orig build/pkgs/sagetex/src/sagetex.py
--- build/pkgs/sagetex/src/sagetex.py.orig 2015-08-26 17:28:42.000000000 -0600
+++ build/pkgs/sagetex/src/sagetex.py 2018-10-25 13:42:20.168763355 -0600
+++ build/pkgs/sagetex/src/sagetex.py 2019-01-04 10:46:09.685584716 -0700
@@ -73,10 +73,10 @@ from your current version of Sage; see
http://www.sagemath.org/doc/installation/sagetex.html.""".format(jobname,
version, pyversion)
@ -530,8 +254,9 @@
_p_.save(filename=newfilename, **kwargs)
break
else:
--- src/doc/common/conf.py.orig 2018-10-17 17:13:34.000000000 -0600
+++ src/doc/common/conf.py 2018-10-25 13:43:39.882534395 -0600
diff -up src/doc/common/conf.py.orig src/doc/common/conf.py
--- src/doc/common/conf.py.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/doc/common/conf.py 2019-01-04 10:46:46.293895744 -0700
@@ -490,7 +490,7 @@ skip_picklability_check_modules = [
#'sage.misc.nested_class_test', # for test only
'sage.misc.latex',
@ -550,48 +275,30 @@
return True
objname = getattr(obj, "__name__", None)
--- src/sage/arith/long.pxd.orig 2018-10-17 17:13:35.000000000 -0600
+++ src/sage/arith/long.pxd 2018-10-25 13:46:00.073131738 -0600
@@ -19,7 +19,7 @@ from cpython.object cimport Py_SIZE
from cpython.int cimport PyInt_AS_LONG
from cpython.long cimport PyLong_AsLong
from cpython.number cimport PyNumber_Index, PyIndex_Check
-from cpython.longintrepr cimport PyLongObject, PyLong_SHIFT, digit
+from cpython.longintrepr cimport py_long, PyLong_SHIFT, digit
from sage.libs.gmp.mpz cimport mpz_fits_slong_p, mpz_get_si
from sage.rings.integer_fake cimport is_Integer, Integer_AS_MPZ
@@ -208,7 +208,7 @@ cdef inline bint integer_check_long_py(x
return 0
# x is a Python "long" (called "int" on Python 3)
- cdef const digit* D = (<PyLongObject*>x).ob_digit
+ cdef const digit* D = (<py_long>x).ob_digit
cdef Py_ssize_t size = Py_SIZE(x)
# We assume that PyLong_SHIFT is 15 on a 32-bit system and 30 on a
--- src/sage/combinat/finite_state_machine.py.orig 2018-10-17 17:13:35.000000000 -0600
+++ src/sage/combinat/finite_state_machine.py 2018-10-25 13:47:08.277935821 -0600
@@ -937,7 +937,7 @@ from six.moves import range
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 2018-12-22 16:37:07.000000000 -0700
+++ src/sage/combinat/finite_state_machine.py 2019-01-04 10:49:30.519802159 -0700
@@ -934,7 +934,7 @@ import six
from six.moves import range, zip_longest, zip
from six import itervalues
from six.moves import zip_longest
-import collections
+import collections.abc
import itertools
import sage
@@ -14140,7 +14140,7 @@ def is_FSMProcessIterator(PI):
from sage.calculus.var import var
@@ -14253,7 +14253,7 @@ def is_FSMProcessIterator(PI):
class FSMProcessIterator(sage.structure.sage_object.SageObject,
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
--- src/sage/cpython/dict_del_by_value.pyx.orig 2018-10-17 17:13:36.000000000 -0600
+++ src/sage/cpython/dict_del_by_value.pyx 2018-10-25 13:48:05.887770337 -0600
diff -up src/sage/cpython/dict_del_by_value.pyx.orig src/sage/cpython/dict_del_by_value.pyx
--- src/sage/cpython/dict_del_by_value.pyx.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/cpython/dict_del_by_value.pyx 2019-01-04 10:50:27.178734667 -0700
@@ -347,8 +347,8 @@ ELIF PY_VERSION_HEX>=0x03060000:
cdef MyPyDictKeysObject * keys = <MyPyDictKeysObject *>(mp.ma_keys)
cdef size_t perturb
@ -603,48 +310,135 @@
if mp.ma_values != NULL:
print ("del_dictitem_by_exact_value cannot be applied to a shared key dict")
--- src/sage/libs/gap/util.pyx.orig 2018-10-17 17:13:52.000000000 -0600
+++ src/sage/libs/gap/util.pyx 2018-10-25 13:50:51.168295628 -0600
@@ -171,7 +171,7 @@ def gap_root():
return GAP_ROOT_DIR
print('The gap-4.5.5.spkg (or later) seems to be not installed!')
gap_sh = open(os.path.join(SAGE_LOCAL, 'bin', 'gap')).read().splitlines()
- gapdir = filter(lambda dir:dir.strip().startswith('GAP_DIR'), gap_sh)[0]
+ gapdir = next(filter(lambda dir:dir.strip().startswith('GAP_DIR'), gap_sh))
gapdir = gapdir.split('"')[1]
gapdir = gapdir.replace('$SAGE_LOCAL', SAGE_LOCAL)
return gapdir
--- src/sage/libs/gmp/pylong.pyx.orig 2018-10-17 17:13:52.000000000 -0600
+++ src/sage/libs/gmp/pylong.pyx 2018-10-25 13:52:12.296063129 -0600
@@ -28,7 +28,7 @@ AUTHORS:
from cpython.object cimport Py_SIZE
from cpython.int cimport PyInt_FromLong
from cpython.long cimport PyLong_FromLong
-from cpython.longintrepr cimport _PyLong_New, PyLongObject, digit, PyLong_SHIFT
+from cpython.longintrepr cimport _PyLong_New, py_long, digit, PyLong_SHIFT
from .mpz cimport *
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 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/geometry/triangulation/point_configuration.py 2019-01-15 14:12:54.343637341 -0700
@@ -625,7 +625,7 @@ class PointConfiguration(UniqueRepresent
['{{0,1,2,4},{1,2,3,4}}']
"""
timeout = 600
- proc = pexpect.spawn(executable, timeout=timeout)
+ proc = pexpect.spawn(executable, timeout=timeout, encoding='utf-8')
proc.expect(r'Evaluating Commandline Options \.\.\.')
proc.expect(r'\.\.\. done\.')
proc.setecho(0)
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
--- src/sage/interfaces/frobby.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/frobby.py 2019-01-15 14:09:39.587064736 -0700
@@ -77,7 +77,7 @@ class Frobby:
print("Frobby command: ", repr(command))
print("Frobby input:\n", input)
cdef extern from *:
@@ -54,7 +54,7 @@ cdef mpz_get_pylong_large(mpz_srcptr z):
cdef size_t nbits = mpz_sizeinbase(z, 2)
cdef size_t pylong_size = (nbits + PyLong_SHIFT - 1) // PyLong_SHIFT
L = _PyLong_New(pylong_size)
- mpz_export((<PyLongObject*>L).ob_digit, NULL,
+ mpz_export(L.ob_digit, NULL,
-1, sizeof(digit), 0, PyLong_nails, z)
if mpz_sgn(z) < 0:
# Set correct size (use a pointer to hack around Cython's
@@ -91,7 +91,7 @@ cdef int mpz_set_pylong(mpz_ptr z, L) ex
if pylong_size < 0:
pylong_size = -pylong_size
mpz_import(z, pylong_size, -1, sizeof(digit), 0, PyLong_nails,
- (<PyLongObject*>L).ob_digit)
+ (<py_long>L).ob_digit)
if Py_SIZE(L) < 0:
mpz_neg(z, z)
- process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE)
+ process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE, encoding='utf-8')
output, err = process.communicate(input = input)
--- src/sage/misc/parser.pyx.orig 2018-10-17 17:13:54.000000000 -0600
+++ src/sage/misc/parser.pyx 2018-10-25 13:57:47.183108335 -0600
if verbose:
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
--- src/sage/interfaces/gfan.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/gfan.py 2019-01-17 16:15:45.185372585 -0700
@@ -66,7 +66,7 @@ class Gfan(object):
if six.PY2:
enc_kwargs = {}
else:
- enc_kwargs = {'encoding': 'latin-1'}
+ enc_kwargs = {'encoding': 'utf-8'}
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
**enc_kwargs)
diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py
--- src/sage/interfaces/gp.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/gp.py 2019-01-15 15:32:12.479565952 -0700
@@ -934,17 +934,6 @@ class GpElement(ExpectElement):
"""
return repr(self.type()) == 't_STR'
- def __long__(self):
- """
- 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
--- src/sage/interfaces/latte.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/latte.py 2019-01-16 09:44:45.946769879 -0700
@@ -147,6 +147,7 @@ def count(arg, ehrhart_polynomial=False,
latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE,
stderr=(None if verbose else PIPE),
+ encoding='utf-8',
cwd=str(SAGE_TMP))
ans, err = latte_proc.communicate(arg)
@@ -352,6 +353,7 @@ def integrate(arg, polynomial=None, algo
latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE,
stderr=(None if verbose else PIPE),
+ encoding='utf-8',
cwd=str(SAGE_TMP))
ans, err = latte_proc.communicate(arg)
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
--- src/sage/interfaces/sagespawn.pyx.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/sagespawn.pyx 2019-01-16 12:08:26.371966835 -0700
@@ -1,6 +1,6 @@
"""
Sage wrapper around pexpect's ``spawn`` class and
-the ptyprocess's ``PtyProcess`` class.
+the ptyprocess's ``PtyProcessUnicode`` class.
AUTHOR:
@@ -21,7 +21,7 @@ AUTHOR:
#*****************************************************************************
from pexpect import *
-from ptyprocess import PtyProcess
+from ptyprocess import PtyProcessUnicode
from cpython.ref cimport Py_INCREF
from libc.signal cimport *
@@ -30,7 +30,6 @@ from posix.unistd cimport getpid, getpgi
from time import sleep
-from sage.cpython.string cimport str_to_bytes
from sage.interfaces.process cimport ContainChildren
@@ -171,7 +170,7 @@ class SageSpawn(spawn):
return ret
-class SagePtyProcess(PtyProcess):
+class SagePtyProcess(PtyProcessUnicode):
def close(self, force=None):
"""
Quit the child process: send the quit string, close the
@@ -192,11 +191,7 @@ class SagePtyProcess(PtyProcess):
if self.quit_string is not None:
try:
# This can fail if the process already exited
- # PtyProcess.write takes bytes; ideally we would use
- # an encoding picked specifically for the target process
- # but the default (UTF-8) will do now, since I don't
- # think we have any non-ASCII quit_strings anyways.
- self.write(str_to_bytes(self.quit_string))
+ self.write(self.quit_string)
except (OSError, IOError):
pass
self.fileobj.close()
diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx
--- src/sage/misc/parser.pyx.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/misc/parser.pyx 2019-01-04 10:57:51.277367597 -0700
@@ -96,7 +96,7 @@ def token_to_str(int token):
@ -943,20 +737,22 @@
tokens.backtrack()
return self.p_list(tokens)
else:
--- src/sage/plot/plot3d/plot3d.py.orig 2018-10-17 17:14:08.000000000 -0600
+++ src/sage/plot/plot3d/plot3d.py 2018-10-25 13:58:48.502933505 -0600
@@ -194,7 +194,8 @@ class _Coordinates(object):
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
--- src/sage/plot/plot3d/plot3d.py.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/plot/plot3d/plot3d.py 2019-01-04 10:58:51.476233419 -0700
@@ -188,7 +188,8 @@ class _Coordinates(object):
sage: arb((x+z,y*z,z), z, (x,y))
Arbitrary Coordinates coordinate transform (z in terms of x, y)
"""
import inspect
- all_vars = 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=args[1:]
if set(all_vars) != set(indep_vars + [dep_var]):
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
self.dep_var = dep_var
--- src/sage/plot/point.py.orig 2018-10-17 17:14:09.000000000 -0600
+++ src/sage/plot/point.py 2018-10-25 13:59:15.278857161 -0600
diff -up src/sage/plot/point.py.orig src/sage/plot/point.py
--- src/sage/plot/point.py.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/plot/point.py 2019-01-04 10:59:15.506780663 -0700
@@ -29,7 +29,7 @@ TESTS::
from sage.misc.decorators import options, rename_keyword
from sage.plot.colors import to_mpl_color
@ -975,8 +771,9 @@
points = list(points)
try:
--- src/sage/repl/display/fancy_repr.py.orig 2018-10-17 17:14:09.000000000 -0600
+++ src/sage/repl/display/fancy_repr.py 2018-10-25 14:00:10.301700282 -0600
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 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/repl/display/fancy_repr.py 2019-01-04 11:00:18.210599287 -0700
@@ -15,7 +15,7 @@ Representations of objects.
import types
@ -995,20 +792,23 @@
p.text(klass_repr(obj))
else:
# A user-provided repr. Find newlines and replace them with p.break_()
--- src/sage/repl/ipython_kernel/interact.py.orig 2018-10-17 17:14:09.000000000 -0600
+++ src/sage/repl/ipython_kernel/interact.py 2018-10-25 14:00:53.038578439 -0600
@@ -36,7 +36,7 @@ EXAMPLES::
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 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/repl/ipython_kernel/interact.py 2019-01-04 11:01:50.722856305 -0700
@@ -35,7 +35,8 @@ EXAMPLES::
from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons
from ipywidgets.widgets.interaction import interactive, signature
from copy import copy
-from collections import Iterable, Iterator
-from collections import Iterable, Iterator, OrderedDict
+from collections.abc import Iterable, Iterator
+from collections import OrderedDict
from .widgets import EvalText, SageColorPicker
from sage.structure.element import parent
from sage.symbolic.ring import SR
--- src/sage/rings/integer.pyx.orig 2018-10-17 17:14:11.000000000 -0600
+++ src/sage/rings/integer.pyx 2018-10-25 14:01:31.320469294 -0600
@@ -6940,7 +6940,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
diff -up src/sage/rings/integer.pyx.orig
--- src/sage/rings/integer.pyx.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/rings/integer.pyx 2019-01-04 11:02:56.122624135 -0700
@@ -6976,7 +6976,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
while x[0] == c' ': x += 1 # Strip spaces
# Disallow a sign here
@ -1017,8 +817,22 @@
x = "" # Force an error below
assert base >= 2
--- src/sage/rings/real_mpfi.pyx.orig 2018-10-17 17:14:17.000000000 -0600
+++ src/sage/rings/real_mpfi.pyx 2018-10-25 14:02:07.823365223 -0600
diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx
--- src/sage/rings/polynomial/pbori.pyx.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/rings/polynomial/pbori.pyx 2019-01-04 12:21:06.204500703 -0700
@@ -4782,8 +4782,7 @@ cdef class PolynomialConstruct:
# So, it is just a conversion. [Simon King]
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
- raise TypeError("Cannot generate Boolean polynomial from %s , %s%" %
- (type(x), type(ring)))
+ raise TypeError(f"Cannot generate Boolean polynomial from {type(x)}, {type(ring)}")
cdef class MonomialConstruct:
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
--- src/sage/rings/real_mpfi.pyx.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/rings/real_mpfi.pyx 2019-01-04 11:03:53.650540277 -0700
@@ -1951,12 +1951,12 @@ cdef class RealIntervalFieldElement(Ring
cdef long digits
@ -1043,8 +857,33 @@
digits -= 1
mant_string = bytes_to_str(tmp_cstr+1)
sign_string = bytes_to_str(b'-')
--- src/sage/symbolic/expression.pyx.orig 2018-10-17 17:14:17.000000000 -0600
+++ src/sage/symbolic/expression.pyx 2018-10-25 14:03:50.129073537 -0600
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
--- src/sage/rings/real_mpfr.pyx.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/rings/real_mpfr.pyx 2019-01-04 12:22:18.194171036 -0700
@@ -2032,7 +2032,7 @@ cdef class RealNumber(sage.structure.ele
if s is NULL:
raise RuntimeError("unable to convert an mpfr number to a string")
# t contains just digits (no sign, decimal point or exponent)
- if s[0] == '-':
+ if s[0] == c'-':
sgn = "-"
t = char_to_str(s + 1)
else:
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
--- src/sage/structure/sage_object.pyx.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/structure/sage_object.pyx 2019-01-04 13:48:09.055790438 -0700
@@ -665,7 +665,7 @@ cdef class SageObject:
try:
s = self._interface_init_(I)
except Exception:
- raise NotImplementedError("coercion of object %s to %s not implemented:\n%s\n%s" % (repr(self), I))
+ raise NotImplementedError(f"coercion of object {repr(self)} to {I} not implemented")
X = I(s)
if c:
try:
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
--- src/sage/symbolic/expression.pyx.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage/symbolic/expression.pyx 2019-01-04 11:04:35.829745704 -0700
@@ -12955,7 +12955,7 @@ cdef class hold_class:
sage: SR(2)^5
32
@ -1063,12 +902,14 @@
def start(self):
"""
--- src/setup.py.orig 2018-10-25 11:40:44.402943434 -0600
+++ src/setup.py 2018-10-25 14:04:15.582000968 -0600
@@ -284,6 +284,7 @@ class sage_build_cython(Command):
diff -up src/setup.py.orig src/setup.py
--- src/setup.py.orig 2019-01-04 10:27:47.032123257 -0700
+++ src/setup.py 2019-01-04 11:05:11.337077724 -0700
@@ -284,7 +284,7 @@ class sage_build_cython(Command):
cdivision=True,
embedsignature=True,
fast_getattr=True,
- language_level="2",
+ language_level=3,
preliminary_late_includes_cy28=True,
profile=self.profile,

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
--- src/sage/interfaces/qepcad.py.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/interfaces/qepcad.py 2018-08-29 10:43:25.856903772 -0600
--- src/sage/interfaces/qepcad.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/qepcad.py 2019-01-16 09:46:44.714638633 -0700
@@ -530,7 +530,7 @@ TESTS:
Check the qepcad configuration file::

View file

@ -1,6 +1,6 @@
diff -up src/sage/all.py.orig src/sage/all.py
--- src/sage/all.py.orig 2018-08-03 05:10:08.000000000 -0600
+++ src/sage/all.py 2018-08-29 08:45:06.117831555 -0600
--- src/sage/all.py.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/sage/all.py 2019-01-16 09:43:07.639533969 -0700
@@ -284,11 +284,11 @@ def _write_started_file():
Check that the file exists when Sage is running::

View file

@ -1,7 +1,7 @@
diff -up src/module_list.py.orig src/module_list.py
--- src/module_list.py.orig 2018-08-29 08:34:50.846439644 -0600
+++ src/module_list.py 2018-08-29 08:35:19.927079956 -0600
@@ -3,7 +3,7 @@ from glob import glob
--- src/module_list.py.orig 2019-01-16 09:42:29.021226961 -0700
+++ src/module_list.py 2019-01-16 09:42:41.397004883 -0700
@@ -2,7 +2,7 @@ import os
from distutils.extension import Extension
from sage.env import SAGE_LOCAL
@ -11,9 +11,9 @@ diff -up src/module_list.py.orig src/module_list.py
#########################################################
### pkg-config setup
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2018-08-03 05:10:09.000000000 -0600
+++ src/sage/misc/cython.py 2018-08-29 08:35:19.954079622 -0600
@@ -601,7 +601,7 @@ def cython(filename, verbose=0, compile_
--- src/sage/misc/cython.py.orig 2018-12-22 16:37:09.000000000 -0700
+++ src/sage/misc/cython.py 2019-01-04 10:27:47.031123276 -0700
@@ -600,7 +600,7 @@ def cython(filename, verbose=0, compile_
ext = Extension(name,
sources=[pyxfile] + extra_sources,
libraries=libs,
@ -23,9 +23,9 @@ diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
language=language)
diff -up src/setup.py.orig src/setup.py
--- src/setup.py.orig 2018-08-03 05:10:09.000000000 -0600
+++ src/setup.py 2018-08-29 08:35:19.955079610 -0600
@@ -370,9 +370,8 @@ class sage_build_cython(Command):
--- src/setup.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/setup.py 2019-01-04 10:27:47.032123257 -0700
@@ -371,9 +371,8 @@ class sage_build_cython(Command):
# Debugging
gdb_debug=self.debug,
output_dir=os.path.join(self.build_lib, "sage"),
@ -37,7 +37,7 @@ diff -up src/setup.py.orig src/setup.py
)
# Filter out extensions with skip_build=True
@@ -881,9 +880,6 @@ class sage_install(install):
@@ -882,9 +881,6 @@ class sage_install(install):
install.run(self)
self.install_kernel_spec()
log.info('Cleaning up stale installed files....')
@ -47,7 +47,7 @@ diff -up src/setup.py.orig src/setup.py
def install_kernel_spec(self):
"""
@@ -900,40 +896,6 @@ class sage_install(install):
@@ -901,40 +897,6 @@ class sage_install(install):
# the install_data directory for installing our Jupyter files.
SageKernelSpec.update(prefix=self.install_data)

View file

@ -1,6 +1,6 @@
diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
--- src/sage/doctest/control.py.orig 2018-10-17 17:13:36.000000000 -0600
+++ src/sage/doctest/control.py 2018-10-25 11:40:58.936908341 -0600
--- src/sage/doctest/control.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/doctest/control.py 2019-01-16 09:42:51.238828275 -0700
@@ -106,7 +106,6 @@ class DocTestDefaults(SageObject):
self.valgrind = False
self.massif = False
@ -9,7 +9,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
self.failed = False
self.new = False
self.show_skipped = False
@@ -308,7 +307,7 @@ class DocTestController(SageObject):
@@ -309,7 +308,7 @@ class DocTestController(SageObject):
if options.gdb or options.debug:
# Interactive debuggers: "infinite" timeout
options.timeout = 0
@ -18,7 +18,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
# Non-interactive debuggers: 48 hours
options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60))
elif options.long:
@@ -1094,13 +1093,8 @@ class DocTestController(SageObject):
@@ -1099,13 +1098,8 @@ class DocTestController(SageObject):
elif opt.cachegrind:
toolname = "cachegrind"
flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "")
@ -32,7 +32,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
if "%s" in flags:
flags %= toolname + ".%p" # replace %s with toolname
cmd += flags + sage_cmd
@@ -1185,10 +1179,10 @@ class DocTestController(SageObject):
@@ -1190,10 +1184,10 @@ class DocTestController(SageObject):
"""
opt = self.options
@ -46,8 +46,8 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py
return self.run_val_gdb()
else:
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
--- src/sage/interfaces/singular.py.orig 2018-10-25 11:40:58.937908339 -0600
+++ src/sage/interfaces/singular.py 2018-10-25 13:11:10.256190334 -0600
--- src/sage/interfaces/singular.py.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/interfaces/singular.py 2019-01-16 09:42:51.240828239 -0700
@@ -2264,7 +2264,7 @@ def generate_docstring_dictionary():
node_names.clear()
@ -70,8 +70,8 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
m = re.match(new_node,line)
if m:
diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2018-10-17 17:14:18.000000000 -0600
+++ src/sage_setup/docbuild/ext/multidocs.py 2018-10-25 11:40:58.937908339 -0600
--- src/sage_setup/docbuild/ext/multidocs.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage_setup/docbuild/ext/multidocs.py 2019-01-16 09:42:51.241828221 -0700
@@ -84,8 +84,11 @@ def merge_environment(app, env):
for ind in newalldoc:
# treat subdocument source as orphaned file and don't complain
@ -87,8 +87,8 @@ diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/e
newcite = {}
citations = docenv.domaindata["std"]["citations"]
diff -up src/sage_setup/docbuild/__init__.py.orig src/sage_setup/docbuild/__init__.py
--- src/sage_setup/docbuild/__init__.py.orig 2018-10-25 11:40:58.938908336 -0600
+++ src/sage_setup/docbuild/__init__.py 2018-10-25 13:12:56.110881282 -0600
--- src/sage_setup/docbuild/__init__.py.orig 2018-12-22 16:37:10.000000000 -0700
+++ src/sage_setup/docbuild/__init__.py 2019-01-16 09:42:51.242828203 -0700
@@ -279,13 +279,14 @@ def build_many(target, args):
# map_async handles KeyboardInterrupt correctly. Plain map and
# apply_async does not, so don't use it.

View file

@ -1,6 +1,6 @@
diff -up build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig build/pkgs/sagenb/src/sagenb/flask_version/base.py
--- build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig 2018-01-24 04:17:47.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2018-08-29 08:44:38.823169061 -0600
--- build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2019-01-04 10:28:38.099158223 -0700
@@ -7,8 +7,6 @@ from functools import partial
from flask import Flask, Blueprint, url_for, request, session, redirect, g, make_response, current_app, render_template
from .decorators import login_required, guest_or_login_required, with_lock
@ -8,7 +8,7 @@ diff -up build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig build/pkgs/sage
-# Make flask use the old session foo from <=flask-0.9
-from flask_oldsessions import OldSecureCookieSessionInterface
from flask.ext.autoindex import AutoIndex
from flask_autoindex import AutoIndex
from sage.env import SAGE_SRC, SAGE_DOC
@@ -28,7 +26,6 @@ class SageNBFlask(Flask):
def __init__(self, *args, **kwds):
@ -40,9 +40,9 @@ diff -up build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig build/pkgs/sage
mimetypes.add_type('text/plain','.jmol')
diff -up build/pkgs/sagenb/src/sagenb/misc/misc.py.orig build/pkgs/sagenb/src/sagenb/misc/misc.py
--- build/pkgs/sagenb/src/sagenb/misc/misc.py.orig 2017-06-02 16:24:20.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/misc/misc.py 2018-08-29 08:44:38.823169061 -0600
@@ -184,7 +184,8 @@ def pad_zeros(s, size=3):
--- build/pkgs/sagenb/src/sagenb/misc/misc.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/misc/misc.py 2019-01-04 10:28:38.099158223 -0700
@@ -196,7 +196,8 @@ def pad_zeros(s, size=3):
SAGENB_ROOT = os.path.split(resource_filename(__name__, ''))[0]
@ -53,9 +53,9 @@ diff -up build/pkgs/sagenb/src/sagenb/misc/misc.py.orig build/pkgs/sagenb/src/sa
if 'DOT_SAGENB' in os.environ:
DOT_SAGENB = os.environ['DOT_SAGENB']
diff -up build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig build/pkgs/sagenb/src/sagenb/notebook/cell.py
--- build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig 2018-01-24 04:17:38.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2018-08-29 08:44:38.823169061 -0600
@@ -2384,8 +2384,8 @@ class Cell(Cell_generic):
--- build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2019-01-04 10:28:38.100158204 -0700
@@ -2387,8 +2387,8 @@ class Cell(Cell_generic):
with open(jmol_name, 'r') as f:
jmol_script = f.read()
jmol_script = jmol_script.replace(
@ -67,8 +67,8 @@ diff -up build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig build/pkgs/sagenb/sr
f.write(jmol_script)
diff -up build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py
--- build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig 2018-05-22 10:16:28.000000000 -0600
+++ build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py 2018-08-29 08:44:38.824169048 -0600
--- build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig 2018-11-05 08:45:39.000000000 -0700
+++ build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py 2019-01-04 10:28:38.101158185 -0700
@@ -53,12 +53,11 @@ sagenb.notebook.misc.DIR = %(cwd)r #We s
# Flask #
#########

View file

@ -1,6 +1,6 @@
diff -up src/bin/sage.orig src/bin/sage
--- src/bin/sage.orig 2018-10-17 17:13:34.000000000 -0600
+++ src/bin/sage 2018-10-24 15:19:11.805131334 -0600
--- src/bin/sage.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/bin/sage 2019-01-16 09:42:10.064567132 -0700
@@ -26,13 +26,10 @@ usage() {
echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file"
echo " -advanced -- list all command line options"
@ -618,9 +618,9 @@ diff -up src/bin/sage.orig src/bin/sage
exec sage-startuptime.py "$@"
fi
diff -up src/bin/sage-runtests.orig src/bin/sage-runtests
--- src/bin/sage-runtests.orig 2018-10-17 17:13:34.000000000 -0600
+++ src/bin/sage-runtests 2018-10-24 15:19:11.805131334 -0600
@@ -76,10 +76,6 @@ if __name__ == "__main__":
--- src/bin/sage-runtests.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/bin/sage-runtests 2019-01-16 09:42:10.065567115 -0700
@@ -79,10 +79,6 @@ if __name__ == "__main__":
help="run doctests using Valgrind's cachegrind tool. The log "
"files are named sage-cachegrind.PID and can be found in " +
os.path.join(DOT_SAGE, "valgrind"))
@ -632,8 +632,8 @@ diff -up src/bin/sage-runtests.orig src/bin/sage-runtests
parser.add_option("-f", "--failed", action="store_true", default=False,
help="doctest only those files that failed in the previous run")
diff -up src/bin/sage-valgrind.orig src/bin/sage-valgrind
--- src/bin/sage-valgrind.orig 2018-10-17 17:13:34.000000000 -0600
+++ src/bin/sage-valgrind 2018-10-24 15:19:11.805131334 -0600
--- src/bin/sage-valgrind.orig 2018-12-22 16:37:06.000000000 -0700
+++ src/bin/sage-valgrind 2019-01-16 09:42:10.065567115 -0700
@@ -1,16 +1,6 @@
#!/usr/bin/env bash

146
sagemath-sigfpe.patch Normal file
View file

@ -0,0 +1,146 @@
diff -up src/sage/libs/ecl.pyx.orig src/sage/libs/ecl.pyx
--- src/sage/libs/ecl.pyx.orig 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/ecl.pyx 2019-01-17 10:00:52.554236288 -0700
@@ -16,7 +16,7 @@ from __future__ import print_function, a
#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, SIGCHLD, SIGFPE
from libc.signal cimport raise_ as signal_raise
from posix.signal cimport sigaction, sigaction_t
cimport cysignals.signals
@@ -48,9 +48,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)
@@ -239,6 +244,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:
@@ -258,6 +264,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)
@@ -265,8 +273,12 @@ 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()
+
#verify that no SIGCHLD handler was installed
cdef sigaction_t sig_test
sigaction(SIGCHLD, NULL, &sig_test)
@@ -277,6 +289,9 @@ def init_ecl():
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 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/eclsig.h 2019-01-17 10:07:23.060570460 -0700
@@ -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 2018-12-22 16:37:08.000000000 -0700
+++ src/sage/libs/mpmath/ext_impl.pyx 2019-01-17 09:53:24.350937873 -0700
@@ -164,9 +164,9 @@ opts_double_precision.rounding = ROUND_N
opts_mini_prec.prec = 5
opts_mini_prec.rounding = ROUND_D
-cdef double _double_inf = float("1e300") * float("1e300")
-cdef double _double_ninf = -_double_inf
-cdef double _double_nan = _double_inf - _double_inf
+cdef double _double_inf = float("inf")
+cdef double _double_ninf = float("-inf")
+cdef double _double_nan = float("nan")
cdef inline void MPF_init(MPF *x):
"""Allocate space and set value to zero.

View file

@ -1,6 +1,6 @@
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2018-05-05 16:21:23.000000000 -0600
+++ src/sage/env.py 2018-05-16 13:42:40.591238911 -0600
--- src/sage/env.py.orig 2019-01-04 11:08:22.825475344 -0700
+++ src/sage/env.py 2019-01-16 09:46:26.932957717 -0700
@@ -117,7 +117,7 @@ _add_variable_or_fallback('HOSTNAME',
_add_variable_or_fallback('LOCAL_IDENTIFIER','$HOSTNAME.%s'%os.getpid())

View file

@ -4,7 +4,7 @@
%global _python_bytecompile_extra 0
%bcond_with bundled_pexpect
%bcond_with bundled_ipython
%bcond_without bundled_ipython
%bcond_without bundled_ipywidgets
%bcond_without bundled_thebe
%bcond_without bundled_threejs
@ -45,6 +45,7 @@
%global graphs_pkg graphs-20161026
%if %{with bundled_ipython}
%global ipython_pkg ipython-5.8.0
%global prompt_tookit_pkg prompt_toolkit-1.0.15
%endif
%if %{with bundled_ipywidgets}
%global ipywidgets_pkg ipywidgets-7.2.0
@ -54,7 +55,7 @@
%endif
%global polytopes_db_pkg polytopes_db-20170220
%global rubiks_pkg rubiks-20070912
%global sagenb_pkg sagenb-1.0.3
%global sagenb_pkg sagenb-1.1.1
%global sagenb_export_pkg sagenb_export-3.2
%global sagetex_pkg sagetex-3.0
%global Sphinx_pkg Sphinx-1.7.6
@ -72,7 +73,7 @@
# Spkg equivalents of required rpms; we pretend they are installed as spkgs.
# The version numbers shown are those of the latest released spkg, if the Fedora
# version is not behind.
%global SAGE_REQUIRED_PKGS 4ti2-1.6.7 cbc-2.9.4 CoCoALib-0.99564 cryptominisat-5.0.1 gap_packages-4.8.6new2 gmp-6.1.2 gmpy2-2.1.0a1 lrslib-062+autotools-2017-03-03 qepcad-B.1.71 saclib-2.2.7 sirocco-2.0 surf-1.0.6-gcc6
%global SAGE_REQUIRED_PKGS 4ti2-1.6.7 cbc-2.9.4 CoCoALib-0.99564 cryptominisat-5.0.1 gap_packages-4.8.6new2.p0 gmp-6.1.2 gmpy2-2.1.0a4.p0 lrslib-062+autotools-2017-03-03 qepcad-B.1.71 saclib-2.2.7 sirocco-2.0 surf-1.0.6-gcc6
%global SAGE_ROOT %{_libdir}/sagemath
%global SAGE_LOCAL %{SAGE_ROOT}/local
@ -85,7 +86,7 @@
Name: sagemath
Summary: A free open-source mathematics software system
Version: 8.4
Version: 8.5
Release: 1%{?dist}
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
# Additionally, every $files section has a comment with the license name
@ -97,6 +98,12 @@ Source1: gprc.expect
# Follow maxima's ExclusiveArch
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
# Fix ecm interact() command
Patch0: %{name}-ecm.patch
# Adapt a giac doctest to recent versions of giac
Patch1: %{name}-giac.patch
# Set of patches to work with system wide packages
Patch2: %{name}-scripts.patch
@ -148,7 +155,6 @@ Patch13: %{name}-nauty.patch
# remove the buildroot path from Cython output
Patch14: %{name}-buildroot.patch
# correct path to Lfunction include
# update c++ standard to fix FTBFS
Patch15: %{name}-lcalc.patch
@ -186,7 +192,11 @@ Patch25: %{name}-includes.patch
# Use openblas
Patch26: %{name}-openblas.patch
BuildRequires: gdb
# Fix paths to latte-integrale binaries
Patch27: %{name}-latte.patch
# Upstream fixes for random SIGFPEs due to ecl messing with the fp state
Patch28: %{name}-sigfpe.patch
BuildRequires: 4ti2
BuildRequires: arb-devel
@ -217,6 +227,7 @@ BuildRequires: gap-pkg-toric
BuildRequires: gc-devel
BuildRequires: gcc-c++
BuildRequires: gd-devel
BuildRequires: gdb
BuildRequires: gfan
BuildRequires: giac-devel
BuildRequires: glpk-devel
@ -297,7 +308,6 @@ BuildRequires: python3dist(pexpect)
%endif
BuildRequires: python3dist(pickleshare)
BuildRequires: python3dist(pip)
BuildRequires: python3dist(prompt-toolkit)
BuildRequires: python3dist(pkgconfig)
BuildRequires: python3dist(psutil)
BuildRequires: python3dist(ptyprocess)
@ -398,7 +408,7 @@ Requires: python3dist(matplotlib)
Requires: python3dist(networkx)
Requires: python3dist(notebook)
%if %{with bundled_ipython}
Requires: python3dist(path)
Requires: python3dist(path.py)
%endif
Requires: python3dist(pathlib2)
%if %{without bundled_pexpect}
@ -406,7 +416,6 @@ Requires: python3dist(pexpect)
%endif
Requires: python3dist(pickleshare)
Requires: python3dist(pillow)
Requires: python3dist(prompt-toolkit)
Requires: python3dist(psutil)
Requires: python3dist(ptyprocess)
Requires: python3dist(pycryptosat)
@ -422,7 +431,7 @@ Requires: python3dist(sphinx)
Requires: python3dist(sympy)
Requires: python3dist(twisted)
%if %{with bundled_ipython}
Requires: python3dist(zmq)
Requires: python3dist(pyzmq)
%endif
Requires: python3dist(zodb3)
Requires: qepcad-B
@ -461,6 +470,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-devel < 6.8-1
%if %{with bundled_ipython}
Provides: bundled(ipython) = %(cut -d- -f2- <<< %{ipython_pkg})
Provides: bundled(prompt_toolkit) = %(cut -d- -f2- <<< %{prompt_tookit_pkg})
%endif
%if %{with bundled_ipywidgets}
Provides: bundled(ipywidgets) = %(cut -d- -f2- <<< %{ipywidgets_pkg})
@ -733,6 +743,11 @@ pushd build/pkgs/ipython
tar zxf ../../../upstream/%{ipython_pkg}.tar.gz
mv %{ipython_pkg} src
popd
pushd build/pkgs/prompt_toolkit
tar zxf ../../../upstream/%{prompt_tookit_pkg}.tar.gz
mv %{prompt_tookit_pkg} src
popd
%endif
%if %{with bundled_ipywidgets}
@ -823,6 +838,8 @@ pushd build/pkgs/widgetsnbextension
popd
%endif
%patch0
%patch1
%patch2
%patch3
%patch4
@ -853,6 +870,8 @@ popd
%patch24
%patch25
%patch26
%patch27
%patch28
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
@ -888,6 +907,7 @@ grep -FrlZ '#!%{_bindir}/env python' | \
xargs -0 sed -i 's,#!%{_bindir}/env python,#!%{__python3},'
grep -FrlZ '#!%{_bindir}/env sage-python23' | \
xargs -0 sed -i 's,#!%{_bindir}/env sage-python23,#!%{__python3},'
grep -FrlZ 'sage-python23' | xargs -0 sed -i 's,sage-python23,#!%{__python3},'
grep -FrlZ '#!%{_bindir}/env' | \
xargs -0 sed -i 's,#!%{_bindir}/env ,#!%{_bindir}/,'
grep -rlZ '#!%{_bindir}/python$' | xargs -0 sed -i 's,#!%{_bindir}/python$,&3,'
@ -956,6 +976,11 @@ pushd build/pkgs/ipython/src
%__python3 setup.py build
%__python3 setup.py install --root %{_builddir}
popd
pushd build/pkgs/prompt_toolkit/src
%__python3 setup.py build
%__python3 setup.py install --root %{_builddir}
popd
%endif
%if %{with bundled_ipywidgets}
@ -1065,8 +1090,8 @@ pushd src/ext
if [ $COUNT -gt 0 ]; then
cp -far $dir $SAGE_ETC
fi
cp -far pari $SAGE_ETC
done
cp -far pari $SAGE_ETC
cp -fa %{SOURCE1} $SAGE_ETC
popd
@ -1236,6 +1261,7 @@ popd
#------------------------------------------------------------------------
%if %{with bundled_ipython}
mv %{_builddir}%{python3_sitelib}/IPython %{buildroot}%{SAGE_PYTHONPATH}
mv %{_builddir}%{python3_sitelib}/prompt_toolkit %{buildroot}%{SAGE_PYTHONPATH}
mv %{_builddir}%{_bindir}/ip* %{buildroot}%{SAGE_LOCAL}/bin
%endif
@ -1271,7 +1297,7 @@ popd
cat > %{buildroot}%{_bindir}/sage << EOF
#!/bin/bash -i
export CUR=\`pwd\`
export CUR=\$PWD
##export DOT_SAGE="\$HOME/.sage"
mkdir -p \$DOT_SAGE/{maxima,sympow,tmp}
export SAGE_TESTDIR=\$DOT_SAGE/tmp
@ -1283,7 +1309,7 @@ export SAGE_ETC="$SAGE_ETC"
export SAGE_SRC="%{buildroot}%{SAGE_SRC}"
##export SAGE_DOC="$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"
module load 4ti2-%{_arch}
module load lrcalc-%{_arch}
module load surf-geometry-%{_arch}
@ -1292,14 +1318,13 @@ export SINGULAR_DATA_DIR=%{_datadir}
export SINGULAR_BIN_DIR=%{_libdir}/Singular
export SINGULAR_SO=%{_libdir}/libSingular-4.1.1.so
##export PYTHONPATH="$SAGE_PYTHONPATH:\$SAGE_LOCAL/bin"
export SAGE_CBLAS=blas
export SAGE_FORTRAN=%{_bindir}/gfortran
export SAGE_FORTRAN_LIB=\`gfortran --print-file-name=libgfortran.so\`
export SYMPOW_DIR="\$DOT_SAGE/sympow"
export LC_ALL=C.UTF-8
export LD_LIBRARY_PATH=\$SAGE_ROOT/lib:\$LD_LIBRARY_PATH
# Required for sage -gdb
export SAGE_DEBUG=no
: \${SAGE_DEBUG:=no}
export SAGE_DEBUG
$SAGE_LOCAL/bin/sage "\$@"
EOF
#------------------------------------------------------------------------
@ -1357,7 +1382,7 @@ pushd src/doc
export SAGE_DOC_SRC=$SAGE_DOC
# python -m sage_setup.docbuild
# Build with an X server running, required by some doc builders
SAGE_NUM_THREADS=2 LANGUAGES="ca de en fr hu it ja pt ru tr" \
SAGE_NUM_THREADS=2 \
xvfb-run -a -n 1 %__python3 -m docbuild --no-pdf-links -k all html -j
rm -f %{buildroot}%{SAGE_SRC}/doc
ln -sf %{SAGE_DOC} %{buildroot}%{SAGE_SRC}/doc
@ -1518,9 +1543,6 @@ chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage-list-packages
# last install command
rm -fr $DOT_SAGE
########################################################################
%ldconfig_scriptlets core
########################################################################
%files
# GPLv2+
@ -1573,6 +1595,7 @@ rm -fr $DOT_SAGE
%endif
%if %{with bundled_ipython}
%{SAGE_PYTHONPATH}/IPython
%{SAGE_PYTHONPATH}/prompt_toolkit
%endif
%if %{with bundled_ipywidgets}
%{SAGE_PYTHONPATH}/ipywidgets
@ -1793,6 +1816,17 @@ rm -fr $DOT_SAGE
########################################################################
%changelog
* Thu Jan 17 2019 Jerry James <loganjerry@gmail.com> - 8.5-1
- Update to sagemath 8.5
- Bundle ipython again; Fedora version is too far ahead. Also have to bundle
prompt_toolkit since Fedora version is too far ahead of bundled ipython.
- Drop LANGUAGES variable setting, now ignored by the sagemath build system
- Drop unused SAGE_CBLAS variable from /usr/bin/sage
- Do not force the C locale when launching sagemath
- Allow the user to override SAGE_DEBUG in /usr/bin/sage
- Add -ecm, -giac, and -latte patches to fix interactions with external tools
- Add -sigfpe patch from upstream
* Thu Oct 25 2018 Jerry James <loganjerry@gmail.com> - 8.4-1
- Update to sagemath 8.4
- Build for python 3 instead of python 2 due to upcoming python 2 removal

View file

@ -1 +1 @@
SHA512 (sage-8.4.tar.gz) = 500c5005420c226993b79e89b761a3c9fe57d5ff6d6d71abedaf347ab2fd16b2f5e3b2caa660c4a0d984ba07038f9b4ffce8eb7b6cb28d2448c62d5e18acd871
SHA512 (sage-8.5.tar.gz) = ebe373c7be50dc1df96de8a26ce41455869d79159eb584570525bc8a886d95c2605985bdecfa3e5d0ca50248d6bef605e3b8006266eafb39c4fb351bdc3510f4