mirror of
https://src.fedoraproject.org/rpms/sagemath.git
synced 2025-04-10 23:18:51 -04:00
Version 9.0 (bz 1756780, 1770880).
Also: - Drop upstreamed -ecm and -primecount patches. - Add -escape patch. - The old notebook (sagenb) is no longer shipped, so drop the -sagenb and -sagenb-python3 patches, the -notebook subpackage, and some BRs. - New -jupyter subpackage. - Add suitesparse BR. - Drop pathlib2 BR (bz 1797116).
This commit is contained in:
parent
65c5f9e579
commit
2fac775552
13 changed files with 3724 additions and 956 deletions
|
@ -1,21 +0,0 @@
|
|||
diff -up src/sage/interfaces/ecm.py.orig src/sage/interfaces/ecm.py
|
||||
--- src/sage/interfaces/ecm.py.orig 2019-06-26 14:41:04.000000000 -0600
|
||||
+++ src/sage/interfaces/ecm.py 2019-09-04 09:29:09.529723744 -0600
|
||||
@@ -39,7 +39,7 @@ from __future__ import print_function
|
||||
|
||||
from six import iteritems, PY2
|
||||
|
||||
-import os
|
||||
+import subprocess
|
||||
import re
|
||||
|
||||
from sage.structure.sage_object import SageObject
|
||||
@@ -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)
|
||||
+ subprocess.call(self._cmd)
|
||||
|
||||
# Recommended settings from
|
||||
# http://www.mersennewiki.org/index.php/Elliptic_Curve_Method
|
|
@ -1,6 +1,6 @@
|
|||
diff -up src/sage/env.py.orig src/sage/env.py
|
||||
--- src/sage/env.py.orig 2019-10-03 16:59:18.202495553 -0300
|
||||
+++ src/sage/env.py 2019-10-03 17:00:31.167931299 -0300
|
||||
--- src/sage/env.py.orig 2020-02-27 16:09:10.913012356 -0700
|
||||
+++ src/sage/env.py 2020-02-27 16:16:34.080052271 -0700
|
||||
@@ -151,11 +151,11 @@ var('SAGE_DATE', version.date)
|
||||
var('SAGE_VERSION_BANNER', version.banner)
|
||||
|
||||
|
@ -27,11 +27,15 @@ diff -up src/sage/env.py.orig src/sage/env.py
|
|||
var('CONWAY_POLYNOMIALS_DATA_DIR', join(SAGE_SHARE, 'conway_polynomials'))
|
||||
var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs'))
|
||||
var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves'))
|
||||
@@ -181,11 +181,11 @@ var('CREMONA_MINI_DATA_DIR', joi
|
||||
@@ -179,13 +179,13 @@ var('THEBE_DIR', joi
|
||||
var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs'))
|
||||
var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
||||
var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona'))
|
||||
var('JMOL_DIR', join(SAGE_SHARE, 'jmol'))
|
||||
var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol'))
|
||||
-var('JMOL_DIR', join(SAGE_SHARE, 'jmol'))
|
||||
-var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol'))
|
||||
-var('MATHJAX_DIR', join(SAGE_SHARE, 'mathjax'))
|
||||
+var('JMOL_DIR', join('/usr', 'share', 'java', 'jmol'))
|
||||
+var('JSMOL_DIR', join('/usr', 'share', 'javascript', 'jsmol'))
|
||||
+var('MATHJAX_DIR', join('/usr', 'share', 'javascript', 'mathjax'))
|
||||
var('MTXLIB', join(SAGE_SHARE, 'meataxe'))
|
||||
var('THREEJS_DIR', join(SAGE_SHARE, 'threejs'))
|
||||
|
|
3536
sagemath-escape.patch
Normal file
3536
sagemath-escape.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,6 @@
|
|||
--- src/module_list.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/module_list.py 2020-01-06 20:27:37.840293653 -0700
|
||||
diff -up src/module_list.py.orig src/module_list.py
|
||||
--- src/module_list.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/module_list.py 2020-02-25 13:38:22.980350735 -0700
|
||||
@@ -389,16 +389,16 @@ ext_modules = [
|
||||
Extension('sage.graphs.matchpoly',
|
||||
sources = ['sage/graphs/matchpoly.pyx']),
|
||||
|
@ -35,7 +36,7 @@
|
|||
|
||||
Extension('sage.graphs.spanning_tree',
|
||||
sources = ['sage/graphs/spanning_tree.pyx']),
|
||||
@@ -476,9 +475,9 @@ ext_modules = [
|
||||
@@ -479,9 +478,9 @@ ext_modules = [
|
||||
##
|
||||
################################
|
||||
|
||||
|
@ -47,7 +48,7 @@
|
|||
|
||||
Extension('*', ['sage/interfaces/*.pyx']),
|
||||
|
||||
@@ -497,21 +496,19 @@ ext_modules = [
|
||||
@@ -500,21 +499,19 @@ ext_modules = [
|
||||
##
|
||||
################################
|
||||
|
||||
|
@ -74,7 +75,7 @@
|
|||
|
||||
Extension('sage.libs.flint.flint',
|
||||
sources = ["sage/libs/flint/flint.pyx"],
|
||||
@@ -540,13 +537,14 @@ ext_modules = [
|
||||
@@ -543,13 +540,14 @@ ext_modules = [
|
||||
sources = ["sage/libs/homfly.pyx"],
|
||||
libraries = ["homfly", "gc"]),
|
||||
|
||||
|
@ -92,7 +93,7 @@
|
|||
|
||||
Extension('sage.libs.lcalc.lcalc_Lfunction',
|
||||
sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
|
||||
@@ -563,10 +561,9 @@ ext_modules = [
|
||||
@@ -566,10 +564,9 @@ ext_modules = [
|
||||
Extension('sage.libs.lrcalc.lrcalc',
|
||||
sources = ["sage/libs/lrcalc/lrcalc.pyx"]),
|
||||
|
||||
|
@ -105,7 +106,7 @@
|
|||
|
||||
Extension('*', ['sage/libs/pari/*.pyx']),
|
||||
|
||||
@@ -812,7 +809,8 @@ ext_modules = [
|
||||
@@ -815,7 +812,8 @@ ext_modules = [
|
||||
include_dirs = cblas_include_dirs),
|
||||
|
||||
Extension('sage.matrix.matrix_integer_sparse',
|
||||
|
@ -115,7 +116,7 @@
|
|||
|
||||
Extension('sage.matrix.matrix_mod2_dense',
|
||||
sources = ['sage/matrix/matrix_mod2_dense.pyx'],
|
||||
@@ -831,20 +829,21 @@ ext_modules = [
|
||||
@@ -834,20 +832,21 @@ ext_modules = [
|
||||
Extension('sage.matrix.matrix_modn_dense_float',
|
||||
sources = ['sage/matrix/matrix_modn_dense_float.pyx'],
|
||||
language="c++",
|
||||
|
@ -140,7 +141,7 @@
|
|||
|
||||
Extension('sage.matrix.matrix_mpolynomial_dense',
|
||||
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
|
||||
@@ -874,10 +873,9 @@ ext_modules = [
|
||||
@@ -877,10 +876,9 @@ ext_modules = [
|
||||
Extension('sage.matrix.matrix_window',
|
||||
sources = ['sage/matrix/matrix_window.pyx']),
|
||||
|
||||
|
@ -153,7 +154,7 @@
|
|||
|
||||
Extension('sage.matrix.misc',
|
||||
sources = ['sage/matrix/misc.pyx']),
|
||||
@@ -1053,26 +1051,25 @@ ext_modules = [
|
||||
@@ -1056,26 +1054,25 @@ ext_modules = [
|
||||
Extension("sage.numerical.backends.interactivelp_backend",
|
||||
["sage/numerical/backends/interactivelp_backend.pyx"]),
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
--- src/module_list.py.orig 2020-01-06 20:29:14.108070190 -0700
|
||||
+++ src/module_list.py 2020-01-06 20:29:39.724010734 -0700
|
||||
diff -up src/module_list.py.orig src/module_list.py
|
||||
--- src/module_list.py.orig 2020-02-25 13:53:37.097039897 -0700
|
||||
+++ src/module_list.py 2020-02-26 14:43:39.912744735 -0700
|
||||
@@ -44,6 +44,9 @@ zlib_libs = zlib_pc['libraries']
|
||||
zlib_library_dirs = zlib_pc['library_dirs']
|
||||
zlib_include_dirs = zlib_pc['include_dirs']
|
||||
|
@ -35,7 +36,7 @@
|
|||
|
||||
Extension('*', sources = ['sage/algebras/finite_dimensional_algebras/*.pyx']),
|
||||
|
||||
@@ -559,7 +571,8 @@ ext_modules = [
|
||||
@@ -562,7 +574,8 @@ ext_modules = [
|
||||
[])),
|
||||
|
||||
Extension('sage.libs.lrcalc.lrcalc',
|
||||
|
@ -45,7 +46,7 @@
|
|||
|
||||
Extension("sage.libs.meataxe",
|
||||
sources = ['sage/libs/meataxe.pyx'],
|
||||
@@ -580,23 +593,28 @@ ext_modules = [
|
||||
@@ -583,23 +596,28 @@ ext_modules = [
|
||||
sources = ['sage/libs/readline.pyx'],
|
||||
libraries = ['readline']),
|
||||
|
||||
|
@ -79,7 +80,7 @@
|
|||
|
||||
###################################
|
||||
##
|
||||
@@ -604,7 +622,8 @@ ext_modules = [
|
||||
@@ -607,7 +625,8 @@ ext_modules = [
|
||||
##
|
||||
###################################
|
||||
|
||||
|
@ -89,7 +90,7 @@
|
|||
|
||||
###################################
|
||||
##
|
||||
@@ -776,7 +795,8 @@ ext_modules = [
|
||||
@@ -779,7 +798,8 @@ ext_modules = [
|
||||
|
||||
Extension("sage.matrix.matrix_complex_ball_dense",
|
||||
["sage/matrix/matrix_complex_ball_dense.pyx"],
|
||||
|
@ -99,7 +100,7 @@
|
|||
|
||||
Extension('sage.matrix.matrix_complex_double_dense',
|
||||
sources = ['sage/matrix/matrix_complex_double_dense.pyx']),
|
||||
@@ -784,6 +804,7 @@ ext_modules = [
|
||||
@@ -787,6 +807,7 @@ ext_modules = [
|
||||
Extension('sage.matrix.matrix_cyclo_dense',
|
||||
sources = ['sage/matrix/matrix_cyclo_dense.pyx'],
|
||||
language = "c++",
|
||||
|
@ -107,7 +108,7 @@
|
|||
libraries=['ntl']),
|
||||
|
||||
Extension('sage.matrix.matrix_gap',
|
||||
@@ -846,6 +867,7 @@ ext_modules = [
|
||||
@@ -849,6 +870,7 @@ ext_modules = [
|
||||
libraries = ['gomp']),
|
||||
|
||||
Extension('sage.matrix.matrix_mpolynomial_dense',
|
||||
|
@ -115,7 +116,7 @@
|
|||
sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']),
|
||||
|
||||
Extension('sage.matrix.matrix_polynomial_dense',
|
||||
@@ -1132,7 +1154,8 @@ ext_modules = [
|
||||
@@ -1135,7 +1157,8 @@ ext_modules = [
|
||||
language = 'c++'),
|
||||
|
||||
Extension("sage.rings.complex_arb",
|
||||
|
@ -125,7 +126,7 @@
|
|||
|
||||
Extension('sage.rings.complex_double',
|
||||
sources = ['sage/rings/complex_double.pyx'],
|
||||
@@ -1208,7 +1231,8 @@ ext_modules = [
|
||||
@@ -1211,7 +1234,8 @@ ext_modules = [
|
||||
sources = ['sage/rings/real_interval_absolute.pyx']),
|
||||
|
||||
Extension("sage.rings.real_arb",
|
||||
|
@ -135,7 +136,7 @@
|
|||
|
||||
Extension('sage.rings.real_lazy',
|
||||
sources = ['sage/rings/real_lazy.pyx']),
|
||||
@@ -1291,6 +1315,7 @@ ext_modules = [
|
||||
@@ -1294,6 +1318,7 @@ ext_modules = [
|
||||
|
||||
Extension('sage.rings.number_field.number_field_element_quadratic',
|
||||
sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'],
|
||||
|
@ -143,7 +144,7 @@
|
|||
libraries=['ntl'],
|
||||
language = 'c++'),
|
||||
|
||||
@@ -1430,12 +1455,15 @@ ext_modules = [
|
||||
@@ -1433,12 +1458,15 @@ ext_modules = [
|
||||
sources = ['sage/rings/polynomial/multi_polynomial.pyx']),
|
||||
|
||||
Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
|
||||
|
@ -159,7 +160,7 @@
|
|||
sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx']),
|
||||
|
||||
Extension('sage.rings.polynomial.multi_polynomial_ring_base',
|
||||
@@ -1448,7 +1476,8 @@ ext_modules = [
|
||||
@@ -1451,7 +1479,8 @@ ext_modules = [
|
||||
sources = ['sage/rings/polynomial/polydict.pyx']),
|
||||
|
||||
Extension('sage.rings.polynomial.polynomial_complex_arb',
|
||||
|
@ -169,8 +170,9 @@
|
|||
|
||||
Extension('sage.rings.polynomial.polynomial_compiled',
|
||||
sources = ['sage/rings/polynomial/polynomial_compiled.pyx']),
|
||||
--- src/setup.py.orig 2020-01-06 20:29:10.564078418 -0700
|
||||
+++ src/setup.py 2020-01-06 20:29:39.725010732 -0700
|
||||
diff -up src/setup.py.orig src/setup.py
|
||||
--- src/setup.py.orig 2020-02-26 15:43:14.065012133 -0700
|
||||
+++ src/setup.py 2020-02-26 15:52:14.558846775 -0700
|
||||
@@ -85,6 +85,7 @@ keep_going = False
|
||||
|
||||
# search for dependencies and add to gcc -I<path>
|
||||
|
|
|
@ -1,110 +0,0 @@
|
|||
diff -up src/sage/interfaces/primecount.pyx.orig src/sage/interfaces/primecount.pyx
|
||||
--- src/sage/interfaces/primecount.pyx.orig 2019-06-26 14:41:04.000000000 -0600
|
||||
+++ src/sage/interfaces/primecount.pyx 2019-09-17 16:13:46.316032782 -0600
|
||||
@@ -22,7 +22,7 @@ cdef inline int _do_sig(int64_t n):
|
||||
"threshold for sig_on/sig_off"
|
||||
return n >> 26
|
||||
|
||||
-cpdef int64_t prime_pi(int64_t n, method=None) except -1:
|
||||
+cpdef int64_t prime_pi(int64_t n) except -1:
|
||||
r"""
|
||||
Return the number of prime numbers smaller or equal than ``n``.
|
||||
|
||||
@@ -30,76 +30,22 @@ cpdef int64_t prime_pi(int64_t n, method
|
||||
|
||||
- ``n`` - an integer
|
||||
|
||||
- - ``method`` - ``None`` or a string that determines the primecount
|
||||
- function to be called
|
||||
-
|
||||
- - ``"deleglise_rivat"``
|
||||
- - ``"legendre"``
|
||||
- - ``"lehmer"``
|
||||
- - ``"lmo"``
|
||||
- - ``"meissel"``
|
||||
- - ``"primesieve"``
|
||||
-
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.interfaces.primecount import prime_pi # optional - primecount
|
||||
|
||||
sage: prime_pi(1000) == 168 # optional - primecount
|
||||
True
|
||||
- sage: prime_pi(1000, "deleglise_rivat") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "legendre") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "lehmer") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "lmo") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "meissel") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "primesieve") == 168 # optional - primecount
|
||||
- True
|
||||
- sage: prime_pi(1000, "youpi") # optional - primecount
|
||||
- Traceback (most recent call last):
|
||||
- ...
|
||||
- ValueError: unknown method 'youpi'
|
||||
"""
|
||||
cdef int64_t ans
|
||||
- if method is None:
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "deleglise_rivat":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_deleglise_rivat(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "legendre":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_legendre(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "lehmer":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_lehmer(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "lmo":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_lmo(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "meissel":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_meissel(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- elif method == "primesieve":
|
||||
- if _do_sig(n): sig_on()
|
||||
- ans = primecount.pi_primesieve(n)
|
||||
- if _do_sig(n): sig_off()
|
||||
- else:
|
||||
- raise ValueError("unknown method {!r}".format(method))
|
||||
-
|
||||
+ if _do_sig(n): sig_on()
|
||||
+ ans = primecount.pi(n)
|
||||
+ if _do_sig(n): sig_off()
|
||||
return ans
|
||||
|
||||
cpdef prime_pi_128(n):
|
||||
r"""
|
||||
- Return the number of prime number smaller than ``n``.
|
||||
+ Return the number of prime numbers smaller than ``n``.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
diff -up src/sage/libs/primecount.pxd.orig src/sage/libs/primecount.pxd
|
||||
--- src/sage/libs/primecount.pxd.orig 2019-06-26 14:41:05.000000000 -0600
|
||||
+++ src/sage/libs/primecount.pxd 2019-09-17 16:11:06.678851358 -0600
|
||||
@@ -9,13 +9,6 @@ cdef extern from "primecount.hpp" namesp
|
||||
|
||||
cppstring pi(const cppstring& x)
|
||||
|
||||
- int64_t pi_deleglise_rivat(int64_t x)
|
||||
- int64_t pi_legendre(int64_t x)
|
||||
- int64_t pi_lehmer(int64_t x)
|
||||
- int64_t pi_lmo(int64_t x)
|
||||
- int64_t pi_meissel(int64_t x)
|
||||
- int64_t pi_primesieve(int64_t x)
|
||||
-
|
||||
int64_t nth_prime(int64_t n)
|
||||
|
||||
int64_t phi(int64_t x, int64_t a)
|
|
@ -1,51 +1,6 @@
|
|||
diff -up build/pkgs/sagenb/src/sagenb/misc/support.py.orig build/pkgs/sagenb/src/sagenb/misc/support.py
|
||||
--- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2019-02-01 06:34:20.000000000 -0700
|
||||
+++ build/pkgs/sagenb/src/sagenb/misc/support.py 2020-01-07 19:57:46.756664911 -0700
|
||||
@@ -178,7 +178,7 @@ def completions(s, globs, format=False,
|
||||
try:
|
||||
if not '.' in s and not '(' in s:
|
||||
v = [x for x in globs.keys() if x[:n] == s] + \
|
||||
- [x for x in __builtins__.keys() if x[:n] == s]
|
||||
+ [x for x in builtins.keys() if x[:n] == s]
|
||||
else:
|
||||
if not ')' in s:
|
||||
i = s.rfind('.')
|
||||
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 2019-02-01 05:37:36.000000000 -0700
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2020-01-07 19:57:46.757664910 -0700
|
||||
@@ -25,7 +25,7 @@ This module contains three classes:
|
||||
|
||||
.. NOTE::
|
||||
|
||||
- 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:
|
||||
@@ -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 HTMLParser method and starts everything
|
||||
+ # self.feed() is an HTMLParser method and starts everything
|
||||
# off; Most of the functions here are extensions to
|
||||
# HTMLParser, and may never actually be visibly called here.
|
||||
|
||||
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 2019-02-01 05:37:36.000000000 -0700
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py 2020-01-07 19:57:46.758664910 -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 2019-06-11 04:58:29.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/extractsagecode.py 2020-01-07 19:57:46.759664909 -0700
|
||||
--- build/pkgs/sagetex/src/extractsagecode.py.orig 2019-11-14 04:02:40.000000000 -0700
|
||||
+++ build/pkgs/sagetex/src/extractsagecode.py 2020-02-25 13:42:46.674646884 -0700
|
||||
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
|
||||
|
||||
try:
|
||||
|
@ -56,8 +11,8 @@ diff -up build/pkgs/sagetex/src/extractsagecode.py.orig build/pkgs/sagetex/src/e
|
|||
usage()
|
||||
sys.exit(2)
|
||||
diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makestatic.py
|
||||
--- build/pkgs/sagetex/src/makestatic.py.orig 2019-06-11 04:58:29.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/makestatic.py 2020-01-07 19:57:46.759664909 -0700
|
||||
--- build/pkgs/sagetex/src/makestatic.py.orig 2019-11-14 04:02:40.000000000 -0700
|
||||
+++ build/pkgs/sagetex/src/makestatic.py 2020-02-25 13:42:46.674646884 -0700
|
||||
@@ -45,7 +45,7 @@ See the SageTeX documentation for more d
|
||||
|
||||
try:
|
||||
|
@ -68,8 +23,8 @@ diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makest
|
|||
usage()
|
||||
sys.exit(2)
|
||||
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
|
||||
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-06-11 04:58:29.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-01-07 19:57:46.760664908 -0700
|
||||
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-11-14 04:02:40.000000000 -0700
|
||||
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-02-25 13:42:46.674646884 -0700
|
||||
@@ -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/>.
|
||||
|
@ -133,8 +88,8 @@ diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/re
|
|||
if not password:
|
||||
from getpass import getpass
|
||||
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
|
||||
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-06-11 04:58:29.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-01-07 19:57:46.760664908 -0700
|
||||
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-11-14 04:02:40.000000000 -0700
|
||||
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-02-25 13:42:46.674646884 -0700
|
||||
@@ -132,7 +132,7 @@ class SageCodeExtractor():
|
||||
|
||||
def plotout(self, s, l, t):
|
||||
|
@ -145,8 +100,8 @@ diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sage
|
|||
self.result += t.code[1:-1] + '\n\n'
|
||||
|
||||
diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite_state_machine.py
|
||||
--- src/sage/combinat/finite_state_machine.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/combinat/finite_state_machine.py 2020-01-07 19:57:46.766664904 -0700
|
||||
--- src/sage/combinat/finite_state_machine.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/combinat/finite_state_machine.py 2020-02-25 13:42:46.676646848 -0700
|
||||
@@ -936,7 +936,7 @@ from six.moves import range, zip_longest
|
||||
from six import itervalues
|
||||
|
||||
|
@ -156,7 +111,7 @@ diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite
|
|||
import itertools
|
||||
from copy import copy, deepcopy
|
||||
|
||||
@@ -14166,7 +14166,7 @@ def is_FSMProcessIterator(PI):
|
||||
@@ -14161,7 +14161,7 @@ def is_FSMProcessIterator(PI):
|
||||
|
||||
|
||||
class FSMProcessIterator(SageObject,
|
||||
|
@ -165,21 +120,9 @@ diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite
|
|||
"""
|
||||
This class takes an input, feeds it into a finite state machine
|
||||
(automaton or transducer, in particular), tests whether this was
|
||||
diff -up src/sage/combinat/multiset_partition_into_sets_ordered.py.orig src/sage/combinat/multiset_partition_into_sets_ordered.py
|
||||
--- src/sage/combinat/multiset_partition_into_sets_ordered.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/combinat/multiset_partition_into_sets_ordered.py 2020-01-07 19:57:46.768664902 -0700
|
||||
@@ -1952,7 +1952,7 @@ class OrderedMultisetPartitionsIntoSets(
|
||||
|
||||
# slice by 'order'
|
||||
if "alphabet" in fc:
|
||||
- no_alpha = {k: v for (k, v) in iteritems(self.constraints) if k is not "alphabet"}
|
||||
+ no_alpha = {k: v for (k, v) in iteritems(self.constraints) if k != "alphabet"}
|
||||
return OrderedMultisetPartitionsIntoSets(fc["alphabet"], size, **no_alpha)
|
||||
|
||||
# slice by 'size'
|
||||
diff -up src/sage/combinat/root_system/branching_rules.py.orig src/sage/combinat/root_system/branching_rules.py
|
||||
--- src/sage/combinat/root_system/branching_rules.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/combinat/root_system/branching_rules.py 2020-01-07 19:57:46.769664902 -0700
|
||||
--- src/sage/combinat/root_system/branching_rules.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/combinat/root_system/branching_rules.py 2020-02-25 13:42:46.678646812 -0700
|
||||
@@ -1750,7 +1750,7 @@ def branching_rule(Rtype, Stype, rule="d
|
||||
elif rule == "tensor" or rule == "tensor-debug":
|
||||
if not Stype.is_compound():
|
||||
|
@ -190,9 +133,9 @@ diff -up src/sage/combinat/root_system/branching_rules.py.orig src/sage/combinat
|
|||
if Rtype[0] == 'A':
|
||||
nr = Rtype[1]+1
|
||||
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 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/geometry/triangulation/point_configuration.py 2020-01-07 19:57:46.770664901 -0700
|
||||
@@ -619,7 +619,7 @@ class PointConfiguration(UniqueRepresent
|
||||
--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/geometry/triangulation/point_configuration.py 2020-02-26 14:41:58.109624057 -0700
|
||||
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
|
||||
['{{0,1,2,4},{1,2,3,4}}']
|
||||
"""
|
||||
timeout = 600
|
||||
|
@ -201,9 +144,14 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge
|
|||
proc.expect(r'Evaluating Commandline Options \.\.\.')
|
||||
proc.expect(r'\.\.\. done\.')
|
||||
proc.setecho(0)
|
||||
- assert proc.readline().strip() == b''
|
||||
+ assert proc.readline().strip() == ''
|
||||
|
||||
if verbose:
|
||||
print("#### TOPCOM input ####")
|
||||
diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py
|
||||
--- src/sage/graphs/graph_latex.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/graphs/graph_latex.py 2020-01-07 19:59:40.240580166 -0700
|
||||
--- src/sage/graphs/graph_latex.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/graphs/graph_latex.py 2020-02-25 13:42:46.679646794 -0700
|
||||
@@ -1156,7 +1156,7 @@ class GraphLatex(SageObject):
|
||||
#
|
||||
elif name in color_dicts:
|
||||
|
@ -263,20 +211,20 @@ diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py
|
|||
for key, p in value.items():
|
||||
if not((isinstance(p, tuple)) and (len(p) == 2) and (p[0] >= 0) and (p[1] in compass_points)):
|
||||
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
||||
--- src/sage/interfaces/frobby.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/interfaces/frobby.py 2020-01-07 19:57:46.771664900 -0700
|
||||
@@ -77,7 +77,7 @@ class Frobby:
|
||||
--- src/sage/interfaces/frobby.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/interfaces/frobby.py 2020-02-26 14:41:07.262562710 -0700
|
||||
@@ -79,7 +79,7 @@ class Frobby:
|
||||
print("Frobby command: ", repr(command))
|
||||
print("Frobby input:\n", input)
|
||||
|
||||
- process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE)
|
||||
+ process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE, enconding='utf-8')
|
||||
output, err = process.communicate(input = input)
|
||||
|
||||
if verbose:
|
||||
+ process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE, encoding='utf-8')
|
||||
if input:
|
||||
frinput = str_to_bytes(input)
|
||||
else:
|
||||
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
||||
--- src/sage/interfaces/gfan.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/interfaces/gfan.py 2020-01-07 19:57:46.772664899 -0700
|
||||
--- src/sage/interfaces/gfan.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/interfaces/gfan.py 2020-02-25 13:42:46.679646794 -0700
|
||||
@@ -66,7 +66,7 @@ class Gfan(object):
|
||||
if six.PY2:
|
||||
enc_kwargs = {}
|
||||
|
@ -287,8 +235,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
|||
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 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/interfaces/gp.py 2020-01-07 19:57:46.773664899 -0700
|
||||
--- src/sage/interfaces/gp.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/interfaces/gp.py 2020-02-25 13:42:46.680646776 -0700
|
||||
@@ -934,17 +934,6 @@ class GpElement(ExpectElement):
|
||||
"""
|
||||
return repr(self.type()) == 't_STR'
|
||||
|
@ -308,8 +256,8 @@ diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py
|
|||
"""
|
||||
Return Python float.
|
||||
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
||||
--- src/sage/interfaces/latte.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/interfaces/latte.py 2020-01-07 19:57:46.773664899 -0700
|
||||
--- src/sage/interfaces/latte.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/interfaces/latte.py 2020-02-25 13:42:46.680646776 -0700
|
||||
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||
latte_proc = Popen(args,
|
||||
stdin=PIPE, stdout=PIPE,
|
||||
|
@ -327,8 +275,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
|||
|
||||
ans, err = latte_proc.communicate(arg)
|
||||
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
|
||||
--- src/sage/interfaces/sagespawn.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/interfaces/sagespawn.pyx 2020-01-07 19:57:46.774664898 -0700
|
||||
--- src/sage/interfaces/sagespawn.pyx.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/interfaces/sagespawn.pyx 2020-02-25 13:42:46.680646776 -0700
|
||||
@@ -1,6 +1,6 @@
|
||||
"""
|
||||
Sage wrapper around pexpect's ``spawn`` class and
|
||||
|
@ -377,8 +325,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
|
|||
pass
|
||||
self.fileobj.close()
|
||||
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
|
||||
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-01-07 19:57:46.776664896 -0700
|
||||
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-02-25 13:42:46.680646776 -0700
|
||||
@@ -33,7 +33,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
|
@ -512,9 +460,9 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
|||
if rank == 0:
|
||||
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
|
||||
diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx
|
||||
--- src/sage/misc/parser.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/misc/parser.pyx 2020-01-07 19:57:46.777664896 -0700
|
||||
@@ -96,7 +96,7 @@ def token_to_str(int token):
|
||||
--- src/sage/misc/parser.pyx.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/misc/parser.pyx 2020-02-25 13:42:46.681646759 -0700
|
||||
@@ -95,7 +95,7 @@ def token_to_str(int token):
|
||||
|
||||
|
||||
cdef inline bint is_alphanumeric(char c):
|
||||
|
@ -813,8 +761,8 @@ diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx
|
|||
return self.p_list(tokens)
|
||||
else:
|
||||
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
||||
--- src/sage/plot/plot3d/plot3d.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/plot/plot3d/plot3d.py 2020-01-07 19:57:46.778664895 -0700
|
||||
--- src/sage/plot/plot3d/plot3d.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/plot/plot3d/plot3d.py 2020-02-25 13:42:46.681646759 -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)
|
||||
|
@ -826,8 +774,8 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
|||
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
|
||||
self.dep_var = dep_var
|
||||
diff -up src/sage/plot/point.py.orig src/sage/plot/point.py
|
||||
--- src/sage/plot/point.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/plot/point.py 2020-01-07 19:57:46.779664894 -0700
|
||||
--- src/sage/plot/point.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/plot/point.py 2020-02-25 13:42:46.681646759 -0700
|
||||
@@ -29,7 +29,7 @@ TESTS::
|
||||
from sage.misc.decorators import options, rename_keyword
|
||||
from sage.plot.colors import to_mpl_color
|
||||
|
@ -847,8 +795,8 @@ diff -up src/sage/plot/point.py.orig src/sage/plot/point.py
|
|||
|
||||
try:
|
||||
diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_repr.py
|
||||
--- src/sage/repl/display/fancy_repr.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/repl/display/fancy_repr.py 2020-01-07 19:57:46.780664894 -0700
|
||||
--- src/sage/repl/display/fancy_repr.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/repl/display/fancy_repr.py 2020-02-25 13:42:46.682646741 -0700
|
||||
@@ -15,7 +15,7 @@ Representations of objects.
|
||||
import types
|
||||
|
||||
|
@ -868,8 +816,8 @@ diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_re
|
|||
else:
|
||||
# A user-provided repr. Find newlines and replace them with p.break_()
|
||||
diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_kernel/interact.py
|
||||
--- src/sage/repl/ipython_kernel/interact.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/repl/ipython_kernel/interact.py 2020-01-07 19:57:46.781664893 -0700
|
||||
--- src/sage/repl/ipython_kernel/interact.py.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/repl/ipython_kernel/interact.py 2020-02-25 13:42:46.682646741 -0700
|
||||
@@ -35,7 +35,8 @@ EXAMPLES::
|
||||
|
||||
from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons
|
||||
|
@ -881,9 +829,9 @@ diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_ker
|
|||
from .widgets_sagenb import input_grid
|
||||
from sage.structure.element import parent
|
||||
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
||||
--- src/sage/rings/integer.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/rings/integer.pyx 2020-01-07 19:57:46.785664890 -0700
|
||||
@@ -7124,7 +7124,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
||||
--- src/sage/rings/integer.pyx.orig 2020-02-27 10:29:19.004788998 -0700
|
||||
+++ src/sage/rings/integer.pyx 2020-02-27 15:48:31.176289587 -0700
|
||||
@@ -7123,7 +7123,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
||||
while x[0] == c' ': x += 1 # Strip spaces
|
||||
|
||||
# Disallow a sign here
|
||||
|
@ -892,22 +840,10 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
|||
x = "" # Force an error below
|
||||
|
||||
assert base >= 2
|
||||
diff -up src/sage/rings/multi_power_series_ring_element.py.orig src/sage/rings/multi_power_series_ring_element.py
|
||||
--- src/sage/rings/multi_power_series_ring_element.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/rings/multi_power_series_ring_element.py 2020-01-07 19:57:46.786664889 -0700
|
||||
@@ -1396,7 +1396,7 @@ class MPowerSeries(PowerSeries):
|
||||
# at this stage, self is probably a non-zero
|
||||
# element of the base ring
|
||||
for a in range(len(self._bg_value.list())):
|
||||
- if self._bg_value.list()[a] is not 0:
|
||||
+ if self._bg_value.list()[a] != 0:
|
||||
return a
|
||||
|
||||
def is_nilpotent(self):
|
||||
diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx
|
||||
--- src/sage/rings/polynomial/pbori.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/rings/polynomial/pbori.pyx 2020-01-07 19:57:46.788664888 -0700
|
||||
@@ -4765,8 +4765,7 @@ cdef class PolynomialConstruct:
|
||||
--- src/sage/rings/polynomial/pbori.pyx.orig 2020-02-27 10:58:59.991311061 -0700
|
||||
+++ src/sage/rings/polynomial/pbori.pyx 2020-02-27 15:48:31.177289568 -0700
|
||||
@@ -4764,8 +4764,7 @@ cdef class PolynomialConstruct:
|
||||
# So, it is just a conversion. [Simon King]
|
||||
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
||||
|
||||
|
@ -918,9 +854,9 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor
|
|||
|
||||
cdef class MonomialConstruct:
|
||||
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||
--- src/sage/rings/real_mpfi.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/rings/real_mpfi.pyx 2020-01-07 19:57:46.790664886 -0700
|
||||
@@ -1943,12 +1943,12 @@ cdef class RealIntervalFieldElement(Ring
|
||||
--- src/sage/rings/real_mpfi.pyx.orig 2020-02-27 10:14:36.381371499 -0700
|
||||
+++ src/sage/rings/real_mpfi.pyx 2020-02-27 15:48:31.178289550 -0700
|
||||
@@ -1941,12 +1941,12 @@ cdef class RealIntervalFieldElement(Ring
|
||||
|
||||
cdef long digits
|
||||
digits = strlen(lower_s)
|
||||
|
@ -935,7 +871,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
|||
digits -= 1
|
||||
upper_expo -= digits
|
||||
|
||||
@@ -2117,7 +2117,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||
@@ -2115,7 +2115,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||
raise MemoryError("Unable to allocate memory for the mantissa of an interval")
|
||||
mpz_get_str(tmp_cstr, base, lower_mpz)
|
||||
digits = strlen(tmp_cstr)
|
||||
|
@ -945,9 +881,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
|||
mant_string = bytes_to_str(tmp_cstr+1)
|
||||
sign_string = bytes_to_str(b'-')
|
||||
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
||||
--- src/sage/rings/real_mpfr.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/rings/real_mpfr.pyx 2020-01-07 19:57:46.791664885 -0700
|
||||
@@ -2039,7 +2039,7 @@ cdef class RealNumber(sage.structure.ele
|
||||
--- src/sage/rings/real_mpfr.pyx.orig 2020-02-27 10:16:40.188177426 -0700
|
||||
+++ src/sage/rings/real_mpfr.pyx 2020-02-27 15:48:31.179289531 -0700
|
||||
@@ -2037,7 +2037,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)
|
||||
|
@ -957,9 +893,9 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
|||
t = char_to_str(s + 1)
|
||||
else:
|
||||
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
||||
--- src/sage/structure/sage_object.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/structure/sage_object.pyx 2020-01-07 19:57:46.791664885 -0700
|
||||
@@ -665,7 +665,7 @@ cdef class SageObject:
|
||||
--- src/sage/structure/sage_object.pyx.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/structure/sage_object.pyx 2020-02-25 13:42:56.898464506 -0700
|
||||
@@ -671,7 +671,7 @@ cdef class SageObject:
|
||||
try:
|
||||
s = self._interface_init_(I)
|
||||
except Exception:
|
||||
|
@ -969,9 +905,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.
|
|||
if c:
|
||||
try:
|
||||
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||
--- src/sage/symbolic/expression.pyx.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/symbolic/expression.pyx 2020-01-07 19:57:46.794664883 -0700
|
||||
@@ -12916,7 +12916,7 @@ cdef class hold_class:
|
||||
--- src/sage/symbolic/expression.pyx.orig 2020-02-27 09:30:14.669819391 -0700
|
||||
+++ src/sage/symbolic/expression.pyx 2020-02-27 15:48:31.182289476 -0700
|
||||
@@ -12945,7 +12945,7 @@ cdef class hold_class:
|
||||
sage: SR(2)^5
|
||||
32
|
||||
"""
|
||||
|
@ -980,7 +916,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
|||
|
||||
def __exit__(self, *args):
|
||||
"""
|
||||
@@ -12929,7 +12929,7 @@ cdef class hold_class:
|
||||
@@ -12958,7 +12958,7 @@ cdef class hold_class:
|
||||
sage: SR(2)^5
|
||||
32
|
||||
"""
|
||||
|
@ -989,15 +925,3 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
|||
|
||||
def start(self):
|
||||
"""
|
||||
diff -up src/setup.py.orig src/setup.py
|
||||
--- src/setup.py.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/setup.py 2020-01-07 19:57:46.794664883 -0700
|
||||
@@ -232,7 +232,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,
|
||||
)
|
||||
|
|
|
@ -1,351 +0,0 @@
|
|||
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 2019-09-05 13:19:45.878376777 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2019-09-05 13:27:08.353250002 -0300
|
||||
@@ -140,7 +140,7 @@ def localization_js():
|
||||
locale=repr(get_locale())
|
||||
if _localization_cache.get(locale,None) is None:
|
||||
data = render_template(os.path.join('js/localization.js'), N_=N_, nN_=nN_)
|
||||
- _localization_cache[locale] = (data, sha1(repr(data)).hexdigest())
|
||||
+ _localization_cache[locale] = (data, sha1(repr(data).encode('ascii')).hexdigest())
|
||||
data,datahash = _localization_cache[locale]
|
||||
|
||||
if request.environ.get('HTTP_IF_NONE_MATCH', None) == datahash:
|
||||
@@ -158,7 +158,7 @@ def mathjax_js():
|
||||
if _mathjax_js_cache is None:
|
||||
from sagenb.misc.misc import mathjax_macros
|
||||
data = render_template('js/mathjax_sage.js', theme_mathjax_macros=mathjax_macros)
|
||||
- _mathjax_js_cache = (data, sha1(repr(data)).hexdigest())
|
||||
+ _mathjax_js_cache = (data, sha1(repr(data).encode('ascii')).hexdigest())
|
||||
data,datahash = _mathjax_js_cache
|
||||
|
||||
if request.environ.get('HTTP_IF_NONE_MATCH', None) == datahash:
|
||||
@@ -173,7 +173,7 @@ def mathjax_js():
|
||||
def keyboard_js(browser_os):
|
||||
from sagenb.notebook.keyboards import get_keyboard
|
||||
data = get_keyboard(browser_os)
|
||||
- datahash=sha1(data).hexdigest()
|
||||
+ datahash=sha1(str(data).encode('ascii')).hexdigest()
|
||||
if request.environ.get('HTTP_IF_NONE_MATCH', None) == datahash:
|
||||
response = make_response('',304)
|
||||
else:
|
||||
@@ -490,7 +490,7 @@ def create_app(path_to_notebook, *args,
|
||||
filename = os.path.join(SRC, path)
|
||||
if os.path.isfile(filename):
|
||||
from cgi import escape
|
||||
- src = escape(open(filename).read().decode('utf-8','ignore'))
|
||||
+ src = escape(open(filename).read().decode('ascii'))
|
||||
if (os.path.splitext(filename)[1] in
|
||||
['.py','.c','.cc','.h','.hh','.pyx','.pxd']):
|
||||
return render_template(os.path.join('html', 'source_code.html'),
|
||||
diff -up build/pkgs/sagenb/src/sagenb/misc/format.py.orig build/pkgs/sagenb/src/sagenb/misc/format.py
|
||||
--- build/pkgs/sagenb/src/sagenb/misc/format.py.orig 2019-09-05 13:20:21.507608139 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/misc/format.py 2019-09-05 13:27:08.353250002 -0300
|
||||
@@ -126,7 +126,7 @@ import sys
|
||||
sys.ps1 = "%s"
|
||||
print("START%s")
|
||||
%s
|
||||
-""" % (prompt, number, displayhook_hack(string).encode('utf-8', 'ignore'))
|
||||
+""" % (prompt, number, displayhook_hack(string).encode('ascii'))
|
||||
try:
|
||||
string = '# -*- coding: utf-8 -*-\n' + relocate_future_imports(string)
|
||||
except SyntaxError:
|
||||
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 2019-09-05 13:20:31.231671284 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/misc/misc.py 2019-09-05 13:27:08.354250008 -0300
|
||||
@@ -424,7 +424,7 @@ def set_permissive_permissions(filename)
|
||||
stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | \
|
||||
stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP)
|
||||
|
||||
-def encoded_str(obj, encoding='utf-8'):
|
||||
+def encoded_str(obj, encoding='ascii'):
|
||||
r"""
|
||||
Takes an object and returns an encoded str human-readable representation.
|
||||
|
||||
@@ -445,7 +445,7 @@ def encoded_str(obj, encoding='utf-8'):
|
||||
return binary_type(obj)
|
||||
|
||||
|
||||
-def unicode_str(obj, encoding='utf-8'):
|
||||
+def unicode_str(obj, encoding='ascii'):
|
||||
r"""
|
||||
Takes an object and returns a unicode human-readable representation.
|
||||
|
||||
diff -up build/pkgs/sagenb/src/sagenb/misc/support.py.orig build/pkgs/sagenb/src/sagenb/misc/support.py
|
||||
--- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2019-09-05 13:20:40.258729902 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/misc/support.py 2019-09-05 13:27:08.356250022 -0300
|
||||
@@ -279,7 +279,7 @@ def docstring(obj_name, globs, system='s
|
||||
s += newline
|
||||
s += sageinspect.sage_getdoc(obj, obj_name)
|
||||
s = s.rstrip()
|
||||
- return html_markup(s.decode('utf-8'))
|
||||
+ return html_markup(s.decode('ascii'))
|
||||
|
||||
|
||||
def html_markup(s):
|
||||
@@ -433,7 +433,7 @@ def syseval(system, cmd, dir=None):
|
||||
if hasattr(system.__class__, 'chdir'):
|
||||
system.chdir(dir)
|
||||
if isinstance(cmd, text_type):
|
||||
- cmd = cmd.encode('utf-8', 'ignore')
|
||||
+ cmd = cmd.encode('ascii')
|
||||
return system.eval(cmd, sage_globals, locals=sage_globals)
|
||||
|
||||
######################################################################
|
||||
diff -up build/pkgs/sagenb/src/sagenb/misc/worksheet2rst.py.orig build/pkgs/sagenb/src/sagenb/misc/worksheet2rst.py
|
||||
--- build/pkgs/sagenb/src/sagenb/misc/worksheet2rst.py.orig 2019-09-05 13:20:49.848792176 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/misc/worksheet2rst.py 2019-09-05 13:27:08.356250022 -0300
|
||||
@@ -200,5 +200,5 @@ if __name__=='__main__':
|
||||
text = sys.stdin.read()
|
||||
images_dir = sys.argv[2] if len(sys.argv)>2 else ''
|
||||
|
||||
- print(worksheet2rst(text, images_dir).encode('utf-8'))
|
||||
+ print(worksheet2rst(text, images_dir).encode('ascii'))
|
||||
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/challenge.py.orig build/pkgs/sagenb/src/sagenb/notebook/challenge.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/challenge.py.orig 2019-09-05 13:20:58.515848457 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/challenge.py 2019-09-05 13:27:08.356250022 -0300
|
||||
@@ -529,7 +529,7 @@ class reCAPTCHAChallenge(AbstractChallen
|
||||
|
||||
def encode_if_necessary(s):
|
||||
if isinstance(s, unicode):
|
||||
- return s.encode('utf-8')
|
||||
+ return s.encode('ascii')
|
||||
return s
|
||||
|
||||
params = urlencode({
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/css.py.orig build/pkgs/sagenb/src/sagenb/notebook/css.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/css.py.orig 2019-09-05 13:21:08.792915193 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/css.py 2019-09-05 13:27:08.357250028 -0300
|
||||
@@ -58,5 +58,5 @@ def css(color='default'):
|
||||
user_css = '\n' + open(user_css_path).read()
|
||||
|
||||
data = main_css + user_css
|
||||
- _css_cache = (data, sha1(data).hexdigest())
|
||||
+ _css_cache = (data, sha1(str(data).encode('ascii')).hexdigest())
|
||||
return _css_cache
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/js.py.orig build/pkgs/sagenb/src/sagenb/notebook/js.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/js.py.orig 2019-09-05 13:21:17.511971810 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/js.py 2019-09-05 13:27:08.357250028 -0300
|
||||
@@ -84,7 +84,7 @@ def javascript():
|
||||
if debug_mode:
|
||||
# TODO: maybe we should return a random hash so that the code
|
||||
# is reloaded on every refresh
|
||||
- return s, sha1(s).hexdigest()
|
||||
+ return s, sha1(str(s).encode('ascii')).hexdigest()
|
||||
|
||||
# TODO: use minify here, which is more standard (and usually safer
|
||||
# and with gzip compression, smaller); But first inquire about the
|
||||
@@ -92,7 +92,7 @@ def javascript():
|
||||
# Evil" clause in the license. Does that prevent us from
|
||||
# distributing it (i.e., it adds an extra condition to the
|
||||
# software)? See http://www.crockford.com/javascript/jsmin.py.txt
|
||||
- s = JavaScriptCompressor().getPacked(s.encode('utf-8'))
|
||||
+ s = JavaScriptCompressor().getPacked(s.encode('ascii'))
|
||||
_cache_javascript = (s, sha1(s).hexdigest())
|
||||
|
||||
return _cache_javascript
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/register.py.orig build/pkgs/sagenb/src/sagenb/notebook/register.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/register.py.orig 2019-09-05 13:21:26.247028528 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/register.py 2019-09-05 13:27:08.358250034 -0300
|
||||
@@ -22,7 +22,7 @@ def build_msg(key, username, addr, port,
|
||||
'%(url_prefix)s://%(addr)s:%(port)s/confirm?key=%(key)s\n\n'
|
||||
'You will be taken to a page which will confirm that you have indeed registered.',
|
||||
url_prefix=url_prefix, addr=addr, port=port, key=key)
|
||||
- return s.encode('utf-8')
|
||||
+ return s.encode('ascii')
|
||||
|
||||
def build_password_msg(key, username, addr, port, secure):
|
||||
url_prefix = "https" if secure else "http"
|
||||
@@ -31,7 +31,7 @@ def build_password_msg(key, username, ad
|
||||
'Sign in at %(url_prefix)s://%(addr)s:%(port)s/\n\n'
|
||||
'Make sure to reset your password by going to Settings in the upper right bar.',
|
||||
key=key, url_prefix=url_prefix, addr=addr, port=port)
|
||||
- return s.encode('utf-8')
|
||||
+ return s.encode('ascii')
|
||||
|
||||
def make_key():
|
||||
from random import randint
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/smtpsend.py.orig build/pkgs/sagenb/src/sagenb/notebook/smtpsend.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/smtpsend.py.orig 2019-09-05 13:21:35.087085930 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/smtpsend.py 2019-09-05 13:27:08.358250034 -0300
|
||||
@@ -18,20 +18,15 @@ AUTHOR:
|
||||
|
||||
Bobby Moretti
|
||||
"""
|
||||
-from twisted.mail import smtp, relaymanager # problematic with python 3
|
||||
-from email.mime.base import MIMEBase
|
||||
-from email.mime.multipart import MIMEMultipart
|
||||
-import sys
|
||||
-
|
||||
+from twisted.mail.smtp import sendmail
|
||||
+from twisted.internet.task import react
|
||||
+from email.mime.text import MIMEText
|
||||
|
||||
def buildMessage(fromaddr, toaddr, subject, body):
|
||||
- message = MIMEMultipart()
|
||||
+ message = MIMEText(body)
|
||||
message['From'] = fromaddr
|
||||
message['To'] = toaddr
|
||||
message['Subject'] = subject
|
||||
- textPart = MIMEBase('text', 'plain')
|
||||
- textPart.set_payload(body)
|
||||
- message.attach(textPart)
|
||||
return message
|
||||
|
||||
def sendComplete(result):
|
||||
@@ -42,16 +37,10 @@ def handleError(error):
|
||||
|
||||
def send_mail(fromaddr, toaddr, subject, body, on_success=sendComplete, on_failure=handleError):
|
||||
try:
|
||||
- recpt_domain = toaddr.split('@')[1].encode("ascii")
|
||||
- except (ValueError, IndexError, UnicodeDecodeError):
|
||||
- raise ValueError("mal-formed destination address")
|
||||
- message = buildMessage(fromaddr, toaddr, subject, body)
|
||||
- messageData = message.as_string(unixfrom=False)
|
||||
-
|
||||
- def on_found_record(mx_rec):
|
||||
- smtp_server = str(mx_rec.name)
|
||||
- sending = smtp.sendmail(smtp_server, fromaddr, [toaddr], messageData)
|
||||
- sending.addCallback(on_success).addErrback(on_failure)
|
||||
-
|
||||
- relaymanager.MXCalculator().getMX(recpt_domain).addCallback(on_found_record)
|
||||
+ d = sendmail("localhost", fromaddr, toaddr, message)
|
||||
+ d.addBoth(print)
|
||||
+ except:
|
||||
+ handleError(sys.exc_info()[0])
|
||||
+ return
|
||||
+ sendComplete()
|
||||
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/user_manager.py.orig build/pkgs/sagenb/src/sagenb/notebook/user_manager.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/user_manager.py.orig 2019-09-05 13:21:45.143151229 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/user_manager.py 2019-09-05 13:27:08.360250047 -0300
|
||||
@@ -461,7 +461,7 @@ class SimpleUserManager(UserManager):
|
||||
if encrypt:
|
||||
salt = user.generate_salt()
|
||||
new_password = 'sha256${0}${1}'.format(salt,
|
||||
- hashlib.sha256(salt + new_password).hexdigest())
|
||||
+ hashlib.sha256(str(salt + new_password).encode('ascii')).hexdigest())
|
||||
self._passwords[username] = new_password
|
||||
# need to make sure password in the user object is synced
|
||||
# for compatibility only the user object data is stored in the 'users.pickle'
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/user.py.orig build/pkgs/sagenb/src/sagenb/notebook/user.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/user.py.orig 2019-09-05 13:21:54.855214298 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/user.py 2019-09-05 13:27:08.360250047 -0300
|
||||
@@ -185,7 +185,7 @@ class User(object):
|
||||
if encrypt:
|
||||
salt = generate_salt()
|
||||
self._password = 'sha256${0}${1}'.format(salt,
|
||||
- hashlib.sha256(salt + password).hexdigest())
|
||||
+ hashlib.sha256(str(salt + password).encode('ascii')).hexdigest())
|
||||
else:
|
||||
self._password = password
|
||||
self._temporary_password = ''
|
||||
diff -up build/pkgs/sagenb/src/sagenb/notebook/worksheet.py.orig build/pkgs/sagenb/src/sagenb/notebook/worksheet.py
|
||||
--- build/pkgs/sagenb/src/sagenb/notebook/worksheet.py.orig 2019-09-05 13:26:14.467900092 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/notebook/worksheet.py 2019-09-05 13:27:08.361250054 -0300
|
||||
@@ -313,7 +313,7 @@ class Worksheet(object):
|
||||
|
||||
d = {#############
|
||||
# basic identification
|
||||
- 'name': unicode(self.name()),
|
||||
+ 'name': str(self.name().encode('ascii')),
|
||||
'id_number': int(self.id_number()),
|
||||
|
||||
#############
|
||||
@@ -2157,9 +2157,9 @@ class Worksheet(object):
|
||||
filename = self.worksheet_html_filename()
|
||||
|
||||
if os.path.exists(filename):
|
||||
- contents = open(filename).read().decode('utf-8', 'ignore')
|
||||
+ contents = open(filename).read().decode('ascii')
|
||||
else:
|
||||
- contents = u' '
|
||||
+ contents = ' '
|
||||
|
||||
try:
|
||||
r = [unicode(x.lower()) for x in [self.owner(), self.publisher(), self.name(), contents]]
|
||||
@@ -2190,8 +2190,8 @@ class Worksheet(object):
|
||||
if E is None:
|
||||
E = self.edit_text()
|
||||
worksheet_html = self.worksheet_html_filename()
|
||||
- open(filename, 'w').write(bz2.compress(E.encode('utf-8', 'ignore')))
|
||||
- open(worksheet_html, 'w').write(self.body().encode('utf-8', 'ignore'))
|
||||
+ open(filename, 'w').write(bz2.compress(E.encode('ascii')))
|
||||
+ open(worksheet_html, 'w').write(self.body().encode('ascii'))
|
||||
self.limit_snapshots()
|
||||
try:
|
||||
X = self.__saved_by_info
|
||||
@@ -3930,7 +3930,7 @@ except (KeyError, IOError):
|
||||
"""
|
||||
# The extra newline below is necessary, since otherwise source
|
||||
# code introspection doesn't include the last line.
|
||||
- return 'open("%s","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("%s"),globals())+"\\n"); execfile(os.path.abspath("%s"))'%(CODE_PY, base64.b64encode(s.encode('utf-8', 'ignore')), CODE_PY)
|
||||
+ return 'open("%s","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("%s"),globals())+"\\n"); execfile(os.path.abspath("%s"))'%(CODE_PY, base64.b64encode(s.encode('ascii')), CODE_PY)
|
||||
|
||||
##########################################################
|
||||
# Loading and attaching files
|
||||
@@ -4114,7 +4114,7 @@ except (KeyError, IOError):
|
||||
os.makedirs(code)
|
||||
spyx = os.path.abspath(os.path.join(code, 'sage%s.spyx'%id))
|
||||
if not (os.path.exists(spyx) and open(spyx).read() == cmd):
|
||||
- open(spyx,'w').write(cmd.encode('utf-8', 'ignore'))
|
||||
+ open(spyx,'w').write(cmd.encode('ascii'))
|
||||
return '_support_.cython_import_all("%s", globals())'%spyx
|
||||
|
||||
def check_for_system_switching(self, input, cell):
|
||||
diff -up build/pkgs/sagenb/src/sagenb/storage/filesystem_storage.py.orig build/pkgs/sagenb/src/sagenb/storage/filesystem_storage.py
|
||||
--- build/pkgs/sagenb/src/sagenb/storage/filesystem_storage.py.orig 2019-09-05 13:22:17.198359375 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/storage/filesystem_storage.py 2019-09-05 13:27:08.361250054 -0300
|
||||
@@ -106,7 +106,7 @@ class FilesystemDatastore(Datastore):
|
||||
|
||||
def _deep_user_path(self, username):
|
||||
from hashlib import md5
|
||||
- h = md5(username).hexdigest()
|
||||
+ h = md5(str(username).encode('ascii')).hexdigest()
|
||||
base = ['__store__', h[:1], h[:2], h[:3], h[:4]]
|
||||
path = os.path.join(*base)
|
||||
self._makepath(self._abspath(os.path.join(self._home_path, path)))
|
||||
@@ -397,7 +397,7 @@ class FilesystemDatastore(Datastore):
|
||||
# todo -- add check if changed
|
||||
filename = self._worksheet_html_filename(username, id_number)
|
||||
with atomic_write(self._abspath(filename)) as f:
|
||||
- f.write(worksheet.body().encode('utf-8', 'ignore'))
|
||||
+ f.write(str(worksheet.body()))
|
||||
|
||||
def create_worksheet(self, username, id_number):
|
||||
"""
|
||||
@@ -548,7 +548,7 @@ class FilesystemDatastore(Datastore):
|
||||
|
||||
worksheet_txt = members[0].name
|
||||
W = self.load_worksheet(username, id_number)
|
||||
- W.edit_save_old_format(T.extractfile(worksheet_txt).read().decode('utf-8', 'ignore'))
|
||||
+ W.edit_save_old_format(T.extractfile(worksheet_txt).read().decode('ascii'))
|
||||
# '/' is right, since old worksheets always unix
|
||||
dir = worksheet_txt.split('/')[0]
|
||||
|
||||
diff -up build/pkgs/sagenb/src/sagenb/testing/selenium/selenium.py.orig build/pkgs/sagenb/src/sagenb/testing/selenium/selenium.py
|
||||
--- build/pkgs/sagenb/src/sagenb/testing/selenium/selenium.py.orig 2019-09-05 13:22:27.220424454 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/testing/selenium/selenium.py 2019-09-05 13:27:08.361250054 -0300
|
||||
@@ -199,9 +199,9 @@ class selenium:
|
||||
|
||||
def do_command(self, verb, args):
|
||||
conn = http.client.HTTPConnection(self.host, self.port)
|
||||
- body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8'))
|
||||
+ body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('ascii'))
|
||||
for i in range(len(args)):
|
||||
- body += '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i]).encode('utf-8'))
|
||||
+ body += '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i]).encode('ascii'))
|
||||
if (None != self.sessionId):
|
||||
body += "&sessionId=" + unicode(self.sessionId)
|
||||
headers = {"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"}
|
||||
diff -up build/pkgs/sagenb/src/sagenb/data/sage/html/worksheet_listing.html.orig ./build/pkgs/sagenb/src/sagenb/data/sage/html/worksheet_listing.html
|
||||
--- build/pkgs/sagenb/src/sagenb/data/sage/html/worksheet_listing.html.orig 2019-09-05 15:39:56.829175774 -0300
|
||||
+++ build/pkgs/sagenb/src/sagenb/data/sage/html/worksheet_listing.html 2019-09-05 15:40:26.822369920 -0300
|
||||
@@ -45,6 +45,7 @@ INPUT:
|
||||
<h1>{{ gettext('Account is read only. You may download or delete worksheets or data.') }}</h1>
|
||||
{% endif %}
|
||||
<h3><a href="https://trac.sagemath.org/ticket/25837">{{ gettext('This notebook is deprecated. Click here for details.') }}</a></h3>
|
||||
+<h5>The sagemath rpm package was built with python3, but the sagemath notebook is discontinued and has not been ported to python3.<br>Only minimal functionality to browse documentation is available.<br>Please run the shell command:<br><code>$ sage -n jupyter</code><br>to use the jupyter notebook.</h5>
|
||||
<div id="user-main-controls" class="user-controls">
|
||||
{% if pub is not defined or not pub %}
|
||||
<a href="/new_worksheet" target="_blank">{{ gettext('New Worksheet') }}</a>
|
|
@ -1,88 +0,0 @@
|
|||
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-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
|
||||
from .decorators import global_lock
|
||||
-# Make flask use the old session foo from <=flask-0.9
|
||||
-from flask_oldsessions import OldSecureCookieSessionInterface
|
||||
|
||||
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):
|
||||
self.startup_token = kwds.pop('startup_token', None)
|
||||
Flask.__init__(self, *args, **kwds)
|
||||
- self.session_interface = OldSecureCookieSessionInterface()
|
||||
|
||||
self.config['SESSION_COOKIE_HTTPONLY'] = False
|
||||
|
||||
@@ -39,13 +36,13 @@ class SageNBFlask(Flask):
|
||||
self.add_static_path('/javascript', DATA)
|
||||
self.add_static_path('/static', DATA)
|
||||
self.add_static_path('/java', DATA)
|
||||
- self.add_static_path('/java/jmol', os.path.join(os.environ["SAGE_SHARE"],"jmol"))
|
||||
- self.add_static_path('/jsmol', os.path.join(os.environ["SAGE_SHARE"],"jsmol"))
|
||||
- self.add_static_path('/jsmol/js', os.path.join(os.environ["SAGE_SHARE"],"jsmol","js"))
|
||||
- self.add_static_path('/j2s', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s"))
|
||||
- self.add_static_path('/jsmol/j2s', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s"))
|
||||
- self.add_static_path('/j2s/core', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s","core"))
|
||||
- self.add_static_path('/threejs', os.path.join(os.environ["SAGE_SHARE"],"threejs"))
|
||||
+ self.add_static_path('/java/jmol', os.path.join(os.environ["SAGE_ROOT"],"share","jmol"))
|
||||
+ self.add_static_path('/jsmol', os.path.join(os.environ["SAGE_ROOT"],"share","jsmol"))
|
||||
+ self.add_static_path('/jsmol/js', os.path.join(os.environ["SAGE_ROOT"],"share","jsmol","js"))
|
||||
+ self.add_static_path('/j2s', os.path.join(os.environ["SAGE_ROOT"],"jsmol","j2s"))
|
||||
+ self.add_static_path('/jsmol/j2s', os.path.join(os.environ["SAGE_ROOT"],"share","jsmol","j2s"))
|
||||
+ self.add_static_path('/j2s/core', os.path.join(os.environ["SAGE_ROOT"],"share","jsmol","j2s","core"))
|
||||
+ self.add_static_path('/threejs', os.path.join(os.environ["SAGE_ROOT"],"share","threejs"))
|
||||
import mimetypes
|
||||
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 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]
|
||||
|
||||
-DATA = os.path.join(SAGENB_ROOT, 'data')
|
||||
+import sage.env
|
||||
+DATA = os.path.join(sage.env.SAGE_SRC, 'sagenb', 'data')
|
||||
|
||||
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-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(
|
||||
- 'defaultdirectory "',
|
||||
- 'defaultdirectory "{0}/'.format(self.url_to_worksheet()))
|
||||
+ 'defaultdirectory "',
|
||||
+ 'defaultdirectory "/home/' + self.worksheet_filename() + '/')
|
||||
with open(jmol_name, 'w') as f:
|
||||
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-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 #
|
||||
#########
|
||||
import os, sys, random
|
||||
-import sagenb.flask_version.base as flask_base
|
||||
-opts={}
|
||||
+sagenb_dir = os.path.join(os.environ['SAGE_ROOT'], 'src', 'sagenb')
|
||||
+sys.path.append(sagenb_dir)
|
||||
+import flask_version.base as flask_base
|
||||
startup_token = '{0:x}'.format(random.randint(0, 2**128))
|
||||
-if %(automatic_login)s:
|
||||
- opts['startup_token'] = startup_token
|
||||
-flask_app = flask_base.create_app(%(notebook_opts)s, **opts)
|
||||
+flask_app = flask_base.create_app(%(notebook_opts)s, startup_token=startup_token)
|
||||
|
||||
def save_notebook(notebook):
|
||||
print("Quitting all running worksheets...")
|
|
@ -1,6 +1,6 @@
|
|||
diff -up src/bin/sage.orig src/bin/sage
|
||||
--- src/bin/sage.orig 2019-10-03 14:38:40.429507574 -0300
|
||||
+++ src/bin/sage 2019-10-03 14:47:00.852631198 -0300
|
||||
--- src/bin/sage.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/bin/sage 2020-02-25 13:37:42.510072662 -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"
|
||||
|
@ -585,7 +585,7 @@ diff -up src/bin/sage.orig src/bin/sage
|
|||
- # tends to ask interactive questions if something goes wrong. These
|
||||
- # cause the build to hang. If stdin is /dev/null, TeX just aborts.
|
||||
- shift
|
||||
- exec sage-python23 -m sage_setup.docbuild "$@" </dev/null
|
||||
- exec sage-python -m sage_setup.docbuild "$@" </dev/null
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then
|
||||
|
@ -605,8 +605,8 @@ diff -up src/bin/sage.orig src/bin/sage
|
|||
exec sage-startuptime.py "$@"
|
||||
fi
|
||||
diff -up src/bin/sage-valgrind.orig src/bin/sage-valgrind
|
||||
--- src/bin/sage-valgrind.orig 2019-10-03 14:47:13.247708565 -0300
|
||||
+++ src/bin/sage-valgrind 2019-10-03 14:47:46.404915531 -0300
|
||||
--- src/bin/sage-valgrind.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/bin/sage-valgrind 2020-02-25 13:36:02.973848216 -0700
|
||||
@@ -4,17 +4,7 @@ if [ -z $SAGE_EXTCODE ]; then
|
||||
SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2019-09-29 17:03:11.000000000 -0600
|
||||
+++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-01-06 10:58:12.087355771 -0700
|
||||
diff -up src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp
|
||||
--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2020-01-01 04:03:10.000000000 -0700
|
||||
+++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-02-25 13:59:23.612853911 -0700
|
||||
@@ -2,8 +2,8 @@
|
||||
#include <map>
|
||||
|
||||
|
|
270
sagemath.spec
270
sagemath.spec
|
@ -18,9 +18,6 @@
|
|||
%bcond_with docs
|
||||
%endif
|
||||
|
||||
# not functional due to missing jar dependencies
|
||||
%bcond_with sage3d
|
||||
|
||||
# use a workaround to match upstream sagemath patched sphinx
|
||||
%bcond_without sphinx_hack
|
||||
|
||||
|
@ -40,7 +37,7 @@
|
|||
|
||||
%global combinatorial_designs_pkg combinatorial_designs-20140630
|
||||
%global conway_polynomials_pkg conway_polynomials-0.5
|
||||
%global cremona_ver 2016-10-17
|
||||
%global cremona_ver 2019-10-29
|
||||
%global elliptic_curves_pkg elliptic_curves-0.8.1
|
||||
%global flintqs_pkg flintqs-1.0
|
||||
%global graphs_pkg graphs-20161026
|
||||
|
@ -59,8 +56,7 @@
|
|||
%endif
|
||||
%global polytopes_db_pkg polytopes_db-20170220
|
||||
%global rubiks_pkg rubiks-20070912
|
||||
%global sagenb_pkg sagenb-1.1.2
|
||||
%global sagetex_pkg sagetex-3.3
|
||||
%global sagetex_pkg sagetex-3.4
|
||||
%global Sphinx_pkg Sphinx-1.8.5
|
||||
%global singular_pkg singular-4.1.1p2
|
||||
%if %{with bundled_thebe}
|
||||
|
@ -68,7 +64,7 @@
|
|||
%global thebe_pkg thebe-%{thebe_ver}
|
||||
%endif
|
||||
%if %{with bundled_threejs}
|
||||
%global threejs_ver r105
|
||||
%global threejs_ver r110
|
||||
%global threejs_pkg threejs-%{threejs_ver}
|
||||
%endif
|
||||
%if %{with bundled_widgetsnbextension}
|
||||
|
@ -77,7 +73,7 @@
|
|||
%endif
|
||||
|
||||
# Spkg equivalents of required rpms; we pretend they are installed as spkgs.
|
||||
%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 cbc-2.10.3 CoCoALib-0.99601 coxeter3-1.1 cryptominisat-5.6.8 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.10.2 gmp-6.1.2 libsirocco-2.0 lrslib-070 mcqd-1.0 meataxe-1.0 primecount-5.1 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0
|
||||
%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 cbc-2.10.4 CoCoALib-0.99650 coxeter3-3.1 cryptominisat-5.6.8 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.10.2 gmp-6.1.2 libsirocco-2.0.2 lrslib-070 mcqd-1.0 meataxe-1.0 primecount-5.3 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0
|
||||
|
||||
%ifarch %{ix86} x86_64
|
||||
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
|
||||
|
@ -94,8 +90,8 @@
|
|||
|
||||
Name: sagemath
|
||||
Summary: A free open-source mathematics software system
|
||||
Version: 8.9
|
||||
Release: 3%{?dist}
|
||||
Version: 9.0
|
||||
Release: 1%{?dist}
|
||||
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file
|
||||
# Additionally, every $files section has a comment with the license name
|
||||
# before files with that license
|
||||
|
@ -107,8 +103,8 @@ Source2: gprc.expect
|
|||
# Follow maxima's ExclusiveArch
|
||||
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
|
||||
|
||||
# Fix ecm interact() command
|
||||
Patch0: %{name}-ecm.patch
|
||||
# Fix stray escapes in python strings
|
||||
Patch0: %{name}-escape.patch
|
||||
|
||||
# Fix a "random" bit chooser that always chooses 0
|
||||
Patch1: %{name}-random.patch
|
||||
|
@ -122,7 +118,7 @@ Patch3: %{name}-extensions.patch
|
|||
|
||||
# helper to:
|
||||
# o respect a DESTDIR environment variable
|
||||
# o avoid double '//' in pathnames, what can confused debugedit & co
|
||||
# o avoid double '//' in pathnames, which can confuse debugedit & co
|
||||
# o minor change to help in incremental builds by avoiding rebuilding
|
||||
# files
|
||||
# o do not assume there is an installed sagemath
|
||||
|
@ -131,92 +127,83 @@ Patch4: %{name}-rpmbuild.patch
|
|||
# build documentation in buildroot environment
|
||||
Patch5: %{name}-sagedoc.patch
|
||||
|
||||
# sage notebook rpm and system environment adjustments
|
||||
Patch6: %{name}-sagenb.patch
|
||||
|
||||
# do not attempt to create state files in system directories
|
||||
Patch7: %{name}-readonly.patch
|
||||
Patch6: %{name}-readonly.patch
|
||||
|
||||
# work with all maxima-runtime lisp backend packages
|
||||
Patch8: %{name}-maxima.patch
|
||||
Patch7: %{name}-maxima.patch
|
||||
|
||||
# execute 4ti2 programs in $PATH not in $SAGE_ROOT/local/bin
|
||||
Patch9: %{name}-4ti2.patch
|
||||
Patch8: %{name}-4ti2.patch
|
||||
|
||||
# use jmol itself to export preview images
|
||||
# FIXME besides not using X and told so, fails if DISPLAY is not set
|
||||
Patch10: %{name}-jmol.patch
|
||||
Patch9: %{name}-jmol.patch
|
||||
|
||||
# tell the user how to install the large Cremona database
|
||||
# add a missing commit() that causes large database construction to fail
|
||||
Patch11: %{name}-cremona.patch
|
||||
Patch10: %{name}-cremona.patch
|
||||
|
||||
# adapt to python 3 and cython running in python 3 mode
|
||||
Patch12: %{name}-python3.patch
|
||||
Patch11: %{name}-python3.patch
|
||||
|
||||
# correct path to the nauty geng program
|
||||
Patch13: %{name}-nauty.patch
|
||||
Patch12: %{name}-nauty.patch
|
||||
|
||||
# remove the buildroot path from Cython output
|
||||
Patch14: %{name}-buildroot.patch
|
||||
Patch13: %{name}-buildroot.patch
|
||||
|
||||
# update c++ standard to fix FTBFS
|
||||
Patch15: %{name}-lcalc.patch
|
||||
Patch14: %{name}-lcalc.patch
|
||||
|
||||
# avoid assertion in coin backend
|
||||
Patch16: %{name}-cbc.patch
|
||||
Patch15: %{name}-cbc.patch
|
||||
|
||||
# Use system gap directories
|
||||
Patch17: %{name}-libgap.patch
|
||||
Patch16: %{name}-libgap.patch
|
||||
|
||||
# Build fes
|
||||
Patch18: %{name}-fes-build.patch
|
||||
Patch17: %{name}-fes-build.patch
|
||||
# Disable fes
|
||||
Patch19: %{name}-fes.patch
|
||||
Patch18: %{name}-fes.patch
|
||||
|
||||
# Side effect of using distro packages
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=974769
|
||||
Patch20: %{name}-sympy.patch
|
||||
Patch19: %{name}-sympy.patch
|
||||
|
||||
# Correct unable to start QEPCAD within sage
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1243590
|
||||
Patch21: %{name}-qepcad.patch
|
||||
Patch20: %{name}-qepcad.patch
|
||||
|
||||
# Correct path to arb headers
|
||||
Patch22: %{name}-arb.patch
|
||||
Patch21: %{name}-arb.patch
|
||||
|
||||
# Add missing include paths
|
||||
Patch23: %{name}-includes.patch
|
||||
Patch22: %{name}-includes.patch
|
||||
|
||||
# Use openblas
|
||||
Patch24: %{name}-openblas.patch
|
||||
Patch23: %{name}-openblas.patch
|
||||
|
||||
# Fix paths to latte-integrale binaries
|
||||
Patch25: %{name}-latte.patch
|
||||
Patch24: %{name}-latte.patch
|
||||
|
||||
# Upstream fixes for random SIGFPEs due to ecl messing with the fp state
|
||||
Patch26: %{name}-sigfpe.patch
|
||||
Patch25: %{name}-sigfpe.patch
|
||||
|
||||
# Add some missing #includes and types in the rubiks code
|
||||
Patch27: %{name}-rubiks.patch
|
||||
Patch26: %{name}-rubiks.patch
|
||||
|
||||
# Fix an indentation error in sagetex
|
||||
Patch28: %{name}-sagetex.patch
|
||||
Patch27: %{name}-sagetex.patch
|
||||
|
||||
# Fix some path settings in the sage environment
|
||||
Patch29: %{name}-env.patch
|
||||
|
||||
# Make notebook minimally function until upstream finally removes it
|
||||
Patch30: %{name}-sagenb-python3.patch
|
||||
|
||||
# Adapt to primecount 5.x
|
||||
Patch31: %{name}-primecount.patch
|
||||
Patch28: %{name}-env.patch
|
||||
|
||||
# Adapt to recent tdlib 0.9
|
||||
Patch32: %{name}-tdlib.patch
|
||||
Patch29: %{name}-tdlib.patch
|
||||
|
||||
# Use local objects.inv for intersphinx since no network on koji builders
|
||||
Patch33: %{name}-intersphinx.patch
|
||||
Patch30: %{name}-intersphinx.patch
|
||||
|
||||
BuildRequires: 4ti2
|
||||
BuildRequires: arb-devel
|
||||
|
@ -275,7 +262,7 @@ BuildRequires: iml-devel
|
|||
BuildRequires: jmol
|
||||
BuildRequires: jsmath-fonts
|
||||
# To have a proper link
|
||||
#BuildRequires: jsmol
|
||||
BuildRequires: jsmol
|
||||
BuildRequires: L-function-devel
|
||||
BuildRequires: lapack-devel
|
||||
BuildRequires: latte-integrale
|
||||
|
@ -319,10 +306,6 @@ BuildRequires: python3dist(brial)
|
|||
BuildRequires: python3dist(cvxopt)
|
||||
BuildRequires: python3dist(cython)
|
||||
BuildRequires: python3dist(docutils)
|
||||
BuildRequires: python3dist(flask-autoindex)
|
||||
BuildRequires: python3dist(flask-babel)
|
||||
BuildRequires: python3dist(flask-openid)
|
||||
BuildRequires: python3dist(flask-silk)
|
||||
BuildRequires: python3dist(fpylll)
|
||||
BuildRequires: python3dist(future)
|
||||
BuildRequires: python3dist(gmpy2)
|
||||
|
@ -340,7 +323,6 @@ BuildRequires: python3dist(networkx)
|
|||
BuildRequires: python3dist(notebook)
|
||||
%if %{with bundled_ipython}
|
||||
BuildRequires: python3dist(path.py)
|
||||
BuildRequires: python3dist(pathlib2)
|
||||
%endif
|
||||
%if %{without bundled_pexpect}
|
||||
BuildRequires: python3dist(pexpect)
|
||||
|
@ -359,7 +341,6 @@ BuildRequires: python3dist(pyzmq)
|
|||
BuildRequires: python3dist(rpy2)
|
||||
BuildRequires: python3dist(scipy)
|
||||
BuildRequires: python3dist(scons)
|
||||
BuildRequires: python3dist(send2trash)
|
||||
BuildRequires: python3dist(setuptools)
|
||||
%if %{with bundled_ipython}
|
||||
BuildRequires: python3dist(simplegeneric)
|
||||
|
@ -368,7 +349,6 @@ BuildRequires: python3dist(six)
|
|||
BuildRequires: python3dist(speaklater)
|
||||
BuildRequires: python3dist(sphinx)
|
||||
BuildRequires: python3dist(sympy)
|
||||
BuildRequires: python3dist(twisted)
|
||||
BuildRequires: python3dist(zodb3)
|
||||
BuildRequires: qepcad-B
|
||||
BuildRequires: R
|
||||
|
@ -378,14 +358,14 @@ BuildRequires: rw-devel
|
|||
BuildRequires: sharedmeataxe-devel
|
||||
BuildRequires: Singular-devel
|
||||
BuildRequires: sirocco-devel
|
||||
BuildRequires: stix-math-fonts
|
||||
BuildRequires: stix-fonts
|
||||
BuildRequires: suitesparse-devel
|
||||
BuildRequires: symmetrica-devel
|
||||
BuildRequires: sympow
|
||||
BuildRequires: tachyon
|
||||
BuildRequires: texlive
|
||||
BuildRequires: tex(anyfontsize.sty)
|
||||
BuildRequires: tex(makecmds.sty)
|
||||
BuildRequires: vecmath
|
||||
# For _jsdir macro
|
||||
BuildRequires: web-assets-devel
|
||||
BuildRequires: xorg-x11-fonts-Type1
|
||||
|
@ -394,14 +374,14 @@ BuildRequires: zlib-devel
|
|||
BuildRequires: zn_poly-devel
|
||||
|
||||
Requires: hicolor-icon-theme
|
||||
Requires: %{name}-core
|
||||
Requires: %{name}-data
|
||||
Requires: %{name}-core = %{version}-%{release}
|
||||
Requires: %{name}-data = %{version}-%{release}
|
||||
%if %{with docs}
|
||||
Requires: %{name}-doc-en
|
||||
Requires: %{name}-doc-en = %{version}-%{release}
|
||||
%endif
|
||||
Requires: %{name}-notebook
|
||||
Requires: %{name}-rubiks
|
||||
Requires: %{name}-sagetex
|
||||
Requires: %{name}-jupyter = %{version}-%{release}
|
||||
Requires: %{name}-rubiks = %{version}-%{release}
|
||||
Requires: %{name}-sagetex = %{version}-%{release}
|
||||
|
||||
%if %{with bundled_thebe}
|
||||
Provides: bundled(thebe) = %{thebe_ver}
|
||||
|
@ -479,7 +459,6 @@ Requires: python3dist(matplotlib)
|
|||
Requires: python3dist(networkx)
|
||||
%if %{with bundled_ipython}
|
||||
Requires: python3dist(path.py)
|
||||
Requires: python3dist(pathlib2)
|
||||
%endif
|
||||
%if %{without bundled_pexpect}
|
||||
Requires: python3dist(pexpect)
|
||||
|
@ -505,8 +484,8 @@ Requires: python3dist(sympy)
|
|||
Requires: python3dist(zodb3)
|
||||
Requires: qepcad-B
|
||||
Requires: Singular
|
||||
# Required by widgetsnbextension and thebe; remove when they are unbundled
|
||||
Requires: stix-math-fonts
|
||||
# Required by thebe; remove when it is unbundled
|
||||
Requires: stix-fonts
|
||||
Requires: sympow
|
||||
Requires: tachyon
|
||||
Requires: texlive
|
||||
|
@ -701,17 +680,18 @@ This package contains the Turkish %{name} documentation.
|
|||
%endif
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
%package notebook
|
||||
Summary: The Sage Notebook
|
||||
%package jupyter
|
||||
Summary: Jupyter integration for sagemath
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: python-jupyter-filesystem
|
||||
Requires: python3dist(flask-silk)
|
||||
Requires: python3dist(send2trash)
|
||||
Requires: vecmath
|
||||
|
||||
%description notebook
|
||||
The Sage Notebook is a web-based graphical user interface for
|
||||
mathematical software.
|
||||
# This can be removed when Fedora 31 reaches EOL
|
||||
Obsoletes: sagemath-notebook < 9.0-1
|
||||
Provides: sagemath-notebook = %{version}-%{release}
|
||||
|
||||
%description jupyter
|
||||
This package contains a Jupyter integration for sagemath, replacing the
|
||||
defunct notebook functionality.
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
%package rubiks
|
||||
|
@ -835,11 +815,6 @@ pushd build/pkgs/rubiks
|
|||
popd
|
||||
popd
|
||||
|
||||
pushd build/pkgs/sagenb
|
||||
tar jxf ../../../upstream/%{sagenb_pkg}.tar.bz2
|
||||
mv %{sagenb_pkg} src
|
||||
popd
|
||||
|
||||
pushd build/pkgs/sagetex
|
||||
tar zxf ../../../upstream/%{sagetex_pkg}.tar.gz
|
||||
mv %{sagetex_pkg} src
|
||||
|
@ -901,14 +876,14 @@ popd
|
|||
%patch14
|
||||
%patch15
|
||||
%patch16
|
||||
%patch17
|
||||
|
||||
%if %{with fes}
|
||||
%patch18
|
||||
%patch17
|
||||
%else
|
||||
%patch19
|
||||
%patch18
|
||||
%endif
|
||||
|
||||
%patch19
|
||||
%patch20
|
||||
%patch21
|
||||
%patch22
|
||||
|
@ -920,9 +895,6 @@ popd
|
|||
%patch28
|
||||
%patch29
|
||||
%patch30
|
||||
%patch31
|
||||
%patch32
|
||||
%patch33
|
||||
|
||||
sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \
|
||||
-e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \
|
||||
|
@ -933,19 +905,10 @@ sed -e 's|@@CYSIGNALS@@|%{python3_sitearch}/cysignals|' \
|
|||
-e 's|@@BUILDROOT@@|%{buildroot}|' \
|
||||
-i src/setup.py
|
||||
|
||||
sed -e "/flask-oldsessions/d" \
|
||||
-i build/pkgs/sagenb/src/setup.py
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# some .c files are not (re)generated
|
||||
find src/sage \( -name \*.pyx -o -name \*.pxd \) -exec touch {} \+
|
||||
|
||||
# remove bundled jar files before build
|
||||
rm build/pkgs/sagenb/src/sagenb/data/sage3d/lib/sage3d.jar
|
||||
|
||||
# remove binary egg
|
||||
rm -r build/pkgs/sagenb/src/sagenb.egg-info
|
||||
|
||||
# fix Singular paths
|
||||
singver=$(sed 's/.*-\([.[:digit:]]*\).*/\1/' <<< %{singular_pkg})
|
||||
sed -e "s,SINGULARPATH=\",&%{_datadir}/singular/LIB:," \
|
||||
|
@ -961,8 +924,8 @@ grep -FrlZ '#!%{_bindir}/env python' | \
|
|||
xargs -0 sed -i 's,#!%{_bindir}/env python,#!%{__python3},g'
|
||||
grep -FrlZ '#!%{_bindir}/env sage-system-python' | \
|
||||
xargs -0 sed -i 's,#!%{_bindir}/env sage-system-python,#!%{__python3},g'
|
||||
grep -FrlZ '#!%{_bindir}/env sage-python23' | \
|
||||
xargs -0 sed -i 's,#!%{_bindir}/env sage-python23,#!%{__python3},g'
|
||||
grep -FrlZ '#!%{_bindir}/env sage-python' | \
|
||||
xargs -0 sed -i 's,#!%{_bindir}/env sage-python,#!%{__python3},g'
|
||||
grep -FrlZ 'sage-python23' | xargs -0 sed -i 's,sage-python23,python3,g'
|
||||
grep -FrlZ '#!%{_bindir}/env' | \
|
||||
xargs -0 sed -i 's,#!%{_bindir}/env ,#!%{_bindir}/,'
|
||||
|
@ -1089,10 +1052,6 @@ pushd src
|
|||
popd
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
pushd build/pkgs/sagenb/src
|
||||
%__python3 ./setup.py build
|
||||
popd
|
||||
|
||||
pushd build/pkgs/sagetex/src
|
||||
%__python3 ./setup.py build
|
||||
popd
|
||||
|
@ -1181,22 +1140,6 @@ pushd src
|
|||
%endif
|
||||
popd
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
pushd build/pkgs/sagenb/src
|
||||
rm -f %{buildroot}%{python3_sitearch}/sagenb/data/sage3d/sage3d
|
||||
%py3_install "--install-purelib=%{python3_sitearch}"
|
||||
# jsmol
|
||||
ln -sf %{_jsdir}/jsmol $SAGE_SHARE/jsmol
|
||||
# sage3d
|
||||
rm -f %{buildroot}%{_bindir}/sage3d
|
||||
%if %{with sage3d}
|
||||
ln -sf %{SAGE_LOCAL}/bin/sage3d %{buildroot}%{python3_sitearch}/sagenb/data/sage3d/sage3d
|
||||
%endif
|
||||
ln -sf %{python3_sitearch}/sagenb %{buildroot}%{SAGE_SRC}/sagenb
|
||||
# use system mathjax
|
||||
ln -sf %{_jsdir}/mathjax %{buildroot}%{python3_sitearch}/sagenb/data/mathjax
|
||||
popd
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
%if %{with bundled_pexpect}
|
||||
pushd build/pkgs/pexpect/src
|
||||
|
@ -1407,16 +1350,6 @@ EOF
|
|||
#------------------------------------------------------------------------
|
||||
chmod +x %{buildroot}%{_bindir}/sage
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
%if %{with sage3d}
|
||||
cat > %{buildroot}%{SAGE_LOCAL}/bin/sage3d << EOF
|
||||
#!/bin/sh
|
||||
|
||||
java -classpath %{SAGE_SRC}/sage/sagenb/data/sage3d/lib/sage3d.jar:%{_javadir}/j3dcore.jar:%{_javadir}/vecmath.jar:%{_javadir}/j3dutils.jar org.sagemath.sage3d.ObjectViewerApp "\$1"
|
||||
EOF
|
||||
chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage3d
|
||||
%endif
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# adjust cython interface:
|
||||
# o install csage headers
|
||||
|
@ -1546,13 +1479,6 @@ rm -fr %{buildroot}%{SAGE_DOC}/output/inventory
|
|||
find %{buildroot}%{SAGE_DOC} -type d -name _sources -exec rm -fr {} \+
|
||||
%endif
|
||||
|
||||
# remove .po files
|
||||
rm %{buildroot}%{python3_sitearch}/sagenb/translations/*/LC_MESSAGES/*.po
|
||||
|
||||
%if %{without sage3d}
|
||||
rm -r %{buildroot}%{python3_sitearch}/sagenb/data/sage3d
|
||||
%endif
|
||||
|
||||
# remove build directory in buildroot
|
||||
[ -d %{buildroot}%{SAGE_SRC}/build ] &&
|
||||
rm -r %{buildroot}%{SAGE_SRC}/build
|
||||
|
@ -1841,75 +1767,9 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
|||
%endif
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
%files notebook
|
||||
%files jupyter
|
||||
%{SAGE_ETC}/notebook-ipython
|
||||
# GPLv2+
|
||||
%{SAGE_SRC}/sagenb
|
||||
%dir %{python3_sitearch}/sagenb
|
||||
%{python3_sitearch}/sagenb/*.py*
|
||||
%{python3_sitearch}/sagenb/__pycache__/
|
||||
%{python3_sitearch}/sagenb/data/__pycache__/
|
||||
%{python3_sitearch}/sagenb/testing/__pycache__/
|
||||
%{python3_sitearch}/sagenb-*.egg-info
|
||||
%dir %{python3_sitearch}/sagenb/data
|
||||
# BSD
|
||||
%{python3_sitearch}/sagenb/data/codemirror
|
||||
# MIT
|
||||
%{python3_sitearch}/sagenb/data/graph_editor
|
||||
# ASL 2.0
|
||||
%{python3_sitearch}/sagenb/data/highlight
|
||||
# LGPLv2+
|
||||
%{SAGE_SHARE}/jsmol
|
||||
# (MIT or GPLv2) and (MIT and BSD and GPL)
|
||||
%{python3_sitearch}/sagenb/data/jquery
|
||||
# (MIT or GPLv2) and (MIT and BSD and GPL)
|
||||
%{python3_sitearch}/sagenb/data/jqueryui
|
||||
# Public Domain
|
||||
%{python3_sitearch}/sagenb/data/json
|
||||
# Symbolic link to $_jsdir/mathjax
|
||||
%{python3_sitearch}/sagenb/data/mathjax
|
||||
# Empty (do not run doctests flag file)
|
||||
%{python3_sitearch}/sagenb/data/nodoctest.py*
|
||||
# BSD
|
||||
%{python3_sitearch}/sagenb/data/openid-realselector
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/data/sage
|
||||
%if %{with sage3d}
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/data/sage3d
|
||||
%endif
|
||||
# LGPLv2+
|
||||
%{python3_sitearch}/sagenb/data/tiny_mce
|
||||
# LGPLv2+
|
||||
%{python3_sitearch}/sagenb/data/zorn
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/flask_version
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/interfaces
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/misc
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/notebook
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/simple
|
||||
# GPLv2+
|
||||
%{python3_sitearch}/sagenb/storage
|
||||
# GPLv2+
|
||||
%dir %{python3_sitearch}/sagenb/testing
|
||||
%{python3_sitearch}/sagenb/testing/*.py*
|
||||
%{python3_sitearch}/sagenb/testing/tests
|
||||
# ASL 2.0
|
||||
%{python3_sitearch}/sagenb/testing/selenium
|
||||
# GPLv2+
|
||||
%dir %{python3_sitearch}/sagenb/translations
|
||||
%lang(cs_CZ) %{python3_sitearch}/sagenb/translations/cs_CZ
|
||||
%lang(de_AT) %{python3_sitearch}/sagenb/translations/de_AT
|
||||
%lang(de_AT) %{python3_sitearch}/sagenb/translations/en_US
|
||||
%lang(de_AT) %{python3_sitearch}/sagenb/translations/es_ES
|
||||
%lang(de_AT) %{python3_sitearch}/sagenb/translations/fr_FR
|
||||
%lang(pt_BR) %{python3_sitearch}/sagenb/translations/pt_BR
|
||||
%lang(ru_RU) %{python3_sitearch}/sagenb/translations/ru_RU
|
||||
%lang(uk_UA) %{python3_sitearch}/sagenb/translations/uk_UA
|
||||
%if %{with bundled_widgetsnbextension}
|
||||
%config(noreplace) %{_sysconfdir}/jupyter/nbconfig/notebook.d/*.json
|
||||
%{_datadir}/jupyter/nbextensions/*
|
||||
|
@ -1939,6 +1799,16 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_
|
|||
|
||||
########################################################################
|
||||
%changelog
|
||||
* Fri Feb 28 2020 Jerry James <loganjerry@gmail.com> - 9.0-1
|
||||
- Version 9.0 (bz 1756780, 1770880)
|
||||
- Drop upstreamed -ecm and -primecount patches
|
||||
- Add -escape patch
|
||||
- The old notebook (sagenb) is no longer shipped, so drop the -sagenb and
|
||||
-sagenb-python3 patches, the -notebook subpackage, and some BRs
|
||||
- New -jupyter subpackage
|
||||
- Add suitesparse BR
|
||||
- Drop pathlib2 BR (bz 1797116)
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 8.9-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
|
|
4
sources
4
sources
|
@ -1,2 +1,2 @@
|
|||
SHA512 (cremona-2016-10-17.tar.gz) = 61f55ec5c15e32b5fdaf1fe8f2f3d50ba9afa542d8634918ec9493d739127f8c06a44b3cb1227a2979522baf61951ac37a67ae2b12c920958b04f8198d07ff57
|
||||
SHA512 (sage-8.9.tar.gz) = 056646488f0b3fc092057c7ff807762c2f98d13748e14540ae9a67ceb3a3d62f8c0263c80c61a36c423353d7051e2dfae466a3f452f3910d9ba95ef26b385e94
|
||||
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
|
||||
SHA512 (sage-9.0.tar.gz) = b0d3af3e8e9dd587314a33ec2f68e901dcd18cdd2cce4444fea5f04669dab6bb3e7db7642ff3e9ef1b1ffaf7a6f3c26272f889e1f5fb8fd63d5f5b68b5d168ed
|
||||
|
|
Loading…
Add table
Reference in a new issue