From 05337076b6faf9990937cdeaacf77db220e793d9 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 28 Apr 2019 15:12:00 -0600 Subject: [PATCH] Update to sagemath 8.7. - Drop upstreamed -giac patch. - Add -sagetex patch to fix a python indentation error. - Add -rubiks patch to fix compilation of the rubiks library. - Add -random patch to fix a non-random random bit generator. - Drop pip3 workaround; the binary is now named just pip again. --- sagemath-4ti2.patch | 4 +- sagemath-buildroot.patch | 2 +- sagemath-cbc.patch | 2 +- sagemath-escape.patch | 77 +++++----- sagemath-giac.patch | 15 -- sagemath-latte.patch | 12 +- sagemath-libgap.patch | 302 +++++++++++++++++++++++++++++++++----- sagemath-mpfr.patch | 6 +- sagemath-nauty.patch | 2 +- sagemath-openblas.patch | 38 +++-- sagemath-python3.patch | 292 +++++++++++-------------------------- sagemath-qepcad.patch | 12 +- sagemath-random.patch | 32 ++++ sagemath-rpmbuild.patch | 34 ++--- sagemath-rubiks.patch | 306 +++++++++++++++++++++++++++++++++++++++ sagemath-sagedoc.patch | 62 ++++---- sagemath-sagetex.patch | 12 ++ sagemath-scripts.patch | 56 +++---- sagemath-sympy.patch | 32 ++-- sagemath.spec | 40 +++-- sources | 2 +- 21 files changed, 898 insertions(+), 442 deletions(-) delete mode 100644 sagemath-giac.patch create mode 100644 sagemath-random.patch create mode 100644 sagemath-rubiks.patch create mode 100644 sagemath-sagetex.patch diff --git a/sagemath-4ti2.patch b/sagemath-4ti2.patch index 38487a4..8c5766f 100644 --- a/sagemath-4ti2.patch +++ b/sagemath-4ti2.patch @@ -1,7 +1,7 @@ diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py --- src/sage/sandpiles/sandpile.py.orig 2018-12-22 16:37:10.000000000 -0700 +++ src/sage/sandpiles/sandpile.py 2019-01-16 09:43:32.402089611 -0700 -@@ -344,9 +344,6 @@ from sage.arith.all import falling_facto +@@ -346,9 +346,6 @@ from sage.arith.all import falling_facto from sage.rings.all import Integer, PolynomialRing, QQ, ZZ from sage.symbolic.all import I, pi, SR @@ -11,7 +11,7 @@ diff -up src/sage/sandpiles/sandpile.py.orig src/sage/sandpiles/sandpile.py def _sandpile_help(cls, usage, verbose=True): -@@ -5150,7 +5147,7 @@ class SandpileDivisor(dict): +@@ -5163,7 +5160,7 @@ class SandpileDivisor(dict): sign_file.close() # compute try: diff --git a/sagemath-buildroot.patch b/sagemath-buildroot.patch index 4788307..1eb8696 100644 --- a/sagemath-buildroot.patch +++ b/sagemath-buildroot.patch @@ -1,7 +1,7 @@ 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): +@@ -334,6 +334,9 @@ class sage_build_cython(Command): with open(self._version_file, 'w') as f: f.write(self._version_stamp) diff --git a/sagemath-cbc.patch b/sagemath-cbc.patch index 196fa31..bc13292 100644 --- a/sagemath-cbc.patch +++ b/sagemath-cbc.patch @@ -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-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): +@@ -780,8 +780,8 @@ cdef class CoinBackend(GenericBackend): model.setLogLevel(old_logLevel) # multithreading diff --git a/sagemath-escape.patch b/sagemath-escape.patch index 0aa5527..57e58ae 100644 --- a/sagemath-escape.patch +++ b/sagemath-escape.patch @@ -1,5 +1,6 @@ ---- src/sage/combinat/crystals/alcove_path.py.orig 2019-01-14 17:16:01.000000000 -0700 -+++ src/sage/combinat/crystals/alcove_path.py 2019-02-07 15:43:21.188614487 -0700 +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 2019-03-23 16:20:34.000000000 -0600 ++++ src/sage/combinat/crystals/alcove_path.py 2019-04-08 13:33:18.101386015 -0600 @@ -383,7 +383,7 @@ class CrystalOfAlcovePaths(UniqueReprese One can compute all vertices of the crystal by finding all the @@ -9,39 +10,9 @@ search algorithm. .. WARNING:: ---- src/sage/combinat/crystals/kirillov_reshetikhin.py.orig 2019-01-14 17:16:01.000000000 -0700 -+++ src/sage/combinat/crystals/kirillov_reshetikhin.py 2019-02-07 15:44:37.612978369 -0700 -@@ -3443,7 +3443,7 @@ class CrystalOfTableaux_E7(CrystalOfTabl - ` `B^{7,s}`. - """ - def module_generator(self, shape): -- """ -+ r""" - Return the module generator of ``self`` with shape ``shape``. - - .. NOTE:: -@@ -3496,7 +3496,7 @@ class KR_type_E7(KirillovReshetikhinGene - - @cached_method - def A7_decomposition(self): -- """ -+ r""" - Return the decomposition of ``self`` into `A_7` highest - weight crystals. - ---- src/sage/groups/perm_gps/permgroup_named.py.orig 2019-01-14 17:16:02.000000000 -0700 -+++ src/sage/groups/perm_gps/permgroup_named.py 2019-02-07 15:51:38.530055246 -0700 -@@ -3027,7 +3027,7 @@ class SuzukiGroup(PermutationGroup_uniqu - return "The Suzuki group over %s" % self.base_ring() - - class ComplexReflectionGroup(PermutationGroup_unique): -- """ -+ r""" - A finite complex reflection group as a permutation group. - - We can realize `G(m,1,n)` as `m` copies of the symmetric group ---- src/sage/homology/homology_group.py.orig 2019-01-14 17:16:03.000000000 -0700 -+++ src/sage/homology/homology_group.py 2019-02-07 15:43:21.197614413 -0700 +diff -up src/sage/homology/homology_group.py.orig src/sage/homology/homology_group.py +--- src/sage/homology/homology_group.py.orig 2019-03-23 16:20:40.000000000 -0600 ++++ src/sage/homology/homology_group.py 2019-04-08 13:33:22.436307576 -0600 @@ -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]) @@ -51,14 +22,36 @@ sage: latex(HomologyGroup(6, ZZ)) \ZZ^{6} """ ---- src/sage/rings/number_field/number_field.py.orig 2019-01-14 17:16:04.000000000 -0700 -+++ src/sage/rings/number_field/number_field.py 2019-02-07 15:43:21.220614222 -0700 -@@ -6622,7 +6622,7 @@ class NumberField_generic(WithEqualityBy - return U +diff -up src/sage/rings/function_field/differential.py.orig src/sage/rings/function_field/differential.py +--- src/sage/rings/function_field/differential.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/function_field/differential.py 2019-04-09 10:42:43.202792022 -0600 +@@ -360,7 +360,7 @@ class FunctionFieldDifferential_global(F + return to_R(c) - def S_unit_solutions(self, S=[], prec=106, include_exponents=False, include_bound=False, proof=None): + def cartier(self): - """ + r""" - Return all solutions to the S-unit equation ``x + y = 1`` over K. + Return the image of the differential by the Cartier operator. - INPUT: + The Cartier operator operates on differentials. Let `x` be a separating +diff -up src/sage/rings/function_field/divisor.py.orig src/sage/rings/function_field/divisor.py +--- src/sage/rings/function_field/divisor.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/function_field/divisor.py 2019-04-09 10:42:22.061135616 -0600 +@@ -531,7 +531,7 @@ class FunctionFieldDivisor(ModuleElement + return basis, coordinates_func + + def basis_differential_space(self): +- """ ++ r""" + Return a basis of the space of differentials `\Omega(D)` + for the divisor `D`. + +@@ -554,7 +554,7 @@ class FunctionFieldDivisor(ModuleElement + return [W.element_class(W, f) for f in fbasis] + + def differential_space(self): +- """ ++ r""" + Return the vector space of the differential space `\Omega(D)` of the divisor `D`. + + OUTPUT: diff --git a/sagemath-giac.patch b/sagemath-giac.patch deleted file mode 100644 index 724baab..0000000 --- a/sagemath-giac.patch +++ /dev/null @@ -1,15 +0,0 @@ -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 - """ diff --git a/sagemath-latte.patch b/sagemath-latte.patch index ec7ee91..3731637 100644 --- a/sagemath-latte.patch +++ b/sagemath-latte.patch @@ -1,7 +1,7 @@ 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, +--- src/sage/interfaces/latte.py.orig 2019-04-08 12:05:07.092855841 -0600 ++++ src/sage/interfaces/latte.py 2019-04-08 13:37:31.377803169 -0600 +@@ -113,7 +113,7 @@ def count(arg, ehrhart_polynomial=False, # Check that LattE is present Latte().require() @@ -10,9 +10,9 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py 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() +@@ -308,7 +308,7 @@ def integrate(arg, polynomial=None, algo + + from sage.rings.rational import Rational - args = ['integrate'] + args = ['latte-integrate'] diff --git a/sagemath-libgap.patch b/sagemath-libgap.patch index 3c64ab8..d7c5733 100644 --- a/sagemath-libgap.patch +++ b/sagemath-libgap.patch @@ -1,27 +1,163 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2019-01-14 17:16:02.000000000 -0700 -+++ src/sage/env.py 2019-02-07 16:11:38.887417503 -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')) - _add_variable_or_fallback('POLYTOPE_DATA_DIR',opj('$SAGE_SHARE','reflexive_polytopes')) --_add_variable_or_fallback('GAP_ROOT_DIR', opj('$SAGE_SHARE','gap')) -+_add_variable_or_fallback('GAP_ROOT_DIR', opj('/usr','lib','gap')) - _add_variable_or_fallback('THEBE_DIR', opj('$SAGE_SHARE','thebe')) - _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')) +--- src/sage/env.py.orig 2019-04-08 12:21:12.403515647 -0600 ++++ src/sage/env.py 2019-04-08 12:22:37.165993394 -0600 +@@ -174,7 +174,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi + var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs')) + var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves')) + var('POLYTOPE_DATA_DIR', join(SAGE_SHARE, 'reflexive_polytopes')) +-var('GAP_ROOT_DIR', join(SAGE_SHARE, 'gap')) ++var('GAP_ROOT_DIR', join('/usr','lib','gap')) + var('THEBE_DIR', join(SAGE_SHARE, 'thebe')) + var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs')) + var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona')) +diff -up src/sage/interfaces/tests.py.orig src/sage/interfaces/tests.py +--- src/sage/interfaces/tests.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/tests.py 2019-04-08 12:32:57.223857758 -0600 +@@ -33,7 +33,7 @@ Test that write errors to stderr are han + sage: kwds = dict(shell=True, stdout=f, stderr=f) + sage: subprocess.call("echo syntax error | ecl", **kwds) + 0 +- sage: subprocess.call("echo syntax error | gap", **kwds) ++ sage: subprocess.call("echo syntax error | gap", **kwds) in (0, 1) + 0 + sage: subprocess.call("echo syntax error | gp", **kwds) + 0 +diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd +--- src/sage/libs/gap/gap_includes.pxd.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/libs/gap/gap_includes.pxd 2019-04-08 12:34:27.782231417 -0600 +@@ -76,18 +76,16 @@ cdef extern from "": + + + cdef extern from "": +- ctypedef void (*CallbackFunc)() +- void GAP_Initialize(int argc, char ** argv, char ** env, +- CallbackFunc, CallbackFunc) ++ """ ++ #define sig_GAP_Enter() {int t = GAP_Enter(); if (!t) sig_error();} ++ """ ++ ctypedef void (*GAP_CallbackFunc)() ++ void GAP_Initialize(int argc, char ** argv, ++ GAP_CallbackFunc markBagsCallback, GAP_CallbackFunc errorCallback, ++ int handleSignals) + Obj GAP_EvalString(const char *) except * + Obj GAP_EvalStringNoExcept "GAP_EvalString"(const char *) + Obj GAP_ValueGlobalVariable(const char *) +- +- +-cdef extern from "" nogil: +- """ +- #define sig_GAP_Enter() {int t = GAP_Enter(); if (!t) sig_error();} +- """ + cdef void GAP_EnterStack() + cdef void GAP_LeaveStack() + cdef int GAP_Enter() except 0 +@@ -121,26 +119,31 @@ cdef extern from "": + UInt TNUM_OBJ(Obj obj) + char* TNAM_OBJ(Obj obj) + +- cdef int T_INTPOS +- cdef int T_INTNEG +- cdef int T_RAT +- cdef int T_CYC +- cdef int T_FFE +- cdef int T_PERM2 +- cdef int T_PERM4 +- cdef int T_BOOL +- cdef int T_CHAR +- cdef int T_FUNCTION +- cdef int T_MACFLOAT +- cdef int T_PLIST +- cdef int T_PLIST_CYC +- cdef int T_BLIST +- cdef int T_STRING +- cdef int T_COMOBJ +- cdef int T_POSOBJ +- cdef int T_DATOBJ +- cdef int T_WPOBJ +- ++ cdef enum TNUM: ++ T_INT ++ T_INTPOS ++ T_INTNEG ++ T_RAT ++ T_CYC ++ T_FFE ++ T_MACFLOAT ++ T_PERM2 ++ T_PERM4 ++ T_TRANS2 ++ T_TRANS4 ++ T_PPERM2 ++ T_PPERM4 ++ T_BOOL ++ T_CHAR ++ T_FUNCTION ++ T_PLIST ++ T_PLIST_CYC ++ T_BLIST ++ T_STRING ++ T_COMOBJ ++ T_POSOBJ ++ T_DATOBJ ++ T_WPOBJ + + cdef extern from "": + Obj NEW_PREC(int len) +diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx +--- src/sage/libs/gap/libgap.pyx.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/libs/gap/libgap.pyx 2019-04-08 12:25:35.700787082 -0600 +@@ -233,14 +233,6 @@ from sage.misc.superseded import depreca + ############################################################################ + + +-cdef void report(Obj bag): +- print(TNAM_OBJ(bag), SIZE_OBJ(bag)) +- +- +-cdef void print_gasman_objects(): +- CallbackForAllBags(report) +- +- + from sage.misc.lazy_import import is_during_startup + if is_during_startup(): + import sys, traceback diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx ---- src/sage/libs/gap/util.pyx.orig 2019-01-14 17:16:03.000000000 -0700 -+++ src/sage/libs/gap/util.pyx 2019-02-07 16:13:52.658939819 -0700 -@@ -18,6 +18,7 @@ import os - import signal - import warnings +--- src/sage/libs/gap/util.pyx.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/libs/gap/util.pyx 2019-04-08 12:37:02.323035697 -0600 +@@ -14,19 +14,16 @@ Utility functions for GAP -+from posix.dlfcn cimport dlopen, dlclose, RTLD_NOW, RTLD_GLOBAL - from libc.string cimport strcpy, strlen + from __future__ import print_function, absolute_import - from cpython.exc cimport PyErr_SetObject, PyErr_Occurred, PyErr_Fetch -@@ -181,7 +182,7 @@ def gap_root(): +-import os +-import signal +-import warnings ++from libc.signal cimport signal, SIGCHLD, SIG_DFL + from posix.dlfcn cimport dlopen, dlclose, RTLD_NOW, RTLD_GLOBAL +-from libc.string cimport strcpy, strlen + + from cpython.exc cimport PyErr_Fetch, PyErr_Restore + from cpython.object cimport Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, Py_GE + from cpython.ref cimport PyObject, Py_XINCREF, Py_XDECREF +-from cysignals.memory cimport sig_malloc +-from cysignals.pysignals import containsignals +-from cysignals.signals cimport sig_on, sig_off, sig_error ++from cysignals.signals cimport sig_on, sig_off + ++import os ++import warnings + import sage.env + + from .gap_includes cimport * +@@ -105,7 +102,7 @@ cdef class ObjWrapper(object): + sage: hash(x) + 0 + """ +- return (self.value) ++ return (self.value) + + + cdef ObjWrapper wrap_obj(Obj obj): +@@ -178,7 +175,7 @@ def gap_root(): sage: from sage.libs.gap.util import gap_root sage: gap_root() # random output @@ -30,22 +166,118 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx """ if os.path.exists(sage.env.GAP_ROOT_DIR): return sage.env.GAP_ROOT_DIR -@@ -259,6 +260,18 @@ cdef initialize(): - global _gap_is_initialized, environ - if _gap_is_initialized: return +@@ -197,7 +194,6 @@ def gap_root(): -+ # Hack to ensure that all symbols provided by libgap are loaded into the -+ # global symbol table -+ # Note: we could use RTLD_NOLOAD and avoid the subsequent dlclose() but -+ # this isn't portable -+ cdef void* handle + # To ensure that we call initialize_libgap only once. + cdef bint _gap_is_initialized = False +-cdef extern char **environ + + + cdef char* _reset_error_output_cmd = """\ +@@ -216,33 +212,6 @@ MakeImmutable(libgap_errout); + """ + + +-cdef char** copy_environ(char** env): +- """ +- Make a copy of the environment block given by ``env``. +- +- Returns a pointer to the copy, which is the caller's responsibility to +- free. +- """ +- +- cdef char** env_copy +- cdef int envc = 0; +- cdef int idx +- cdef size_t size +- +- while env[envc]: +- envc += 1 +- +- env_copy = sig_malloc((envc + 1) * sizeof(char*)) +- +- for idx in range(envc): +- size = strlen(env[idx]) + 1 +- env_copy[idx] = sig_malloc(size) +- strcpy(env_copy[idx], env[idx]) +- +- env_copy[envc] = NULL +- return env_copy +- +- + cdef initialize(): + """ + Initialize the GAP library, if it hasn't already been +@@ -253,25 +222,23 @@ cdef initialize(): + sage: libgap(123) # indirect doctest + 123 + """ +- global _gap_is_initialized, environ ++ global _gap_is_initialized + if _gap_is_initialized: return + # Hack to ensure that all symbols provided by libgap are loaded into the + # global symbol table + # Note: we could use RTLD_NOLOAD and avoid the subsequent dlclose() but + # this isn't portable + cdef void* handle +- libgapname = str_to_bytes(sage.env.GAP_SO) +- handle = dlopen(libgapname, RTLD_NOW | RTLD_GLOBAL) + handle = dlopen("libgap.so", RTLD_NOW | RTLD_GLOBAL) -+ if handle == NULL: -+ raise RuntimeError( -+ "Could not dlopen() libgap.so even though it should already " -+ "be loaded!") -+ dlclose(handle) -+ - # Define argv and environ variables, which we will pass in to + if handle is NULL: + raise RuntimeError( + "Could not dlopen() libgap even though it should already " + "be loaded!") + dlclose(handle) + +- # Define argv and environ variables, which we will pass in to ++ # Define argv variable, which we will pass in to # initialize GAP. Note that we must pass define the memory pool # size! +- cdef char** env + cdef char* argv[18] + argv[0] = "sage" + argv[1] = "-l" +@@ -318,21 +285,15 @@ cdef initialize(): + + argv[argc] = NULL + +- env = copy_environ(environ) ++ sig_on() ++ # Initialize GAP but disable their SIGINT handler ++ GAP_Initialize(argc, argv, gasman_callback, error_handler, ++ handleSignals=False) ++ sig_off() + +- # Need to save/restore current SIGINT handling since GAP_Initialize +- # currently clobbers it; it doesn't matter what we set SIGINT to +- # temporarily. +- with containsignals(): +- sig_on() +- try: +- # Initialize GAP and capture any error messages. The +- # initialization just prints any errors and does not +- # use the error handler. +- GAP_Initialize(argc, argv, env, &gasman_callback, +- &error_handler) +- finally: +- sig_off() ++ # Disable GAP's SIGCHLD handler ChildStatusChanged(), which calls ++ # waitpid() on random child processes. ++ signal(SIGCHLD, SIG_DFL) + + # Set the ERROR_OUTPUT global in GAP to an output stream in which to + # receive error output +diff -up src/sage/tests/books/judson-abstract-algebra/sylow-sage.py.orig src/sage/tests/books/judson-abstract-algebra/sylow-sage.py +--- src/sage/tests/books/judson-abstract-algebra/sylow-sage.py.orig 2019-03-23 16:20:43.000000000 -0600 ++++ src/sage/tests/books/judson-abstract-algebra/sylow-sage.py 2019-04-08 12:37:39.859183332 -0600 +@@ -225,8 +225,8 @@ r""" + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +- sage: gap.version() +- '4.10.0' ++ sage: gap.version() # random ++ '4.10.1' + + ~~~~~~~~~~~~~~~~~~~~~~ :: + diff --git a/sagemath-mpfr.patch b/sagemath-mpfr.patch index c5b83c1..3e68b83 100644 --- a/sagemath-mpfr.patch +++ b/sagemath-mpfr.patch @@ -12,7 +12,7 @@ diff -up src/sage/libs/mpfr/__init__.pxd.orig src/sage/libs/mpfr/__init__.pxd diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx --- 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 +@@ -2203,7 +2203,7 @@ cdef class MPComplexNumber(sage.structur cdef RealNumber a,r a = self.argument()/n r = self.abs() @@ -24,7 +24,7 @@ diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.pyx --- 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. +@@ -2265,7 +2265,7 @@ cdef class ComplexNumber(sage.structure. rho = abs(self) arg = self.argument() / n mpfr_init2(r, self._prec) @@ -36,7 +36,7 @@ diff -up src/sage/rings/complex_number.pyx.orig src/sage/rings/complex_number.py diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx --- 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 +@@ -5386,7 +5386,7 @@ cdef class RealNumber(sage.structure.ele if algorithm == 1: x = self._new() sig_on() diff --git a/sagemath-nauty.patch b/sagemath-nauty.patch index 6cb38b5..9f01c6b 100644 --- a/sagemath-nauty.patch +++ b/sagemath-nauty.patch @@ -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-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(): +@@ -924,7 +924,7 @@ class GraphGenerators(): else: enc_kwargs = {'encoding': 'latin-1'} diff --git a/sagemath-openblas.patch b/sagemath-openblas.patch index 7f20d28..6ee3743 100644 --- a/sagemath-openblas.patch +++ b/sagemath-openblas.patch @@ -1,16 +1,19 @@ diff -up src/module_list.py.orig src/module_list.py ---- 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' +--- src/module_list.py.orig 2019-04-08 15:06:42.789735582 -0600 ++++ src/module_list.py 2019-04-08 15:09:46.553467045 -0600 +@@ -11,20 +11,17 @@ SAGE_INC = '/usr/include' import pkgconfig # CBLAS can be one of multiple implementations -cblas_pc = pkgconfig.parse('cblas') -+cblas_pc = pkgconfig.parse('openblas') - cblas_libs = cblas_pc['libraries'] - cblas_library_dirs = cblas_pc['library_dirs'] - cblas_include_dirs = cblas_pc['include_dirs'] -@@ -20,11 +20,9 @@ cblas_include_dirs = cblas_pc['include_d +-cblas_libs = cblas_pc['libraries'] +-cblas_library_dirs = cblas_pc['library_dirs'] +-cblas_include_dirs = cblas_pc['include_dirs'] ++cblas_libs = ['openblas'] ++cblas_library_dirs = ['/usr/lib'] ++cblas_include_dirs = ['/usr/include/openblas'] + + # TODO: Remove Cygwin hack by installing a suitable cblas.pc if os.path.exists('/usr/lib/libblas.dll.a'): cblas_libs = ['gslcblas'] @@ -26,14 +29,19 @@ 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 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 +--- src/sage/misc/cython.py.orig 2019-04-08 15:05:22.838157654 -0600 ++++ src/sage/misc/cython.py 2019-04-08 15:11:50.191262902 -0600 +@@ -38,10 +38,9 @@ from sage.misc.sage_ostools import resto # CBLAS can be one of multiple implementations -cblas_pc = pkgconfig.parse('cblas') -+cblas_pc = pkgconfig.parse('openblas') - cblas_libs = list(cblas_pc['libraries']) - cblas_library_dirs = list(cblas_pc['library_dirs']) - cblas_include_dirs = list(cblas_pc['include_dirs']) +-cblas_libs = list(cblas_pc['libraries']) +-cblas_library_dirs = list(cblas_pc['library_dirs']) +-cblas_include_dirs = list(cblas_pc['include_dirs']) ++cblas_libs = ['openblas'] ++cblas_library_dirs = ['/usr/lib'] ++cblas_include_dirs = ['/usr/include/openblas'] + + standard_libs = [ + 'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm', diff --git a/sagemath-python3.patch b/sagemath-python3.patch index 1f8c4d7..1dd9d82 100644 --- a/sagemath-python3.patch +++ b/sagemath-python3.patch @@ -1,27 +1,18 @@ -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', -- '__builtin__', -+ 'builtins', - ] - - def check_nested_class_picklability(app, what, name, obj, skip, options): -@@ -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) - -- if getattr(obj, '__module__', None) == '__builtin__': -+ if getattr(obj, '__module__', None) == 'builtins': - return True - - if (hasattr(obj, '__name__') and obj.__name__.find('.') != -1 and +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 2019-04-08 12:02:29.162692936 -0600 +@@ -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 2018-11-05 08:45:39.000000000 -0700 -+++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2019-01-04 10:39:26.659076379 -0700 +--- 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 2019-04-08 11:59:49.259545960 -0600 @@ -25,7 +25,7 @@ This module contains three classes: .. NOTE:: @@ -41,8 +32,8 @@ diff -up build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig build/pk # 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 2018-11-05 08:45:39.000000000 -0700 -+++ build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py 2019-01-05 10:36:28.072250833 -0700 +--- 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 2019-04-08 11:59:49.260545943 -0600 @@ -59,7 +59,7 @@ class Parser: 'parent': r'(?:%s)?' % re.escape(PARENT_PREFIX), } @@ -53,36 +44,32 @@ diff -up build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py.orig build/pkgs/sage '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 2019-01-04 10:40:25.729978335 -0700 -@@ -45,8 +45,8 @@ See the SageTeX documentation for more d +--- build/pkgs/sagetex/src/extractsagecode.py.orig 2019-04-08 11:59:49.261545925 -0600 ++++ build/pkgs/sagetex/src/extractsagecode.py 2019-04-08 12:04:16.915757233 -0600 +@@ -45,7 +45,7 @@ See the SageTeX documentation for more d try: opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite']) -except getopt.GetoptError, err: -- print str(err) +except getopt.GetoptError as err: -+ print(str(err)) + print(str(err)) usage() sys.exit(2) - diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makestatic.py ---- build/pkgs/sagetex/src/makestatic.py.orig 2015-08-26 17:28:42.000000000 -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 +--- build/pkgs/sagetex/src/makestatic.py.orig 2019-04-08 11:59:49.262545907 -0600 ++++ build/pkgs/sagetex/src/makestatic.py 2019-04-08 12:04:42.619295492 -0600 +@@ -45,7 +45,7 @@ See the SageTeX documentation for more d try: opts, args = getopt.getopt(sys.argv[1:], 'ho', ['help', 'overwrite']) -except getopt.GetoptError, err: -- print str(err) +except getopt.GetoptError as err: -+ print(str(err)) + print(str(err)) usage() sys.exit(2) - diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py ---- build/pkgs/sagetex/src/remote-sagetex.py.orig 2015-08-26 17:28:42.000000000 -0600 -+++ build/pkgs/sagetex/src/remote-sagetex.py 2019-01-04 10:43:03.728041391 -0700 +--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-01-09 09:51:28.000000000 -0700 ++++ build/pkgs/sagetex/src/remote-sagetex.py 2019-04-08 11:59:49.263545889 -0600 @@ -24,12 +24,11 @@ ## You should have received a copy of the GNU General Public License along ## with this program. If not, see . @@ -145,119 +132,10 @@ 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/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 2019-01-04 10:44:12.087770682 -0700 -@@ -58,7 +58,7 @@ with open(src + '.tex') as texf: - break - - if not uses_sagetex: -- print src + ".tex doesn't seem to use SageTeX, exiting." -+ print(src + ".tex doesn't seem to use SageTeX, exiting.") - sys.exit(0) - - # if something goes wrong, assume we need to run Sage -@@ -72,7 +72,7 @@ try: - if not re.search(ignore, line): - h.update(line) - except IOError: -- print '{0}.sagetex.sage not found, I think you need to typeset {0}.tex first.'.format(src) -+ print('{0}.sagetex.sage not found, I think you need to typeset {0}.tex first.'.format(src)) - sys.exit(1) - - try: -@@ -80,8 +80,8 @@ try: - for line in outf: - m = re.match('%([0-9a-f]+)% md5sum', line) - if m: -- print 'computed md5:', h.hexdigest() -- print 'sagetex.sout md5:', m.group(1) -+ print('computed md5:', h.hexdigest()) -+ print('sagetex.sout md5:', m.group(1)) - if h.hexdigest() == m.group(1): - run_sage = False - break -@@ -89,7 +89,7 @@ except IOError: - pass - - if run_sage: -- print 'Need to run Sage on {0}.'.format(src) -+ print('Need to run Sage on {0}.'.format(src)) - sys.exit(subprocess.call([path_to_sage, src + '.sagetex.sage'])) - 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 2019-01-04 10:44:35.398337372 -0700 -@@ -52,7 +52,7 @@ class SoutParser(): - try: - OneOrMore(parselabel).parseFile(fn) - except IOError: -- print 'Error accessing %s; exiting. Does your .sout file exist?' % fn -+ print('Error accessing %s; exiting. Does your .sout file exist?' % fn) - 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 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) - if version_check: -- raise VersionError, errstr -+ raise VersionError(errstr) - else: -- print '**** WARNING! Skipping version check for .sty and .py files, and' -- print errstr -+ print('**** WARNING! Skipping version check for .sty and .py files, and') -+ print(errstr) - if ' ' in jobname: - jobname = jobname.strip('"') - self.progress('Processing Sage code for {0}.tex...'.format(jobname)) -@@ -116,7 +116,7 @@ http://www.sagemath.org/doc/installation - elif labelname == 'sagecmdline': - pass # output message already printed - else: -- raise ValueError, 'inline() got a bad labelname "{0}"'.format(labelname) -+ raise ValueError('inline() got a bad labelname "{0}"'.format(labelname)) - self.souttmp.write(r'\newlabel{@' + labelname + str(counter) + - '}{{%\n' + s.rstrip() + '}{}{}{}{}}\n') - def savecmd(self, s): -@@ -178,7 +178,7 @@ http://www.sagemath.org/doc/installation - latex(result), - r' \end{displaymath}'] - except SyntaxError: -- exec preparse(splitup[i][2]) in globals, locals -+ exec(preparse(splitup[i][2]), globals, locals) - self.inline(counter, '\n'.join(tex_strs)) - def commandline(self, counter, s, globals, locals, text_output): - self.progress('Sage commandline {0} (line {1})'.format(counter, self.current_tex_line)) -@@ -208,7 +208,7 @@ http://www.sagemath.org/doc/installation - latex(result) + - r'\end{displaymath}') - except SyntaxError: -- exec preparse(splitup[i][2]) in globals, locals -+ exec(preparse(splitup[i][2]), globals, locals) - if 'displaymath' not in tex_strs[-1]: - tex_strs.append(skip) - self.inline(counter, '\n'.join(tex_strs), labelname='sagecmdline') -@@ -233,8 +233,8 @@ http://www.sagemath.org/doc/installation - except ValueError as inst: - if re.match('filetype .*not supported by save', str(inst)): - newfilename = plotfilename[:-3] + 'png' -- print ' saving {0} failed; saving to {1} instead.'.format( -- plotfilename, newfilename) -+ print(' saving {0} failed; saving to {1} instead.'.format( -+ plotfilename, newfilename)) - _p_.save(filename=newfilename, **kwargs) - break - else: 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 = [ +--- src/doc/common/conf.py.orig 2019-03-23 16:20:31.000000000 -0600 ++++ src/doc/common/conf.py 2019-04-08 12:05:07.088855913 -0600 +@@ -547,7 +547,7 @@ skip_picklability_check_modules = [ #'sage.misc.nested_class_test', # for test only 'sage.misc.latex', 'sage.misc.explain_pickle', @@ -266,7 +144,7 @@ diff -up src/doc/common/conf.py.orig src/doc/common/conf.py ] def check_nested_class_picklability(app, what, name, obj, skip, options): -@@ -539,7 +539,7 @@ def skip_member(app, what, name, obj, sk +@@ -596,7 +596,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) @@ -276,18 +154,18 @@ diff -up src/doc/common/conf.py.orig src/doc/common/conf.py objname = getattr(obj, "__name__", None) 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 +--- src/sage/combinat/finite_state_machine.py.orig 2019-03-23 16:20:38.000000000 -0600 ++++ src/sage/combinat/finite_state_machine.py 2019-04-08 12:05:07.090855877 -0600 +@@ -932,7 +932,7 @@ import six from six.moves import range, zip_longest, zip from six import itervalues -import collections +import collections.abc import itertools + from copy import copy, deepcopy - from sage.calculus.var import var -@@ -14253,7 +14253,7 @@ def is_FSMProcessIterator(PI): +@@ -14201,7 +14201,7 @@ def is_FSMProcessIterator(PI): class FSMProcessIterator(SageObject, @@ -297,8 +175,8 @@ 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/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 +--- src/sage/cpython/dict_del_by_value.pyx.orig 2019-03-23 16:20:40.000000000 -0600 ++++ src/sage/cpython/dict_del_by_value.pyx 2019-04-08 12:05:07.091855859 -0600 @@ -347,8 +347,8 @@ ELIF PY_VERSION_HEX>=0x03060000: cdef MyPyDictKeysObject * keys = (mp.ma_keys) cdef size_t perturb @@ -311,9 +189,9 @@ diff -up src/sage/cpython/dict_del_by_value.pyx.orig src/sage/cpython/dict_del_b if mp.ma_values != NULL: print ("del_dictitem_by_exact_value cannot be applied to a shared key dict") 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 +--- src/sage/geometry/triangulation/point_configuration.py.orig 2019-03-23 16:20:40.000000000 -0600 ++++ src/sage/geometry/triangulation/point_configuration.py 2019-04-08 12:05:07.091855859 -0600 +@@ -623,7 +623,7 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ timeout = 600 @@ -323,8 +201,8 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge 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 +--- src/sage/interfaces/frobby.py.orig 2019-03-23 16:20:40.000000000 -0600 ++++ src/sage/interfaces/frobby.py 2019-04-08 12:05:07.091855859 -0600 @@ -77,7 +77,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) @@ -335,8 +213,8 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py 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 +--- src/sage/interfaces/gfan.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/gfan.py 2019-04-08 12:05:07.092855841 -0600 @@ -66,7 +66,7 @@ class Gfan(object): if six.PY2: enc_kwargs = {} @@ -347,8 +225,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 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/interfaces/gp.py 2019-01-15 15:32:12.479565952 -0700 +--- src/sage/interfaces/gp.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/gp.py 2019-04-08 12:05:07.092855841 -0600 @@ -934,17 +934,6 @@ class GpElement(ExpectElement): """ return repr(self.type()) == 't_STR' @@ -368,9 +246,9 @@ 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 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, +--- src/sage/interfaces/latte.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/latte.py 2019-04-08 12:05:07.092855841 -0600 +@@ -148,6 +148,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=(None if verbose else PIPE), @@ -378,7 +256,7 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py cwd=str(SAGE_TMP)) ans, err = latte_proc.communicate(arg) -@@ -352,6 +353,7 @@ def integrate(arg, polynomial=None, algo +@@ -355,6 +356,7 @@ def integrate(arg, polynomial=None, algo latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=(None if verbose else PIPE), @@ -387,8 +265,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 2018-12-22 16:37:08.000000000 -0700 -+++ src/sage/interfaces/sagespawn.pyx 2019-01-16 12:08:26.371966835 -0700 +--- src/sage/interfaces/sagespawn.pyx.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/sagespawn.pyx 2019-04-08 12:05:07.092855841 -0600 @@ -1,6 +1,6 @@ """ Sage wrapper around pexpect's ``spawn`` class and @@ -437,8 +315,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py 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 +--- src/sage/misc/parser.pyx.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/misc/parser.pyx 2019-04-08 12:05:07.093855823 -0600 @@ -96,7 +96,7 @@ def token_to_str(int token): @@ -738,8 +616,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 2018-12-22 16:37:09.000000000 -0700 -+++ src/sage/plot/plot3d/plot3d.py 2019-01-04 10:58:51.476233419 -0700 +--- src/sage/plot/plot3d/plot3d.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/plot/plot3d/plot3d.py 2019-04-08 12:05:07.093855823 -0600 @@ -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) @@ -751,8 +629,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 2018-12-22 16:37:09.000000000 -0700 -+++ src/sage/plot/point.py 2019-01-04 10:59:15.506780663 -0700 +--- src/sage/plot/point.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/plot/point.py 2019-04-08 12:05:07.094855805 -0600 @@ -29,7 +29,7 @@ TESTS:: from sage.misc.decorators import options, rename_keyword from sage.plot.colors import to_mpl_color @@ -772,8 +650,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 2018-12-22 16:37:09.000000000 -0700 -+++ src/sage/repl/display/fancy_repr.py 2019-01-04 11:00:18.210599287 -0700 +--- src/sage/repl/display/fancy_repr.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/repl/display/fancy_repr.py 2019-04-08 12:05:07.094855805 -0600 @@ -15,7 +15,7 @@ Representations of objects. import types @@ -793,8 +671,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 2018-12-22 16:37:09.000000000 -0700 -+++ src/sage/repl/ipython_kernel/interact.py 2019-01-04 11:01:50.722856305 -0700 +--- src/sage/repl/ipython_kernel/interact.py.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/repl/ipython_kernel/interact.py 2019-04-08 12:05:07.094855805 -0600 @@ -35,7 +35,8 @@ EXAMPLES:: from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons @@ -805,10 +683,10 @@ diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_ker from .widgets import EvalText, SageColorPicker from sage.structure.element import parent from sage.symbolic.ring import SR -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 +diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx +--- src/sage/rings/integer.pyx.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/integer.pyx 2019-04-08 12:05:07.095855787 -0600 +@@ -6989,7 +6989,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c while x[0] == c' ': x += 1 # Strip spaces # Disallow a sign here @@ -818,9 +696,9 @@ diff -up src/sage/rings/integer.pyx.orig assert base >= 2 diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx ---- src/sage/rings/polynomial/pbori.pyx.orig 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: +--- src/sage/rings/polynomial/pbori.pyx.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/polynomial/pbori.pyx 2019-04-08 12:05:07.096855769 -0600 +@@ -4774,8 +4774,7 @@ cdef class PolynomialConstruct: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) @@ -831,9 +709,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 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 +--- src/sage/rings/real_mpfi.pyx.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/real_mpfi.pyx 2019-04-08 12:05:07.097855751 -0600 +@@ -1943,12 +1943,12 @@ cdef class RealIntervalFieldElement(Ring cdef long digits digits = strlen(lower_s) @@ -848,7 +726,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx digits -= 1 upper_expo -= digits -@@ -2125,7 +2125,7 @@ cdef class RealIntervalFieldElement(Ring +@@ -2117,7 +2117,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) @@ -858,9 +736,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 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 +--- src/sage/rings/real_mpfr.pyx.orig 2019-03-23 16:20:42.000000000 -0600 ++++ src/sage/rings/real_mpfr.pyx 2019-04-08 12:05:07.098855733 -0600 +@@ -2039,7 +2039,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) @@ -870,8 +748,8 @@ 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 2018-12-22 16:37:10.000000000 -0700 -+++ src/sage/structure/sage_object.pyx 2019-01-04 13:48:09.055790438 -0700 +--- src/sage/structure/sage_object.pyx.orig 2019-03-23 16:20:43.000000000 -0600 ++++ src/sage/structure/sage_object.pyx 2019-04-08 12:05:07.098855733 -0600 @@ -665,7 +665,7 @@ cdef class SageObject: try: s = self._interface_init_(I) @@ -882,9 +760,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 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: +--- src/sage/symbolic/expression.pyx.orig 2019-03-23 16:20:43.000000000 -0600 ++++ src/sage/symbolic/expression.pyx 2019-04-08 12:05:07.100855697 -0600 +@@ -12915,7 +12915,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ @@ -893,7 +771,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx def __exit__(self, *args): """ -@@ -12968,7 +12968,7 @@ cdef class hold_class: +@@ -12928,7 +12928,7 @@ cdef class hold_class: sage: SR(2)^5 32 """ @@ -903,9 +781,9 @@ 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-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): +--- src/setup.py.orig 2019-04-08 11:45:58.283274716 -0600 ++++ src/setup.py 2019-04-08 12:05:07.101855679 -0600 +@@ -232,7 +232,7 @@ class sage_build_cython(Command): cdivision=True, embedsignature=True, fast_getattr=True, diff --git a/sagemath-qepcad.patch b/sagemath-qepcad.patch index c5b1a59..a34d5dc 100644 --- a/sagemath-qepcad.patch +++ b/sagemath-qepcad.patch @@ -1,6 +1,6 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py ---- 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 +--- src/sage/interfaces/qepcad.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/qepcad.py 2019-04-08 13:32:00.509789984 -0600 @@ -530,7 +530,7 @@ TESTS: Check the qepcad configuration file:: @@ -10,16 +10,16 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py ....: f.readlines()[-1] 'SINGULAR .../bin\n' -@@ -608,7 +608,6 @@ from __future__ import print_function - from __future__ import absolute_import +@@ -607,7 +607,6 @@ AUTHORS: + from __future__ import print_function, absolute_import from six import string_types -from sage.env import SAGE_LOCAL import pexpect import re import sys -@@ -621,6 +620,8 @@ from sage.docs.instancedoc import instan - from .expect import Expect, ExpectFunction, AsciiArtString +@@ -621,6 +620,8 @@ from .expect import Expect, ExpectFuncti + from sage.interfaces.interface import AsciiArtString +QEPCAD_LOCAL = "/usr/share/qepcad" diff --git a/sagemath-random.patch b/sagemath-random.patch new file mode 100644 index 0000000..1c8274e --- /dev/null +++ b/sagemath-random.patch @@ -0,0 +1,32 @@ +diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx +--- src/sage/misc/binary_tree.pyx.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/misc/binary_tree.pyx 2019-04-09 13:55:17.152716497 -0600 +@@ -13,6 +13,8 @@ from cysignals.memory cimport sig_malloc + + from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF + ++from sage.misc.prandom import randint ++ + cdef binary_tree_node *BinaryTreeNode(int key, object value): + cdef binary_tree_node *t + t = sig_malloc(sizeof(binary_tree_node)) +@@ -122,10 +124,7 @@ cdef binary_tree_node *binary_tree_right + cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self): + cdef binary_tree_node *cur + cdef int right +- # We have a pointer we're about to free. Chances are, we'll never +- # see this pointer again. Thus, its least significant bit is +- # "random" enough to resist bias. +- right = (self)&1 ++ right = randint(0, 1) + if self.right == NULL: + return self.left + if self.left == NULL: +@@ -502,7 +501,6 @@ class Test: + + sage: sage.misc.binary_tree.Test().random() + """ +- from sage.misc.prandom import randint + t = BinaryTree() + for i in xrange(cycles): + r = randint(0,8) diff --git a/sagemath-rpmbuild.patch b/sagemath-rpmbuild.patch index ad50ca3..d826315 100644 --- a/sagemath-rpmbuild.patch +++ b/sagemath-rpmbuild.patch @@ -1,6 +1,6 @@ diff -up src/module_list.py.orig src/module_list.py ---- 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 +--- src/module_list.py.orig 2019-04-08 11:45:44.437520141 -0600 ++++ src/module_list.py 2019-04-08 11:45:58.268274982 -0600 @@ -2,7 +2,7 @@ import os from distutils.extension import Extension from sage.env import SAGE_LOCAL @@ -11,21 +11,21 @@ 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-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, -- library_dirs=[os.path.join(SAGE_LOCAL, "lib")] + libdirs, -+ library_dirs=[os.path.realpath(os.path.join(SAGE_LOCAL, "lib"))] + libdirs, - extra_compile_args=extra_args, - language=language) +--- src/sage/misc/cython.py.orig 2019-04-08 11:45:58.269274964 -0600 ++++ src/sage/misc/cython.py 2019-04-08 11:48:23.582699337 -0600 +@@ -49,7 +49,7 @@ standard_libs = [ + ] + cblas_libs + [ + 'ntl'] +-standard_libdirs = [os.path.join(SAGE_LOCAL, "lib")] + cblas_library_dirs ++standard_libdirs = [os.path.realpath(os.path.join(SAGE_LOCAL, "lib"))] + cblas_library_dirs + + + ################################################################ diff -up src/setup.py.orig src/setup.py ---- 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): +--- src/setup.py.orig 2019-03-23 16:20:43.000000000 -0600 ++++ src/setup.py 2019-04-08 11:45:58.283274716 -0600 +@@ -318,9 +318,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 -@@ -882,9 +881,6 @@ class sage_install(install): +@@ -829,9 +828,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): """ -@@ -901,40 +897,6 @@ class sage_install(install): +@@ -848,40 +844,6 @@ class sage_install(install): # the install_data directory for installing our Jupyter files. SageKernelSpec.update(prefix=self.install_data) diff --git a/sagemath-rubiks.patch b/sagemath-rubiks.patch new file mode 100644 index 0000000..e9f5548 --- /dev/null +++ b/sagemath-rubiks.patch @@ -0,0 +1,306 @@ +diff -up build/pkgs/rubiks/src/dik/cube.c.orig build/pkgs/rubiks/src/dik/cube.c +--- build/pkgs/rubiks/src/dik/cube.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/cube.c 2019-04-09 13:25:49.060985774 -0600 +@@ -6,6 +6,7 @@ static void read_position(); + + static int do_repeat = 0; + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/globals.h.orig build/pkgs/rubiks/src/dik/globals.h +--- build/pkgs/rubiks/src/dik/globals.h.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/globals.h 2019-04-09 15:47:20.736919992 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define MAX_MOVES 30 + +diff -up build/pkgs/rubiks/src/dik/permcube.c.orig build/pkgs/rubiks/src/dik/permcube.c +--- build/pkgs/rubiks/src/dik/permcube.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/permcube.c 2019-04-09 13:24:49.733911356 -0600 +@@ -1,5 +1,6 @@ + #include "globals.h" + ++int + perm_cube() + { + int i, j, k, tmp; +diff -up build/pkgs/rubiks/src/dik/prntsol.c.orig build/pkgs/rubiks/src/dik/prntsol.c +--- build/pkgs/rubiks/src/dik/prntsol.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/prntsol.c 2019-04-09 13:25:14.869519211 -0600 +@@ -2,6 +2,7 @@ + + static char m[] = "FRUBLD"; + ++void + prnt_sol() + { + int i, j, k; +diff -up build/pkgs/rubiks/src/dik/setcube.c.orig build/pkgs/rubiks/src/dik/setcube.c +--- build/pkgs/rubiks/src/dik/setcube.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/setcube.c 2019-04-09 13:26:52.427996988 -0600 +@@ -24,7 +24,7 @@ static char edges[12][2][2] = { + {"FR", "RF"}, + {"FL", "LF"}}; + +-static cube_found, orient_found; ++static int cube_found, orient_found; + + static void find_corner(c) + char *c; +diff -up build/pkgs/rubiks/src/dik/size222.c.orig build/pkgs/rubiks/src/dik/size222.c +--- build/pkgs/rubiks/src/dik/size222.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/size222.c 2019-04-09 13:29:43.371327964 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define NOMAX + #include "trans/perm7.a" +@@ -17,6 +19,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -29,6 +32,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -64,6 +68,7 @@ int i, j, nnum, counted = 0, k, l, max = + return counted; + } + ++void + try(count) + int count; + { +@@ -93,6 +98,7 @@ TYPE j; + do_pr(count + 1, counted); + } + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/size333c.c.orig build/pkgs/rubiks/src/dik/size333c.c +--- build/pkgs/rubiks/src/dik/size333c.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/size333c.c 2019-04-09 13:30:16.257814499 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define EQUIV + #define NOMAX +@@ -38,6 +40,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -50,6 +53,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -122,6 +126,7 @@ int i, j, nnum, counted = 0, k, l, max, + return wcounted; + } + ++void + try(count) + int count; + { +@@ -151,6 +156,7 @@ TYPE j; + do_pr(count + 1, counted); + } + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/sizedom.c.orig build/pkgs/rubiks/src/dik/sizedom.c +--- build/pkgs/rubiks/src/dik/sizedom.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/sizedom.c 2019-04-09 13:33:16.473000709 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define SUBGROUP + #define EQUIV +@@ -39,6 +41,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -51,6 +54,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -175,6 +179,7 @@ int i, j, nnum, counted = 0, k, l, max, + return wcounted; + } + ++void + try(count) + int count; + { +@@ -273,6 +278,7 @@ int cperm, eperm; + init_turn(cperm, eperm); + } + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/sizekoc1.c.orig build/pkgs/rubiks/src/dik/sizekoc1.c +--- build/pkgs/rubiks/src/dik/sizekoc1.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/sizekoc1.c 2019-04-09 13:34:37.327738285 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define EQUIV + #define NOMAX +@@ -28,6 +30,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -40,6 +43,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -91,6 +95,7 @@ int i, j, nnum, counted = 0, k, l, max, + return wcounted; + } + ++void + try(count) + int count; + { +@@ -120,6 +125,7 @@ TYPE j; + do_pr(count + 1, counted); + } + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/sizekoc2.c.orig build/pkgs/rubiks/src/dik/sizekoc2.c +--- build/pkgs/rubiks/src/dik/sizekoc2.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/sizekoc2.c 2019-04-09 13:35:21.151052650 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define EQUIV + #define NOMAX +@@ -28,6 +30,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -40,6 +43,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -128,6 +132,7 @@ int i, j, nnum, counted = 0, k, l, max, + return wcounted; + } + ++void + try(count) + int count; + { +@@ -157,6 +162,7 @@ TYPE j; + do_pr(count + 1, counted); + } + ++int + main(argc, argv) + int argc; + char *argv[]; +diff -up build/pkgs/rubiks/src/dik/sizesquare.c.orig build/pkgs/rubiks/src/dik/sizesquare.c +--- build/pkgs/rubiks/src/dik/sizesquare.c.orig 2008-01-04 01:26:59.000000000 -0700 ++++ build/pkgs/rubiks/src/dik/sizesquare.c 2019-04-09 13:31:57.537233176 -0600 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + + #define NOMAX + #include "trans/perm4.a" +@@ -16,6 +18,7 @@ int maximal; + int gcount; + int givemax; + ++void + do_pr(turns, count) + int turns, count; + { +@@ -28,6 +31,7 @@ int turns, count; + fflush(stdout); + } + ++int + try_one(num, count) + int num, count; + { +@@ -56,6 +60,7 @@ int i, j, nnum, counted = 0, k, l, max = + return counted; + } + ++void + try(count) + int count; + { +@@ -85,6 +90,7 @@ TYPE j; + do_pr(count + 1, counted); + } + ++int + main(argc, argv) + int argc; + char *argv[]; diff --git a/sagemath-sagedoc.patch b/sagemath-sagedoc.patch index 6e31698..e189517 100644 --- a/sagemath-sagedoc.patch +++ b/sagemath-sagedoc.patch @@ -1,6 +1,6 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py ---- 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 +--- src/sage/doctest/control.py.orig 2019-03-23 16:20:40.000000000 -0600 ++++ src/sage/doctest/control.py 2019-04-08 11:49:50.428160023 -0600 @@ -106,7 +106,6 @@ class DocTestDefaults(SageObject): self.valgrind = False self.massif = False @@ -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: -@@ -1099,13 +1098,8 @@ class DocTestController(SageObject): +@@ -1105,13 +1104,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 -@@ -1190,10 +1184,10 @@ class DocTestController(SageObject): +@@ -1196,10 +1190,10 @@ class DocTestController(SageObject): """ opt = self.options @@ -46,18 +46,18 @@ 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-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(): +--- src/sage/interfaces/singular.py.orig 2019-03-23 16:20:41.000000000 -0600 ++++ src/sage/interfaces/singular.py 2019-04-08 11:54:23.579318505 -0600 +@@ -2261,7 +2261,7 @@ def generate_docstring_dictionary(): + nodes.clear() node_names.clear() - import os - singular_docdir = os.environ['SINGULARPATH']+"/../info/" + singular_docdir = "/usr/share/info/" new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*") new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*") -@@ -2272,8 +2272,9 @@ def generate_docstring_dictionary(): +@@ -2269,8 +2269,9 @@ def generate_docstring_dictionary(): L, in_node, curr_node = [], False, None # singular.hlp contains a few iso-5559-1 encoded special characters @@ -65,13 +65,13 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py - encoding='latin-1') as f: + import gzip + with gzip.open(os.path.join(singular_doctir, 'singular.hlp.gz'), -+ encoding='latin-1') as f: ++ encoding='utf-8') as f: for line in f: 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-12-22 16:37:10.000000000 -0700 -+++ src/sage_setup/docbuild/ext/multidocs.py 2019-01-16 09:42:51.241828221 -0700 +--- src/sage_setup/docbuild/ext/multidocs.py.orig 2019-03-23 16:20:43.000000000 -0600 ++++ src/sage_setup/docbuild/ext/multidocs.py 2019-04-08 11:49:50.430159987 -0600 @@ -84,8 +84,11 @@ def merge_environment(app, env): for ind in newalldoc: # treat subdocument source as orphaned file and don't complain @@ -87,22 +87,22 @@ 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-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. - x = pool.map_async(target, args, 1) -+ ret = [] - try: -- ret = x.get(99999) -+ ret = x.get(3600) - pool.close() - pool.join() - except Exception: -- pool.terminate() - if ABORT_ON_ERROR: -+ pool.terminate() - raise - return ret - +--- src/sage_setup/docbuild/__init__.py.orig 2019-04-08 11:49:50.431159970 -0600 ++++ src/sage_setup/docbuild/__init__.py 2019-04-08 11:56:02.609563240 -0600 +@@ -287,13 +287,14 @@ if not (CYGWIN_VERSION and CYGWIN_VERSIO + # map_async handles KeyboardInterrupt correctly. Plain map and + # apply_async does not, so don't use it. + x = pool.map_async(target, args, 1) ++ ret = [] + try: +- ret = x.get(99999) ++ ret = x.get(3600) + pool.close() + pool.join() + except Exception: +- pool.terminate() + if ABORT_ON_ERROR: ++ pool.terminate() + raise + return ret + else: diff --git a/sagemath-sagetex.patch b/sagemath-sagetex.patch new file mode 100644 index 0000000..7bd79a4 --- /dev/null +++ b/sagemath-sagetex.patch @@ -0,0 +1,12 @@ +diff -up build/pkgs/sagetex/src/run-sagetex-if-necessary.py.orig build/pkgs/sagetex/src/run-sagetex-if-necessary.py +--- build/pkgs/sagetex/src/run-sagetex-if-necessary.py.orig 2019-01-09 09:51:28.000000000 -0700 ++++ build/pkgs/sagetex/src/run-sagetex-if-necessary.py 2019-04-09 11:39:25.457566883 -0600 +@@ -63,7 +63,7 @@ if not uses_sagetex: + + # if something goes wrong, assume we need to run Sage + run_sage = True +- ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))" ++ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))" + + try: + with open(src + '.sagetex.sage', 'r') as sagef: diff --git a/sagemath-scripts.patch b/sagemath-scripts.patch index 312689a..e2eea68 100644 --- a/sagemath-scripts.patch +++ b/sagemath-scripts.patch @@ -1,6 +1,6 @@ diff -up src/bin/sage.orig src/bin/sage ---- src/bin/sage.orig 2018-12-22 16:37:06.000000000 -0700 -+++ src/bin/sage 2019-01-16 09:42:10.064567132 -0700 +--- src/bin/sage.orig 2019-03-23 16:20:31.000000000 -0600 ++++ src/bin/sage 2019-04-08 11:42:38.305818631 -0600 @@ -26,13 +26,10 @@ usage() { echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file" echo " -advanced -- list all command line options" @@ -55,10 +55,10 @@ diff -up src/bin/sage.orig src/bin/sage echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)" echo " -n, -notebook [...] -- start the default Sage notebook (options are the" echo " same as for the notebook command in Sage). See the" -@@ -118,18 +105,11 @@ usage_advanced() { - echo " -ipython [...] -- run Sage's IPython using the default environment (not" +@@ -119,18 +106,11 @@ usage_advanced() { echo " Sage), passing additional options to IPython" echo " -ipython3 [...] -- same as above, but using Python 3" + echo " -jupyter [...] -- run Sage's Jupyter with given arguments" - echo " -kash [...] -- run Sage's Kash with given arguments" - command -v kash &>/dev/null || \ - echo " (not installed currently, run sage -i kash)" @@ -72,9 +72,9 @@ diff -up src/bin/sage.orig src/bin/sage - command -v polymake &>/dev/null || \ - echo " (not installed currently, run sage -i polymake)" echo " -python [...] -- run the Python interpreter" - echo " -R [...] -- run Sage's R with given arguments" - echo " -scons [...] -- run Sage's scons" -@@ -141,55 +121,7 @@ usage_advanced() { + echo " -python2 [...] -- run the Python 2 interpreter" + echo " -python3 [...] -- run the Python 3 interpreter" +@@ -144,55 +124,7 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| @@ -131,7 +131,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -startuptime [module] -- display how long each component of Sage takes to" echo " start up; optionally specify a module to get more" echo " details about that particular module" -@@ -223,7 +155,6 @@ usage_advanced() { +@@ -226,7 +158,6 @@ usage_advanced() { echo " -coverage -- give info about doctest coverage of files" echo " -coverageall -- give summary info about doctest coverage of all" echo " files in the Sage library" @@ -139,7 +139,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -search_src -- search through all the Sage library code for string" echo " -search_doc -- search through the Sage documentation for string" echo " -grep -- same as -search_src" -@@ -249,16 +180,6 @@ usage_advanced() { +@@ -252,16 +183,6 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| @@ -156,7 +156,7 @@ diff -up src/bin/sage.orig src/bin/sage echo "Valgrind memory debugging:" echo " -cachegrind -- run Sage using Valgrind's cachegrind tool. The log" echo " files are named sage-cachegrind.PID can be found in" -@@ -272,9 +193,6 @@ usage_advanced() { +@@ -275,9 +196,6 @@ usage_advanced() { echo " -memcheck -- run Sage using Valgrind's memcheck tool. The log" echo " files are named sage-memcheck.PID can be found in" echo " $DOT_SAGE" @@ -166,7 +166,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -valgrind -- this is an alias for -memcheck" echo echo "You can also use -- before a long option, e.g., 'sage --optional'." -@@ -284,115 +202,6 @@ usage_advanced() { +@@ -287,115 +205,6 @@ usage_advanced() { ##################################################################### @@ -282,7 +282,7 @@ diff -up src/bin/sage.orig src/bin/sage # Report information about the Sage environment ##################################################################### -@@ -421,35 +230,8 @@ if [ $# -gt 0 ]; then +@@ -424,35 +233,8 @@ if [ $# -gt 0 ]; then fi @@ -318,7 +318,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ ! -d "$IPYTHONDIR" ]; then # make sure that $DOT_SAGE exists so that ipython will happily # create its config directories there. If DOT_SAGE doesn't -@@ -460,20 +242,6 @@ sage_setup() { +@@ -463,20 +245,6 @@ sage_setup() { } @@ -339,7 +339,7 @@ diff -up src/bin/sage.orig src/bin/sage # Start an interactive Sage session, this function never returns. interactive_sage() { sage_setup -@@ -557,16 +325,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] +@@ -560,16 +328,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] exec ecl "$@" fi @@ -356,7 +356,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then shift exec maxima "$@" -@@ -592,11 +350,6 @@ if [ "$1" = '-pip' -o "$1" = '--pip' ]; +@@ -595,11 +353,6 @@ if [ "$1" = '-pip' -o "$1" = '--pip' ]; exec sage-python23 -m pip "$@" fi @@ -368,8 +368,8 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-python' -o "$1" = '--python' ]; then shift if [ "$SAGE_PYTHON3" = 'yes' ]; then -@@ -631,16 +384,6 @@ if [ "$1" = '-ipython3' -o "$1" = '--ipy - exec ipython3 "$@" +@@ -639,16 +392,6 @@ if [ "$1" = '-jupyter' -o "$1" = '--jupy + exec jupyter "$@" fi -if [ "$1" = '-git' -o "$1" = '--git' ]; then @@ -385,7 +385,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-sh' -o "$1" = '--sh' ]; then # AUTHORS: # - Carl Witty and William Stein: initial version -@@ -760,20 +503,6 @@ EOF +@@ -768,20 +511,6 @@ EOF fi ##################################################################### @@ -406,7 +406,7 @@ diff -up src/bin/sage.orig src/bin/sage # File conversion ##################################################################### -@@ -804,11 +533,6 @@ fi +@@ -812,11 +541,6 @@ fi # Run Sage's versions of the standard Algebra/Geometry etc. software ##################################################################### @@ -418,7 +418,7 @@ diff -up src/bin/sage.orig src/bin/sage if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then sage-cleaner &>/dev/null & exec sage-notebook "$@" -@@ -819,13 +543,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not +@@ -827,13 +551,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not exec sage-notebook "$@" fi @@ -432,7 +432,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then shift sage-cleaner &>/dev/null & -@@ -844,34 +561,15 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep +@@ -852,34 +569,15 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep exit 0 fi @@ -469,7 +469,7 @@ diff -up src/bin/sage.orig src/bin/sage shift exec sage-runtests -p "$@" else -@@ -880,10 +578,7 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" +@@ -888,10 +586,7 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" fi fi @@ -481,7 +481,7 @@ diff -up src/bin/sage.orig src/bin/sage shift sage_setup export PYTHONIOENCODING="utf-8" # Fix encoding for doctests -@@ -904,122 +599,6 @@ if [ "$1" = '-c' ]; then +@@ -912,122 +607,6 @@ if [ "$1" = '-c' ]; then exec sage-eval "$@" fi @@ -604,7 +604,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then shift sage_setup -@@ -1069,12 +648,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca +@@ -1077,12 +656,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca exec sage-callgrind "$@" fi @@ -618,8 +618,8 @@ 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-12-22 16:37:06.000000000 -0700 -+++ src/bin/sage-runtests 2019-01-16 09:42:10.065567115 -0700 +--- src/bin/sage-runtests.orig 2019-03-23 16:20:31.000000000 -0600 ++++ src/bin/sage-runtests 2019-04-08 11:40:35.881987545 -0600 @@ -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 " + @@ -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-12-22 16:37:06.000000000 -0700 -+++ src/bin/sage-valgrind 2019-01-16 09:42:10.065567115 -0700 +--- src/bin/sage-valgrind.orig 2019-03-23 16:20:31.000000000 -0600 ++++ src/bin/sage-valgrind 2019-04-08 11:40:35.881987545 -0600 @@ -1,16 +1,6 @@ #!/usr/bin/env bash diff --git a/sagemath-sympy.patch b/sagemath-sympy.patch index c939fac..055cd9a 100644 --- a/sagemath-sympy.patch +++ b/sagemath-sympy.patch @@ -1,21 +1,15 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- 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()) +--- src/sage/env.py.orig 2019-04-08 12:41:09.686920533 -0600 ++++ src/sage/env.py 2019-04-08 12:42:41.240282849 -0600 +@@ -159,9 +159,9 @@ var('SAGE_DOC', join(SAGE_SHA + var('SAGE_SPKG_INST', join(SAGE_LOCAL, 'var', 'lib', 'sage', 'installed')) + var('SAGE_LIB', os.path.dirname(os.path.dirname(sage.__file__))) + +-var('SAGE_ROOT') # no fallback for SAGE_ROOT ++var('SAGE_ROOT', '@@SAGE_ROOT@@') + var('SAGE_SRC', join(SAGE_ROOT, 'src'), SAGE_LIB) +-var('SAGE_DOC_SRC', join(SAGE_SRC, 'doc')) ++var('SAGE_DOC_SRC', '@@SAGE_DOC@@') + var('SAGE_PKGS', join(SAGE_ROOT, 'build', 'pkgs')) + var('SAGE_ROOT_GIT', join(SAGE_ROOT, '.git')) - # bunch of sage directories and files --_add_variable_or_fallback('SAGE_ROOT', None) -+_add_variable_or_fallback('SAGE_ROOT', '@@SAGE_ROOT@@') - _add_variable_or_fallback('SAGE_LOCAL', None) - _add_variable_or_fallback('SAGE_ETC', opj('$SAGE_LOCAL', 'etc')) - _add_variable_or_fallback('SAGE_INC', opj('$SAGE_LOCAL', 'include')) -@@ -141,7 +141,7 @@ _add_variable_or_fallback('SAGE_PKGS', o - _add_variable_or_fallback('SAGE_EXTCODE', opj('$SAGE_SHARE', 'sage', 'ext')) - _add_variable_or_fallback('SAGE_LOGS', opj('$SAGE_ROOT', 'logs', 'pkgs')) - _add_variable_or_fallback('SAGE_SPKG_INST', opj('$SAGE_LOCAL', 'var', 'lib', 'sage', 'installed')) --_add_variable_or_fallback('SAGE_DOC_SRC', opj('$SAGE_SRC', 'doc')) -+_add_variable_or_fallback('SAGE_DOC_SRC', '@@SAGE_DOC@@') - _add_variable_or_fallback('SAGE_DOC', opj('$SAGE_SHARE', 'doc', 'sage')) - _add_variable_or_fallback('DOT_SAGE', opj(os.environ.get('HOME','$SAGE_ROOT'), '.sage')) - _add_variable_or_fallback('SAGE_DOT_GIT', opj('$SAGE_ROOT', '.git')) diff --git a/sagemath.spec b/sagemath.spec index e691c45..f779bbc 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -48,16 +48,16 @@ %global prompt_tookit_pkg prompt_toolkit-1.0.15 %endif %if %{with bundled_ipywidgets} -%global ipywidgets_pkg ipywidgets-7.2.0 +%global ipywidgets_pkg ipywidgets-7.4.2 %endif %if %{with bundled_pexpect} %global pexpect_pkg pexpect-4.6.0 %endif %global polytopes_db_pkg polytopes_db-20170220 %global rubiks_pkg rubiks-20070912 -%global sagenb_pkg sagenb-1.1.1 +%global sagenb_pkg sagenb-1.1.2 %global sagenb_export_pkg sagenb_export-3.2 -%global sagetex_pkg sagetex-3.0 +%global sagetex_pkg sagetex-3.2 %global Sphinx_pkg Sphinx-1.7.6 %global singular_pkg singular-4.1.1p3 %if %{with bundled_thebe} @@ -67,13 +67,13 @@ %global threejs_pkg threejs-r80 %endif %if %{with bundled_widgetsnbextension} -%global widgetsnbextension_pkg widgetsnbextension-3.2.0 +%global widgetsnbextension_pkg widgetsnbextension-3.4.2 %endif # 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.10.0 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_REQUIRED_PKGS 4ti2-1.6.7 cbc-2.9.4 CoCoALib-0.99564 cryptominisat-5.6.6 gap_packages-4.10.1 gmp-6.1.2 libsirocco-2.0 lrslib-062+autotools-2017-03-03 qepcad-B.1.71 saclib-2.2.7 surf-1.0.6-gcc6 %global SAGE_ROOT %{_libdir}/sagemath %global SAGE_LOCAL %{SAGE_ROOT}/local @@ -86,7 +86,7 @@ Name: sagemath Summary: A free open-source mathematics software system -Version: 8.6 +Version: 8.7 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 @@ -101,8 +101,8 @@ 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 +# Fix a "random" bit chooser that always chooses 0 +Patch1: %{name}-random.patch # Set of patches to work with system wide packages Patch2: %{name}-scripts.patch @@ -198,6 +198,12 @@ Patch27: %{name}-latte.patch # Upstream fixes for random SIGFPEs due to ecl messing with the fp state Patch28: %{name}-sigfpe.patch +# Add some missing #includes and types in the rubiks code +Patch29: %{name}-rubiks.patch + +# Fix an indentation error in sagetex +Patch30: %{name}-sagetex.patch + BuildRequires: 4ti2 BuildRequires: arb-devel BuildRequires: boost-devel @@ -273,6 +279,7 @@ BuildRequires: python3-devel BuildRequires: python3-cypari2-devel BuildRequires: python3-cysignals-devel BuildRequires: python3-pillow-devel +BuildRequires: python3-pplpy-devel BuildRequires: python3dist(brial) %if %{with sphinx_hack} BuildRequires: python3dist(configparser) @@ -416,6 +423,7 @@ Requires: python3dist(pexpect) %endif Requires: python3dist(pickleshare) Requires: python3dist(pillow) +Requires: python3dist(pplpy) Requires: python3dist(psutil) Requires: python3dist(ptyprocess) Requires: python3dist(pycryptosat) @@ -874,6 +882,8 @@ popd %patch26 %patch27 %patch28 +%patch29 +%patch30 sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \ -e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \ @@ -927,9 +937,6 @@ sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \ -i build/pkgs/ipython/src/IPython/utils/_process_posix.py %endif -# fix path to pip for python 3 -sed -i 's/"pip",/"pip3",/' src/sage/misc/package.py - # GAP does not have enough memory to load the entire workspace sed -i 's/64m/128m/' src/sage/libs/gap/util.pyx @@ -1414,7 +1421,8 @@ sed -i 's|%{buildroot}||g' $SAGE_DOC/test.log # More wrong buildroot references perl -pi -e 's|%{buildroot}||g;' \ -e "s|$PWD/src/doc|%{SAGE_DOC}|g;" \ - %{buildroot}%{SAGE_DOC}/output/html/en/reference/todolist.html + %{buildroot}%{SAGE_DOC}/html/en/reference/combinat/sage/combinat/posets/poset_examples.html \ + %{buildroot}%{SAGE_DOC}/html/en/reference/graphs/sage/graphs/graph_generators.html # with docs %endif @@ -1826,6 +1834,14 @@ rm -fr $DOT_SAGE ######################################################################## %changelog +* Sat Apr 27 2019 Jerry James - 8.7-1 +- Update to sagemath 8.7 +- Drop upstreamed -giac patch +- Add -sagetex patch to fix a python indentation error +- Add -rubiks patch to fix compilation of the rubiks library +- Add -random patch to fix a non-random random bit generator +- Drop pip3 workaround; the binary is now named just pip again + * Mon Feb 18 2019 Jerry James - 8.6-1 - Update to sagemath 8.6 - Install an SVG icon instead of a fixed size (128x128) icon diff --git a/sources b/sources index 48c5f01..3e15ebc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sage-8.6.tar.gz) = cbadb485e645ac44e9f55defc011e934e9d89d82058312c69ae6e87bb5a30228d484d3e54d99a088bf5b8d9b2b464e8b59fdd63d9cc575a519cab5734950c1f1 +SHA512 (sage-8.7.tar.gz) = 6d89ad388d667c67970f4378fe1208115436d70e913d53e81241766996677b827cd5e97348325d1dc069e5de03b755a25c02c7487c6dc2a15103ffbf25c00a1d