diff --git a/sagemath-env.patch b/sagemath-env.patch index 035b659..1c8e800 100644 --- a/sagemath-env.patch +++ b/sagemath-env.patch @@ -1,6 +1,5 @@ -diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2020-02-27 16:09:10.913012356 -0700 -+++ src/sage/env.py 2020-02-27 16:16:34.080052271 -0700 +--- src/sage/env.py.orig 2020-03-13 09:03:58.705213254 -0600 ++++ src/sage/env.py 2020-03-13 09:06:42.148502755 -0600 @@ -151,11 +151,11 @@ var('SAGE_DATE', version.date) var('SAGE_VERSION_BANNER', version.banner) @@ -34,10 +33,11 @@ diff -up src/sage/env.py.orig src/sage/env.py -var('JMOL_DIR', join(SAGE_SHARE, 'jmol')) -var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol')) -var('MATHJAX_DIR', join(SAGE_SHARE, 'mathjax')) +-var('MTXLIB', join(SAGE_SHARE, 'meataxe')) +var('JMOL_DIR', join('/usr', 'share', 'java', 'jmol')) +var('JSMOL_DIR', join('/usr', 'share', 'javascript', 'jsmol')) +var('MATHJAX_DIR', join('/usr', 'share', 'javascript', 'mathjax')) - var('MTXLIB', join(SAGE_SHARE, 'meataxe')) ++var('MTXLIB', join(DOT_SAGE, 'meataxe')) var('THREEJS_DIR', join(SAGE_SHARE, 'threejs')) var('SINGULARPATH', join(SAGE_SHARE, 'singular')) -var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy')) diff --git a/sagemath-libgap.patch b/sagemath-libgap.patch index ff9976c..b21ae5e 100644 --- a/sagemath-libgap.patch +++ b/sagemath-libgap.patch @@ -1,6 +1,5 @@ -diff -up src/sage/env.py.orig src/sage/env.py ---- src/sage/env.py.orig 2019-06-26 14:41:04.000000000 -0600 -+++ src/sage/env.py 2019-06-27 11:39:02.780593101 -0600 +--- src/sage/env.py.orig 2020-01-01 04:03:10.000000000 -0700 ++++ src/sage/env.py 2020-03-13 09:51:49.255840082 -0600 @@ -174,7 +174,7 @@ var('CONWAY_POLYNOMIALS_DATA_DIR', joi var('GRAPHS_DATA_DIR', join(SAGE_SHARE, 'graphs')) var('ELLCURVE_DATA_DIR', join(SAGE_SHARE, 'ellcurves')) @@ -10,3 +9,226 @@ diff -up src/sage/env.py.orig src/sage/env.py var('THEBE_DIR', join(SAGE_SHARE, 'thebe')) var('COMBINATORIAL_DESIGN_DATA_DIR', join(SAGE_SHARE, 'combinatorial_designs')) var('CREMONA_MINI_DATA_DIR', join(SAGE_SHARE, 'cremona')) +--- src/sage/libs/gap/element.pyx.orig 2020-01-01 04:03:10.000000000 -0700 ++++ src/sage/libs/gap/element.pyx 2020-03-13 10:38:15.632637753 -0600 +@@ -264,7 +264,7 @@ cdef Obj make_gap_string(sage_string) ex + try: + GAP_Enter() + b = str_to_bytes(sage_string) +- C_NEW_STRING(result, len(b), b) ++ result = MakeStringWithLen(b, len(b)) + return result + finally: + GAP_Leave() +@@ -955,7 +955,7 @@ cdef class GapElement(RingElement): + sig_on() + try: + GAP_Enter() +- return EQ(self.value, c_other.value) ++ return EQ(self.value, c_other.value) + finally: + GAP_Leave() + sig_off() +@@ -977,7 +977,7 @@ cdef class GapElement(RingElement): + sig_on() + try: + GAP_Enter() +- return LT(self.value, c_other.value) ++ return LT(self.value, c_other.value) + finally: + GAP_Leave() + sig_off() +@@ -1205,7 +1205,7 @@ cdef class GapElement(RingElement): + sage: a.is_function() + False + """ +- return IS_FUNC(self.value) ++ return IS_FUNC(self.value) + + def is_list(self): + r""" +@@ -1222,7 +1222,7 @@ cdef class GapElement(RingElement): + sage: libgap.eval('3/2').is_list() + False + """ +- return IS_LIST(self.value) ++ return IS_LIST(self.value) + + def is_record(self): + r""" +@@ -1239,7 +1239,7 @@ cdef class GapElement(RingElement): + sage: libgap.eval('rec(a:=1, b:=3)').is_record() + True + """ +- return IS_REC(self.value) ++ return IS_REC(self.value) + + cpdef is_bool(self): + r""" +@@ -1272,7 +1272,7 @@ cdef class GapElement(RingElement): + sage: libgap('this is a string').is_string() + True + """ +- return IS_STRING(self.value) ++ return IS_STRING(self.value) + + def is_permutation(self): + r""" +@@ -1458,7 +1458,7 @@ cdef class GapElement_Integer(GapElement + sage: N.IsInt() + true + """ +- return IS_INTOBJ(self.value) ++ return IS_INTOBJ(self.value) + + def _rational_(self): + r""" +@@ -2797,7 +2797,7 @@ cdef class GapElement_List(GapElement): + ... + ValueError: too many indices + """ +- cdef int j ++ cdef Int j + cdef Obj obj = self.value + + if isinstance(i, tuple): +@@ -2868,7 +2868,7 @@ cdef class GapElement_List(GapElement): + if not IS_MUTABLE_OBJ(self.value): + raise TypeError('immutable Gap object does not support item assignment') + +- cdef int j ++ cdef Int j + cdef Obj obj = self.value + + if isinstance(i, tuple): +--- src/sage/libs/gap/gap_includes.pxd.orig 2020-01-01 04:03:10.000000000 -0700 ++++ src/sage/libs/gap/gap_includes.pxd 2020-03-13 10:32:21.845358454 -0600 +@@ -12,8 +12,8 @@ + + cdef extern from "gap/system.h" nogil: + ctypedef char Char +- ctypedef int Int +- ctypedef unsigned int UInt ++ ctypedef long Int ++ ctypedef unsigned long UInt + ctypedef void* Obj + + +@@ -24,8 +24,8 @@ cdef extern from "gap/ariths.h" nogil: + Obj QUO(Obj, Obj) + Obj POW(Obj, Obj) + Obj MOD(Obj, Obj) +- bint EQ(Obj opL, Obj opR) +- bint LT(Obj opL, Obj opR) ++ Int EQ(Obj opL, Obj opR) ++ Int LT(Obj opL, Obj opR) + + + cdef extern from "gap/bool.h" nogil: +@@ -34,7 +34,7 @@ cdef extern from "gap/bool.h" nogil: + + + cdef extern from "gap/calls.h" nogil: +- bint IS_FUNC(Obj) ++ Int IS_FUNC(Obj) + Obj CALL_0ARGS(Obj f) # 0 arguments + Obj CALL_1ARGS(Obj f, Obj a1) # 1 argument + Obj CALL_2ARGS(Obj f, Obj a1, Obj a2) +@@ -56,7 +56,7 @@ cdef extern from "gap/gasman_intern.h" n + + + cdef extern from "gap/gvars.h" nogil: +- UInt GVarName "GVarName"(char* name) ++ UInt GVarName "GVarName"(const char* name) + void AssGVar "AssGVar"(UInt gvar, Obj val) + + +@@ -65,7 +65,7 @@ cdef extern from "gap/integer.h" nogil: + + + cdef extern from "gap/intobj.h" nogil: +- bint IS_INTOBJ(Obj obj) ++ Int IS_INTOBJ(Obj obj) + Obj INTOBJ_INT(Int) + Int INT_INTOBJ(Obj) + +@@ -95,11 +95,11 @@ cdef extern from "gap/libgap-api.h" nogi + + + cdef extern from "gap/lists.h" nogil: +- bint IS_LIST(Obj lst) +- int LEN_LIST(Obj lst) +- Obj ELM_LIST(Obj lst, int pos) +- Obj ELM0_LIST(Obj lst, int pos) +- void ASS_LIST(Obj lst, int pos, Obj elt) ++ Int IS_LIST(Obj lst) ++ Int LEN_LIST(Obj lst) ++ Obj ELM_LIST(Obj lst, Int pos) ++ Obj ELM0_LIST(Obj lst, Int pos) ++ void ASS_LIST(Obj lst, Int pos, Obj elt) + + + cdef extern from "gap/listfunc.h" nogil: +@@ -111,13 +111,13 @@ cdef extern from "gap/macfloat.h" nogil: + + + cdef extern from "gap/objects.h" nogil: +- bint IS_MUTABLE_OBJ(Obj obj) ++ Int IS_MUTABLE_OBJ(Obj obj) + Obj SHALLOW_COPY_OBJ(Obj obj) +- Obj CopyObj(Obj obj, int mut) ++ Obj CopyObj(Obj obj, Int mut) + + UInt SIZE_OBJ(Obj obj) + UInt TNUM_OBJ(Obj obj) +- char* TNAM_OBJ(Obj obj) ++ const char* TNAM_OBJ(Obj obj) + + cdef enum TNUM: + T_INT +@@ -147,23 +147,23 @@ cdef extern from "gap/objects.h" nogil: + + + cdef extern from "gap/precord.h" nogil: +- Obj NEW_PREC(int len) +- int LEN_PREC(Obj rec) +- int GET_RNAM_PREC(Obj rec, int i) +- Obj GET_ELM_PREC(Obj rec, int i) ++ Obj NEW_PREC(UInt len) ++ UInt LEN_PREC(Obj rec) ++ Int GET_RNAM_PREC(Obj rec, UInt i) ++ Obj GET_ELM_PREC(Obj rec, UInt i) + void AssPRec(Obj rec, UInt rnam, Obj val) + + + cdef extern from "gap/records.h" nogil: +- char* NAME_RNAM(UInt rnam) +- bint IS_REC(Obj obj) ++ Obj NAME_RNAM(UInt rnam) ++ Int IS_REC(Obj obj) + Obj ELM_REC(Obj rec, UInt rnam) +- UInt RNamName(Char* name) ++ UInt RNamName(const Char* name) + + + cdef extern from "gap/stringobj.h" nogil: + char* CSTR_STRING(Obj list) +- bint IS_STRING(Obj obj) +- bint IsStringConv(Obj obj) +- Obj NEW_STRING(Int) +- void C_NEW_STRING(Obj new_gap_string, int length, char* c_string) ++ Int IS_STRING(Obj obj) ++ Int IsStringConv(Obj obj) ++ Obj NEW_STRING(Int len) ++ Obj MakeStringWithLen(const char *buf, size_t len) +--- src/sage/libs/gap/util.pyx.orig 2020-01-01 04:03:10.000000000 -0700 ++++ src/sage/libs/gap/util.pyx 2020-03-13 10:23:13.675207968 -0600 +@@ -386,7 +386,7 @@ cdef Obj gap_eval(str gap_string) except + """ + initialize() + cdef Obj result +- cdef int i, j, nresults ++ cdef Int nresults + + # Careful: We need to keep a reference to the bytes object here + # so that Cython doesn't deallocate it before GAP is done with diff --git a/sagemath.spec b/sagemath.spec index 236cea4..52340ef 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -91,7 +91,7 @@ Name: sagemath Summary: A free open-source mathematics software system Version: 9.0 -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 @@ -161,7 +161,7 @@ Patch14: %{name}-lcalc.patch # avoid assertion in coin backend Patch15: %{name}-cbc.patch -# Use system gap directories +# Use system gap directories and modernize libgap interface Patch16: %{name}-libgap.patch # Build fes @@ -226,26 +226,29 @@ BuildRequires: fes-devel %endif BuildRequires: flint-devel BuildRequires: gap -BuildRequires: GAPDoc -BuildRequires: gap-libs -BuildRequires: gap-pkg-atlasrep +BuildRequires: gap-pkg-cohomolo BuildRequires: gap-pkg-corelg BuildRequires: gap-pkg-crime BuildRequires: gap-pkg-design +BuildRequires: gap-pkg-edim BuildRequires: gap-pkg-forms -BuildRequires: gap-pkg-francy BuildRequires: gap-pkg-guava BuildRequires: gap-pkg-hapcryst BuildRequires: gap-pkg-hecke -BuildRequires: gap-pkg-jupyterviz +BuildRequires: gap-pkg-jupyterkernel BuildRequires: gap-pkg-liealgdb BuildRequires: gap-pkg-liepring BuildRequires: gap-pkg-loops +BuildRequires: gap-pkg-lpres BuildRequires: gap-pkg-mapclass +BuildRequires: gap-pkg-nautytracesinterface +BuildRequires: gap-pkg-qpa +BuildRequires: gap-pkg-radiroot BuildRequires: gap-pkg-repsn +BuildRequires: gap-pkg-semigroups BuildRequires: gap-pkg-singular -BuildRequires: gap-pkg-sonata BuildRequires: gap-pkg-toric +BuildRequires: gap-pkg-utils BuildRequires: gc-devel BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -408,23 +411,29 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Requires: 4ti2 Requires: cddlib-tools Requires: gap -Requires: gap-pkg-atlasrep +Requires: gap-pkg-cohomolo Requires: gap-pkg-corelg Requires: gap-pkg-crime Requires: gap-pkg-design +Requires: gap-pkg-edim Requires: gap-pkg-forms -Requires: gap-pkg-francy Requires: gap-pkg-guava Requires: gap-pkg-hapcryst Requires: gap-pkg-hecke -Requires: gap-pkg-jupyterviz +Requires: gap-pkg-jupyterkernel Requires: gap-pkg-liealgdb Requires: gap-pkg-liepring Requires: gap-pkg-loops +Requires: gap-pkg-lpres Requires: gap-pkg-mapclass +Requires: gap-pkg-nautytracesinterface +Requires: gap-pkg-qpa +Requires: gap-pkg-radiroot Requires: gap-pkg-repsn -Requires: gap-pkg-sonata +Requires: gap-pkg-semigroups +Requires: gap-pkg-singular Requires: gap-pkg-toric +Requires: gap-pkg-utils Requires: gfan Requires: gmp-ecm Requires: jmol @@ -947,7 +956,7 @@ sed -e "s|'%{_bindir}/env', 'which'|'%{_bindir}/which'|" \ %endif # GAP does not have enough memory to load the entire workspace -sed -i 's/64m/128m/' src/sage/interfaces/gap.py +sed -i 's/64m/256m/' src/sage/interfaces/gap.py ######################################################################## @@ -1801,6 +1810,12 @@ rm -fr %{SAGE_LOCAL}/var/lib/sage/installed/database_cremona_ellcurve-%{cremona_ ######################################################################## %changelog +* Fri Mar 13 2020 Jerry James - 9.0-2 +- Rebuild for gap 4.11.0 +- Update libgap interface for gap 4.11.0 +- Adjust list of gap packages to match build/pkgs/gap_packages +- Point sharedmeataxe to a writable directory for its multiplication tables + * Fri Feb 28 2020 Jerry James - 9.0-1 - Version 9.0 (bz 1756780, 1770880) - Drop upstreamed -ecm and -primecount patches