From abc6d11c124a140417274efc5fee6fcde52d60ab Mon Sep 17 00:00:00 2001 From: pcpa Date: Nov 10 2017 16:26:56 +0000 Subject: Update to sagemath 8.0 --- diff --git a/.gitignore b/.gitignore index 4956ac8..2b6e120 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /sage-7.4.tar.gz /sage-7.5.1.tar.gz /sage-7.6.tar.gz +/sage-8.0.tar.gz diff --git a/sagemath-atlas.patch b/sagemath-atlas.patch index cc43b4b..0813db7 100644 --- a/sagemath-atlas.patch +++ b/sagemath-atlas.patch @@ -1,7 +1,7 @@ diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2017-04-11 10:03:27.798279059 -0400 -+++ src/module_list.py 2017-04-11 10:05:34.272283903 -0400 -@@ -12,20 +12,14 @@ SAGE_INC = '/usr/include' +--- src/module_list.py.orig 2017-11-08 08:34:54.635233833 -0500 ++++ src/module_list.py 2017-11-08 08:36:05.888236561 -0500 +@@ -12,7 +12,7 @@ SAGE_INC = '/usr/include' import pkgconfig # CBLAS can be one of multiple implementations @@ -10,11 +10,10 @@ diff -up src/module_list.py.orig src/module_list.py cblas_libs = cblas_pc['libraries'] cblas_library_dirs = cblas_pc['library_dirs'] cblas_include_dirs = cblas_pc['include_dirs'] +@@ -21,11 +21,9 @@ cblas_include_dirs = cblas_pc['include_d + if os.path.exists('/usr/lib/libblas.dll.a'): + cblas_libs = ['gslcblas'] --# TODO: Remove Cygwin hack by installing a suitable cblas.pc --if os.path.exists('/usr/lib/libblas.dll.a'): -- cblas_libs = ['gslcblas'] -- -# LAPACK can be one of multiple implementations -lapack_pc = pkgconfig.parse('lapack') -lapack_libs = lapack_pc['libraries'] @@ -26,7 +25,7 @@ diff -up src/module_list.py.orig src/module_list.py # FFLAS-FFPACK fflas_ffpack_pc = pkgconfig.parse('fflas-ffpack') -@@ -44,7 +38,9 @@ givaro_cflags = pkgconfig.cflags('givaro +@@ -44,7 +42,9 @@ givaro_cflags = pkgconfig.cflags('givaro # The above cblas should already be in the list thanks to #20646 gsl_pc = pkgconfig.parse('gsl') gsl_libs = gsl_pc['libraries'] @@ -38,9 +37,9 @@ diff -up src/module_list.py.orig src/module_list.py # GD image library diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py ---- src/sage/misc/cython.py.orig 2017-04-11 10:05:44.166284281 -0400 -+++ src/sage/misc/cython.py 2017-04-11 10:06:00.016284888 -0400 -@@ -30,15 +30,11 @@ import pkgconfig +--- src/sage/misc/cython.py.orig 2017-11-08 08:36:27.499237389 -0500 ++++ src/sage/misc/cython.py 2017-11-08 08:36:37.240237762 -0500 +@@ -30,7 +30,7 @@ import pkgconfig # CBLAS can be one of multiple implementations @@ -49,11 +48,3 @@ diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py cblas_libs = list(cblas_pc['libraries']) cblas_library_dirs = list(cblas_pc['library_dirs']) cblas_include_dirs = list(cblas_pc['include_dirs']) - --# TODO: Remove Cygwin hack by installing a suitable cblas.pc --if os.path.exists('/usr/lib/libblas.dll.a'): -- cblas_libs = 'gslcblas' -- - standard_libs = [ - 'mpfr', 'gmp', 'gmpxx', 'stdc++', 'pari', 'm', - 'ec', 'gsl', diff --git a/sagemath-cbc.patch b/sagemath-cbc.patch index 0e11a5e..27d5dd7 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 2016-10-20 08:11:54.641546892 -0400 -+++ src/sage/numerical/backends/coin_backend.pyx 2016-10-20 08:12:03.505547232 -0400 -@@ -756,8 +756,8 @@ cdef class CoinBackend(GenericBackend): +--- src/sage/numerical/backends/coin_backend.pyx.orig 2017-11-08 08:23:51.731208448 -0500 ++++ src/sage/numerical/backends/coin_backend.pyx 2017-11-08 08:24:02.347208854 -0500 +@@ -759,8 +759,8 @@ cdef class CoinBackend(GenericBackend): model.setLogLevel(old_logLevel) # multithreading diff --git a/sagemath-extensions.patch b/sagemath-extensions.patch index 285d7db..1610fd8 100644 --- a/sagemath-extensions.patch +++ b/sagemath-extensions.patch @@ -1,7 +1,7 @@ diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2017-04-11 09:54:40.320258860 -0400 -+++ src/module_list.py 2017-04-11 09:54:50.432259248 -0400 -@@ -165,7 +165,6 @@ library_order["stdc++"] = 1000 +--- src/module_list.py.orig 2017-11-08 06:12:26.727906504 -0500 ++++ src/module_list.py 2017-11-08 06:14:29.020911187 -0500 +@@ -163,7 +163,6 @@ library_order["stdc++"] = 1000 ### ############################################################# @@ -9,7 +9,7 @@ diff -up src/module_list.py.orig src/module_list.py UNAME = os.uname() def uname_specific(name, value, alternative): -@@ -381,21 +380,21 @@ ext_modules = [ +@@ -391,21 +390,21 @@ ext_modules = [ sources = ['sage/graphs/matchpoly.pyx'], extra_compile_args = ['-std=c99']), @@ -28,25 +28,25 @@ diff -up src/module_list.py.orig src/module_list.py - sources = ['sage/graphs/modular_decomposition.pyx'], - libraries = ['modulardecomposition'], - package = 'modular_decomposition'), -+# Extension("sage.graphs.mcqd", ++# OptionalExtension("sage.graphs.mcqd", +# ["sage/graphs/mcqd.pyx"], +# language = "c++", +# package = 'mcqd'), + -+# Extension("sage.graphs.bliss", ++# OptionalExtension("sage.graphs.bliss", +# ["sage/graphs/bliss.pyx"], +# language = "c++", +# libraries = ['bliss'], +# package = 'bliss'), + -+# Extension('sage.graphs.modular_decomposition', ++# OptionalExtension('sage.graphs.modular_decomposition', +# sources = ['sage/graphs/modular_decomposition.pyx'], +# libraries = ['modulardecomposition'], +# package = 'modular_decomposition'), Extension('sage.graphs.planarity', sources = ['sage/graphs/planarity.pyx'], -@@ -414,10 +413,10 @@ ext_modules = [ +@@ -424,10 +423,10 @@ ext_modules = [ Extension('sage.graphs.graph_decompositions.cutwidth', sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']), @@ -54,14 +54,14 @@ diff -up src/module_list.py.orig src/module_list.py - sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], - language="c++", - package = 'tdlib'), -+# Extension('sage.graphs.graph_decompositions.tdlib', ++# OptionalExtension('sage.graphs.graph_decompositions.tdlib', +# sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], +# language="c++", +# package = 'tdlib'), Extension('sage.graphs.spanning_tree', sources = ['sage/graphs/spanning_tree.pyx']), -@@ -512,18 +511,18 @@ ext_modules = [ +@@ -514,17 +513,17 @@ ext_modules = [ ## ################################ @@ -71,7 +71,7 @@ diff -up src/module_list.py.orig src/module_list.py - language="c++", - libraries = ['coxeter3'], - package = 'coxeter3'), -+# Extension('sage.libs.coxeter3.coxeter', ++# OptionalExtension('sage.libs.coxeter3.coxeter', +# sources = ['sage/libs/coxeter3/coxeter.pyx'], +# include_dirs = [os.path.join(SAGE_INC, 'coxeter')], +# language="c++", @@ -79,15 +79,14 @@ diff -up src/module_list.py.orig src/module_list.py +# package = 'coxeter3'), Extension('sage.libs.ecl', - sources = ["sage/libs/ecl.pyx"], - libraries = ["ecl"]), + sources = ["sage/libs/ecl.pyx"]), - OptionalExtension("sage.libs.fes", + Extension("sage.libs.fes", ["sage/libs/fes.pyx"], language = "c", libraries = ['fes'], -@@ -547,17 +546,17 @@ ext_modules = [ +@@ -548,23 +547,23 @@ ext_modules = [ Extension('sage.libs.gmp.pylong', sources = ['sage/libs/gmp/pylong.pyx']), @@ -96,25 +95,39 @@ diff -up src/module_list.py.orig src/module_list.py - libraries = ["braiding"], - package="libbraiding", - language = 'c++'), -+# Extension('sage.libs.braiding', -+# sources = ["sage/libs/braiding.pyx"], -+# libraries = ["braiding"], -+# package="libbraiding", -+# language = 'c++'), - - +- +- - OptionalExtension('sage.libs.homfly', - sources = ["sage/libs/homfly.pyx"], - libraries = ["homfly", "gc"], - package="libhomfly"), -+# Extension('sage.libs.homfly', +- +- OptionalExtension('sage.libs.sirocco', +- sources = ["sage/libs/sirocco.pyx"], +- libraries = ["sirocco", "mpfr", "gmp"], +- package="sirocco", +- language = 'c++'), ++# OptionalExtension('sage.libs.braiding', ++# sources = ["sage/libs/braiding.pyx"], ++# libraries = ["braiding"], ++# package="libbraiding", ++# language = 'c++'), ++ ++ ++# OptionalExtension('sage.libs.homfly', +# sources = ["sage/libs/homfly.pyx"], +# libraries = ["homfly", "gc"], +# package="libhomfly"), ++ ++# OptionalExtension('sage.libs.sirocco', ++# sources = ["sage/libs/sirocco.pyx"], ++# libraries = ["sirocco", "mpfr", "gmp"], ++# package="sirocco", ++# language = 'c++'), Extension('*', ['sage/libs/linbox/*.pyx']), -@@ -895,10 +894,10 @@ ext_modules = [ +@@ -901,10 +900,10 @@ ext_modules = [ Extension('sage.matrix.matrix_window', sources = ['sage/matrix/matrix_window.pyx']), @@ -122,14 +135,14 @@ diff -up src/module_list.py.orig src/module_list.py - sources = ['sage/matrix/matrix_gfpn_dense.pyx'], - libraries = ['mtx'], - package = 'meataxe'), -+# Extension("sage.matrix.matrix_gfpn_dense", ++# OptionalExtension("sage.matrix.matrix_gfpn_dense", +# sources = ['sage/matrix/matrix_gfpn_dense.pyx'], +# libraries = ['mtx'], +# package = 'meataxe'), Extension('sage.matrix.misc', sources = ['sage/matrix/misc.pyx'], -@@ -1077,19 +1076,19 @@ ext_modules = [ +@@ -1089,19 +1088,19 @@ ext_modules = [ Extension("sage.numerical.backends.interactivelp_backend", ["sage/numerical/backends/interactivelp_backend.pyx"]), @@ -144,13 +157,13 @@ diff -up src/module_list.py.orig src/module_list.py - libraries = ["stdc++", "cplex"], - condition = os.path.isfile(SAGE_INC + "/cplex.h") and - os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")), -+# Extension("sage.numerical.backends.gurobi_backend", ++# OptionalExtension("sage.numerical.backends.gurobi_backend", +# ["sage/numerical/backends/gurobi_backend.pyx"], +# libraries = ["stdc++", "gurobi"], +# condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and +# os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")), + -+# Extension("sage.numerical.backends.cplex_backend", ++# OptionalExtension("sage.numerical.backends.cplex_backend", +# ["sage/numerical/backends/cplex_backend.pyx"], +# libraries = ["stdc++", "cplex"], +# condition = os.path.isfile(SAGE_INC + "/cplex.h") and @@ -161,21 +174,3 @@ diff -up src/module_list.py.orig src/module_list.py ["sage/numerical/backends/coin_backend.pyx"], language = 'c++', libraries = ["Cbc", "CbcSolver", "Cgl", "Clp", "CoinUtils", -@@ -1572,7 +1571,7 @@ ext_modules = [ - ## - ################################ - -- OptionalExtension("sage.sat.solvers.cryptominisat.cryptominisat", -+ Extension("sage.sat.solvers.cryptominisat.cryptominisat", - sources = ["sage/sat/solvers/cryptominisat/cryptominisat.pyx"], - include_dirs = [os.path.join(SAGE_INC, "cmsat")] + zlib_include_dirs, - language = "c++", -@@ -1580,7 +1579,7 @@ ext_modules = [ - library_dirs = zlib_library_dirs, - package = 'cryptominisat'), - -- OptionalExtension("sage.sat.solvers.cryptominisat.solverconf", -+ Extension("sage.sat.solvers.cryptominisat.solverconf", - sources = ["sage/sat/solvers/cryptominisat/solverconf.pyx", - "sage/sat/solvers/cryptominisat/solverconf_helper.cpp"], - include_dirs = [os.path.join(SAGE_INC, "cmsat")] + zlib_include_dirs, diff --git a/sagemath-fes-build.patch b/sagemath-fes-build.patch index fe118b2..bc2851a 100644 --- a/sagemath-fes-build.patch +++ b/sagemath-fes-build.patch @@ -1,7 +1,7 @@ diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx ---- src/sage/libs/fes.pyx.orig 2017-03-04 13:32:40.457489539 -0500 -+++ src/sage/libs/fes.pyx 2017-03-04 13:32:50.717489932 -0500 -@@ -84,8 +84,8 @@ from sage.rings.polynomial.pbori import +--- src/sage/libs/fes.pyx.orig 2017-11-08 08:26:29.835214502 -0500 ++++ src/sage/libs/fes.pyx 2017-11-08 08:26:38.707214842 -0500 +@@ -86,8 +86,8 @@ from sage.rings.polynomial.pbori import from sage.arith.all import binomial from sage.combinat.subset import Subsets diff --git a/sagemath-fes.patch b/sagemath-fes.patch index c6a059f..2e02f9f 100644 --- a/sagemath-fes.patch +++ b/sagemath-fes.patch @@ -1,9 +1,9 @@ diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2017-04-11 10:00:15.271271687 -0400 -+++ src/module_list.py 2017-04-11 10:00:26.344272111 -0400 -@@ -522,11 +522,11 @@ ext_modules = [ - sources = ["sage/libs/ecl.pyx"], - libraries = ["ecl"]), +--- src/module_list.py.orig 2017-11-08 08:27:07.539215946 -0500 ++++ src/module_list.py 2017-11-08 08:27:17.051216310 -0500 +@@ -523,11 +523,11 @@ ext_modules = [ + Extension('sage.libs.ecl', + sources = ["sage/libs/ecl.pyx"]), - Extension("sage.libs.fes", - ["sage/libs/fes.pyx"], diff --git a/sagemath-flask.patch b/sagemath-flask.patch deleted file mode 100644 index f8053dc..0000000 --- a/sagemath-flask.patch +++ /dev/null @@ -1,130 +0,0 @@ -diff -up build/pkgs/sagenb/src/sagenb/flask_version/admin.py.orig build/pkgs/sagenb/src/sagenb/flask_version/admin.py ---- build/pkgs/sagenb/src/sagenb/flask_version/admin.py.orig 2016-08-24 07:36:12.876678518 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/admin.py 2016-08-24 07:36:28.037679098 -0400 -@@ -1,10 +1,10 @@ - import os --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, admin_required, with_lock - from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - --admin = Module('sagenb.flask_version.admin') -+admin = Blueprint('admin', 'sagenb.flask_version.admin') - - @admin.route('/users') - @admin.route('/users/reset/') -diff -up build/pkgs/sagenb/src/sagenb/flask_version/authentication.py.orig build/pkgs/sagenb/src/sagenb/flask_version/authentication.py ---- build/pkgs/sagenb/src/sagenb/flask_version/authentication.py.orig 2016-08-24 07:36:36.716679431 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/authentication.py 2016-08-24 07:36:57.093680211 -0400 -@@ -1,11 +1,11 @@ - import os - import random --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import with_lock - from flask.ext.babel import gettext, ngettext, lazy_gettext - _ = gettext - --authentication = Module('sagenb.flask_version.authentication') -+authentication = Blueprint('authentication', 'sagenb.flask_version.authentication') - - ################## - # Authentication # -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 2016-08-24 07:37:06.477680570 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2016-08-24 07:37:26.182681325 -0400 -@@ -1,7 +1,7 @@ - #!/usr/bin/env python - import os, time, re - from functools import partial --from flask import Flask, Module, url_for, request, session, redirect, g, make_response, current_app, render_template -+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 - -@@ -80,7 +80,7 @@ class SageNBFlask(Flask): - return render_template(os.path.join('html', 'error_message.html'), - **template_dict) - --base = Module('sagenb.flask_version.base') -+base = Blueprint('base', 'sagenb.flask_version.base') - - ############# - # Main Page # -diff -up build/pkgs/sagenb/src/sagenb/flask_version/doc.py.orig build/pkgs/sagenb/src/sagenb/flask_version/doc.py ---- build/pkgs/sagenb/src/sagenb/flask_version/doc.py.orig 2016-08-24 07:37:34.941681660 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/doc.py 2016-08-24 07:37:49.829682230 -0400 -@@ -14,13 +14,13 @@ URLS to do: - - """ - import os --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, guest_or_login_required - - from flask.ext.babel import gettext, ngettext, lazy_gettext - _ = gettext - --doc = Module('sagenb.flask_version.doc') -+doc = Blueprint('doc', 'sagenb.flask_version.doc') - - from sage.env import SAGE_DOC - DOC = os.path.join(SAGE_DOC, 'html', 'en') -diff -up build/pkgs/sagenb/src/sagenb/flask_version/settings.py.orig build/pkgs/sagenb/src/sagenb/flask_version/settings.py ---- build/pkgs/sagenb/src/sagenb/flask_version/settings.py.orig 2016-08-24 07:37:59.637682606 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/settings.py 2016-08-24 07:38:16.493683252 -0400 -@@ -1,12 +1,12 @@ - import os - import random --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, with_lock - from flask.ext.babel import gettext, ngettext, lazy_gettext - _ = gettext - - --settings = Module('sagenb.flask_version.settings') -+settings = Blueprint('settings', 'sagenb.flask_version.settings') - - @settings.route('/settings', methods = ['GET','POST']) - @login_required -diff -up build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py.orig build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py ---- build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py.orig 2016-08-24 07:38:27.211683662 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/worksheet_listing.py 2016-08-24 07:38:44.718684332 -0400 -@@ -2,12 +2,12 @@ - """ - import os - import urllib, urlparse --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, guest_or_login_required, with_lock - from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - --worksheet_listing = Module('sagenb.flask_version.worksheet_listing') -+worksheet_listing = Blueprint('worksheet_listing', 'sagenb.flask_version.worksheet_listing') - - def render_worksheet_list(args, pub, username): - """ -diff -up build/pkgs/sagenb/src/sagenb/flask_version/worksheet.py.orig build/pkgs/sagenb/src/sagenb/flask_version/worksheet.py ---- build/pkgs/sagenb/src/sagenb/flask_version/worksheet.py.orig 2016-08-24 07:38:50.285684546 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/worksheet.py 2016-08-24 07:39:10.173685307 -0400 -@@ -1,7 +1,7 @@ - import re - import os, threading, collections - from functools import wraps --from flask import Module, make_response, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, make_response, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, with_lock - from collections import defaultdict - from werkzeug.utils import secure_filename -@@ -11,7 +11,7 @@ _ = gettext - from sagenb.notebook.interact import INTERACT_UPDATE_PREFIX - from sagenb.notebook.misc import encode_response - --ws = Module('sagenb.flask_version.worksheet') -+ws = Blueprint('worksheet', 'sagenb.flask_version.worksheet') - worksheet_locks = defaultdict(threading.Lock) - - def worksheet_view(f): diff --git a/sagemath-gap-hap.patch b/sagemath-gap-hap.patch index 453b114..9eeed4f 100644 --- a/sagemath-gap-hap.patch +++ b/sagemath-gap-hap.patch @@ -1,7 +1,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/permgroup.py ---- src/sage/groups/perm_gps/permgroup.py.orig 2016-08-20 15:03:27.119562623 -0400 -+++ src/sage/groups/perm_gps/permgroup.py 2016-08-20 15:05:17.650566855 -0400 -@@ -165,6 +165,10 @@ def load_hap(): +--- src/sage/groups/perm_gps/permgroup.py.orig 2017-11-08 08:23:18.884207190 -0500 ++++ src/sage/groups/perm_gps/permgroup.py 2017-11-08 08:23:27.988207539 -0500 +@@ -166,6 +166,10 @@ def load_hap(): gap.load_package("hap") except Exception: gap.load_package("hap") @@ -12,7 +12,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per def hap_decorator(f): """ -@@ -190,8 +194,6 @@ def hap_decorator(f): +@@ -191,8 +195,6 @@ def hap_decorator(f): """ @wraps(f) def wrapped(self, n, p=0): diff --git a/sagemath-gcc6.patch b/sagemath-gcc6.patch index 2fab435..3258b5b 100644 --- a/sagemath-gcc6.patch +++ b/sagemath-gcc6.patch @@ -1,7 +1,7 @@ diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2017-04-11 10:02:15.848276304 -0400 -+++ src/module_list.py 2017-04-11 10:02:24.616276640 -0400 -@@ -855,7 +855,7 @@ ext_modules = [ +--- src/module_list.py.orig 2017-11-08 08:30:43.611224220 -0500 ++++ src/module_list.py 2017-11-08 08:30:51.131224508 -0500 +@@ -861,7 +861,7 @@ ext_modules = [ library_dirs = m4ri_library_dirs, include_dirs = m4ri_include_dirs, depends = [SAGE_INC + "/m4rie/m4rie.h"], diff --git a/sagemath-gmp.patch b/sagemath-gmp.patch index 7e0886f..31dea02 100644 --- a/sagemath-gmp.patch +++ b/sagemath-gmp.patch @@ -1,7 +1,7 @@ diff -up src/sage/modular/arithgroup/farey.cpp.orig src/sage/modular/arithgroup/farey.cpp ---- src/sage/modular/arithgroup/farey.cpp.orig 2016-08-08 13:04:25.463462742 -0400 -+++ src/sage/modular/arithgroup/farey.cpp 2016-08-08 13:04:47.129463572 -0400 -@@ -142,6 +142,7 @@ operator*(const SL2Z& M, const vector # this depends on SAGE_CYTHONIZED include_dirs = sage_include_directories(use_sources=True) +include_dirs.extend(['@@CYSIGNALS@@']) - # Manually add -fno-strict-aliasing, which is needed to compile Cython - # and disappears from the default flags if the user has set CFLAGS. + # Look for libraries in $SAGE_LOCAL/lib + library_dirs = [os.path.join(SAGE_LOCAL, "lib")] diff --git a/sagemath-libgap.patch b/sagemath-libgap.patch index 541dfd7..5b6cd1d 100644 --- a/sagemath-libgap.patch +++ b/sagemath-libgap.patch @@ -1,6 +1,6 @@ diff -up src/sage/libs/gap/test/main.c.orig src/sage/libs/gap/test/main.c ---- src/sage/libs/gap/test/main.c.orig 2017-04-11 09:59:37.166270228 -0400 -+++ src/sage/libs/gap/test/main.c 2017-04-11 09:59:39.063270300 -0400 +--- src/sage/libs/gap/test/main.c.orig 2017-11-08 08:24:43.763210440 -0500 ++++ src/sage/libs/gap/test/main.c 2017-11-08 08:24:46.603210549 -0500 @@ -22,7 +22,7 @@ void eval(char* cmd) { libgap_start_interaction(cmd); @@ -11,9 +11,9 @@ diff -up src/sage/libs/gap/test/main.c.orig src/sage/libs/gap/test/main.c char* out = libgap_get_output(); libgap_exit(); diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx ---- src/sage/libs/gap/util.pyx.orig 2017-04-11 09:59:20.424269587 -0400 -+++ src/sage/libs/gap/util.pyx 2017-04-11 09:59:39.065270300 -0400 -@@ -158,17 +158,9 @@ def gap_root(): +--- src/sage/libs/gap/util.pyx.orig 2017-11-08 08:24:28.405209852 -0500 ++++ src/sage/libs/gap/util.pyx 2017-11-08 08:24:46.603210549 -0500 +@@ -160,17 +160,9 @@ def gap_root(): sage: from sage.libs.gap.util import gap_root sage: gap_root() # random output diff --git a/sagemath-lrslib.patch b/sagemath-lrslib.patch index 3826e8c..b33f938 100644 --- a/sagemath-lrslib.patch +++ b/sagemath-lrslib.patch @@ -1,15 +1,15 @@ diff -up src/sage/geometry/polyhedron/base.py.orig src/sage/geometry/polyhedron/base.py ---- src/sage/geometry/polyhedron/base.py.orig 2017-04-11 09:57:57.498266411 -0400 -+++ src/sage/geometry/polyhedron/base.py 2017-04-11 09:58:07.176266782 -0400 -@@ -22,7 +22,6 @@ import six - from sage.structure.element import Element, coerce_binop, is_Vector +--- src/sage/geometry/polyhedron/base.py.orig 2017-11-08 08:21:45.693203621 -0500 ++++ src/sage/geometry/polyhedron/base.py 2017-11-08 08:21:56.893204050 -0500 +@@ -22,7 +22,6 @@ from sage.structure.element import Eleme + from sage.structure.richcmp import rich_to_bool, op_NE from sage.misc.all import cached_method, prod -from sage.misc.package import is_package_installed - from sage.rings.all import QQ, ZZ + from sage.rings.all import QQ, ZZ, AA from sage.rings.real_double import RDF -@@ -3988,10 +3987,6 @@ class Polyhedron_base(Element): +@@ -4188,10 +4187,6 @@ class Polyhedron_base(Element): David Avis's lrs program. """ diff --git a/sagemath-maxima.patch b/sagemath-maxima.patch index 485ce23..105e540 100644 --- a/sagemath-maxima.patch +++ b/sagemath-maxima.patch @@ -1,6 +1,6 @@ diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp ---- src/bin/sage-maxima.lisp.orig 2016-08-08 13:31:41.528525393 -0400 -+++ src/bin/sage-maxima.lisp 2016-08-08 13:31:54.865525903 -0400 +--- src/bin/sage-maxima.lisp.orig 2017-11-08 08:16:44.346192082 -0500 ++++ src/bin/sage-maxima.lisp 2017-11-08 08:16:54.098192455 -0500 @@ -4,3 +4,8 @@ (setf *prompt-prefix* "") @@ -11,9 +11,9 @@ diff -up src/bin/sage-maxima.lisp.orig src/bin/sage-maxima.lisp + *standard-input* (open "/dev/stdin" :direction :input) + *standard-output* (open "/dev/stdout" :direction :output)) diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py ---- src/sage/interfaces/maxima.py.orig 2016-08-08 13:32:02.623526200 -0400 -+++ src/sage/interfaces/maxima.py 2016-08-08 13:32:41.698527697 -0400 -@@ -556,7 +556,7 @@ class Maxima(MaximaAbstract, Expect): +--- src/sage/interfaces/maxima.py.orig 2017-11-08 08:16:38.516191858 -0500 ++++ src/sage/interfaces/maxima.py 2017-11-08 08:16:54.099192455 -0500 +@@ -555,7 +555,7 @@ class Maxima(MaximaAbstract, Expect): Expect.__init__(self, name = 'maxima', prompt = '\(\%i[0-9]+\) ', @@ -22,7 +22,7 @@ diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py script_subdirectory = script_subdirectory, restart_on_ctrlc = False, verbose_start = False, -@@ -623,7 +623,8 @@ class Maxima(MaximaAbstract, Expect): +@@ -622,7 +622,8 @@ class Maxima(MaximaAbstract, Expect): # Remove limit on the max heapsize (since otherwise it defaults # to 256MB with ECL). diff --git a/sagemath-nauty.patch b/sagemath-nauty.patch index 4d63a87..bdb77d6 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 2017-04-11 09:58:45.689268257 -0400 -+++ src/sage/graphs/graph_generators.py 2017-04-11 09:58:53.297268548 -0400 -@@ -875,7 +875,7 @@ class GraphGenerators(): +--- src/sage/graphs/graph_generators.py.orig 2017-11-08 08:22:46.174205937 -0500 ++++ src/sage/graphs/graph_generators.py 2017-11-08 08:22:54.470206255 -0500 +@@ -882,7 +882,7 @@ class GraphGenerators(): >A geng -d0D3 n=4 e=0-6 """ import subprocess diff --git a/sagemath-nofstring.patch b/sagemath-nofstring.patch index 50fdd5a..8e24b59 100644 --- a/sagemath-nofstring.patch +++ b/sagemath-nofstring.patch @@ -1,6 +1,6 @@ diff -up src/sage/arith/multi_modular.pyx.orig src/sage/arith/multi_modular.pyx ---- src/sage/arith/multi_modular.pyx.orig 2017-03-04 13:36:01.148497224 -0500 -+++ src/sage/arith/multi_modular.pyx 2017-03-04 13:36:03.202497303 -0500 +--- src/sage/arith/multi_modular.pyx.orig 2017-11-08 08:29:36.259221641 -0500 ++++ src/sage/arith/multi_modular.pyx 2017-11-08 08:29:38.843221740 -0500 @@ -172,9 +172,9 @@ cdef class MultiModularBasis_base(object ArithmeticError: The inverse of 6 modulo 10 is not defined. """ @@ -23,9 +23,9 @@ diff -up src/sage/arith/multi_modular.pyx.orig src/sage/arith/multi_modular.pyx cdef Py_ssize_t i diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx ---- src/sage/rings/finite_rings/integer_mod.pyx.orig 2017-03-04 13:36:01.155497224 -0500 -+++ src/sage/rings/finite_rings/integer_mod.pyx 2017-03-04 13:36:03.204497303 -0500 -@@ -392,7 +392,7 @@ cdef class IntegerMod_abstract(FiniteRin +--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2017-11-08 08:29:14.256220798 -0500 ++++ src/sage/rings/finite_rings/integer_mod.pyx 2017-11-08 08:29:38.845221740 -0500 +@@ -391,7 +391,7 @@ cdef class IntegerMod_abstract(FiniteRin from integer_mod_ring import IntegerModRing R = IntegerModRing(modulus) if (self)._parent._IntegerModRing_generic__order % R.order(): @@ -35,9 +35,9 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_ def is_nilpotent(self): diff -up src/sage/structure/parent.pyx.orig src/sage/structure/parent.pyx ---- src/sage/structure/parent.pyx.orig 2017-03-04 13:35:36.771496290 -0500 -+++ src/sage/structure/parent.pyx 2017-03-04 13:36:03.205497303 -0500 -@@ -735,7 +735,7 @@ cdef class Parent(category_object.Catego +--- src/sage/structure/parent.pyx.orig 2017-11-08 08:29:14.260220799 -0500 ++++ src/sage/structure/parent.pyx 2017-11-08 08:29:38.846221740 -0500 +@@ -714,7 +714,7 @@ cdef class Parent(sage.structure.categor cdef int init_coerce(self, bint warn=True) except -1: if self._coerce_from_hash is None: if warn: @@ -47,9 +47,9 @@ diff -up src/sage/structure/parent.pyx.orig src/sage/structure/parent.pyx self._initial_action_list = [] self._initial_convert_list = [] diff -up src/sage/symbolic/ring.pyx.orig src/sage/symbolic/ring.pyx ---- src/sage/symbolic/ring.pyx.orig 2017-03-04 13:35:36.772496290 -0500 -+++ src/sage/symbolic/ring.pyx 2017-03-04 13:36:03.206497303 -0500 -@@ -379,7 +379,7 @@ cdef class SymbolicRing(CommutativeRing) +--- src/sage/symbolic/ring.pyx.orig 2017-11-08 08:29:14.264220799 -0500 ++++ src/sage/symbolic/ring.pyx 2017-11-08 08:29:38.847221740 -0500 +@@ -376,7 +376,7 @@ cdef class SymbolicRing(CommutativeRing) from sage.misc.all import prod return prod([SR(p)**e for p,e in x], SR(x.unit())) else: diff --git a/sagemath-pari.patch b/sagemath-pari.patch deleted file mode 100644 index 8ce27b5..0000000 --- a/sagemath-pari.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up src/sage/libs/cypari2/paridecl.pxd.orig src/sage/libs/cypari2/paridecl.pxd ---- src/sage/libs/cypari2/paridecl.pxd.orig 2017-04-18 07:41:28.165058343 -0400 -+++ src/sage/libs/cypari2/paridecl.pxd 2017-04-18 07:45:56.847068632 -0400 -@@ -84,7 +84,7 @@ cdef extern from *: # PARI headers a - int PARI_SIGINT_block, PARI_SIGINT_pending - void NEXT_PRIME_VIADIFF(long, byteptr) - void PREC_PRIME_VIADIFF(long, byteptr) -- int INIT_JMPm, INIT_SIGm, INIT_DFTm, INIT_noPRIMEm, INIT_noIMTm -+ int INIT_JMPm, INIT_SIGm, INIT_DFTm, INIT_noPRIMEm, INIT_noIMTm, INIT_noINTGMPm - int new_galois_format, factor_add_primes, factor_proven - int precdl - # The "except 0" here is to ensure compatibility with -diff -up src/sage/libs/cypari2/pari_instance.pyx.orig src/sage/libs/cypari2/pari_instance.pyx ---- src/sage/libs/cypari2/pari_instance.pyx.orig 2017-04-18 07:46:04.924068941 -0400 -+++ src/sage/libs/cypari2/pari_instance.pyx 2017-04-18 07:46:41.870070356 -0400 -@@ -461,7 +461,7 @@ cdef class Pari(Pari_auto): - - # Take 1MB as minimal stack. Use maxprime=0, which PARI will - # internally increase to some small value like 65537. -- pari_init_opts(1000000, 0, INIT_DFTm) -+ pari_init_opts(1000000, 0, INIT_DFTm|INIT_noINTGMPm) - - # Disable PARI's stack overflow checking which is incompatible - # with multi-threading. diff --git a/sagemath-qepcad.patch b/sagemath-qepcad.patch index 92653c6..0c71de0 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 2016-08-08 13:58:03.953585989 -0400 -+++ src/sage/interfaces/qepcad.py 2016-08-08 14:00:58.323592666 -0400 +--- src/sage/interfaces/qepcad.py.orig 2017-11-08 08:28:33.908219253 -0500 ++++ src/sage/interfaces/qepcad.py 2017-11-08 08:28:43.336219614 -0500 @@ -530,8 +530,8 @@ TESTS: Check the qepcad configuration file:: @@ -12,24 +12,24 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py Tests related to the not tested examples (nondeterministic order of atoms):: -@@ -606,7 +606,6 @@ AUTHORS: - from __future__ import print_function +@@ -607,7 +607,6 @@ from __future__ import print_function from __future__ import absolute_import + from six import string_types -from sage.env import SAGE_LOCAL import pexpect import re import sys -@@ -618,6 +617,8 @@ from sage.interfaces.tab_completion impo - +@@ -620,6 +619,8 @@ from sage.docs.instancedoc import instan from .expect import Expect, ExpectFunction, AsciiArtString + +QEPCAD_LOCAL = "/usr/share/qepcad" + def _qepcad_atoms(formula): r""" Return the atoms of a qepcad quantifier-free formula, as a set of strings. -@@ -647,17 +648,17 @@ def _qepcad_cmd(memcells=None): +@@ -649,17 +650,17 @@ def _qepcad_cmd(memcells=None): sage: from sage.interfaces.qepcad import _qepcad_cmd sage: s = _qepcad_cmd() @@ -50,7 +50,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py _command_info_cache = None -@@ -682,7 +683,7 @@ def _update_command_info(): +@@ -684,7 +685,7 @@ def _update_command_info(): cache = {} diff --git a/sagemath-readonly.patch b/sagemath-readonly.patch index 31f3d5a..a0a2473 100644 --- a/sagemath-readonly.patch +++ b/sagemath-readonly.patch @@ -1,7 +1,7 @@ diff -up src/sage/all.py.orig src/sage/all.py ---- src/sage/all.py.orig 2017-04-11 09:56:17.559262584 -0400 -+++ src/sage/all.py 2017-04-11 09:56:25.743262897 -0400 -@@ -298,11 +298,11 @@ def _write_started_file(): +--- src/sage/all.py.orig 2017-11-08 08:16:05.331190588 -0500 ++++ src/sage/all.py 2017-11-08 08:16:14.195190927 -0500 +@@ -295,11 +295,11 @@ def _write_started_file(): Check that the file exists when Sage is running:: diff --git a/sagemath-rpmbuild.patch b/sagemath-rpmbuild.patch index fc8ff77..c8faa8a 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 2017-03-04 13:14:34.197447942 -0500 -+++ src/module_list.py 2017-03-04 13:14:58.646448878 -0500 +--- src/module_list.py.orig 2017-11-08 06:16:18.175915367 -0500 ++++ src/module_list.py 2017-11-08 06:16:29.412915797 -0500 @@ -3,7 +3,7 @@ from glob import glob from distutils.extension import Extension from sage.env import SAGE_LOCAL @@ -11,9 +11,9 @@ diff -up src/module_list.py.orig src/module_list.py ######################################################### ### pkg-config setup diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py ---- src/sage/misc/cython.py.orig 2017-03-04 13:15:11.022449352 -0500 -+++ src/sage/misc/cython.py 2017-03-04 13:15:43.031450578 -0500 -@@ -432,7 +432,7 @@ extra_compile_args = %s +--- src/sage/misc/cython.py.orig 2017-11-08 06:16:39.095916168 -0500 ++++ src/sage/misc/cython.py 2017-11-08 06:17:35.580918331 -0500 +@@ -497,7 +497,7 @@ extra_compile_args = %s ext_modules = [Extension('%s', sources=['%s.%s', %s], libraries=%s, @@ -23,12 +23,12 @@ diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py language = '%s' )] diff -up src/setup.py.orig src/setup.py ---- src/setup.py.orig 2017-03-04 13:15:50.884450879 -0500 -+++ src/setup.py 2017-03-04 13:18:14.831456391 -0500 -@@ -412,9 +412,8 @@ class sage_build_ext(build_ext): +--- src/setup.py.orig 2017-11-08 06:17:50.231918892 -0500 ++++ src/setup.py 2017-11-08 06:18:48.924921139 -0500 +@@ -422,9 +422,8 @@ class sage_build_cython(Command): # Debugging - gdb_debug=debug, - output_dir=SAGE_CYTHONIZED, + gdb_debug=self.debug, + output_dir=self.build_dir, - # Disable Cython caching, which is currently too broken to - # use reliably: http://trac.sagemath.org/ticket/17851 - cache=False, @@ -36,18 +36,18 @@ diff -up src/setup.py.orig src/setup.py + cache=True, ) - open(version_file, 'w').write(version_stamp) -@@ -699,9 +698,6 @@ class sage_install(install): + log.info("Finished Cythonizing, time: %.2f seconds." % (time.time() - t)) +@@ -850,9 +849,6 @@ class sage_install(install): install.run(self) self.install_kernel_spec() - log.warn('Cleaning up stale installed files....') + log.info('Cleaning up stale installed files....') - t = time.time() - self.clean_stale_files() -- log.warn('Finished cleaning, time: %.2f seconds.' % (time.time() - t)) +- log.info('Finished cleaning, time: %.2f seconds.' % (time.time() - t)) def install_kernel_spec(self): """ -@@ -715,42 +711,6 @@ class sage_install(install): +@@ -866,40 +862,6 @@ class sage_install(install): from sage.repl.ipython_kernel.install import SageKernelSpec SageKernelSpec.update() @@ -61,10 +61,8 @@ diff -up src/setup.py.orig src/setup.py - ``build/lib-*`` and from the install directory ``site-packages``. - """ - dist = self.distribution -- cmd_build_py = dist.get_command_obj("build_py") -- cmd_build_py.ensure_finalized() -- cmd_build_ext = dist.get_command_obj("build_ext") -- cmd_build_ext.ensure_finalized() +- cmd_build_py = self.get_finalized_command("build_py") +- cmd_build_cython = self.get_finalized_command("build_cython") - - # Determine all Python modules inside all packages - py_modules = [] @@ -80,12 +78,12 @@ diff -up src/setup.py.orig src/setup.py - output_dirs = [self.install_purelib, self.install_platlib, self.build_lib] - from sage_setup.clean import clean_install_dir - for output_dir in set(output_dirs): -- log.warn('- cleaning {0}'.format(output_dir)) +- log.info('- cleaning {0}'.format(output_dir)) - clean_install_dir(output_dir, - dist.packages, - py_modules, - dist.ext_modules, -- cmd_build_ext.cythonized_files) +- cmd_build_cython.get_cythonized_package_files()) - ######################################################### diff --git a/sagemath-sagedoc.patch b/sagemath-sagedoc.patch index 934f448..13ec5d7 100644 --- a/sagemath-sagedoc.patch +++ b/sagemath-sagedoc.patch @@ -1,6 +1,6 @@ diff -up src/doc/common/conf.py.orig src/doc/common/conf.py ---- src/doc/common/conf.py.orig 2017-04-11 09:55:23.607260518 -0400 -+++ src/doc/common/conf.py 2017-04-11 09:55:52.327261618 -0400 +--- src/doc/common/conf.py.orig 2017-11-08 08:08:07.554172292 -0500 ++++ src/doc/common/conf.py 2017-11-08 08:08:33.656173291 -0500 @@ -220,7 +220,7 @@ if (os.environ.get('SAGE_DOC_MATHJAX', ' html_theme_options['mathjax_macros'] = sage_mathjax_macros() @@ -11,9 +11,9 @@ diff -up src/doc/common/conf.py.orig src/doc/common/conf.py # It would be really nice if sphinx would copy the entire mathjax directory, diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py ---- src/sage/doctest/control.py.orig 2017-04-11 09:55:23.610260518 -0400 -+++ src/sage/doctest/control.py 2017-04-11 09:55:52.330261618 -0400 -@@ -95,7 +95,6 @@ class DocTestDefaults(SageObject): +--- src/sage/doctest/control.py.orig 2017-11-08 08:08:44.186173695 -0500 ++++ src/sage/doctest/control.py 2017-11-08 08:09:24.904175254 -0500 +@@ -96,7 +96,6 @@ class DocTestDefaults(SageObject): self.valgrind = False self.massif = False self.cachegrind = False @@ -21,7 +21,7 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py self.failed = False self.new = False self.show_skipped = False -@@ -270,7 +269,7 @@ class DocTestController(SageObject): +@@ -285,7 +284,7 @@ class DocTestController(SageObject): if options.gdb or options.debug: # Interactive debuggers: "infinite" timeout options.timeout = 0 @@ -30,7 +30,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: -@@ -1034,13 +1033,8 @@ class DocTestController(SageObject): +@@ -1049,13 +1048,8 @@ class DocTestController(SageObject): elif opt.cachegrind: toolname = "cachegrind" flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "") @@ -44,7 +44,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 -@@ -1100,10 +1094,10 @@ class DocTestController(SageObject): +@@ -1115,10 +1109,10 @@ class DocTestController(SageObject): 0 """ opt = self.options @@ -58,9 +58,9 @@ diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py return self.run_val_gdb() else: diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py ---- src/sage/interfaces/singular.py.orig 2017-04-11 09:55:50.260261539 -0400 -+++ src/sage/interfaces/singular.py 2017-04-11 09:55:52.332261618 -0400 -@@ -2291,7 +2291,7 @@ def generate_docstring_dictionary(): +--- src/sage/interfaces/singular.py.orig 2017-11-08 08:09:36.306175691 -0500 ++++ src/sage/interfaces/singular.py 2017-11-08 08:09:57.144176489 -0500 +@@ -2287,7 +2287,7 @@ def generate_docstring_dictionary(): nodes.clear() node_names.clear() @@ -70,9 +70,9 @@ diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py new_node = re.compile("File: singular\.hlp, Node: ([^,]*),.*") new_lookup = re.compile("\* ([^:]*):*([^.]*)\..*") 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 2017-04-11 09:55:23.612260518 -0400 -+++ src/sage_setup/docbuild/ext/multidocs.py 2017-04-11 09:55:52.332261618 -0400 -@@ -84,8 +84,11 @@ def merge_environment(app, env): +--- src/sage_setup/docbuild/ext/multidocs.py.orig 2017-11-08 08:10:07.010176866 -0500 ++++ src/sage_setup/docbuild/ext/multidocs.py 2017-11-08 08:10:30.319177759 -0500 +@@ -82,8 +82,11 @@ def merge_environment(app, env): for ind in newalldoc: # treat subdocument source as orphaned file and don't complain md = env.metadata.get(ind, dict()) @@ -85,10 +85,10 @@ diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/e + env.metadata[ind] = {'orphan'} # merge the citations newcite = {} - for ind, (path, tag) in six.iteritems(docenv.citations): + for ind, (path, tag) in six.iteritems(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 2017-04-11 09:55:50.272261539 -0400 -+++ src/sage_setup/docbuild/__init__.py 2017-04-11 09:55:52.333261618 -0400 +--- src/sage_setup/docbuild/__init__.py.orig 2017-11-08 08:10:41.962178205 -0500 ++++ src/sage_setup/docbuild/__init__.py 2017-11-08 08:11:16.448179525 -0500 @@ -248,13 +248,14 @@ if NUM_THREADS > 1: # map_async handles KeyboardInterrupt correctly. Plain map and # apply_async does not, so don't use it. diff --git a/sagemath-sagenb.patch b/sagemath-sagenb.patch index fe053d4..f8eccac 100644 --- a/sagemath-sagenb.patch +++ b/sagemath-sagenb.patch @@ -1,16 +1,16 @@ 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 2016-08-15 06:09:20.786276308 -0400 -+++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2016-08-15 06:09:23.074276396 -0400 -@@ -4,8 +4,6 @@ from functools import partial - from flask import Flask, Module, 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 +--- build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig 2017-11-08 08:11:53.546180946 -0500 ++++ build/pkgs/sagenb/src/sagenb/flask_version/base.py 2017-11-08 08:13:13.400184004 -0500 +@@ -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.ext.autoindex import AutoIndex from sage.env import SAGE_SRC, SAGE_DOC -@@ -25,7 +23,6 @@ class SageNBFlask(Flask): +@@ -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) @@ -18,29 +18,31 @@ diff -up build/pkgs/sagenb/src/sagenb/flask_version/base.py.orig build/pkgs/sage self.config['SESSION_COOKIE_HTTPONLY'] = False -@@ -36,12 +33,12 @@ class SageNBFlask(Flask): +@@ -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_ROOT"],"local","share","jmol")) -- self.add_static_path('/jsmol', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol")) -- self.add_static_path('/jsmol/js', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","js")) -- self.add_static_path('/j2s', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s")) -- self.add_static_path('/jsmol/j2s', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s")) -- self.add_static_path('/j2s/core', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s","core")) +- 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 2016-08-15 06:09:20.792276308 -0400 -+++ build/pkgs/sagenb/src/sagenb/misc/misc.py 2016-08-15 06:09:23.076276396 -0400 -@@ -176,7 +176,8 @@ def pad_zeros(s, size=3): +--- build/pkgs/sagenb/src/sagenb/misc/misc.py.orig 2017-11-08 08:13:24.162184416 -0500 ++++ build/pkgs/sagenb/src/sagenb/misc/misc.py 2017-11-08 08:13:41.928185096 -0500 +@@ -184,7 +184,8 @@ def pad_zeros(s, size=3): SAGENB_ROOT = os.path.split(resource_filename(__name__, ''))[0] @@ -48,12 +50,12 @@ diff -up build/pkgs/sagenb/src/sagenb/misc/misc.py.orig build/pkgs/sagenb/src/sa +import sage.env +DATA = os.path.join(sage.env.SAGE_SRC, 'sagenb', 'data') - if os.environ.has_key('DOT_SAGENB'): + 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 2016-08-15 06:09:20.800276309 -0400 -+++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2016-08-15 06:09:23.077276396 -0400 -@@ -2350,8 +2350,8 @@ class Cell(Cell_generic): +--- build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig 2017-11-08 08:13:51.658185469 -0500 ++++ build/pkgs/sagenb/src/sagenb/notebook/cell.py 2017-11-08 08:14:22.016186631 -0500 +@@ -2384,8 +2384,8 @@ class Cell(Cell_generic): with open(jmol_name, 'r') as f: jmol_script = f.read() jmol_script = jmol_script.replace( @@ -65,9 +67,9 @@ diff -up build/pkgs/sagenb/src/sagenb/notebook/cell.py.orig build/pkgs/sagenb/sr f.write(jmol_script) diff -up build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py ---- build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig 2016-08-15 06:09:20.806276309 -0400 -+++ build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py 2016-08-15 06:10:30.060278961 -0400 -@@ -46,12 +46,11 @@ sagenb.notebook.misc.DIR = %(cwd)r #We s +--- build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig 2017-11-08 08:14:30.274186948 -0500 ++++ build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py 2017-11-08 08:15:04.624188263 -0500 +@@ -49,12 +49,11 @@ sagenb.notebook.misc.DIR = %(cwd)r #We s # Flask # ######### import os, sys, random @@ -83,4 +85,4 @@ diff -up build/pkgs/sagenb/src/sagenb/notebook/run_notebook.py.orig build/pkgs/s +flask_app = flask_base.create_app(%(notebook_opts)s, startup_token=startup_token) def save_notebook(notebook): - print "Quitting all running worksheets..." + print("Quitting all running worksheets...") diff --git a/sagemath-scripts.patch b/sagemath-scripts.patch index 3820e2c..051e8fc 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 2017-04-11 09:46:27.981240007 -0400 -+++ src/bin/sage 2017-04-11 09:53:04.143255178 -0400 +--- src/bin/sage.orig 2017-11-08 06:04:08.687887432 -0500 ++++ src/bin/sage 2017-11-08 06:10:52.452902893 -0500 @@ -1,5 +1,16 @@ #!/usr/bin/env bash @@ -18,7 +18,7 @@ diff -up src/bin/sage.orig src/bin/sage help_banner() { sage_banner | grep -v 'Type' echo -@@ -13,20 +24,16 @@ usage() { +@@ -13,13 +24,10 @@ usage() { echo " file.[sage|py|spyx] -- run given .sage, .py or .spyx file" echo " -advanced -- list all command line options" echo " -c -- Evaluates cmd as sage code" @@ -32,14 +32,15 @@ diff -up src/bin/sage.orig src/bin/sage echo " -inotebook [...] -- start the *insecure* Sage notebook (deprecated)" echo " -maxima [...] -- run Sage's Maxima with given arguments" echo " -mwrank [...] -- run Sage's mwrank with given arguments" - echo " --notebook=[...] -- start the Sage notebook (valid options are" +@@ -27,7 +35,6 @@ usage() { echo " 'default', 'sagenb', 'jupyter', and 'export')" + echo " Current default is 'export' from sagenb to jupyter" echo " -n, --notebook -- shortcut for --notebook=default" - echo " -optional -- list all optional packages that can be installed" - echo " -python [...] -- run the Python interpreter" + echo " -python [...] -- run the Python 2 interpreter" + echo " -python3 [...] -- run the Python 3 interpreter" echo " -R [...] -- run Sage's R with given arguments" - echo " -singular [...] -- run Sage's singular with given arguments" -@@ -42,10 +49,6 @@ usage() { +@@ -44,10 +51,6 @@ usage() { echo " --optional - controls which optional tests are run" echo " --sagenb - test all sagenb files" echo " --help - show all testing options" @@ -50,7 +51,7 @@ diff -up src/bin/sage.orig src/bin/sage echo " -v, -version -- display Sage version information" exit 0 } -@@ -64,11 +67,8 @@ usage_advanced() { +@@ -66,11 +69,8 @@ usage_advanced() { echo " -preparse -- preparse file.sage and produce corresponding file.sage.py" echo " -q -- quiet; start with no banner" echo " -root -- print the Sage root directory" @@ -62,7 +63,7 @@ diff -up src/bin/sage.orig src/bin/sage echo #### 1.......................26..................................................78 -@@ -79,8 +79,6 @@ usage_advanced() { +@@ -82,8 +82,6 @@ usage_advanced() { echo " See the output of sage --notebook --help" echo " for more details and examples of how to pass" echo " optional arguments" @@ -71,25 +72,26 @@ 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" -@@ -99,17 +97,13 @@ usage_advanced() { +@@ -102,18 +100,11 @@ usage_advanced() { echo " -gp [...] -- run Sage's PARI/GP calculator with given arguments" echo " -ipython [...] -- run Sage's IPython using the default environment (not" echo " Sage), passing additional options to IPython" - echo " -kash [...] -- run Sage's Kash with given arguments" - command -v kash &>/dev/null || \ - echo " (not installed currently, run sage -i kash)" +- echo " (not installed currently, run sage -i kash)" echo " -lisp [...] -- run Lisp interpreter included with Sage" echo " -M2 [...] -- run Sage's Macaulay2 with given arguments" - command -v M2 &>/dev/null || \ - echo " (not installed currently, run sage -i macaulay2)" +- echo " (not installed currently, run sage -i macaulay2)" echo " -maxima [...] -- run Sage's Maxima with given arguments" echo " -mwrank [...] -- run Sage's mwrank with given arguments" echo " -polymake [...] -- run Sage's Polymake with given arguments" - command -v polymake &>/dev/null || \ - echo " (not installed currently, run sage -i polymake)" +- echo " (not installed currently, run sage -i polymake)" echo " -python [...] -- run the Python interpreter" echo " -R [...] -- run Sage's R with given arguments" -@@ -122,55 +116,7 @@ usage_advanced() { + echo " -scons [...] -- run Sage's scons" +@@ -125,55 +116,7 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| @@ -146,7 +148,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" -@@ -200,7 +146,6 @@ usage_advanced() { +@@ -203,7 +146,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" @@ -154,7 +156,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" -@@ -222,16 +167,6 @@ usage_advanced() { +@@ -225,16 +167,6 @@ usage_advanced() { echo #### 1.......................26..................................................78 #### |.....................--.|...................................................| @@ -171,7 +173,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" -@@ -245,9 +180,6 @@ usage_advanced() { +@@ -248,9 +180,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" @@ -181,7 +183,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'." -@@ -256,121 +188,6 @@ usage_advanced() { +@@ -259,121 +188,6 @@ usage_advanced() { } @@ -303,12 +305,15 @@ diff -up src/bin/sage.orig src/bin/sage if [ $# -gt 0 ]; then if [ "$1" = '-h' -o "$1" = '-?' -o "$1" = '-help' -o "$1" = '--help' ]; then usage -@@ -382,23 +199,9 @@ fi +@@ -383,25 +197,12 @@ if [ $# -gt 0 ]; then + fi + fi ++ # Prepare for running Sage, either interactively or non-interactively. sage_setup() { - # Check that we're not in a source tarball which hasn't been built yet (#13561). -- if [ ! -d "$SAGE_LOCAL/lib/python/site-packages/sage" ]; then +- if [ ! -x "$SAGE_LOCAL/bin/sage" ]; then - echo >&2 '************************************************************************' - echo >&2 'It seems that you are attempting to run Sage from an unpacked source' - echo >&2 'tarball, but you have not compiled it yet (or maybe the build has not' @@ -319,7 +324,7 @@ diff -up src/bin/sage.orig src/bin/sage - exit 1 - fi - - # Display the startup banner (unless SAGE_BANNER is explictly "no") + # Display the startup banner (unless SAGE_BANNER is explicitly "no") sage_banner - maybe_sage_location @@ -327,7 +332,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 -@@ -409,20 +212,6 @@ sage_setup() { +@@ -412,20 +213,6 @@ sage_setup() { } @@ -348,7 +353,7 @@ diff -up src/bin/sage.orig src/bin/sage # Start an interactive Sage session, this function never returns. interactive_sage() { sage_setup -@@ -527,16 +316,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] +@@ -530,16 +317,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ] exec ecl "$@" fi @@ -365,7 +370,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then shift exec maxima "$@" -@@ -562,11 +341,6 @@ if [ "$1" = '-pip' -o "$1" = '--pip' ]; +@@ -565,11 +342,6 @@ if [ "$1" = '-pip' -o "$1" = '--pip' ]; exec pip "$@" fi @@ -377,7 +382,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-python' -o "$1" = '--python' ]; then shift exec python "$@" -@@ -582,16 +356,6 @@ if [ "$1" = '-ipython' -o "$1" = '--ipyt +@@ -595,16 +367,6 @@ if [ "$1" = '-ipython' -o "$1" = '--ipyt exec ipython "$@" fi @@ -394,7 +399,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 -@@ -711,20 +475,6 @@ EOF +@@ -724,20 +486,6 @@ EOF fi ##################################################################### @@ -415,7 +420,7 @@ diff -up src/bin/sage.orig src/bin/sage # File conversion ##################################################################### -@@ -747,11 +497,6 @@ fi +@@ -760,11 +508,6 @@ fi # Run Sage's versions of the standard Algebra/Geometry etc. software ##################################################################### @@ -427,7 +432,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 "$@" -@@ -762,13 +507,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not +@@ -775,13 +518,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not exec sage-notebook "$@" fi @@ -441,7 +446,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = "-inotebook" -o "$1" = '--inotebook' ]; then shift sage-cleaner &>/dev/null & -@@ -787,38 +525,19 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep +@@ -800,34 +536,15 @@ if [ "$1" = '-grepdoc' -o "$1" = "--grep exit 0 fi @@ -471,10 +476,6 @@ diff -up src/bin/sage.orig src/bin/sage - build_sage - fi +if [ "$1" = '-t' -o "$1" = '-tp' ]; then - if [ ! -f "$DOT_SAGE"/init.sage ]; then - echo >&2 "init.sage does not exist ... creating" - touch "$DOT_SAGE"/init.sage - fi SAGE_BANNER=no sage_setup export PYTHONIOENCODING="utf-8" # Fix encoding for doctests - if [ "$1" = '-tp' -o "$1" = '-btp' ]; then @@ -482,7 +483,7 @@ diff -up src/bin/sage.orig src/bin/sage shift exec sage-runtests -p "$@" else -@@ -827,16 +546,6 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" +@@ -836,10 +553,7 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" fi fi @@ -490,16 +491,11 @@ diff -up src/bin/sage.orig src/bin/sage - if [ "$1" = '-btnew' ]; then - build_sage - fi -- shift -- SAGE_BANNER=no sage_setup -- export PYTHONIOENCODING="utf-8" # Fix encoding for doctests -- exec sage-runtests --new "$@" --fi -- - if [ "$1" = '-testall' -o "$1" = "--testall" ]; then ++if [ "$1" = '-tnew' ]; then shift SAGE_BANNER=no sage_setup -@@ -851,119 +560,6 @@ if [ "$1" = '-c' ]; then + export PYTHONIOENCODING="utf-8" # Fix encoding for doctests +@@ -860,119 +574,6 @@ if [ "$1" = '-c' ]; then exec sage-eval "$@" fi @@ -619,7 +615,7 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then shift sage_setup -@@ -1014,12 +610,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca +@@ -1023,12 +624,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca exec sage-callgrind "$@" fi @@ -632,35 +628,23 @@ diff -up src/bin/sage.orig src/bin/sage if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then exec sage-startuptime.py "$@" fi -@@ -1030,11 +620,6 @@ if [ "$1" = '-gthread' -o "$1" = '-qthre - fi - - if [ $# -ge 1 ]; then -- T=`echo "$1" | sed -e "s/.*\.//"` -- if [ "$T" = "spkg" ]; then -- install "$@" -- fi -- SAGE_BANNER=no sage_setup - unset TERM # See Trac #12263 - exec sage-run "$@" - fi diff -up src/bin/sage-runtests.orig src/bin/sage-runtests ---- src/bin/sage-runtests.orig 2017-04-11 09:53:17.222255678 -0400 -+++ src/bin/sage-runtests 2017-04-11 09:53:31.631256230 -0400 -@@ -56,10 +56,6 @@ if __name__ == "__main__": +--- src/bin/sage-runtests.orig 2017-11-08 06:11:02.679903285 -0500 ++++ src/bin/sage-runtests 2017-11-08 06:11:18.876903905 -0500 +@@ -64,10 +64,6 @@ if __name__ == "__main__": help="run doctests using Valgrind's cachegrind tool. The log " "files are named sage-cachegrind.PID and can be found in " + - os.path.join(os.environ["DOT_SAGE"], "valgrind")) + os.path.join(DOT_SAGE, "valgrind")) - parser.add_option("--omega", action="store_true", default=False, - help="run doctests using Valgrind's omega tool. The log " - "files are named sage-omega.PID and can be found in " + -- os.path.join(os.environ["DOT_SAGE"], "valgrind")) +- os.path.join(DOT_SAGE, "valgrind")) 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 2017-04-11 09:53:45.006256742 -0400 -+++ src/bin/sage-valgrind 2017-04-11 09:54:05.879257542 -0400 +--- src/bin/sage-valgrind.orig 2017-11-08 06:11:27.655904241 -0500 ++++ src/bin/sage-valgrind 2017-11-08 06:11:40.964904751 -0500 @@ -1,16 +1,6 @@ #!/usr/bin/env bash diff --git a/sagemath-singular.patch b/sagemath-singular.patch deleted file mode 100644 index 73d8c9d..0000000 --- a/sagemath-singular.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff -up src/sage/libs/singular/decl.pxd.orig src/sage/libs/singular/decl.pxd ---- src/sage/libs/singular/decl.pxd.orig 2017-03-29 14:40:18.119445065 -0400 -+++ src/sage/libs/singular/decl.pxd 2017-03-29 14:42:36.153450351 -0400 -@@ -484,8 +484,8 @@ cdef extern from "singular/Singular/libs - - ring *rDefault(int char , int nvars, char **names) - ring *rDefault(const n_Procs_s* cf, int nvars, char **names) -- ring *rDefault(int ch , int nvars, char **names,int ord_size, int *ord, int *block0, int *block1, int **wvhdl) -- ring *rDefault(const n_Procs_s* cf, int nvars, char **names,int ord_size, int *ord, int *block0, int *block1, int **wvhdl) -+ ring *rDefault(int ch , int nvars, char **names,int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl) -+ ring *rDefault(const n_Procs_s* cf, int nvars, char **names,int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl) - - - -diff -up src/sage/libs/singular/ring.pyx.orig src/sage/libs/singular/ring.pyx ---- src/sage/libs/singular/ring.pyx.orig 2017-03-29 14:40:24.767445320 -0400 -+++ src/sage/libs/singular/ring.pyx 2017-03-29 14:43:38.593452742 -0400 -@@ -21,7 +21,7 @@ from sage.libs.gmp.mpz cimport mpz_init_ - from sage.libs.singular.decl cimport number, poly, ring, currRing - from sage.libs.singular.decl cimport rChangeCurrRing, rCopy0, rComplete, rDelete, idInit - from sage.libs.singular.decl cimport omAlloc0, omStrDup, omAlloc, omAlloc0Bin, sip_sring_bin, rnumber_bin --from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_rp, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a -+from sage.libs.singular.decl cimport rRingOrder_t, ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_rp, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a - from sage.libs.singular.decl cimport p_Copy, prCopyR - from sage.libs.singular.decl cimport n_unknown, n_Zp, n_Q, n_R, n_GF, n_long_R, n_algExt,n_transExt,n_long_C, n_Z, n_Zn, n_Znm, n_Z2m, n_CF - from sage.libs.singular.decl cimport n_coeffType, cfInitCharProc -@@ -165,7 +165,7 @@ cdef ring *singular_ring_new(base_ring, - ## q q : GF(q=p^n) *names TRUE (todo) - - _wvhdl = omAlloc0((nblcks + 2) * sizeof(int *)) -- _order = omAlloc0((nblcks + 2) * sizeof(int)) -+ _order = omAlloc0((nblcks + 2) * sizeof(rRingOrder_t)) - _block0 = omAlloc0((nblcks + 2) * sizeof(int)) - _block1 = omAlloc0((nblcks + 2) * sizeof(int)) - diff --git a/sagemath-sympy.patch b/sagemath-sympy.patch index e0271bb..70d562a 100644 --- a/sagemath-sympy.patch +++ b/sagemath-sympy.patch @@ -1,7 +1,7 @@ diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2016-10-20 08:14:08.087552003 -0400 -+++ src/sage/env.py 2016-10-20 08:14:40.929553260 -0400 -@@ -89,7 +89,7 @@ _add_variable_or_fallback('HOSTNAME', +--- src/sage/env.py.orig 2017-11-08 08:27:50.523217592 -0500 ++++ src/sage/env.py 2017-11-08 08:27:58.147217884 -0500 +@@ -90,7 +90,7 @@ _add_variable_or_fallback('HOSTNAME', _add_variable_or_fallback('LOCAL_IDENTIFIER','$HOSTNAME.%s'%os.getpid()) # bunch of sage directories and files @@ -10,7 +10,7 @@ diff -up src/sage/env.py.orig src/sage/env.py _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')) -@@ -115,7 +115,7 @@ _add_variable_or_fallback('SAGE_PKGS', o +@@ -116,7 +116,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')) diff --git a/sagemath.spec b/sagemath.spec index 2ddf0d7..e43010b 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -1,9 +1,7 @@ %global __provides_exclude_from .*/site-packages/.*\\.so -%bcond_with bundled_pari %bcond_with bundled_pexpect -%bcond_without bundled_ipython -%bcond_with bundled_cysignals +%bcond_with bundled_ipython %bcond_without install_hack # for faster full rpm test builds @@ -33,27 +31,21 @@ %global SAGE_TIMEOUT 60 %global SAGE_TIMEOUT_LONG 180 -%global conway_polynomials_pkg conway_polynomials-0.4 -%if %{with bundled_cysignals} -%global cysignals_pkg cysignals-1.3.2 -%endif +%global conway_polynomials_pkg conway_polynomials-0.5 %global elliptic_curves_pkg elliptic_curves-0.8 %global flintqs_pkg flintqs-1.0 %global graphs_pkg graphs-20161026 %if %{with bundled_ipython} %global ipython_pkg ipython-5.1.0 %endif -%if %{with bundled_pari} -%global pari_pkg pari-2.9.1 -%endif %if %{with bundled_pexpect} %global pexpect_pkg pexpect-4.1.0 %endif %global polytopes_db_pkg polytopes_db-20120220 %global rubiks_pkg rubiks-20070912 -%global sagenb_pkg sagenb-0.13 +%global sagenb_pkg sagenb-1.0.1 %global sagetex_pkg sagetex-3.0 -%global Sphinx_pkg Sphinx-1.4.4 +%global Sphinx_pkg Sphinx-1.5.3 %global SAGE_ROOT %{_libdir}/sagemath %global SAGE_LOCAL %{SAGE_ROOT}/local @@ -67,8 +59,8 @@ Name: sagemath Group: Applications/Engineering Summary: A free open-source mathematics software system -Version: 7.6 -Release: 6%{?dist} +Version: 8.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 @@ -114,82 +106,72 @@ Patch8: %{name}-maxima.patch # execute 4ti2 programs in $PATH not in $SAGE_ROOT/local/bin Patch9: %{name}-4ti2.patch -# http://trac.sagemath.org/sage_trac/ticket/12992 -# http://pari.math.u-bordeaux.fr/cgi-bin/bugreport.cgi?bug=1317 -Patch10: %{name}-pari.patch - # use jmol itself to export preview images # FIXME besides not using X and told so, fails if DISPLAY is not set -Patch11: %{name}-jmol.patch +Patch10: %{name}-jmol.patch # only cremona mini database built and installed # FIXME add a package with the full cremona database # FIXME actually it should be already available in pari-elldata -Patch12: %{name}-cremona.patch +Patch11: %{name}-cremona.patch # lrslib is a requires -Patch13: %{name}-lrslib.patch +Patch12: %{name}-lrslib.patch # correct path to the nauty geng program # http://cs.anu.edu.au/~bdm/nauty/ # http://pallini.di.uniroma1.it/ -Patch14: %{name}-nauty.patch +Patch13: %{name}-nauty.patch # gap hap package not (yet) available # http://www-gap.mcs.st-and.ac.uk/Packages/hap.html -Patch15: %{name}-gap-hap.patch +Patch14: %{name}-gap-hap.patch # correct path to Lfunction include -Patch16: %{name}-lcalc.patch +Patch15: %{name}-lcalc.patch # avoid assertion in coin backend -Patch17: %{name}-cbc.patch +Patch16: %{name}-cbc.patch # Use system gap directories -Patch18: %{name}-libgap.patch +Patch17: %{name}-libgap.patch # Build fes -Patch19: %{name}-fes-build.patch +Patch18: %{name}-fes-build.patch # Disable fes -Patch20: %{name}-fes.patch +Patch19: %{name}-fes.patch # Side effect of using distro packages # https://bugzilla.redhat.com/show_bug.cgi?id=974769 -Patch21: %{name}-sympy.patch +Patch20: %{name}-sympy.patch # Fix a name clash with NTL -Patch22: %{name}-ntl.patch +Patch21: %{name}-ntl.patch # Correct unable to start QEPCAD within sage # https://bugzilla.redhat.com/show_bug.cgi?id=1243590 -Patch23: %{name}-qepcad.patch +Patch22: %{name}-qepcad.patch # Correct path to arb headers -Patch24: %{name}-arb.patch +Patch23: %{name}-arb.patch # Adapt to header file changes in givaro 4 and linbox 1.4 -Patch25: %{name}-givaro.patch +Patch24: %{name}-givaro.patch # No support for f" notation -Patch26: %{name}-nofstring.patch +Patch25: %{name}-nofstring.patch # Add missing include paths -Patch27: %{name}-includes.patch +Patch26: %{name}-includes.patch # https://trac.sagemath.org/ticket/20926 # #error This file requires compiler and library support for the ISO C++ \ # 2011 standard. This support must be enabled with the -std=c++11 \ # or -std=gnu++11 compiler options. -Patch28: %{name}-gcc6.patch +Patch27: %{name}-gcc6.patch # Use atlas blas -Patch29: %{name}-atlas.patch - -# Update for python-flask-0.11.1 -Patch30: %{name}-flask.patch - -# Minor adaptation to latest singular -Patch31: %{name}-singular.patch +Patch28: %{name}-atlas.patch BuildRequires: 4ti2 BuildRequires: arb-devel @@ -198,7 +180,7 @@ BuildRequires: brial-devel BuildRequires: cddlib-tools BuildRequires: cliquer-devel BuildRequires: coin-or-Cbc-devel -BuildRequires: cryptominisat-devel +#BuildRequires: cryptominisat-devel BuildRequires: Cython >= 0.24.1 BuildRequires: desktop-file-utils BuildRequires: dos2unix @@ -247,19 +229,14 @@ BuildRequires: nauty BuildRequires: ntl-devel BuildRequires: numpy BuildRequires: palp -%if %{with bundled_pari} -BuildConflicts: pari-devel -%else BuildRequires: pari-devel BuildRequires: pari-gp -%endif BuildRequires: planarity-devel BuildRequires: ppl-devel BuildRequires: pynac-devel BuildRequires: python2-devel -%if %{without bundled_cysignals} +BuildRequires: python-cypari2-devel BuildRequires: python-cysignals-devel -%endif BuildRequires: python-flask-autoindex BuildRequires: python-flask-babel BuildRequires: python-flask-openid @@ -324,9 +301,7 @@ Requires: nauty Requires: palp Requires: pari-gp Requires: python-brial -%if %{without bundled_cysignals} Requires: python-cysignals -%endif Requires: python-crypto Requires: python-cvxopt Requires: python-docutils @@ -608,18 +583,6 @@ computations, and plots from the Sage mathematics software suite %prep %setup -q -n sage-%{version} -%if %{with bundled_cysignals} -pushd build/pkgs/cysignals - tar jxf ../../../upstream/%{cysignals_pkg}.tar.bz2 - mv %{cysignals_pkg} src - if [ %{__isa_bits} = "64" ]; then - for file in $(find . -name cysignals-CSI); do - sed -i "s/'lib'/'%{_lib}'/" $file - done - fi -popd -%endif - pushd build/pkgs/conway_polynomials tar jxf ../../../upstream/%{conway_polynomials_pkg}.tar.bz2 mv %{conway_polynomials_pkg} src @@ -647,20 +610,6 @@ pushd build/pkgs/ipython popd %endif -%if %{with bundled_pari} -pushd build/pkgs/pari - tar zxf ../../../upstream/%{pari_pkg}.tar.gz - mv %{pari_pkg} src - pushd src - for diff in ../patches/*.patch; do - patch -p1 < $diff - done - # Temporary workaround: redefining GCC_VERSION kills the build - sed -i 's/GCC_VERSION/PARI_&/' config/paricfg.h.SH - popd -popd -%endif - %if %{with bundled_pexpect} pushd build/pkgs/pexpect tar zxf ../../../upstream/%{pexpect_pkg}.tar.gz @@ -721,11 +670,7 @@ popd %patch7 %patch8 %patch9 - -%if %{without bundled_pari} %patch10 -%endif - %patch11 %patch12 %patch13 @@ -733,38 +678,29 @@ popd %patch15 %patch16 %patch17 -%patch18 %if %{with fes} -%patch19 +%patch18 %else -%patch20 +%patch19 %endif +%patch20 %patch21 %patch22 %patch23 %patch24 %patch25 %patch26 - %patch27 %patch28 -%patch29 -%patch30 -%patch31 sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \ -e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \ -i src/sage/env.py -%if %{with bundled_cysignals} -sed -e 's|@@CYSIGNALS@@|%{_builddir}%{python_sitearch}/cysignals|' \ - -i src/setup.py -%else sed -e 's|@@CYSIGNALS@@|%{python_sitearch}/cysignals|' \ -i src/setup.py -%endif sed -e "s|, 'flask-oldsessions>=0.10'||" \ -e "s|'http://github.com/mitsuhiko/flask-oldsessions/tarball/master#egg=flask-oldsessions-0.10'||" \ @@ -829,41 +765,6 @@ pushd build/pkgs/ipython/src popd %endif -%if %{with bundled_pari} -# Build bundled pari-2.8 -pushd build/pkgs/pari/src - ./Configure --prefix=%{_builddir} \ - --without-readline --with-gmp \ - --kernel=gmp --graphic=none - sed -i 's|%{_builddir}|%{_prefix}|g' Olinux-*/paricfg.h - make %{?_smp_mflags} gp - make install DESTDIR="" - cp -p src/language/anal.h %{_builddir}/include/pari/anal.h -popd -%endif - -# Generate pari interface -pushd src - %__python2 -c "from sage_setup.autogen.interpreters import rebuild; rebuild('sage/ext/interpreters')" - %__python2 -c "from sage_setup.autogen.pari import rebuild; rebuild()" -popd - -%if %{with bundled_pari} -# Make temporary headers and static library visible -sed -i 's|\(^ include_directories = \[SAGE_INC,\)|\1 "%{_builddir}/include",|' \ - src/sage/env.py -sed -i 's|\(^extra_link_args = \[\) \]|\1"-L%{_builddir}/lib"\]|' \ - src/setup.py -%endif - -%if %{with bundled_cysignals} -pushd build/pkgs/cysignals/src - %__python2 setup.py build - %__python2 setup.py install --root %{_builddir} -popd -export PYTHONPATH=%{_builddir}%{python_sitearch}:$PYTHONPATH -%endif - %if %{with cython_hack} cp -far %{python_sitearch}/Cython %{_builddir}%{python_sitearch} BASE=$PWD/build/pkgs/cython/patches/ @@ -927,9 +828,6 @@ export SAGE_ETC=%{buildroot}%{SAGE_ETC} export SAGE_EXTCODE=%{buildroot}%{SAGE_ETC} export SAGE_DOC=%{buildroot}%{SAGE_DOC} export SAGE_PYTHONPATH=%{buildroot}%{SAGE_PYTHONPATH} -%if %{with bundled_pari} -export LD_LIBRARY_PATH=%{_builddir}/lib:$LD_LIBRARY_PATH -%endif export DESTDIR=%{buildroot} export SAGE_DEBUG=no export DOT_SAGE=/tmp/sage$$ @@ -951,17 +849,6 @@ ln -sf %{_includedir} $SAGE_LOCAL/include ln -sf %{_datadir} $SAGE_LOCAL/share #------------------------------------------------------------------------ -%if %{with bundled_cysignals} -pushd build/pkgs/cysignals/src - pushd docs - %__make html - popd - %__python2 setup.py install --root %{buildroot} - mv %{buildroot}%{_bindir}/cysignals* $SAGE_LOCAL/bin -popd -%endif - -#------------------------------------------------------------------------ pushd src/ext mkdir -p $SAGE_ETC for dir in \ @@ -996,13 +883,6 @@ pushd src %endif popd -%if %{with bundled_pari} -# Revert change to make temporary headers and static library visible -# Making it search for the installed sagemath path -sed -i 's|\(^ include_directories = \[SAGE_INC,\).*|\1|' \ - %{buildroot}%{SAGE_SRC}/sage/env.py -%endif - #------------------------------------------------------------------------ pushd build/pkgs/sagenb/src rm -f %{buildroot}%{python_sitearch}/sagenb/data/sage3d/sage3d @@ -1035,9 +915,7 @@ pushd src/bin ln -sf %{_bindir}/jmol jmol ln -sf %{_bindir}/python sage.bin ln -sf %{_bindir}/python python -%if %{without bundled_pari} ln -sf %{_bindir}/gp sage_pari -%endif ln -sf %{_bindir}/gap gap_stamp ln -sf %{_bindir}/gmp-ecm ecm popd @@ -1281,10 +1159,6 @@ perl -pi -e 's|%{buildroot}||g;' \ # Script was used to build documentation perl -pi -e 's|%{buildroot}||g;s|^##||g;' %{buildroot}%{_bindir}/sage -%if %{with bundled_cysignals} -perl -pi -e 's|%{buildroot}||;' \ - %{buildroot}%{python_sitearch}/cysignals/__init__.pxd -%endif #------------------------------------------------------------------------ # Fix links @@ -1351,23 +1225,6 @@ rm -r %{buildroot}%{python_sitearch}/sagenb/data/sage3d [ -d %{buildroot}%{SAGE_SRC}/build ] && rm -r %{buildroot}%{SAGE_SRC}/build -%if %{with bundled_pari} -install -D -m 755 %{_builddir}/bin/gp-2.8 %{buildroot}%{SAGE_LOCAL}/bin/gp-2.8 -for dest in gp sage_pari; do - ln -sf gp-2.8 %{buildroot}%{SAGE_LOCAL}/bin/$dest -done -install -D -m 755 %{_builddir}/lib/libpari-gmp-2.8.so.0.0.0 \ - %{buildroot}%{SAGE_ROOT}/lib/libpari-gmp-2.8.so.0.0.0 -ln -s libpari-gmp-2.8.so.0.0.0 \ - %{buildroot}%{SAGE_ROOT}/lib/libpari-gmp-2.8.so.0 -install -D -m 644 %{_builddir}/share/pari/pari.desc \ - %{buildroot}%{SAGE_LOCAL}/pari.desc - -# make sure pari is in link path -ln -s libpari-gmp-2.8.so.0.0.0 %{buildroot}%{SAGE_ROOT}/lib/libpari.so -perl -pi -e 's|(libdirs = cblas_library_dirs)|$1 + \["%{SAGE_ROOT}/lib"\]|;' %{buildroot}%{python_sitearch}/sage/misc/cython.py -%endif - %if %{without install_hack} # remove sage_setup rm -r %{buildroot}%{python_sitearch}/sage_setup @@ -1412,8 +1269,8 @@ chmod +x %{buildroot}%{SAGE_LOCAL}/bin/sage-list-packages #------------------------------------------------------------------------ %if %{with docs} - # do not install symlink to '.' - rm %{buildroot}%{SAGE_DOC}/output + rm %{buildroot}%{SAGE_DOC}/doctrees + rm %{buildroot}%{SAGE_DOC}/inventory %endif # last install command @@ -1481,9 +1338,6 @@ exit 0 %{SAGE_LOCAL}/bin/QuadraticSieve %{SAGE_LOCAL}/bin/ecm %{SAGE_LOCAL}/bin/gap_stamp -%if %{with bundled_pari} -%{SAGE_LOCAL}/bin/gp* -%endif %{SAGE_LOCAL}/bin/jmol %if %{with bundled_ipython} %{SAGE_LOCAL}/bin/ip* @@ -1506,26 +1360,15 @@ exit 0 %{_bindir}/sage %{_datadir}/pixmaps/%{name}.png %{_datadir}/applications/%{name}.desktop -%if %{with bundled_pari} -%{SAGE_ROOT}/lib -%{SAGE_LOCAL}/pari.desc -%endif %{SAGE_SPKG_INST} #------------------------------------------------------------------------ %files core # GPLv2+ -%if %{with bundled_cysignals} -%{SAGE_LOCAL}/bin/cysignals* -%endif %{python_sitearch}/sage %if %{without install_hack} %{python_sitearch}/sage-*.egg-info %endif -%if %{with bundled_cysignals} -%{python_sitearch}/cysignals -%{python_sitearch}/cysignals-*.egg-info -%endif %if %{with bundled_ipython} %{SAGE_PYTHONPATH}/IPython %endif @@ -1722,6 +1565,16 @@ exit 0 ######################################################################## %changelog +* Fri Nov 10 2017 pcpa - 8.0-1 +- Update to sagemath 8.0 +- Remove cryptominisat build requires +- Remove no longer needed -singular patch (upstream updated) +- Remove no longer -flask patch (upstream updated) +- Remove no longer -pari patch (used now by cypari2) +- Disable option to use bundled cysignals +- Disable option to use bundled pari +- Use system ipython + * Sat Sep 30 2017 Jerry James - 7.6-6 - Rebuild for arb 2.11.1, eclib 20170815, and libfplll 5.1.0 diff --git a/sources b/sources index c26d969..0bf7da2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sage-7.6.tar.gz) = d700a4e501f8883222b2456134c4983197c7d4216e88d94b6c01e94042baad9345c8a8383a08701c09b4fcad1b3b506413e406da3dad340428a76b6048500df3 +SHA512 (sage-8.0.tar.gz) = f0a7aaf9fc157b031ceba2d298d74a56bb38f6be5ae4350f91058a24360273f2599c1d50dfe8941e7c462d0a1bf436090da859256fc8e687097e6c419345c493