summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntonio Rojas2019-08-04 17:43:07 +0000
committerAntonio Rojas2019-08-04 17:43:07 +0000
commit5ccaaada02b67a2be034df25948762bbfcccff50 (patch)
tree6a8469843e44c0f36129958394eb71bd2cc3dd27
parentd61282b6e9770852a19e584ea7f1d8f9a9434d0e (diff)
downloadaur-5ccaaada02b67a2be034df25948762bbfcccff50.tar.gz
Drop merged patches
-rw-r--r--.SRCINFO3
-rw-r--r--PKGBUILD11
-rw-r--r--meataxe-tables.patch34
-rw-r--r--no-sage-env.patch302
-rw-r--r--sagemath-linbox-1.6.patch774
-rw-r--r--sagemath-threejs.patch11
6 files changed, 1 insertions, 1134 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ad77c6347bbb..88c2055d4cd3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -104,9 +104,6 @@ pkgbase = sagemath-git
source = sagemath-cremona.patch
source = sagemath-singular-4.1.2.patch
source = sagemath-ecl-sigfpe.patch
- source = sagemath-linbox-1.6.patch
- source = meataxe-tables.patch
- source = no-sage-env.patch
sha256sums = SKIP
sha256sums = 328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842
sha256sums = 1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4
diff --git a/PKGBUILD b/PKGBUILD
index 7e90e56c9c0d..c1f22ce4f166 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -42,10 +42,7 @@ source=(git://git.sagemath.org/sage.git#branch=develop
fes02.patch
sagemath-cremona.patch
sagemath-singular-4.1.2.patch
- sagemath-ecl-sigfpe.patch
- sagemath-linbox-1.6.patch
- meataxe-tables.patch
- no-sage-env.patch)
+ sagemath-ecl-sigfpe.patch)
sha256sums=('SKIP'
'328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842'
'1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4'
@@ -86,12 +83,6 @@ prepare(){
patch -p1 -i ../sagemath-singular-4.1.2.patch
# Fix SIGFPE crashes with ecl 16.1.3 https://trac.sagemath.org/ticket/22191
patch -p1 -i ../sagemath-ecl-sigfpe.patch
-# fix build with linbox 1.6 https://trac.sagemath.org/ticket/26932
- patch -p1 -i ../sagemath-linbox-1.6.patch
-# use meataxe package's multiplication tables instead of generating them at runtime https://trac.sagemath.org/ticket/28188
- patch -p1 -i ../meataxe-tables.patch
-# make sage work without sage-env https://trac.sagemath.org/ticket/28225
- patch -p1 -i ../no-sage-env.patch
# use python2
sed -e 's|sage-python23|python2|' -e 's|#!/usr/bin/env python\b|#!/usr/bin/env python2|' -i src/bin/*
diff --git a/meataxe-tables.patch b/meataxe-tables.patch
deleted file mode 100644
index 57d42c35219f..000000000000
--- a/meataxe-tables.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/src/sage/env.py b/src/sage/env.py
-index 27dd40c..453ccd7 100644
---- a/src/sage/env.py
-+++ b/src/sage/env.py
-@@ -182,6 +182,7 @@ var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona'))
- 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('THREEJS_DIR', join(SAGE_SHARE, 'threejs'))
- var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy'))
- var('MAXIMA_FAS')
-diff --git a/src/sage/libs/meataxe.pyx b/src/sage/libs/meataxe.pyx
-index 1120600..7549e55 100644
---- a/src/sage/libs/meataxe.pyx
-+++ b/src/sage/libs/meataxe.pyx
-@@ -68,7 +68,6 @@ cdef Matrix_t *rawMatrix(int Field, list entries) except NULL:
-
- from sage.cpython.string cimport str_to_bytes, char_to_str
- import os
--from sage.env import DOT_SAGE
-
- cdef void sage_meataxe_error_handler(const MtxErrorRecord_t *err):
- sig_block()
-@@ -82,7 +81,8 @@ cdef inline meataxe_init():
- ## Assign to a variable that enables MeatAxe to find
- ## its multiplication tables.
- global MtxLibDir
-- mtxdir = str_to_bytes(os.path.join(DOT_SAGE, 'meataxe'))
-+ from sage import env
-+ mtxdir = str_to_bytes(env.MTXLIB)
- if len(mtxdir) >= 1024:
- raise RuntimeError(f"the path for the meataxe library {mtxdir!r} is too long, it needs to be of length < 1024")
- MtxLibDir[:len(mtxdir)] = mtxdir
diff --git a/no-sage-env.patch b/no-sage-env.patch
deleted file mode 100644
index d276250064e4..000000000000
--- a/no-sage-env.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-diff --git a/src/bin/sage b/src/bin/sage
-index abb11d3..20b1303 100755
---- a/src/bin/sage
-+++ b/src/bin/sage
-@@ -4,8 +4,8 @@
- # usage: sage_version [-v]
- # -v display the full version banner including release date
- sage_version() {
-- if [ -f "$SAGE_LOCAL/bin/sage-version.sh" ]; then
-- . "$SAGE_LOCAL/bin/sage-version.sh"
-+ if [ -f "$0-version.sh" ]; then
-+ . "$0-version.sh"
- else
- . "$SAGE_ROOT/src/bin/sage-version.sh"
- fi
-@@ -430,18 +430,23 @@ fi
- # append -env to that). We redirect stdout to stderr, which is safer
- # for scripts.
- #####################################################################
--. "$0-env" >&2
--if [ $? -ne 0 ]; then
-- echo >&2 "Error setting environment variables by sourcing '$0-env';"
-- echo >&2 "possibly contact sage-devel (see http://groups.google.com/group/sage-devel)."
-- exit 1
-+if [ -f "$0-env" ]; then
-+ . "$0-env" >&2
-+ if [ $? -ne 0 ]; then
-+ echo >&2 "Error setting environment variables by sourcing '$0-env';"
-+ echo >&2 "possibly contact sage-devel (see http://groups.google.com/group/sage-devel)."
-+ exit 1
-+ fi
- fi
-
-+if [ -z "$DOT_SAGE" ]; then
-+ export DOT_SAGE="$HOME/.sage"
-+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 [ ! -x "$SAGE_LOCAL/bin/sage" ]; then
-+ if [ ! -z "$SAGE_LOCAL" ] && [ ! -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'
-@@ -1038,13 +1043,13 @@ if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then
- shift
- sage_setup
- if [ "$SAGE_DEBUG" = "no" ]; then
-- gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" \
-- -args python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i
-+ gdb -x "$0-gdb-commands" \
-+ -args python "$0-ipython" "$@" -i
- else
- sage_dir=$(sage-python23 -c 'import os, sage; print(os.path.dirname(sage.__file__))')
- cygdb "$sage_dir" "$SAGE_SRC/sage" \
-- -- -x "$SAGE_LOCAL/bin/sage-gdb-commands" \
-- -args python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i
-+ -- -x "$0-gdb-commands" \
-+ -args python "$0-ipython" "$@" -i
- fi
- exit $?
- fi
-diff --git a/src/bin/sage-cachegrind b/src/bin/sage-cachegrind
-index f77c2a2..41b4948 100755
---- a/src/bin/sage-cachegrind
-+++ b/src/bin/sage-cachegrind
-@@ -1,7 +1,7 @@
- #!/usr/bin/env bash
-
- # We reuse the gdb pythonstartup script.
--PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython
-+PYTHONSTARTUP=`dirname $0`/sage-ipython
- export PYTHONSTARTUP
- echo $PYTHONSTARTUP
- if [ ! -d "$DOT_SAGE/valgrind" ]; then
-diff --git a/src/bin/sage-callgrind b/src/bin/sage-callgrind
-index 5e21d8b..d78acd6 100755
---- a/src/bin/sage-callgrind
-+++ b/src/bin/sage-callgrind
-@@ -13,4 +13,4 @@ if [ "$SAGE_CALLGRIND_FLAGS" ]; then
- echo "Using default flags: $CALLGRIND_FLAGS"
- fi
-
--valgrind --tool=callgrind $CALLGRIND_FLAGS python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i
-+valgrind --tool=callgrind $CALLGRIND_FLAGS sage-ipython "$@" -i
-diff --git a/src/bin/sage-cython b/src/bin/sage-cython
-index 526c68b..d1477d4 100755
---- a/src/bin/sage-cython
-+++ b/src/bin/sage-cython
-@@ -9,9 +9,7 @@ import os
- import sys
- args = sys.argv[1:]
-
--if "SAGE_SRC" not in os.environ:
-- raise RuntimeError("The environment variable SAGE_SRC must be set.")
--SAGE_SRC = os.environ["SAGE_SRC"]
-+from sage.env import SAGE_SRC
-
- # args can have length 0, in case we're printing a usage message (see trac 12207)
- pyx_file = os.path.abspath(args[-1]) if len(args) else None
-diff --git a/src/bin/sage-ipynb2rst b/src/bin/sage-ipynb2rst
-index d7c61a9..0fb6ee5 100755
---- a/src/bin/sage-ipynb2rst
-+++ b/src/bin/sage-ipynb2rst
-@@ -1,5 +1,9 @@
- #!/usr/bin/env bash
-
-+if [ -z $SAGE_EXTCODE ]; then
-+ SAGE_EXTCODE=`${0/-ipynb2rst} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
-+fi
-+
- fail () {
- echo "ERROR: ${1}" 1>&2
- exit 1
-diff --git a/src/bin/sage-massif b/src/bin/sage-massif
-index 20082bf..ead82de 100755
---- a/src/bin/sage-massif
-+++ b/src/bin/sage-massif
-@@ -1,7 +1,7 @@
- #!/usr/bin/env bash
-
- # We reuse the gdb pythonstartup script.
--PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython
-+PYTHONSTARTUP=`dirname $0`/sage-ipython
- export PYTHONSTARTUP
- echo $PYTHONSTARTUP
- if [ ! -d "$DOT_SAGE/valgrind" ]; then
-diff --git a/src/bin/sage-omega b/src/bin/sage-omega
-index 2b8449f..a4c1fff 100755
---- a/src/bin/sage-omega
-+++ b/src/bin/sage-omega
-@@ -1,7 +1,7 @@
- #!/usr/bin/env bash
-
- # We reuse the gdb pythonstartup script.
--PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython
-+PYTHONSTARTUP=`dirname $0`/sage-ipython
- export PYTHONSTARTUP
- echo $PYTHONSTARTUP
- if [ ! -d "$DOT_SAGE/valgrind" ]; then
-diff --git a/src/bin/sage-runtests b/src/bin/sage-runtests
-index 1207fa2..a7d4b55 100755
---- a/src/bin/sage-runtests
-+++ b/src/bin/sage-runtests
-@@ -5,7 +5,7 @@ import os
- import sys
-
- # Note: the DOT_SAGE and SAGE_STARTUP_FILE environment variables have already been set by sage-env
--DOT_SAGE = os.environ['DOT_SAGE']
-+DOT_SAGE = os.environ.get('DOT_SAGE', os.path.join(os.environ.get('HOME'),'.sage'))
- SAGE_ROOT = os.environ.get('SAGE_ROOT')
-
- # Override to not pick up user configuration, see Trac #20270
-diff --git a/src/bin/sage-valgrind b/src/bin/sage-valgrind
-index bba296d..61f27a8 100755
---- a/src/bin/sage-valgrind
-+++ b/src/bin/sage-valgrind
-@@ -1,5 +1,9 @@
- #!/usr/bin/env bash
-
-+if [ -z $SAGE_EXTCODE ]; then
-+ SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
-+fi
-+
- SUPP=""
- if [ -f "$SAGE_EXTCODE/valgrind/python.supp" ]; then
- SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/python.supp"
-@@ -19,4 +23,4 @@ else
- echo "Using default flags: $MEMCHECK_FLAGS"
- fi
-
--valgrind --tool=memcheck $MEMCHECK_FLAGS python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i
-+valgrind --tool=memcheck $MEMCHECK_FLAGS sage-ipython "$@" -i
-diff --git a/src/sage/docs/conf.py b/src/sage/docs/conf.py
-index 8d0083b..0560d96 100644
---- a/src/sage/docs/conf.py
-+++ b/src/sage/docs/conf.py
-@@ -218,7 +218,7 @@ html_theme = 'sage'
- html_theme_options = {}
-
- # Add any paths that contain custom themes here, relative to this directory.
--html_theme_path = [os.path.join(SAGE_DOC_SRC, 'common', 'themes')]
-+html_theme_path = [os.path.join(SAGE_DOC_SRC, 'common', 'themes'), os.path.join(SAGE_DOC, 'common', 'themes')]
-
- # HTML style sheet NOTE: This overrides a HTML theme's corresponding
- # setting.
-diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
-index 8438b96..b5dadaf 100644
---- a/src/sage/doctest/control.py
-+++ b/src/sage/doctest/control.py
-@@ -26,7 +26,7 @@ import random, os, sys, time, json, re, types
- import six
- import sage.misc.flatten
- from sage.structure.sage_object import SageObject
--from sage.env import DOT_SAGE, SAGE_LIB, SAGE_SRC
-+from sage.env import DOT_SAGE, SAGE_LIB, SAGE_SRC, SAGE_LOCAL, SAGE_EXTCODE
- from sage.misc.temporary_file import tmp_dir
- from cysignals.signals import AlarmInterrupt, init_cysignals
-
-@@ -48,7 +48,7 @@ class DocTestDefaults(SageObject):
- This class is used for doctesting the Sage doctest module.
-
- It fills in attributes to be the same as the defaults defined in
-- ``SAGE_LOCAL/bin/sage-runtests``, expect for a few places,
-+ ``sage-runtests``, expect for a few places,
- which is mostly to make doctesting more predictable.
-
- EXAMPLES::
-@@ -291,7 +291,7 @@ class DocTestController(SageObject):
-
- INPUT:
-
-- - options -- either options generated from the command line by SAGE_LOCAL/bin/sage-runtests
-+ - options -- either options generated from the command line by sage-runtests
- or a DocTestDefaults object (possibly with some entries modified)
- - args -- a list of filenames to doctest
-
-@@ -1023,9 +1023,9 @@ class DocTestController(SageObject):
- sage: from sage.doctest.control import DocTestDefaults, DocTestController
- sage: DC = DocTestController(DocTestDefaults(timeout=123), ["hello_world.py"])
- sage: print(DC._assemble_cmd())
-- python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=123 hello_world.py
-+ python "...sage-runtests" --serial --timeout=123 hello_world.py
- """
-- cmd = '''python "%s" --serial '''%(os.path.join("$SAGE_LOCAL","bin","sage-runtests"))
-+ cmd = '''python "%s" --serial '''%(os.path.join(SAGE_LOCAL,"bin","sage-runtests"))
- opt = dict_difference(self.options.__dict__, DocTestDefaults().__dict__)
- for o in ("all", "sagenb"):
- if o in opt:
-@@ -1059,14 +1059,14 @@ class DocTestController(SageObject):
- sage: DD = DocTestDefaults(gdb=True)
- sage: DC = DocTestController(DD, ["hello_world.py"])
- sage: DC.run_val_gdb(testing=True)
-- exec gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" --args python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=0 hello_world.py
-+ exec gdb -x "...sage-gdb-commands" --args python "...sage-runtests" --serial --timeout=0 hello_world.py
-
- ::
-
- sage: DD = DocTestDefaults(valgrind=True, optional="all", timeout=172800)
- sage: DC = DocTestController(DD, ["hello_world.py"])
- sage: DC.run_val_gdb(testing=True)
-- exec valgrind --tool=memcheck --leak-resolution=high --leak-check=full --num-callers=25 --suppressions="$SAGE_EXTCODE/valgrind/pyalloc.supp" --suppressions="$SAGE_EXTCODE/valgrind/sage.supp" --suppressions="$SAGE_EXTCODE/valgrind/sage-additional.supp" --log-file=".../valgrind/sage-memcheck.%p" python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=172800 --optional=all hello_world.py
-+ exec valgrind --tool=memcheck --leak-resolution=high --leak-check=full --num-callers=25 --suppressions="...valgrind/pyalloc.supp" --suppressions="...valgrind/sage.supp" --suppressions="...valgrind/sage-additional.supp" --log-file=".../valgrind/sage-memcheck.%p" python "...sage-runtests" --serial --timeout=172800 --optional=all hello_world.py
- """
- try:
- sage_cmd = self._assemble_cmd()
-@@ -1075,7 +1075,7 @@ class DocTestController(SageObject):
- return 2
- opt = self.options
- if opt.gdb:
-- cmd = '''exec gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" --args '''
-+ cmd = '''exec gdb -x "%s" --args '''%(os.path.join(SAGE_LOCAL,"bin","sage-gdb-commands"))
- flags = ""
- if opt.logfile:
- sage_cmd += " --logfile %s"%(opt.logfile)
-@@ -1096,9 +1096,9 @@ class DocTestController(SageObject):
- flags = os.getenv("SAGE_MEMCHECK_FLAGS")
- if flags is None:
- flags = "--leak-resolution=high --leak-check=full --num-callers=25 "
-- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","pyalloc.supp"))
-- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","sage.supp"))
-- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","sage-additional.supp"))
-+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","pyalloc.supp"))
-+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","sage.supp"))
-+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","sage-additional.supp"))
- elif opt.massif:
- toolname = "massif"
- flags = os.getenv("SAGE_MASSIF_FLAGS", "--depth=6 ")
-diff --git a/src/sage/env.py b/src/sage/env.py
-index 27dd40c..2e1111c 100644
---- a/src/sage/env.py
-+++ b/src/sage/env.py
-@@ -183,6 +183,7 @@ var('JMOL_DIR', join(SAGE_SHARE, 'jmol'))
- var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol'))
- var('MATHJAX_DIR', join(SAGE_SHARE, 'mathjax'))
- var('THREEJS_DIR', join(SAGE_SHARE, 'threejs'))
-+var('SINGULARPATH', join(SAGE_SHARE, 'singular'))
- var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy'))
- var('MAXIMA_FAS')
-
-diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
-index 513994c..2f08a9d 100644
---- a/src/sage/interfaces/singular.py
-+++ b/src/sage/interfaces/singular.py
-@@ -337,6 +337,7 @@ from sage.structure.element import RingElement
-
- import sage.rings.integer
-
-+from sage.env import SINGULARPATH
- from sage.misc.misc import get_verbose
- from sage.docs.instancedoc import instancedoc
-
-@@ -2261,7 +2262,7 @@ def generate_docstring_dictionary():
- nodes.clear()
- node_names.clear()
-
-- singular_docdir = os.environ['SINGULARPATH']+"/../info/"
-+ singular_docdir = SINGULARPATH + "/../info/"
-
- new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*")
- new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*")
diff --git a/sagemath-linbox-1.6.patch b/sagemath-linbox-1.6.patch
deleted file mode 100644
index 86991d63c26c..000000000000
--- a/sagemath-linbox-1.6.patch
+++ /dev/null
@@ -1,774 +0,0 @@
-diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd
-index 810a197..7794c9e 100644
---- a/src/sage/libs/linbox/conversion.pxd
-+++ b/src/sage/libs/linbox/conversion.pxd
-@@ -45,7 +45,7 @@ from sage.modules.vector_integer_sparse cimport mpz_vector, mpz_vector_get_entr
-
- ctypedef enum linbox_specifier:
- METHOD_DEFAULT # no specification
-- METHOD_BLAS_ELIMINATION # BlasElimination
-+ METHOD_DENSE_ELIMINATION # DenseElimination
- METHOD_SPARSE_ELIMINATION # SparseElimination
- METHOD_BLACKBOX # Blackbox
- METHOD_WIEDEMANN # Wiedeman
-@@ -54,10 +54,10 @@ ctypedef enum linbox_specifier:
- cdef inline linbox_specifier get_method(str algo) except ERROR:
- if algo is None or algo == "default":
- return METHOD_DEFAULT
-- elif algo == "blas_elimination" or \
-- algo == "linbox_blas_elimination" or \
-- algo == "LinBox::BlasElimination":
-- return METHOD_BLAS_ELIMINATION
-+ elif algo == "dense_elimination" or \
-+ algo == "linbox_dense_elimination" or \
-+ algo == "LinBox::DenseElimination":
-+ return METHOD_DENSE_ELIMINATION
- elif algo == "sparse_elimination" or \
- algo == "linbox_sparse_elimination" or \
- algo == "LinBox::SparseElimination":
-diff --git a/src/sage/libs/linbox/fflas.pxd b/src/sage/libs/linbox/fflas.pxd
-index f3a7ce3..8bf62f1 100644
---- a/src/sage/libs/linbox/fflas.pxd
-+++ b/src/sage/libs/linbox/fflas.pxd
-@@ -63,8 +63,7 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK":
- Modular_double.Element* Invert (Modular_double F, size_t order,
- 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 Det (Modular_double F, Modular_double.Element& d, size_t n,
- Modular_double.Element* A, size_t A_stride)
-
- int Rank (Modular_double,
-@@ -97,8 +96,7 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK":
- Modular_float.Element* Invert (Modular_float F, size_t order,
- 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 Det (Modular_float F, Modular_float.Element& d, size_t n,
- Modular_float.Element* A, size_t A_stride)
-
- int Rank (Modular_float,
-diff --git a/src/sage/libs/linbox/givaro.pxd b/src/sage/libs/linbox/givaro.pxd
-index 097fc22..34209f4 100644
---- a/src/sage/libs/linbox/givaro.pxd
-+++ b/src/sage/libs/linbox/givaro.pxd
-@@ -40,7 +40,7 @@ cdef extern from "givaro/zring.h":
- Element one
- Element mone
-
--cdef extern from "givaro/modular.h":
-+cdef extern from "givaro/modular-integral.h":
- cdef cppclass Modular_uint64 "Givaro::Modular<uint64_t>":
- ctypedef uint64_t Element
- Modular_uint64(int modulus)
-@@ -58,6 +58,7 @@ cdef extern from "givaro/modular.h":
-
- ostream& write(ostream&)
-
-+cdef extern from "givaro/modular-floating.h":
- cdef cppclass Modular_double "Givaro::Modular<double>":
- ctypedef double Element
- Modular_double(int modulus)
-diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd
-index 35a3fa0..fb0e0dc 100644
---- a/src/sage/libs/linbox/linbox.pxd
-+++ b/src/sage/libs/linbox/linbox.pxd
-@@ -10,10 +10,10 @@ from .givaro cimport *
-
- cdef extern from "linbox/matrix/dense-matrix.h":
- ## template <class _Field, class _blasRep=typename Vector<_Field>::Dense >
-- ## class BlasMatrix ;
-+ ## class DenseMatrix ;
- ##
- ## template <class _Field>
-- ## using DenseMatrix = BlasMatrix<_Field> ;
-+ ## using DenseMatrix = DenseMatrix<_Field> ;
- cdef cppclass DenseMatrix_integer "LinBox::DenseMatrix<Givaro::ZRing<Givaro::Integer>>":
- ctypedef ZRing Field
- ctypedef Integer Element
-@@ -30,6 +30,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
- ctypedef Modular_double Field
- ctypedef double Element
- DenseMatrix_Modular_double(Field F, size_t m, size_t n)
-+ DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n)
- void setEntry(size_t i, size_t j, Element& a)
- Element &getEntry(size_t i, size_t j)
-
-@@ -39,6 +40,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
- ctypedef Modular_float Field
- ctypedef float Element
- DenseMatrix_Modular_float(Field F, size_t m, size_t n)
-+ DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n)
- void setEntry(size_t i, size_t j, Element& a)
- Element &getEntry(size_t i, size_t j)
-
-@@ -125,7 +127,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 +137,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,18 +159,24 @@ cdef extern from "linbox/algorithms/gauss.h":
- unsigned long Ni,
- unsigned long Nj)
-
--cdef extern from "linbox/algorithms/echelon-form.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)
-+cdef extern from "linbox/solutions/echelon.h" namespace "LinBox":
-+ size_t rowEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&)
-+ size_t rowEchelonize (DenseMatrix_Modular_float&)
-+ size_t reducedRowEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&)
-+ size_t reducedRowEchelonize (DenseMatrix_Modular_float&)
-+ size_t colEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&)
-+ size_t colEchelonize (DenseMatrix_Modular_float&)
-+ size_t reducedColEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&)
-+ size_t reducedColEchelonize (DenseMatrix_Modular_float&)
-+
-+ size_t rowEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&)
-+ size_t rowEchelonize (DenseMatrix_Modular_double&)
-+ size_t reducedRowEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&)
-+ size_t reducedRowEchelonize (DenseMatrix_Modular_double&)
-+ size_t colEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&)
-+ size_t colEchelonize (DenseMatrix_Modular_double&)
-+ size_t reducedColEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&)
-+ size_t reducedColEchelonize (DenseMatrix_Modular_double&)
-
- cdef extern from "linbox/solutions/rank.h" namespace "LinBox":
- unsigned long & rank (unsigned long&, DenseMatrix_integer)
-@@ -185,7 +193,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/libs/linbox/linbox_flint_interface.pxd b/src/sage/libs/linbox/linbox_flint_interface.pxd
-index 388c146..6491cf5 100644
---- a/src/sage/libs/linbox/linbox_flint_interface.pxd
-+++ b/src/sage/libs/linbox/linbox_flint_interface.pxd
-@@ -13,7 +13,7 @@ cdef void linbox_fmpz_mat_charpoly(fmpz_poly_t cp, fmpz_mat_t A)
- cdef void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A)
-
- # return the rank of A
--cdef unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A)
-+cdef size_t linbox_fmpz_mat_rank(fmpz_mat_t A)
-
- # set det to the determinant of A
- cdef void linbox_fmpz_mat_det(fmpz_t det, fmpz_mat_t A)
-diff --git a/src/sage/libs/linbox/linbox_flint_interface.pyx b/src/sage/libs/linbox/linbox_flint_interface.pyx
-index d5718a7..4c209fb 100644
---- a/src/sage/libs/linbox/linbox_flint_interface.pyx
-+++ b/src/sage/libs/linbox/linbox_flint_interface.pyx
-@@ -15,7 +15,7 @@ and C. Pernet. The functions available are:
- - ``void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A)``: set ``mp``
- to be the minimal polynomial of the square matrix ``A``
-
--- ``unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A)``: return the rank of the
-+- ``size_t linbox_fmpz_mat_rank(fmpz_mat_t A)``: return the rank of the
- matrix ``A``
-
- - ``void linbox_fmpz_mat_det(fmpz_t det, fmpz_mat_t A)``: set ``det`` to the
-@@ -155,13 +155,13 @@ cdef void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A):
- del m_A
-
-
--cdef unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A):
-+cdef size_t linbox_fmpz_mat_rank(fmpz_mat_t A):
- r"""
- Return the rank of A
- """
- cdef givaro.ZRing ZZ
- cdef linbox.DenseMatrix_integer * LBA
-- cdef unsigned long r = 0
-+ cdef size_t r = 0
-
- LBA = new linbox.DenseMatrix_integer(ZZ, fmpz_mat_nrows(A), fmpz_mat_ncols(A))
- fmpz_mat_get_linbox(LBA[0], A)
-diff --git a/src/sage/matrix/matrix_integer_dense.pyx b/src/sage/matrix/matrix_integer_dense.pyx
-index cd36b27..072122b 100644
---- a/src/sage/matrix/matrix_integer_dense.pyx
-+++ b/src/sage/matrix/matrix_integer_dense.pyx
-@@ -3611,7 +3611,7 @@ cdef class Matrix_integer_dense(Matrix_dense):
- 3
- """
- sig_on()
-- cdef unsigned long r = linbox_fmpz_mat_rank(self._matrix)
-+ cdef size_t r = linbox_fmpz_mat_rank(self._matrix)
- sig_off()
- return Integer(r)
-
-diff --git a/src/sage/matrix/matrix_integer_sparse.pyx b/src/sage/matrix/matrix_integer_sparse.pyx
-index 7fa386e..6db9b2d 100644
---- a/src/sage/matrix/matrix_integer_sparse.pyx
-+++ b/src/sage/matrix/matrix_integer_sparse.pyx
-@@ -31,7 +31,7 @@ from cysignals.memory cimport check_calloc, sig_free
-
- from collections import Iterator, Sequence
-
--from cpython.int cimport PyInt_FromLong
-+from cpython.int cimport PyInt_FromSize_t
-
- from sage.ext.stdsage cimport PY_NEW
- from sage.ext.mod_int cimport *
-@@ -42,7 +42,7 @@ from sage.libs.linbox.conversion cimport (
- new_linbox_vector_integer_dense,
- new_sage_vector_integer_dense,
- new_linbox_matrix_integer_sparse,
-- METHOD_DEFAULT, METHOD_BLAS_ELIMINATION,
-+ METHOD_DEFAULT, METHOD_DENSE_ELIMINATION,
- METHOD_SPARSE_ELIMINATION, METHOD_BLACKBOX,
- METHOD_WIEDEMANN, get_method)
-
-@@ -647,13 +647,13 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
-
- cdef givaro.ZRing givZZ
- cdef linbox.SparseMatrix_integer * M = new_linbox_matrix_integer_sparse(givZZ, self)
-- cdef unsigned long r = 0
-+ cdef size_t r = 0
-
- linbox.rank(r, M[0])
-
- del M
-
-- return PyInt_FromLong(r)
-+ return PyInt_FromSize_t(r)
-
- def _det_linbox(self):
- r"""
-@@ -926,7 +926,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
- - ``'linbox'`` or ``'linbox_default'`` - (default) use LinBox
- and let it chooses the appropriate algorithm
-
-- - ``linbox_blas_elimination'`` - use LinBox dense elimination
-+ - ``linbox_dense_elimination'`` - use LinBox dense elimination
-
- - ``'linbox_sparse_elimination'`` - use LinBox sparse elimination
-
-@@ -993,7 +993,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
-
- - ``b`` -- a dense integer vector
-
-- - ``algorithm`` -- (optional) either ``None``, ``'blas_elimination'``,
-+ - ``algorithm`` -- (optional) either ``None``, ``'dense_elimination'``,
- ``'sparse_elimination'``, ``'wiedemann'`` or ``'blackbox'``.
-
- OUTPUT: a pair ``(a, d)`` consisting of
-@@ -1012,7 +1012,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
- sage: b0 = vector((1,1,1,1))
- sage: m._solve_vector_linbox(b0)
- ((-1, -7, -3, -1), 1)
-- sage: m._solve_vector_linbox(b0, 'blas_elimination')
-+ sage: m._solve_vector_linbox(b0, 'dense_elimination')
- ((-1, -7, -3, -1), 1)
- sage: m._solve_vector_linbox(b0, 'sparse_elimination')
- ((-1, -7, -3, -1), 1)
-@@ -1024,7 +1024,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
- sage: b1 = vector((1,2,3,4))
- sage: m._solve_vector_linbox(b1)
- ((-18, -92, -41, -17), 5)
-- sage: m._solve_vector_linbox(b1, 'blas_elimination')
-+ sage: m._solve_vector_linbox(b1, 'dense_elimination')
- ((-18, -92, -41, -17), 5)
- sage: m._solve_vector_linbox(b1, 'sparse_elimination')
- ((-18, -92, -41, -17), 5)
-@@ -1039,7 +1039,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
-
- TESTS::
-
-- sage: algos = ["default", "blas_elimination", "sparse_elimination",
-+ sage: algos = ["default", "dense_elimination", "sparse_elimination",
- ....: "blackbox", "wiedemann"]
- sage: for i in range(20):
- ....: dim = randint(1, 30)
-@@ -1080,8 +1080,8 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
- linbox.solve(res[0], D, A[0], b[0])
- 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())
-+ elif method == METHOD_DENSE_ELIMINATION:
-+ 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:
-@@ -1136,7 +1136,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
-
- TESTS::
-
-- sage: algos = ["default", "blas_elimination", "sparse_elimination",
-+ sage: algos = ["default", "dense_elimination", "sparse_elimination",
- ....: "blackbox", "wiedemann"]
-
- sage: for _ in range(10):
-@@ -1191,8 +1191,8 @@ cdef class Matrix_integer_sparse(Matrix_sparse):
- # solve the current row
- 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())
-+ elif algo == METHOD_DENSE_ELIMINATION:
-+ 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 c4b1a46..880caec 100644
---- a/src/sage/matrix/matrix_modn_dense_double.pyx
-+++ b/src/sage/matrix/matrix_modn_dense_double.pyx
-@@ -24,8 +24,8 @@ from sage.libs.linbox.givaro cimport \
- Poly1Dom, Dense
-
- from sage.libs.linbox.linbox cimport \
-- DenseMatrix_Modular_double as BlasMatrix, \
-- EchelonForm_Modular_double as EchelonFormDomain
-+ reducedRowEchelonize, \
-+ DenseMatrix_Modular_double as DenseMatrix
-
- 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 89d1a94..8a468c1 100644
---- a/src/sage/matrix/matrix_modn_dense_float.pyx
-+++ b/src/sage/matrix/matrix_modn_dense_float.pyx
-@@ -23,8 +23,8 @@ from sage.libs.linbox.givaro cimport \
- Poly1Dom, Dense
-
- from sage.libs.linbox.linbox cimport \
-- DenseMatrix_Modular_float as BlasMatrix, \
-- EchelonForm_Modular_float as EchelonFormDomain
-+ DenseMatrix_Modular_float as DenseMatrix, \
-+ reducedRowEchelonize
-
- 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 6a5e164..230a16e 100644
---- a/src/sage/matrix/matrix_modn_dense_template.pxi
-+++ b/src/sage/matrix/matrix_modn_dense_template.pxi
-@@ -207,21 +207,12 @@ 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)
--
-+ cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols)
-+ cdef Py_ssize_t r = reducedRowEchelonize(A[0])
- cdef Py_ssize_t i,j
--
-- # TODO: can we avoid this copy?
-- for i in range(nrows):
-- for j in range(ncols):
-- A.setEntry(i, j, <ModField.Element>entries[i*ncols+j])
--
-- cdef int r = EF.rowReducedEchelon(E[0], A[0])
- for i in range(nrows):
- for j in range(ncols):
-- entries[i*ncols+j] = <celement>E.getEntry(i,j)
-+ entries[i*ncols+j] = <celement>A.getEntry(i,j)
-
- cdef Py_ssize_t ii = 0
- cdef list pivots = []
-@@ -232,7 +223,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_
- ii = j+1
- break
-
-- del F, A, E, EF
-+ del F
- return r, pivots
-
- cdef inline celement *linbox_copy(celement modulus, celement *entries, Py_ssize_t nrows, Py_ssize_t ncols) except? NULL:
-@@ -258,15 +249,16 @@ cdef inline int linbox_rank(celement modulus, celement* entries, Py_ssize_t nrow
- del F
- return r
-
--cdef inline celement linbox_det(celement modulus, celement* entries, Py_ssize_t nrows, Py_ssize_t ncols):
-+cdef inline celement linbox_det(celement modulus, celement* entries, Py_ssize_t n):
- """
- Return the determinant of this matrix.
- """
- 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)
-- if nrows*ncols > 1000: sig_off()
-+ cdef celement *cpy = linbox_copy(modulus, entries, n, n)
-+ if n*n > 1000: sig_on()
-+ cdef celement d
-+ Det(F[0], d, n, <ModField.Element*>cpy, n)
-+ if n*n > 1000: sig_off()
- sig_free(cpy)
- del F
- return d
-@@ -1672,9 +1664,9 @@ cdef class Matrix_modn_dense_template(Matrix_dense):
-
- - ``algorithm``
-
-- - ``linbox`` - uses the LinBox library (``EchelonFormDomain`` implementation, default)
-+ - ``linbox`` - uses the LinBox library (wrapping fflas-ffpack)
-
-- - ``linbox_noefd`` - uses the LinBox library (FFPACK directly, less memory but slower)
-+ - ``linbox_noefd`` - uses the FFPACK directly, less memory and faster
-
- - ``gauss`` - uses a custom slower `O(n^3)` Gauss
- elimination implemented in Sage.
-@@ -1929,7 +1921,6 @@ cdef class Matrix_modn_dense_template(Matrix_dense):
- else:
- r, pivots = linbox_echelonize(self.p, self._entries, self._nrows, self._ncols)
- verbose('done with echelonize',t)
--
- self.cache('in_echelon_form',True)
- self.cache('rank', r)
- self.cache('pivots', tuple(pivots))
-@@ -2468,7 +2459,7 @@ cdef class Matrix_modn_dense_template(Matrix_dense):
- x = self.fetch('det')
- if not x is None:
- return x
-- d = linbox_det(self.p, self._entries, self._nrows, self._ncols)
-+ d = linbox_det(self.p, self._entries, self._nrows)
- d2 = self._coerce_element(d)
- self.cache('det', d2)
- return d2
-diff --git a/src/sage/matrix/matrix_modn_sparse.pyx b/src/sage/matrix/matrix_modn_sparse.pyx
-index 241167a..9b4184f 100644
---- a/src/sage/matrix/matrix_modn_sparse.pyx
-+++ b/src/sage/matrix/matrix_modn_sparse.pyx
-@@ -677,10 +677,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- # TODO: bug in linbox (gives segfault)
- return 0, self.base_ring().one()
-
-- # NOTE: the rank would more naturally be size_t but it is unsigned long
-- # in LinBox
-- # see https://github.com/linbox-team/linbox/issues/144
-- cdef unsigned long A_rank = 0
-+ cdef size_t A_rank = 0
- cdef uint64_t A_det = 0
-
- if not is_prime(self.p):
-@@ -696,9 +693,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- if A.rowdim() >= <size_t> UINT_MAX or A.coldim() >= <size_t> UINT_MAX:
- raise ValueError("row/column size unsupported in LinBox")
-
-- dom.InPlaceLinearPivoting(A_rank, A_det, A[0],
-- <unsigned long> A.rowdim(),
-- <unsigned long> A.coldim())
-+ dom.InPlaceLinearPivoting(A_rank, A_det, A[0], A.rowdim(), A.coldim())
-
- del A
- del F
-@@ -882,7 +877,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- - ``'linbox'`` or ``'linbox_default'`` - (default) use LinBox
- and let it chooses the appropriate algorithm
-
-- - ``linbox_blas_elimination'`` - use LinBox dense elimination
-+ - ``linbox_dense_elimination'`` - use LinBox dense elimination
-
- - ``'linbox_sparse_elimination'`` - use LinBox sparse elimination
-
-@@ -949,7 +944,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
-
- - ``b`` -- a dense integer vector
-
-- - ``algorithm`` -- (optional) either ``None``, ``'blas_elimination'``,
-+ - ``algorithm`` -- (optional) either ``None``, ``'dense_elimination'``,
- ``'sparse_elimination'``, ``'wiedemann'`` or ``'blackbox'``.
-
- OUTPUT: a pair ``(a, d)`` consisting of
-@@ -968,7 +963,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- sage: b0 = vector((1,1,1,1))
- sage: m._solve_vector_linbox(b0)
- ((-1, -7, -3, -1), 1)
-- sage: m._solve_vector_linbox(b0, 'blas_elimination')
-+ sage: m._solve_vector_linbox(b0, 'dense_elimination')
- ((-1, -7, -3, -1), 1)
- sage: m._solve_vector_linbox(b0, 'sparse_elimination')
- ((-1, -7, -3, -1), 1)
-@@ -984,7 +979,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
-
- TESTS::
-
-- sage: algos = ["default", "blas_elimination", "sparse_elimination",
-+ sage: algos = ["default", "dense_elimination", "sparse_elimination",
- ....: "blackbox", "wiedemann"]
- sage: for i in range(20):
- ....: dim = randint(1, 30)
-@@ -1025,8 +1020,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- linbox.solve(res[0], D, A[0], b[0])
- 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())
-+ elif method == METHOD_DENSE_ELIMINATION:
-+ 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:
-@@ -1081,7 +1076,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
-
- TESTS::
-
-- sage: algos = ["default", "blas_elimination", "sparse_elimination",
-+ sage: algos = ["default", "dense_elimination", "sparse_elimination",
- ....: "blackbox", "wiedemann"]
-
- sage: for _ in range(10):
-@@ -1136,8 +1131,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
- # solve the current row
- 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())
-+ elif algo == METHOD_DENSE_ELIMINATION:
-+ 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/rings/finite_rings/element_givaro.pxd b/src/sage/rings/finite_rings/element_givaro.pxd
-index f0fd7e35..8ae25c5 100644
---- a/src/sage/rings/finite_rings/element_givaro.pxd
-+++ b/src/sage/rings/finite_rings/element_givaro.pxd
-@@ -20,35 +20,35 @@ cdef extern from "givaro/givrandom.h":
- GivRandom GivRandomSeeded "Givaro::GivRandom"(unsigned long seed)
-
- cdef extern from "givaro/gfq.h":
-- ctypedef struct GivaroGfq "Givaro::GFqDom<int>":
-+ cdef cppclass GivaroGfq "Givaro::GFqDom<int>":
- #attributes
- unsigned int one
- unsigned int zero
-
- # methods
-- int (* mul)(int r, int a, int b)
-- int (* add)(int r, int a, int b)
-- int (* sub)(int r, int a, int b)
-- int (* div)(int r, int a, int b)
-- int (* inv)(int r, int x)
-- int (* neg)(int r, int x)
-- int (* mulin)(int a, int b)
-- unsigned int (* characteristic)()
-- unsigned int (* cardinality)()
-- int (* exponent)()
-- int (* random)(GivRandom gen, int res)
-- int (* initi "init")(int res, int64_t e)
-- int (* initd "init")(int res, double e)
-- int (* indeterminate)()
-- int (* convert)(int64_t r, int p)
-- int (* read)(int r, int p)
-- int (* axpyin)(int r, int a, int x)
-- int (* axpy)(int r, int a, int b, int c)
-- int (* axmy)(int r, int a, int b, int c)
-- int (* maxpy)(int r, int a, int b, int c)
-- bint (* isZero)(int e)
-- bint (* isOne)(int e)
-- bint (* isunit)(int e)
-+ int mul(int r, int a, int b)
-+ int add(int r, int a, int b)
-+ int sub(int r, int a, int b)
-+ int div(int r, int a, int b)
-+ int inv(int r, int x)
-+ int neg(int r, int x)
-+ int mulin(int a, int b)
-+ unsigned int characteristic()
-+ unsigned int cardinality()
-+ int exponent()
-+ int random(GivRandom gen, int res)
-+ int initi "init"(int& res, int64_t e)
-+ int initd "init"(int& res, double e)
-+ int indeterminate()
-+ int64_t convert(int64_t& r, int p)
-+ int read(int& r, int p)
-+ int axpyin(int r, int a, int x)
-+ int axpy(int r, int a, int b, int c)
-+ int axmy(int r, int a, int b, int c)
-+ int maxpy(int r, int a, int b, int c)
-+ bint isZero(int e)
-+ bint isOne(int e)
-+ bint isunit(int e)
-
- GivaroGfq *gfq_factorypk "new Givaro::GFqDom<int>" (unsigned int p, unsigned int k)
- GivaroGfq *gfq_factorypkp "new Givaro::GFqDom<int>" (unsigned int p, unsigned int k, intvec poly)
-diff --git a/src/sage/rings/finite_rings/element_givaro.pyx b/src/sage/rings/finite_rings/element_givaro.pyx
-index 0d63a63..1bd35cf 100644
---- a/src/sage/rings/finite_rings/element_givaro.pyx
-+++ b/src/sage/rings/finite_rings/element_givaro.pyx
-@@ -310,7 +310,7 @@ cdef class Cache_givaro(SageObject):
- cdef int seed = current_randstate().c_random()
- cdef int res
- cdef GivRandom generator = GivRandomSeeded(seed)
-- res = self.objectptr.random(generator,res)
-+ self.objectptr.random(generator,res)
- return make_FiniteField_givaroElement(self,res)
-
- cpdef FiniteField_givaroElement element_from_data(self, e):
-@@ -386,16 +386,16 @@ cdef class Cache_givaro(SageObject):
- isinstance(e, long) or is_IntegerMod(e):
- try:
- e_int = e % self.characteristic()
-- res = self.objectptr.initi(res, e_int)
-+ self.objectptr.initi(res, e_int)
- except ArithmeticError:
- raise TypeError("unable to coerce from a finite field other than the prime subfield")
- elif e is None:
- e_int = 0
-- res = self.objectptr.initi(res, e_int)
-+ self.objectptr.initi(res, e_int)
-
- elif isinstance(e, float):
- e_int = int(e) % self.characteristic()
-- res = self.objectptr.initd(res, e_int)
-+ self.objectptr.initd(res, e_int)
-
- elif isinstance(e, str):
- return self.parent(eval(e.replace("^","**"),self.parent.gens_dict()))
-@@ -406,7 +406,7 @@ cdef class Cache_givaro(SageObject):
- ret = self._zero_element
- for i in range(len(e)):
- e_int = e[i] % self.characteristic()
-- res = self.objectptr.initi(res, e_int)
-+ self.objectptr.initi(res, e_int)
- to_add = make_FiniteField_givaroElement(self, res)
- ret = ret + to_add*self.parent.gen()**i
- return ret
-@@ -446,7 +446,7 @@ cdef class Cache_givaro(SageObject):
- ret = self._zero_element
- for i in range(len(e)):
- e_int = e[i] % self.characteristic()
-- res = self.objectptr.initi(res, e_int)
-+ self.objectptr.initi(res, e_int)
- to_add = make_FiniteField_givaroElement(self, res)
- ret = ret + to_add*self.parent.gen()**i
- return ret
-@@ -475,8 +475,8 @@ cdef class Cache_givaro(SageObject):
-
- for i from 0 <= i <= degpol(t):
- c = gtolong(gel(t, i+2))
-- res = self.objectptr.axpyin(res, self.int_to_log(c), x)
-- x = self.objectptr.mul(x,x,g)
-+ self.objectptr.axpyin(res, self.int_to_log(c), x)
-+ self.objectptr.mulin(x,g)
- clear_stack()
- else:
- clear_stack()
-@@ -580,21 +580,10 @@ cdef class Cache_givaro(SageObject):
- sage: 2^7 + 2^4 + 2^2 + 2 + 1
- 151
- """
-- cdef GivaroGfq *k = self.objectptr
-- cdef int ret = k.zero
-- cdef int a = k.indeterminate()
-- cdef int at = k.one
-- cdef int ch = k.characteristic()
-- cdef int t, i
--
-- if n<0 or n>k.cardinality():
-+ if n<0 or n>self.order():
- raise TypeError("n must be between 0 and self.order()")
-
-- for i from 0 <= i < k.exponent():
-- t = k.initi(t, n % ch)
-- ret = k.axpy(ret, t, at, ret)
-- at = k.mul(at,at,a)
-- n //= ch
-+ cdef int ret = self.int_to_log(n)
- return make_FiniteField_givaroElement(self, ret)
-
- def _element_repr(self, FiniteField_givaroElement e):
-@@ -715,7 +704,7 @@ cdef class Cache_givaro(SageObject):
- """
- cdef int r
-
-- r = self.objectptr.axpy(r, a.element, b.element, c.element)
-+ self.objectptr.axpy(r, a.element, b.element, c.element)
- return make_FiniteField_givaroElement(self,r)
-
- def a_times_b_minus_c(self,FiniteField_givaroElement a, FiniteField_givaroElement b, FiniteField_givaroElement c):
-@@ -734,7 +723,7 @@ cdef class Cache_givaro(SageObject):
- """
- cdef int r
-
-- r = self.objectptr.axmy(r, a.element, b.element, c.element, )
-+ self.objectptr.axmy(r, a.element, b.element, c.element, )
- return make_FiniteField_givaroElement(self,r)
-
- def c_minus_a_times_b(self,FiniteField_givaroElement a,
-@@ -754,7 +743,7 @@ cdef class Cache_givaro(SageObject):
- """
- cdef int r
-
-- r = self.objectptr.maxpy(r , a.element, b.element, c.element, )
-+ self.objectptr.maxpy(r , a.element, b.element, c.element, )
- return make_FiniteField_givaroElement(self,r)
-
- def __reduce__(self):
-@@ -1108,7 +1097,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement):
- 2*b^3 + 2*b^2 + 2*b + 1
- """
- cdef int r
-- r = self._cache.objectptr.add(r, self.element ,
-+ self._cache.objectptr.add(r, self.element ,
- (<FiniteField_givaroElement>right).element )
- return make_FiniteField_givaroElement(self._cache,r)
-
-@@ -1125,7 +1114,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement):
- c^2
- """
- cdef int r
-- r = self._cache.objectptr.mul(r, self.element,
-+ self._cache.objectptr.mul(r, self.element,
- (<FiniteField_givaroElement>right).element)
- return make_FiniteField_givaroElement(self._cache,r)
-
-@@ -1147,7 +1136,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement):
- cdef int r
- if (<FiniteField_givaroElement>right).element == 0:
- raise ZeroDivisionError('division by zero in finite field')
-- r = self._cache.objectptr.div(r, self.element,
-+ self._cache.objectptr.div(r, self.element,
- (<FiniteField_givaroElement>right).element)
- return make_FiniteField_givaroElement(self._cache,r)
-
-@@ -1164,7 +1153,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement):
- 2*a^2 + 2*a
- """
- cdef int r
-- r = self._cache.objectptr.sub(r, self.element,
-+ self._cache.objectptr.sub(r, self.element,
- (<FiniteField_givaroElement>right).element)
- return make_FiniteField_givaroElement(self._cache,r)
-
-@@ -1181,7 +1170,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement):
- """
- cdef int r
-
-- r = self._cache.objectptr.neg(r, self.element)
-+ self._cache.objectptr.neg(r, self.element)
- return make_FiniteField_givaroElement(self._cache,r)
-
- def __invert__(FiniteField_givaroElement self):
diff --git a/sagemath-threejs.patch b/sagemath-threejs.patch
deleted file mode 100644
index b6b6f61f775a..000000000000
--- a/sagemath-threejs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/sage/repl/rich_output/display_manager.py
-+++ b/src/sage/repl/rich_output/display_manager.py
-@@ -746,7 +746,7 @@ class DisplayManager(SageObject):
- """
- if online:
- from sage.misc.package import installed_packages
-- version = installed_packages()['threejs'].split('.')[0]
-+ version = 'r100'
- return """
- <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@{0}/build/three.min.js"></script>
- <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@{0}/examples/js/controls/OrbitControls.js"></script>