diff --git a/sagemath-extensions.patch b/sagemath-extensions.patch index 81af869..08a18f0 100644 --- a/sagemath-extensions.patch +++ b/sagemath-extensions.patch @@ -1,6 +1,5 @@ -diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2019-10-03 14:49:13.122428790 -0300 -+++ src/module_list.py 2019-10-03 14:49:25.274499871 -0300 +--- src/module_list.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/module_list.py 2020-01-06 20:27:37.840293653 -0700 @@ -389,16 +389,16 @@ ext_modules = [ Extension('sage.graphs.matchpoly', sources = ['sage/graphs/matchpoly.pyx']), @@ -23,22 +22,20 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.graphs.planarity', sources = ['sage/graphs/planarity.pyx'], -@@ -417,10 +417,10 @@ ext_modules = [ +@@ -417,10 +417,9 @@ ext_modules = [ Extension('sage.graphs.graph_decompositions.cutwidth', sources = ['sage/graphs/graph_decompositions/cutwidth.pyx']), - OptionalExtension('sage.graphs.graph_decompositions.tdlib', -- sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], ++ Extension('sage.graphs.graph_decompositions.tdlib', + sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], - language="c++", - package = 'tdlib'), -+# OptionalExtension('sage.graphs.graph_decompositions.tdlib', -+# sources = ['sage/graphs/graph_decompositions/tdlib.pyx'], -+# language="c++", -+# package = 'tdlib'), ++ language="c++"), Extension('sage.graphs.spanning_tree', sources = ['sage/graphs/spanning_tree.pyx']), -@@ -476,9 +476,9 @@ ext_modules = [ +@@ -476,9 +475,9 @@ ext_modules = [ ## ################################ @@ -50,7 +47,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('*', ['sage/interfaces/*.pyx']), -@@ -497,21 +497,19 @@ ext_modules = [ +@@ -497,21 +496,19 @@ ext_modules = [ ## ################################ @@ -77,7 +74,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.libs.flint.flint', sources = ["sage/libs/flint/flint.pyx"], -@@ -540,10 +538,9 @@ ext_modules = [ +@@ -540,13 +537,14 @@ ext_modules = [ sources = ["sage/libs/homfly.pyx"], libraries = ["homfly", "gc"]), @@ -88,38 +85,75 @@ diff -up src/module_list.py.orig src/module_list.py - package="sirocco", language = 'c++'), - Extension('*', ['sage/libs/linbox/*.pyx']), -@@ -563,10 +560,10 @@ ext_modules = [ +- Extension('*', ['sage/libs/linbox/*.pyx']), ++ Extension('*', ++ sources = ['sage/libs/linbox/*.pyx'], ++ libraries = ["gomp"]), + + Extension('sage.libs.lcalc.lcalc_Lfunction', + sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'], +@@ -563,10 +561,9 @@ ext_modules = [ Extension('sage.libs.lrcalc.lrcalc', sources = ["sage/libs/lrcalc/lrcalc.pyx"]), - OptionalExtension("sage.libs.meataxe", -- sources = ['sage/libs/meataxe.pyx'], ++ Extension("sage.libs.meataxe", + sources = ['sage/libs/meataxe.pyx'], - libraries = ['mtx'], - package = 'meataxe'), -+# OptionalExtension("sage.libs.meataxe", -+# sources = ['sage/libs/meataxe.pyx'], -+# libraries = ['mtx'], -+# package = 'meataxe'), ++ libraries = ['mtx']), Extension('*', ['sage/libs/pari/*.pyx']), -@@ -874,10 +871,10 @@ ext_modules = [ +@@ -812,7 +809,8 @@ ext_modules = [ + include_dirs = cblas_include_dirs), + + Extension('sage.matrix.matrix_integer_sparse', +- sources = ['sage/matrix/matrix_integer_sparse.pyx']), ++ sources = ['sage/matrix/matrix_integer_sparse.pyx'], ++ libraries = ['gomp']), + + Extension('sage.matrix.matrix_mod2_dense', + sources = ['sage/matrix/matrix_mod2_dense.pyx'], +@@ -831,20 +829,21 @@ ext_modules = [ + Extension('sage.matrix.matrix_modn_dense_float', + sources = ['sage/matrix/matrix_modn_dense_float.pyx'], + language="c++", +- libraries = cblas_libs, ++ libraries = cblas_libs + ['gomp'], + library_dirs = cblas_library_dirs, + include_dirs = cblas_include_dirs), + + Extension('sage.matrix.matrix_modn_dense_double', + sources = ['sage/matrix/matrix_modn_dense_double.pyx'], + language="c++", +- libraries = cblas_libs, ++ libraries = cblas_libs + ['gomp'], + library_dirs = cblas_library_dirs, + include_dirs = cblas_include_dirs, + extra_compile_args = ["-D_XPG6"]), + + Extension('sage.matrix.matrix_modn_sparse', +- sources = ['sage/matrix/matrix_modn_sparse.pyx']), ++ sources = ['sage/matrix/matrix_modn_sparse.pyx'], ++ libraries = ['gomp']), + + Extension('sage.matrix.matrix_mpolynomial_dense', + sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']), +@@ -874,10 +873,9 @@ ext_modules = [ Extension('sage.matrix.matrix_window', sources = ['sage/matrix/matrix_window.pyx']), - OptionalExtension("sage.matrix.matrix_gfpn_dense", -- sources = ['sage/matrix/matrix_gfpn_dense.pyx'], ++ Extension("sage.matrix.matrix_gfpn_dense", + sources = ['sage/matrix/matrix_gfpn_dense.pyx'], - libraries = ['mtx'], - package = 'meataxe'), -+# OptionalExtension("sage.matrix.matrix_gfpn_dense", -+# sources = ['sage/matrix/matrix_gfpn_dense.pyx'], -+# libraries = ['mtx'], -+# package = 'meataxe'), ++ libraries = ['mtx']), Extension('sage.matrix.misc', sources = ['sage/matrix/misc.pyx']), -@@ -1053,26 +1050,25 @@ ext_modules = [ +@@ -1053,26 +1051,25 @@ ext_modules = [ Extension("sage.numerical.backends.interactivelp_backend", ["sage/numerical/backends/interactivelp_backend.pyx"]), @@ -128,18 +162,17 @@ diff -up src/module_list.py.orig src/module_list.py - libraries = ["gurobi"], - condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and - os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")), -- -- OptionalExtension("sage.numerical.backends.cplex_backend", -- ["sage/numerical/backends/cplex_backend.pyx"], -- libraries = ["cplex"], -- condition = os.path.isfile(SAGE_INC + "/cplex.h") and -- os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")), +# OptionalExtension("sage.numerical.backends.gurobi_backend", +# ["sage/numerical/backends/gurobi_backend.pyx"], +# libraries = ["gurobi"], +# condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and +# os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")), -+ + +- OptionalExtension("sage.numerical.backends.cplex_backend", +- ["sage/numerical/backends/cplex_backend.pyx"], +- libraries = ["cplex"], +- condition = os.path.isfile(SAGE_INC + "/cplex.h") and +- os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")), +# OptionalExtension("sage.numerical.backends.cplex_backend", +# ["sage/numerical/backends/cplex_backend.pyx"], +# libraries = ["cplex"], diff --git a/sagemath-includes.patch b/sagemath-includes.patch index 5cae945..ae7438e 100644 --- a/sagemath-includes.patch +++ b/sagemath-includes.patch @@ -1,6 +1,5 @@ -diff -up src/module_list.py.orig src/module_list.py ---- src/module_list.py.orig 2019-10-03 16:21:27.371721895 -0300 -+++ src/module_list.py 2019-10-03 16:28:36.076432442 -0300 +--- src/module_list.py.orig 2020-01-06 20:29:14.108070190 -0700 ++++ src/module_list.py 2020-01-06 20:29:39.724010734 -0700 @@ -44,6 +44,9 @@ zlib_libs = zlib_pc['libraries'] zlib_library_dirs = zlib_pc['library_dirs'] zlib_include_dirs = zlib_pc['include_dirs'] @@ -36,7 +35,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('*', sources = ['sage/algebras/finite_dimensional_algebras/*.pyx']), -@@ -558,7 +570,8 @@ ext_modules = [ +@@ -559,7 +571,8 @@ ext_modules = [ [])), Extension('sage.libs.lrcalc.lrcalc', @@ -44,8 +43,8 @@ diff -up src/module_list.py.orig src/module_list.py + sources = ["sage/libs/lrcalc/lrcalc.pyx"], + include_dirs = [os.path.join(SAGE_INC, 'lrcalc')]), - # OptionalExtension("sage.libs.meataxe", - # sources = ['sage/libs/meataxe.pyx'], + Extension("sage.libs.meataxe", + sources = ['sage/libs/meataxe.pyx'], @@ -580,23 +593,28 @@ ext_modules = [ sources = ['sage/libs/readline.pyx'], libraries = ['readline']), @@ -108,15 +107,15 @@ diff -up src/module_list.py.orig src/module_list.py libraries=['ntl']), Extension('sage.matrix.matrix_gap', -@@ -844,6 +865,7 @@ ext_modules = [ - sources = ['sage/matrix/matrix_modn_sparse.pyx']), +@@ -846,6 +867,7 @@ ext_modules = [ + libraries = ['gomp']), Extension('sage.matrix.matrix_mpolynomial_dense', + include_dirs = singular_incs, sources = ['sage/matrix/matrix_mpolynomial_dense.pyx']), Extension('sage.matrix.matrix_polynomial_dense', -@@ -1131,7 +1153,8 @@ ext_modules = [ +@@ -1132,7 +1154,8 @@ ext_modules = [ language = 'c++'), Extension("sage.rings.complex_arb", @@ -126,7 +125,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.rings.complex_double', sources = ['sage/rings/complex_double.pyx'], -@@ -1207,7 +1230,8 @@ ext_modules = [ +@@ -1208,7 +1231,8 @@ ext_modules = [ sources = ['sage/rings/real_interval_absolute.pyx']), Extension("sage.rings.real_arb", @@ -136,7 +135,7 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.rings.real_lazy', sources = ['sage/rings/real_lazy.pyx']), -@@ -1290,6 +1314,7 @@ ext_modules = [ +@@ -1291,6 +1315,7 @@ ext_modules = [ Extension('sage.rings.number_field.number_field_element_quadratic', sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'], @@ -144,7 +143,7 @@ diff -up src/module_list.py.orig src/module_list.py libraries=['ntl'], language = 'c++'), -@@ -1429,12 +1454,15 @@ ext_modules = [ +@@ -1430,12 +1455,15 @@ ext_modules = [ sources = ['sage/rings/polynomial/multi_polynomial.pyx']), Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular', @@ -160,7 +159,7 @@ diff -up src/module_list.py.orig src/module_list.py sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx']), Extension('sage.rings.polynomial.multi_polynomial_ring_base', -@@ -1447,7 +1475,8 @@ ext_modules = [ +@@ -1448,7 +1476,8 @@ ext_modules = [ sources = ['sage/rings/polynomial/polydict.pyx']), Extension('sage.rings.polynomial.polynomial_complex_arb', @@ -170,9 +169,8 @@ diff -up src/module_list.py.orig src/module_list.py Extension('sage.rings.polynomial.polynomial_compiled', sources = ['sage/rings/polynomial/polynomial_compiled.pyx']), -diff -up src/setup.py.orig src/setup.py ---- src/setup.py.orig 2019-10-03 16:28:47.206502813 -0300 -+++ src/setup.py 2019-10-03 16:29:08.059634660 -0300 +--- src/setup.py.orig 2020-01-06 20:29:10.564078418 -0700 ++++ src/setup.py 2020-01-06 20:29:39.725010732 -0700 @@ -85,6 +85,7 @@ keep_going = False # search for dependencies and add to gcc -I diff --git a/sagemath-intersphinx.patch b/sagemath-intersphinx.patch new file mode 100644 index 0000000..534ed24 --- /dev/null +++ b/sagemath-intersphinx.patch @@ -0,0 +1,15 @@ +diff -up src/sage/docs/conf.py.orig src/sage/docs/conf.py +--- src/sage/docs/conf.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/docs/conf.py 2020-01-02 11:19:45.125646695 -0700 +@@ -169,9 +169,8 @@ todo_include_todos = True + python_version = sys.version_info.major + intersphinx_mapping = { + 'python': ('https://docs.python.org/', +- os.path.join(SAGE_DOC_SRC, "common", +- "python{}.inv".format(python_version))), +- 'pplpy': (PPLPY_DOCS, None)} ++ '/usr/share/doc/python3-docs/html/objects.inv'), ++ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')} + + def set_intersphinx_mappings(app): + """ diff --git a/sagemath-python3.patch b/sagemath-python3.patch index 15666b4..b01dda9 100644 --- a/sagemath-python3.patch +++ b/sagemath-python3.patch @@ -1,6 +1,6 @@ diff -up build/pkgs/sagenb/src/sagenb/misc/support.py.orig build/pkgs/sagenb/src/sagenb/misc/support.py ---- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2019-10-09 15:29:08.866640263 -0300 -+++ build/pkgs/sagenb/src/sagenb/misc/support.py 2019-10-09 15:29:13.695667468 -0300 +--- build/pkgs/sagenb/src/sagenb/misc/support.py.orig 2019-02-01 06:34:20.000000000 -0700 ++++ build/pkgs/sagenb/src/sagenb/misc/support.py 2020-01-07 19:57:46.756664911 -0700 @@ -178,7 +178,7 @@ def completions(s, globs, format=False, try: if not '.' in s and not '(' in s: @@ -11,8 +11,8 @@ diff -up build/pkgs/sagenb/src/sagenb/misc/support.py.orig build/pkgs/sagenb/src if not ')' in s: i = s.rfind('.') diff -up build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py ---- build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig 2019-10-09 15:29:08.867640268 -0300 -+++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2019-10-09 15:29:13.696667474 -0300 +--- build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py.orig 2019-02-01 05:37:36.000000000 -0700 ++++ build/pkgs/sagenb/src/sagenb/notebook/docHTMLProcessor.py 2020-01-07 19:57:46.757664910 -0700 @@ -25,7 +25,7 @@ This module contains three classes: .. NOTE:: @@ -32,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 2019-10-09 15:29:08.870640285 -0300 -+++ build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py 2019-10-09 15:29:13.697667479 -0300 +--- build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py.orig 2019-02-01 05:37:36.000000000 -0700 ++++ build/pkgs/sagenb/src/sagenb/notebook/wiki2html.py 2020-01-07 19:57:46.758664910 -0700 @@ -59,7 +59,7 @@ class Parser: 'parent': r'(?:%s)?' % re.escape(PARENT_PREFIX), } @@ -44,8 +44,8 @@ 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 2019-10-09 15:29:08.872640297 -0300 -+++ build/pkgs/sagetex/src/extractsagecode.py 2019-10-09 15:29:13.697667479 -0300 +--- build/pkgs/sagetex/src/extractsagecode.py.orig 2019-06-11 04:58:29.000000000 -0600 ++++ build/pkgs/sagetex/src/extractsagecode.py 2020-01-07 19:57:46.759664909 -0700 @@ -45,7 +45,7 @@ See the SageTeX documentation for more d try: @@ -56,8 +56,8 @@ diff -up build/pkgs/sagetex/src/extractsagecode.py.orig build/pkgs/sagetex/src/e usage() sys.exit(2) diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makestatic.py ---- build/pkgs/sagetex/src/makestatic.py.orig 2019-10-09 15:29:08.874640308 -0300 -+++ build/pkgs/sagetex/src/makestatic.py 2019-10-09 15:29:13.698667485 -0300 +--- build/pkgs/sagetex/src/makestatic.py.orig 2019-06-11 04:58:29.000000000 -0600 ++++ build/pkgs/sagetex/src/makestatic.py 2020-01-07 19:57:46.759664909 -0700 @@ -45,7 +45,7 @@ See the SageTeX documentation for more d try: @@ -68,8 +68,8 @@ diff -up build/pkgs/sagetex/src/makestatic.py.orig build/pkgs/sagetex/src/makest usage() sys.exit(2) diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py ---- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-10-09 15:29:08.876640319 -0300 -+++ build/pkgs/sagetex/src/remote-sagetex.py 2019-10-09 15:29:13.698667485 -0300 +--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2019-06-11 04:58:29.000000000 -0600 ++++ build/pkgs/sagetex/src/remote-sagetex.py 2020-01-07 19:57:46.760664908 -0700 @@ -24,12 +24,11 @@ ## You should have received a copy of the GNU General Public License along ## with this program. If not, see . @@ -133,8 +133,8 @@ diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/re if not password: from getpass import getpass diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py ---- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-10-09 15:29:08.877640325 -0300 -+++ build/pkgs/sagetex/src/sagetexparse.py 2019-10-09 15:29:13.699667491 -0300 +--- build/pkgs/sagetex/src/sagetexparse.py.orig 2019-06-11 04:58:29.000000000 -0600 ++++ build/pkgs/sagetex/src/sagetexparse.py 2020-01-07 19:57:46.760664908 -0700 @@ -132,7 +132,7 @@ class SageCodeExtractor(): def plotout(self, s, l, t): @@ -145,8 +145,8 @@ diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sage self.result += t.code[1:-1] + '\n\n' diff -up src/sage/combinat/finite_state_machine.py.orig src/sage/combinat/finite_state_machine.py ---- src/sage/combinat/finite_state_machine.py.orig 2019-10-09 15:29:08.880640342 -0300 -+++ src/sage/combinat/finite_state_machine.py 2019-10-09 15:29:13.703667513 -0300 +--- src/sage/combinat/finite_state_machine.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/combinat/finite_state_machine.py 2020-01-07 19:57:46.766664904 -0700 @@ -936,7 +936,7 @@ from six.moves import range, zip_longest from six import itervalues @@ -166,8 +166,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/combinat/multiset_partition_into_sets_ordered.py.orig src/sage/combinat/multiset_partition_into_sets_ordered.py ---- src/sage/combinat/multiset_partition_into_sets_ordered.py.orig 2019-10-09 15:29:08.882640353 -0300 -+++ src/sage/combinat/multiset_partition_into_sets_ordered.py 2019-10-09 15:29:13.704667519 -0300 +--- src/sage/combinat/multiset_partition_into_sets_ordered.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/combinat/multiset_partition_into_sets_ordered.py 2020-01-07 19:57:46.768664902 -0700 @@ -1952,7 +1952,7 @@ class OrderedMultisetPartitionsIntoSets( # slice by 'order' @@ -178,8 +178,8 @@ diff -up src/sage/combinat/multiset_partition_into_sets_ordered.py.orig src/sage # slice by 'size' diff -up src/sage/combinat/root_system/branching_rules.py.orig src/sage/combinat/root_system/branching_rules.py ---- src/sage/combinat/root_system/branching_rules.py.orig 2019-10-09 15:29:08.884640364 -0300 -+++ src/sage/combinat/root_system/branching_rules.py 2019-10-09 15:29:13.707667536 -0300 +--- src/sage/combinat/root_system/branching_rules.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/combinat/root_system/branching_rules.py 2020-01-07 19:57:46.769664902 -0700 @@ -1750,7 +1750,7 @@ def branching_rule(Rtype, Stype, rule="d elif rule == "tensor" or rule == "tensor-debug": if not Stype.is_compound(): @@ -190,8 +190,8 @@ diff -up src/sage/combinat/root_system/branching_rules.py.orig src/sage/combinat if Rtype[0] == 'A': nr = Rtype[1]+1 diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py ---- src/sage/geometry/triangulation/point_configuration.py.orig 2019-10-09 15:29:08.886640376 -0300 -+++ src/sage/geometry/triangulation/point_configuration.py 2019-10-09 15:29:13.707667536 -0300 +--- src/sage/geometry/triangulation/point_configuration.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/geometry/triangulation/point_configuration.py 2020-01-07 19:57:46.770664901 -0700 @@ -619,7 +619,7 @@ class PointConfiguration(UniqueRepresent ['{{0,1,2,4},{1,2,3,4}}'] """ @@ -201,9 +201,70 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge proc.expect(r'Evaluating Commandline Options \.\.\.') proc.expect(r'\.\.\. done\.') proc.setecho(0) +diff -up src/sage/graphs/graph_latex.py.orig src/sage/graphs/graph_latex.py +--- src/sage/graphs/graph_latex.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/graphs/graph_latex.py 2020-01-07 19:59:40.240580166 -0700 +@@ -1156,7 +1156,7 @@ class GraphLatex(SageObject): + # + elif name in color_dicts: + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, c in value.items(): + try: +@@ -1165,42 +1165,42 @@ class GraphLatex(SageObject): + raise ValueError('%s option for %s needs to be a matplotlib color (always as a string), not %s' % (name, key, c)) + elif name in positive_scalar_dicts: + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, x in value.items(): + if not type(x) in [int, Integer, float, RealLiteral] or not x >= 0.0: + raise ValueError('%s option for %s needs to be a positive number, not %s' % (name, key, x)) + elif name in boolean_dicts: + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, b in value.items(): + if not isinstance(b, bool): + raise ValueError('%s option for %s needs to be True or False, not %s' % (name, key, b)) + elif name == 'vertex_shapes': + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, s in value.items(): + if s not in shape_names: + raise ValueError('%s option for %s needs to be a vertex shape, not %s' % (name, key, s)) + elif name == 'vertex_label_placements': + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, p in value.items(): + if not(p == 'center') and not(isinstance(p, tuple) and len(p) == 2 and type(p[0]) in number_types and p[0] >= 0 and type(p[1]) in number_types and p[1] >= 0): + raise ValueError('%s option for %s needs to be None or a pair of positive numbers, not %s' % (name, key, p)) + elif name == 'edge_label_placements': + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, p in value.items(): + if not(type(p) in [float, RealLiteral] and (0 <= p) and (p <= 1)) and not(p in label_places): + raise ValueError('%s option for %s needs to be a number between 0.0 and 1.0 or a place (like "above"), not %s' % (name, key, p)) + elif name == 'loop_placements': + if not isinstance(value, dict): +- raise TypeError('%s option must be a dictionary, not %s' (name, value)) ++ raise TypeError('%s option must be a dictionary, not %s' % (name, value)) + else: + for key, p in value.items(): + if not((isinstance(p, tuple)) and (len(p) == 2) and (p[0] >= 0) and (p[1] in compass_points)): diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py ---- src/sage/interfaces/frobby.py.orig 2019-10-09 15:29:08.888640387 -0300 -+++ src/sage/interfaces/frobby.py 2019-10-09 15:29:13.707667536 -0300 +--- src/sage/interfaces/frobby.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/interfaces/frobby.py 2020-01-07 19:57:46.771664900 -0700 @@ -77,7 +77,7 @@ class Frobby: print("Frobby command: ", repr(command)) print("Frobby input:\n", input) @@ -214,8 +275,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 2019-10-09 15:29:08.889640393 -0300 -+++ src/sage/interfaces/gfan.py 2019-10-09 15:29:13.708667541 -0300 +--- src/sage/interfaces/gfan.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/interfaces/gfan.py 2020-01-07 19:57:46.772664899 -0700 @@ -66,7 +66,7 @@ class Gfan(object): if six.PY2: enc_kwargs = {} @@ -226,8 +287,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, **enc_kwargs) diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py ---- src/sage/interfaces/gp.py.orig 2019-10-09 15:29:08.891640404 -0300 -+++ src/sage/interfaces/gp.py 2019-10-09 15:29:13.709667547 -0300 +--- src/sage/interfaces/gp.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/interfaces/gp.py 2020-01-07 19:57:46.773664899 -0700 @@ -934,17 +934,6 @@ class GpElement(ExpectElement): """ return repr(self.type()) == 't_STR' @@ -247,8 +308,8 @@ diff -up src/sage/interfaces/gp.py.orig src/sage/interfaces/gp.py """ Return Python float. diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ---- src/sage/interfaces/latte.py.orig 2019-10-09 15:29:08.893640415 -0300 -+++ src/sage/interfaces/latte.py 2019-10-09 15:29:13.709667547 -0300 +--- src/sage/interfaces/latte.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/interfaces/latte.py 2020-01-07 19:57:46.773664899 -0700 @@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False, latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, @@ -266,8 +327,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py ans, err = latte_proc.communicate(arg) diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx ---- src/sage/interfaces/sagespawn.pyx.orig 2019-10-09 15:29:08.894640421 -0300 -+++ src/sage/interfaces/sagespawn.pyx 2019-10-09 15:29:13.709667547 -0300 +--- src/sage/interfaces/sagespawn.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/interfaces/sagespawn.pyx 2020-01-07 19:57:46.774664898 -0700 @@ -1,6 +1,6 @@ """ Sage wrapper around pexpect's ``spawn`` class and @@ -316,8 +377,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py pass self.fileobj.close() diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx ---- src/sage/libs/coxeter3/coxeter.pyx.orig 2019-10-09 15:29:08.896640432 -0300 -+++ src/sage/libs/coxeter3/coxeter.pyx 2019-10-09 15:29:13.709667547 -0300 +--- src/sage/libs/coxeter3/coxeter.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/libs/coxeter3/coxeter.pyx 2020-01-07 19:57:46.776664896 -0700 @@ -33,7 +33,7 @@ cdef class String: EXAMPLES:: @@ -451,8 +512,8 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter. if rank == 0: raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented") diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx ---- src/sage/misc/parser.pyx.orig 2019-10-09 15:29:08.898640443 -0300 -+++ src/sage/misc/parser.pyx 2019-10-09 15:30:11.051990579 -0300 +--- src/sage/misc/parser.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/misc/parser.pyx 2020-01-07 19:57:46.777664896 -0700 @@ -96,7 +96,7 @@ def token_to_str(int token): @@ -752,8 +813,8 @@ diff -up src/sage/misc/parser.pyx.orig src/sage/misc/parser.pyx return self.p_list(tokens) else: diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py ---- src/sage/plot/plot3d/plot3d.py.orig 2019-10-09 15:29:08.899640449 -0300 -+++ src/sage/plot/plot3d/plot3d.py 2019-10-09 15:29:13.710667553 -0300 +--- src/sage/plot/plot3d/plot3d.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/plot/plot3d/plot3d.py 2020-01-07 19:57:46.778664895 -0700 @@ -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) @@ -765,8 +826,8 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) self.dep_var = dep_var diff -up src/sage/plot/point.py.orig src/sage/plot/point.py ---- src/sage/plot/point.py.orig 2019-10-09 15:29:08.901640460 -0300 -+++ src/sage/plot/point.py 2019-10-09 15:29:13.711667558 -0300 +--- src/sage/plot/point.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/plot/point.py 2020-01-07 19:57:46.779664894 -0700 @@ -29,7 +29,7 @@ TESTS:: from sage.misc.decorators import options, rename_keyword from sage.plot.colors import to_mpl_color @@ -786,8 +847,8 @@ diff -up src/sage/plot/point.py.orig src/sage/plot/point.py try: diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_repr.py ---- src/sage/repl/display/fancy_repr.py.orig 2019-10-09 15:29:08.903640471 -0300 -+++ src/sage/repl/display/fancy_repr.py 2019-10-09 15:29:13.711667558 -0300 +--- src/sage/repl/display/fancy_repr.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/repl/display/fancy_repr.py 2020-01-07 19:57:46.780664894 -0700 @@ -15,7 +15,7 @@ Representations of objects. import types @@ -807,8 +868,8 @@ diff -up src/sage/repl/display/fancy_repr.py.orig src/sage/repl/display/fancy_re else: # A user-provided repr. Find newlines and replace them with p.break_() diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_kernel/interact.py ---- src/sage/repl/ipython_kernel/interact.py.orig 2019-10-09 15:29:08.904640477 -0300 -+++ src/sage/repl/ipython_kernel/interact.py 2019-10-09 15:29:13.711667558 -0300 +--- src/sage/repl/ipython_kernel/interact.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/repl/ipython_kernel/interact.py 2020-01-07 19:57:46.781664893 -0700 @@ -35,7 +35,8 @@ EXAMPLES:: from ipywidgets.widgets import SelectionSlider, ValueWidget, ToggleButtons @@ -820,8 +881,8 @@ diff -up src/sage/repl/ipython_kernel/interact.py.orig src/sage/repl/ipython_ker from .widgets_sagenb import input_grid from sage.structure.element import parent diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx ---- src/sage/rings/integer.pyx.orig 2019-10-09 15:29:08.906640488 -0300 -+++ src/sage/rings/integer.pyx 2019-10-09 15:29:13.712667564 -0300 +--- src/sage/rings/integer.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/rings/integer.pyx 2020-01-07 19:57:46.785664890 -0700 @@ -7124,7 +7124,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c while x[0] == c' ': x += 1 # Strip spaces @@ -832,8 +893,8 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx assert base >= 2 diff -up src/sage/rings/multi_power_series_ring_element.py.orig src/sage/rings/multi_power_series_ring_element.py ---- src/sage/rings/multi_power_series_ring_element.py.orig 2019-10-09 15:29:08.908640499 -0300 -+++ src/sage/rings/multi_power_series_ring_element.py 2019-10-09 15:29:13.712667564 -0300 +--- src/sage/rings/multi_power_series_ring_element.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/rings/multi_power_series_ring_element.py 2020-01-07 19:57:46.786664889 -0700 @@ -1396,7 +1396,7 @@ class MPowerSeries(PowerSeries): # at this stage, self is probably a non-zero # element of the base ring @@ -844,8 +905,8 @@ diff -up src/sage/rings/multi_power_series_ring_element.py.orig src/sage/rings/m def is_nilpotent(self): diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbori.pyx ---- src/sage/rings/polynomial/pbori.pyx.orig 2019-10-09 15:29:08.910640511 -0300 -+++ src/sage/rings/polynomial/pbori.pyx 2019-10-09 15:29:13.713667570 -0300 +--- src/sage/rings/polynomial/pbori.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/rings/polynomial/pbori.pyx 2020-01-07 19:57:46.788664888 -0700 @@ -4765,8 +4765,7 @@ cdef class PolynomialConstruct: # So, it is just a conversion. [Simon King] return (ring)._element_constructor_(x) @@ -857,8 +918,8 @@ diff -up src/sage/rings/polynomial/pbori.pyx.orig src/sage/rings/polynomial/pbor cdef class MonomialConstruct: diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx ---- src/sage/rings/real_mpfi.pyx.orig 2019-10-09 15:29:08.911640516 -0300 -+++ src/sage/rings/real_mpfi.pyx 2019-10-09 15:29:13.715667581 -0300 +--- src/sage/rings/real_mpfi.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/rings/real_mpfi.pyx 2020-01-07 19:57:46.790664886 -0700 @@ -1943,12 +1943,12 @@ cdef class RealIntervalFieldElement(Ring cdef long digits @@ -884,8 +945,8 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx mant_string = bytes_to_str(tmp_cstr+1) sign_string = bytes_to_str(b'-') diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx ---- src/sage/rings/real_mpfr.pyx.orig 2019-10-09 15:29:08.913640528 -0300 -+++ src/sage/rings/real_mpfr.pyx 2019-10-09 15:29:13.715667581 -0300 +--- src/sage/rings/real_mpfr.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/rings/real_mpfr.pyx 2020-01-07 19:57:46.791664885 -0700 @@ -2039,7 +2039,7 @@ cdef class RealNumber(sage.structure.ele if s is NULL: raise RuntimeError("unable to convert an mpfr number to a string") @@ -896,8 +957,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 2019-10-09 15:29:08.915640539 -0300 -+++ src/sage/structure/sage_object.pyx 2019-10-09 15:29:13.715667581 -0300 +--- src/sage/structure/sage_object.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/structure/sage_object.pyx 2020-01-07 19:57:46.791664885 -0700 @@ -665,7 +665,7 @@ cdef class SageObject: try: s = self._interface_init_(I) @@ -908,8 +969,8 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object. if c: try: diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx ---- src/sage/symbolic/expression.pyx.orig 2019-10-09 15:29:08.917640550 -0300 -+++ src/sage/symbolic/expression.pyx 2019-10-09 15:29:13.719667603 -0300 +--- src/sage/symbolic/expression.pyx.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/symbolic/expression.pyx 2020-01-07 19:57:46.794664883 -0700 @@ -12916,7 +12916,7 @@ cdef class hold_class: sage: SR(2)^5 32 @@ -929,9 +990,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-10-09 15:28:16.478345141 -0300 -+++ src/setup.py 2019-10-09 15:29:13.720667609 -0300 -@@ -233,7 +233,7 @@ class sage_build_cython(Command): +--- src/setup.py.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/setup.py 2020-01-07 19:57:46.794664883 -0700 +@@ -232,7 +232,7 @@ class sage_build_cython(Command): cdivision=True, embedsignature=True, fast_getattr=True, diff --git a/sagemath-tdlib.patch b/sagemath-tdlib.patch new file mode 100644 index 0000000..aafe061 --- /dev/null +++ b/sagemath-tdlib.patch @@ -0,0 +1,27 @@ +--- src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp.orig 2019-09-29 17:03:11.000000000 -0600 ++++ src/sage/graphs/graph_decompositions/tdlib/sage_tdlib.cpp 2020-01-06 10:58:12.087355771 -0700 +@@ -2,8 +2,8 @@ + #include + + #include +-#include "tdlib/TD_combinations.hpp" +-#include "tdlib/TD_misc.hpp" ++#include ++#include + + #ifndef TD_STRUCT_VERTEX + #define TD_STRUCT_VERTEX +@@ -16,13 +16,6 @@ struct Vertex{ + + typedef boost::adjacency_list TD_graph_t; + +-struct bag{ +- std::set bag; +-}; +- +-typedef boost::adjacency_list TD_tree_dec_t; +- +- + void make_tdlib_graph(TD_graph_t &G, std::vector &V, std::vector &E){ + unsigned int max = 0; + for(unsigned int i = 0; i < V.size(); i++) diff --git a/sagemath.rpmlintrc b/sagemath.rpmlintrc new file mode 100644 index 0000000..5eea409 --- /dev/null +++ b/sagemath.rpmlintrc @@ -0,0 +1,21 @@ +# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON +# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors + +# The dictionary is missing some technical terms +addFilter(r'W: spelling-error .* (Extcode|iteratively|polytopes?|pre)') + +# The Requires ensure the symlinks will not dangle +addFilter(r'W: dangling-symlink') + +# This file is incorrectly detected as a devel file +addFilter(r'W: devel-file-in-non-devel-package .*sage-env-config') + +# objects.inv files are not text +addFilter(r'W: file-not-utf8 .*objects\.inv') +addFilter(r'W: wrong-file-end-of-line-encoding .*objects\.inv') + +# This file uses no symbols from glibc +addFilter(r'E: library-not-linked-against-libc .*/bit_vector_operations/cc\.cpython-38-x86_64-linux-gnu\.so') + +# Documentation is in the -doc subpackages +addFilter(r'W: no-documentation') diff --git a/sagemath.spec b/sagemath.spec index f801fa3..7146287 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -77,7 +77,7 @@ %endif # Spkg equivalents of required rpms; we pretend they are installed as spkgs. -%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 cbc-2.10.3 CoCoALib-0.99601 coxeter3-1.1 cryptominisat-5.6.8 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.10.2 gmp-6.1.2 libsirocco-2.0 lrslib-070 mcqd-1.0 primecount-5.1 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 +%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.73 cbc-2.10.3 CoCoALib-0.99601 coxeter3-1.1 cryptominisat-5.6.8 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.10.2 gmp-6.1.2 libsirocco-2.0 lrslib-070 mcqd-1.0 meataxe-1.0 primecount-5.1 qepcad-B.1.72 saclib-2.2.7 surf-1.0.6-gcc6 tdlib-0.9.0 %ifarch %{ix86} x86_64 %global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2 @@ -95,7 +95,7 @@ Name: sagemath Summary: A free open-source mathematics software system Version: 8.9 -Release: 1%{?dist} +Release: 2%{?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 @@ -212,6 +212,12 @@ Patch30: %{name}-sagenb-python3.patch # Adapt to primecount 5.x Patch31: %{name}-primecount.patch +# Adapt to recent tdlib 0.9 +Patch32: %{name}-tdlib.patch + +# Use local objects.inv for intersphinx since no network on koji builders +Patch33: %{name}-intersphinx.patch + BuildRequires: 4ti2 BuildRequires: arb-devel BuildRequires: bliss-devel @@ -303,10 +309,12 @@ BuildRequires: ppl-devel BuildRequires: primecount-devel BuildRequires: pynac-devel BuildRequires: python3-devel +BuildRequires: python3-docs BuildRequires: python3-cypari2-devel BuildRequires: python3-cysignals-devel BuildRequires: python3-pillow-devel BuildRequires: python3-pplpy-devel +BuildRequires: python3-tdlib-devel BuildRequires: python3dist(brial) BuildRequires: python3dist(cvxopt) BuildRequires: python3dist(cython) @@ -367,6 +375,7 @@ BuildRequires: R BuildRequires: ratpoints-devel BuildRequires: readline-devel BuildRequires: rw-devel +BuildRequires: sharedmeataxe-devel BuildRequires: Singular-devel BuildRequires: sirocco-devel BuildRequires: stix-math-fonts @@ -448,6 +457,7 @@ Requires: palp Requires: pari-galdata Requires: pari-gp Requires: pari-seadata +Requires: python3-tdlib Requires: python3dist(brial) Requires: python3dist(cypari2) Requires: python3dist(cysignals) @@ -911,6 +921,8 @@ popd %patch29 %patch30 %patch31 +%patch32 +%patch33 sed -e 's|@@SAGE_ROOT@@|%{SAGE_ROOT}|' \ -e 's|@@SAGE_DOC@@|%{SAGE_DOC}|' \ @@ -1927,6 +1939,10 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ ######################################################################## %changelog +* Thu Jan 9 2020 Jerry James - 8.9-2 +- Build with sharedmeataxe and tdlib support +- Use local objects.inv when building documentation + * Thu Nov 7 2019 pcpa - 8.9-1 - Update to latest upstream release - Drop no longer need patches and rediff current ones