Date: Wednesday, May 15, 2019 @ 21:29:51 Author: arojas Revision: 467482
linbox 1.6 rebuild Added: sagemath/trunk/sagemath-linbox-1.6.patch Modified: sagemath/trunk/PKGBUILD ---------------------------+ PKGBUILD | 12 +- sagemath-linbox-1.6.patch | 191 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+), 4 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2019-05-15 20:22:59 UTC (rev 467481) +++ PKGBUILD 2019-05-15 21:29:51 UTC (rev 467482) @@ -8,7 +8,7 @@ pkgbase=sagemath pkgname=(sagemath sagemath-jupyter) pkgver=8.7 -pkgrel=2 +pkgrel=3 pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab" arch=(x86_64) url="http://www.sagemath.org" @@ -17,7 +17,7 @@ python2-matplotlib python2-scipy python2-sympy python2-networkx python2-pillow python2-pplpy python2-future gap flintqs lcalc lrcalc arb eclib zn_poly gd python2-cvxopt pynac linbox m4rie rubiks pari-galdata pari-seadata-small planarity rankwidth tachyon sage-data-combinatorial_designs sage-data-elliptic_curves sage-data-graphs sage-data-polytopes_db sage-data-conway_polynomials - libgiac libhomfly libbraiding three.js) + iml libgiac libhomfly libbraiding three.js) optdepends=('cython2: to compile cython code' 'python2-pkgconfig: to compile cython code' 'jmol: 3D plots' 'sage-notebook: Flask notebook interface (deprecated)' 'sagemath-doc: Documentation and inline help' 'python2-igraph: igraph backend for graph theory' @@ -47,7 +47,8 @@ sagemath-singular-4.1.2.patch sagemath-ecl-sigfpe.patch sagemath-gap-4.10.1.patch - sagemath-threejs-100.patch) + sagemath-threejs-100.patch + sagemath-linbox-1.6.patch) sha256sums=('263c3b3fc956b8bebc532f3b51e68c1b0d559d3b7e7c9fadffdfc0f4dbae18ab' 'e0e36f2a39b634a76e1c3ad9a31f9ab60e734dd53b43203557b76613277d53b9' 'b1068a8d5750051c2b5cfcb89d3d5870cf4233ab445e71c398543fb8b1e6281a' @@ -61,7 +62,8 @@ '961bfb5694b67d425d21240d71490cb71714b5207c23448c89be0966512ff8f9' 'a42f3b152b1aedb8abf16bc70971419919d1fe30328574e7fef8305f9d07d938' '9ec56a3788e32c54f35abeaeedf7cadf6670fa10d39007050b23b93d3c35278e' - '3ee624bb47f757516a860799d817168fe9cf74e603416e18e70c93c692259242') + '3ee624bb47f757516a860799d817168fe9cf74e603416e18e70c93c692259242' + '7e126c73d12c39be9012a66f979897fa630d540d30906dadff6c1384af4ec166') prepare(){ cd sage-$pkgver @@ -83,6 +85,8 @@ patch -p1 -i ../sagemath-sphinx-1.8.patch # port to GAP 4.10.1 API changes patch -p1 -i ../sagemath-gap-4.10.1.patch +# fix build with linbox 1.6 + patch -p1 -i ../sagemath-linbox-1.6.patch # Upstream patches # fix build against libfes 0.2 http://trac.sagemath.org/ticket/15209 Added: sagemath-linbox-1.6.patch =================================================================== --- sagemath-linbox-1.6.patch (rev 0) +++ sagemath-linbox-1.6.patch 2019-05-15 21:29:51 UTC (rev 467482) @@ -0,0 +1,191 @@ +diff --git a/src/sage/libs/linbox/fflas.pxd b/src/sage/libs/linbox/fflas.pxd +index f3a7ce37ea..7d8d64d3b5 100644 +--- a/src/sage/libs/linbox/fflas.pxd ++++ b/src/sage/libs/linbox/fflas.pxd +@@ -64,8 +64,8 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK": + Modular_double.Element* A, size_t A_stride, int nullity) + + Modular_double.Element Det (Modular_double F, +- size_t nrows, size_t ncols, +- Modular_double.Element* A, size_t A_stride) ++ Modular_double.Element det, size_t ncols, ++ Modular_double.Element* A, size_t A_stride, size_t* P, size_t* Q) + + int Rank (Modular_double, + size_t nrows, size_t ncols, +@@ -98,8 +98,8 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK": + Modular_float.Element* A, size_t A_stride, int nullity) + + Modular_float.Element Det (Modular_float F, +- size_t nrows, size_t ncols, +- Modular_float.Element* A, size_t A_stride) ++ Modular_float.Element det, size_t ncols, ++ Modular_float.Element* A, size_t A_stride, size_t* P, size_t* Q) + + int Rank (Modular_float, + size_t nrows, size_t ncols, +diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd +index 35a3fa0125..a4bda24c0e 100644 +--- a/src/sage/libs/linbox/linbox.pxd ++++ b/src/sage/libs/linbox/linbox.pxd +@@ -125,7 +125,7 @@ cdef extern from "linbox/solutions/methods.h" namespace "LinBox": + pass + cdef struct WiedemannTraits: + pass +- cdef struct BlasEliminationTraits: ++ cdef struct DenseEliminationTraits: + pass + cdef struct SparseEliminationTraits: + pass +@@ -135,7 +135,7 @@ cdef extern from "linbox/solutions/methods.h" namespace "LinBox": + ctypedef BlackboxSpecifier Blackbox + ctypedef EliminationSpecifier Elimination + ctypedef WiedemannTraits Wiedemann +- ctypedef BlasEliminationTraits BlasElimination ++ ctypedef DenseEliminationTraits DenseElimination + ctypedef SparseEliminationTraits SparseElimination + + cdef extern from "linbox/solutions/charpoly.h" namespace "LinBox": +@@ -157,19 +157,20 @@ cdef extern from "linbox/algorithms/gauss.h": + unsigned long Ni, + unsigned long Nj) + +-cdef extern from "linbox/algorithms/echelon-form.h": ++cdef extern from "linbox/solutions/echelon.h": + ## template<class Field> + ## class EchelonFormDomain + cdef cppclass EchelonForm_Modular_double "LinBox::EchelonFormDomain<Givaro::Modular<double>>": + ctypedef double Element + EchelonForm_Modular_double(Modular_double) +- int rowReducedEchelon(DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) + + cdef cppclass EchelonForm_Modular_float "LinBox::EchelonFormDomain<Givaro::Modular<float>>": + ctypedef float Element + EchelonForm_Modular_float(Modular_float) +- int rowReducedEchelon(DenseMatrix_Modular_float, const DenseMatrix_Modular_float) + ++ int reducedRowEchelon(DenseMatrix_Modular_double, const DenseMatrix_Modular_double) ++ int reducedRowEchelon(DenseMatrix_Modular_float, const DenseMatrix_Modular_float) ++ + cdef extern from "linbox/solutions/rank.h" namespace "LinBox": + unsigned long & rank (unsigned long&, DenseMatrix_integer) + unsigned long & rank (unsigned long&, SparseMatrix_integer) +@@ -185,7 +186,7 @@ cdef extern from "linbox/solutions/solve.h" namespace "LinBox": + Integer &, + SparseMatrix_integer &, + DenseVector_integer &, +- Method.BlasElimination) except + ++ Method.DenseElimination) except + + + DenseVector_integer& solve (DenseVector_integer &, + Integer &, +diff --git a/src/sage/matrix/matrix_integer_sparse.pyx b/src/sage/matrix/matrix_integer_sparse.pyx +index 7fa386eab7..5937720a03 100644 +--- a/src/sage/matrix/matrix_integer_sparse.pyx ++++ b/src/sage/matrix/matrix_integer_sparse.pyx +@@ -1081,7 +1081,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): + elif method == METHOD_WIEDEMANN: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.Wiedemann()) + elif method == METHOD_BLAS_ELIMINATION: +- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) ++ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) + elif method == METHOD_SPARSE_ELIMINATION: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) + elif method == METHOD_BLACKBOX: +@@ -1192,7 +1192,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): + if algo == METHOD_DEFAULT: + linbox.solve(res[0], D, A[0], b[0]) + elif algo == METHOD_BLAS_ELIMINATION: +- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) ++ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) + elif algo == METHOD_SPARSE_ELIMINATION: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) + elif algo == METHOD_BLACKBOX: +diff --git a/src/sage/matrix/matrix_modn_dense_double.pyx b/src/sage/matrix/matrix_modn_dense_double.pyx +index c4b1a46444..4f140ad239 100644 +--- a/src/sage/matrix/matrix_modn_dense_double.pyx ++++ b/src/sage/matrix/matrix_modn_dense_double.pyx +@@ -25,7 +25,7 @@ from sage.libs.linbox.givaro cimport \ + + from sage.libs.linbox.linbox cimport \ + DenseMatrix_Modular_double as BlasMatrix, \ +- EchelonForm_Modular_double as EchelonFormDomain ++ reducedRowEchelon + + from sage.libs.linbox.fflas cimport \ + fgemm, fgemv, Det, Rank, ReducedRowEchelonForm, applyP, \ +diff --git a/src/sage/matrix/matrix_modn_dense_float.pyx b/src/sage/matrix/matrix_modn_dense_float.pyx +index 89d1a94ab2..198896259b 100644 +--- a/src/sage/matrix/matrix_modn_dense_float.pyx ++++ b/src/sage/matrix/matrix_modn_dense_float.pyx +@@ -24,7 +24,7 @@ from sage.libs.linbox.givaro cimport \ + + from sage.libs.linbox.linbox cimport \ + DenseMatrix_Modular_float as BlasMatrix, \ +- EchelonForm_Modular_float as EchelonFormDomain ++ reducedRowEchelon + + from sage.libs.linbox.fflas cimport \ + fgemm, fgemv, Det, Rank, ReducedRowEchelonForm, applyP, \ +diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi +index 6a5e164ede..7eb70dae86 100644 +--- a/src/sage/matrix/matrix_modn_dense_template.pxi ++++ b/src/sage/matrix/matrix_modn_dense_template.pxi +@@ -207,7 +207,6 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ + return 0,[] + + cdef ModField *F = new ModField(<long>modulus) +- cdef EchelonFormDomain *EF = new EchelonFormDomain(F[0]) + cdef BlasMatrix *A = new BlasMatrix(F[0], <uint64_t>nrows, <uint64_t>ncols) + cdef BlasMatrix *E = new BlasMatrix(F[0], <uint64_t>nrows, <uint64_t>ncols) + +@@ -218,7 +217,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ + for j in range(ncols): + A.setEntry(i, j, <ModField.Element>entries[i*ncols+j]) + +- cdef int r = EF.rowReducedEchelon(E[0], A[0]) ++ cdef int r = reducedRowEchelon(E[0], A[0]) + for i in range(nrows): + for j in range(ncols): + entries[i*ncols+j] = <celement>E.getEntry(i,j) +@@ -232,7 +231,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ + ii = j+1 + break + +- del F, A, E, EF ++ del F, A, E + return r, pivots + + cdef inline celement *linbox_copy(celement modulus, celement *entries, Py_ssize_t nrows, Py_ssize_t ncols) except? NULL: +@@ -265,7 +264,8 @@ cdef inline celement linbox_det(celement modulus, celement* entries, Py_ssize_t + cdef ModField *F = new ModField(<long>modulus) + cdef celement *cpy = linbox_copy(modulus, entries, nrows, ncols) + if nrows*ncols > 1000: sig_on() +- d = <celement>Det(F[0], nrows, ncols, <ModField.Element*>cpy, ncols) ++ cdef ModField.Element det ++ d = <celement>Det(F[0], det, ncols, <ModField.Element*>cpy, ncols, <size_t*>NULL, <size_t*>NULL) + if nrows*ncols > 1000: sig_off() + sig_free(cpy) + del F +diff --git a/src/sage/matrix/matrix_modn_sparse.pyx b/src/sage/matrix/matrix_modn_sparse.pyx +index 241167ace4..8e65cbb532 100644 +--- a/src/sage/matrix/matrix_modn_sparse.pyx ++++ b/src/sage/matrix/matrix_modn_sparse.pyx +@@ -1026,7 +1026,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): + elif method == METHOD_WIEDEMANN: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.Wiedemann()) + elif method == METHOD_BLAS_ELIMINATION: +- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) ++ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) + elif method == METHOD_SPARSE_ELIMINATION: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) + elif method == METHOD_BLACKBOX: +@@ -1137,7 +1137,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): + if algo == METHOD_DEFAULT: + linbox.solve(res[0], D, A[0], b[0]) + elif algo == METHOD_BLAS_ELIMINATION: +- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) ++ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) + elif algo == METHOD_SPARSE_ELIMINATION: + linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) + elif algo == METHOD_BLACKBOX:
