diff options
author | Antonio Rojas | 2019-07-29 18:56:29 +0000 |
---|---|---|
committer | Antonio Rojas | 2019-07-29 18:56:29 +0000 |
commit | d61282b6e9770852a19e584ea7f1d8f9a9434d0e (patch) | |
tree | 1e2f894dd51ea5c85c63e9779b59d513e27b28a9 | |
parent | a5aed407bb825d6f354e645775a1082135e82698 (diff) | |
download | aur-d61282b6e9770852a19e584ea7f1d8f9a9434d0e.tar.gz |
Kill sage-env
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rw-r--r-- | meataxe-tables.patch | 34 | ||||
-rw-r--r-- | no-sage-env.patch | 302 | ||||
-rw-r--r-- | sagemath-env.patch | 132 | ||||
-rw-r--r-- | sagemath-linbox-1.6.patch | 144 |
6 files changed, 491 insertions, 157 deletions
@@ -1,6 +1,6 @@ pkgbase = sagemath-git pkgdesc = Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab - pkgver = 8.9.beta2.r0.g95ea5f39d9 + pkgver = 8.9.beta4.r0.g1537fe511b pkgrel = 1 url = http://www.sagemath.org arch = x86_64 @@ -72,7 +72,7 @@ pkgbase = sagemath-git optdepends = python2-pkgconfig: to compile cython code optdepends = jmol: 3D plots optdepends = sage-notebook: Flask notebook interface (deprecated) - optdepends = sagemath-doc: Documentation and inline help + optdepends = sagemath-doc: HTML documentation optdepends = python2-igraph: igraph backend for graph theory optdepends = coin-or-cbc: COIN backend for numerical computations optdepends = coin-or-csdp: for computing Lovász theta-function of graphs @@ -96,7 +96,6 @@ pkgbase = sagemath-git optdepends = python2-pycosat: picosat SAT solver optdepends = python2-pip: to install optional packages with sage -pip source = git://git.sagemath.org/sage.git#branch=develop - source = sagemath-env.patch source = package.patch source = latte-count.patch source = sagemath-python3-notebook.patch @@ -106,8 +105,9 @@ pkgbase = sagemath-git 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 = 7177ff3e3f27939d45210e7e69da110441830a6e2279ee7d7e4fca26db99c3f4 sha256sums = 328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842 sha256sums = 1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4 sha256sums = e554cdf689100c787a5fbcb7fe281cd68bef081e08bd58df8be1d113a4665d7e @@ -116,14 +116,16 @@ pkgbase = sagemath-git sha256sums = 4c6df9e4e5a7b29ecf6189eda3e5a79f69b6e1b4d29c1b9559663149b8c0af96 sha256sums = 961bfb5694b67d425d21240d71490cb71714b5207c23448c89be0966512ff8f9 sha256sums = a42f3b152b1aedb8abf16bc70971419919d1fe30328574e7fef8305f9d07d938 - sha256sums = 81fc39e39e8508f742ccc784efd0492fd04474cee75edf7bd3cbea43edd49b2e + sha256sums = 96ab7783d8758a5237b26cf096be8fb03df4e88dc6d08bbd94dff7e18c91314e + sha256sums = 8305de73d7a3c68ceaa001866ff933c4fa3a0706700ade2e25046f58270bc6db + sha256sums = 657750f0d856d936143c352acb00db7c4852e413315e216fe68c9f35515253fb pkgname = sagemath-git optdepends = cython2: to compile cython code optdepends = python2-pkgconfig: to compile cython code optdepends = jmol: 3D plots optdepends = sage-notebook: Flask notebook interface (deprecated) - optdepends = sagemath-doc: Documentation and inline help + optdepends = sagemath-doc: HTML documentation optdepends = python2-igraph: igraph backend for graph theory optdepends = coin-or-cbc: COIN backend for numerical computations optdepends = coin-or-csdp: for computing Lovász theta-function of graphs @@ -7,7 +7,7 @@ pkgbase=sagemath-git pkgname=(sagemath-git sagemath-jupyter-git) -pkgver=8.9.beta2.r0.g95ea5f39d9 +pkgver=8.9.beta4.r0.g1537fe511b pkgrel=1 pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab" arch=(x86_64) @@ -20,7 +20,7 @@ depends=(ipython2 palp brial cliquer maxima-ecl gfan sympow nauty python2-rpy2 p iml libgiac libhomfly libbraiding symmetrica 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' + 'sagemath-doc: HTML documentation' 'python2-igraph: igraph backend for graph theory' 'coin-or-cbc: COIN backend for numerical computations' 'coin-or-csdp: for computing Lovász theta-function of graphs' 'buckygen: for generating fullerene graphs' 'plantri: for generating some classes of graphs' 'benzene: for generating fusenes and benzenoids' 'ffmpeg: to export animations to video' 'imagemagick: to show animations' @@ -35,7 +35,6 @@ optdepends=('cython2: to compile cython code' 'python2-pkgconfig: to compile cyt makedepends=(cython2 boost ratpoints python2-jinja coin-or-cbc sirocco mcqd coxeter bliss tdlib python2-pkgconfig shared_meataxe libfes primecount git) source=(git://git.sagemath.org/sage.git#branch=develop - sagemath-env.patch package.patch latte-count.patch sagemath-python3-notebook.patch @@ -44,9 +43,10 @@ source=(git://git.sagemath.org/sage.git#branch=develop sagemath-cremona.patch sagemath-singular-4.1.2.patch sagemath-ecl-sigfpe.patch - sagemath-linbox-1.6.patch) + sagemath-linbox-1.6.patch + meataxe-tables.patch + no-sage-env.patch) sha256sums=('SKIP' - '7177ff3e3f27939d45210e7e69da110441830a6e2279ee7d7e4fca26db99c3f4' '328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842' '1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4' 'e554cdf689100c787a5fbcb7fe281cd68bef081e08bd58df8be1d113a4665d7e' @@ -55,7 +55,9 @@ sha256sums=('SKIP' '4c6df9e4e5a7b29ecf6189eda3e5a79f69b6e1b4d29c1b9559663149b8c0af96' '961bfb5694b67d425d21240d71490cb71714b5207c23448c89be0966512ff8f9' 'a42f3b152b1aedb8abf16bc70971419919d1fe30328574e7fef8305f9d07d938' - '81fc39e39e8508f742ccc784efd0492fd04474cee75edf7bd3cbea43edd49b2e') + '96ab7783d8758a5237b26cf096be8fb03df4e88dc6d08bbd94dff7e18c91314e' + '8305de73d7a3c68ceaa001866ff933c4fa3a0706700ade2e25046f58270bc6db' + '657750f0d856d936143c352acb00db7c4852e413315e216fe68c9f35515253fb') pkgver() { cd sage @@ -68,8 +70,6 @@ prepare(){ # Arch-specific patches # assume all optional packages are installed patch -p0 -i ../package.patch -# set env variables - patch -p0 -i ../sagemath-env.patch # don't list optional packages when running tests patch -p0 -i ../test-optional.patch # use correct latte-count binary name @@ -88,6 +88,10 @@ prepare(){ 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/* @@ -119,7 +123,7 @@ package_sagemath-git() { mkdir -p "$pkgdir"/usr/bin cp bin/{sage,math-readline} "$pkgdir"/usr/bin - for _i in cachegrind callgrind cleaner coverage coverageall cython env eval fixdoctests grep grepdoc inline-fortran ipynb2rst \ + for _i in cachegrind callgrind cleaner coverage coverageall cython eval fixdoctests grep grepdoc inline-fortran ipynb2rst \ ipython massif maxima.lisp native-execute notebook num-threads.py omega open preparse python rst2sws rst2txt run \ run-cython runtests startuptime.py sws2rst valgrind version.sh do diff --git a/meataxe-tables.patch b/meataxe-tables.patch new file mode 100644 index 000000000000..57d42c35219f --- /dev/null +++ b/meataxe-tables.patch @@ -0,0 +1,34 @@ +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 new file mode 100644 index 000000000000..d276250064e4 --- /dev/null +++ b/no-sage-env.patch @@ -0,0 +1,302 @@ +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-env.patch b/sagemath-env.patch deleted file mode 100644 index e6c218bd1563..000000000000 --- a/sagemath-env.patch +++ /dev/null @@ -1,132 +0,0 @@ ---- src/bin/sage-env.orig 2015-01-06 10:46:04.469687605 +0100 -+++ src/bin/sage-env 2015-01-06 10:49:59.547762019 +0100 -@@ -111,30 +111,6 @@ - } - - --# New value for SAGE_ROOT: either SAGE_ROOT (if given) --# or a guessed value based on pwd. --if [ -n "$SAGE_ROOT" ]; then -- NEW_SAGE_ROOT="$SAGE_ROOT" --elif [ -f sage -a -d build ]; then -- NEW_SAGE_ROOT="." --elif [ -f ../../sage -a -d ../../build ]; then -- NEW_SAGE_ROOT="../.." --else -- # No idea what SAGE_ROOT should be... -- echo >&2 "Error: You must set the SAGE_ROOT environment variable or run this" -- echo >&2 "script from the SAGE_ROOT or SAGE_ROOT/local/bin/ directory." -- return 1 --fi -- --# Make NEW_SAGE_ROOT absolute --NEW_SAGE_ROOT=`cd "$NEW_SAGE_ROOT" && pwd -P` -- --# Warn if NEW_SAGE_ROOT does not equal the old SAGE_ROOT --if [ "$SAGE_ROOT" != "$NEW_SAGE_ROOT" -a -n "$SAGE_ROOT" ]; then -- echo >&2 "Warning: overwriting SAGE_ROOT environment variable:" -- echo >&2 "Old SAGE_ROOT=$SAGE_ROOT" -- echo >&2 "New SAGE_ROOT=$NEW_SAGE_ROOT" --fi - - - # Don't execute the commands more than once for the same version of -@@ -163,35 +163,9 @@ - export SAGE_ENV_SOURCED=$SAGE_ENV_VERSION - - export SAGE_ROOT="$NEW_SAGE_ROOT" -+export SAGE_LOCAL='/usr' -+export SAGE_SCRIPTS_DIR='/usr/bin' - -- --# sage-env must know where the Sage's script files are. --# Note that SAGE_SCRIPTS_DIR is only used here, so it does not need to --# be exported. --if [ -z "$SAGE_SCRIPTS_DIR" ]; then -- if [ -f "$SAGE_ROOT/src/bin/sage-env-config" ]; then -- # Prefer src/bin/sage-env-config because that's directly -- # generated by configure (see Trac #27422) -- SAGE_SCRIPTS_DIR="$SAGE_ROOT/src/bin" -- elif [ -n "$SAGE_LOCAL" ] && [ -f "$SAGE_LOCAL/bin/sage-env-config" ]; then -- SAGE_SCRIPTS_DIR="$SAGE_LOCAL/bin" -- else -- echo >&2 "Error: You must set either the SAGE_LOCAL or SAGE_SCRIPTS_DIR environment variable to run this" -- return 1 -- fi --elif [ ! -f "$SAGE_SCRIPTS_DIR/sage-env-config" ]; then -- echo >&2 "Error: SAGE_SCRIPTS_DIR is set to a bad value:" -- echo >&2 "SAGE_SCRIPTS_DIR=$SAGE_SCRIPTS_DIR" -- echo >&2 "You must correct it or erase it and rerun this script" -- return 1 --fi -- --# Set environment variables (like SAGE_LOCAL) depending on ./configure --. "$SAGE_SCRIPTS_DIR/sage-env-config" --if [ $? -ne 0 ]; then -- echo >&2 "Error: failed to source $SAGE_SCRIPTS_DIR/sage-env-config" -- return 1 --fi - - # The compilers are set in order of priority by - # 1) environment variables -@@ -287,8 +287,8 @@ - export SAGE_SPKG_INST="$SAGE_LOCAL/var/lib/sage/installed" - export SAGE_SPKG_SCRIPTS="$SAGE_LOCAL/var/lib/sage/scripts" - export SAGE_LOGS="$SAGE_ROOT/logs/pkgs" --export SAGE_SRC="$SAGE_ROOT/src" --export SAGE_DOC_SRC="$SAGE_SRC/doc" -+export SAGE_SRC="$SAGE_LOCAL/lib/python2.7/site-packages" -+export SAGE_DOC_SRC="$SAGE_SHARE/doc/sage" - export SAGE_DOC="$SAGE_SHARE/doc/sage" - - if [ -z "${SAGE_ORIG_PATH_SET}" ]; then -@@ -400,28 +400,8 @@ - export SAGE_STARTUP_FILE - fi - -+export LIBMTX="$DOT_SAGE/meataxe" -+[[ -d $LIBMTX ]] || mkdir -p $LIBMTX # Create meataxe data dir --if [ "$PYTHON_EGG_CACHE" = "" ]; then -- PYTHON_EGG_CACHE="$DOT_SAGE/.python-eggs" -- export PYTHON_EGG_CACHE --fi -- --# Set PYTHONUSERBASE to avoid picking up non-Sage versions of --# Matplotlib, numpy, etc. See http://trac.sagemath.org/ticket/19612. --# --# For more history (it used to be PYTHONNOUSERSITE=yes which killed --# the ability to do "sage -pip install PACKAGE --user"), see --# http://trac.sagemath.org/ticket/14243 and --# http://trac.sagemath.org/ticket/18955. -- --if [ "$PYTHONUSERBASE" = "" ]; then -- PYTHONUSERBASE="$DOT_SAGE/local" -- export PYTHONUSERBASE --fi -- --if [ -n "$PYTHONHOME" ]; then -- >&2 echo "Warning: PYTHONHOME must not be set when running Sage, clearing env..." -- unset PYTHONHOME --fi - - LDFLAGS="-L$SAGE_LOCAL/lib -Wl,-rpath,$SAGE_LOCAL/lib $LDFLAGS" - export LDFLAGS -@@ -486,8 +486,6 @@ - fi - fi - --export MAXIMA_PREFIX="$SAGE_LOCAL" --export MAXIMA_USERDIR="$DOT_SAGE/maxima" - - PERL5LIB="$SAGE_LOCAL/lib/perl5:$PERL5LIB" && export PERL5LIB - -@@ -598,9 +598,6 @@ - LD_LIBRARY_PATH="$SAGE_LOCAL/bin:$LD_LIBRARY_PATH" && export LD_LIBRARY_PATH - fi - --# See trac 7186 -- this is needed if ecl is moved --ECLDIR="$SAGE_LOCAL/lib/ecl/" && export ECLDIR -- - # Handle parallel building/testing/... - # See Trac Ticket #12016 - # First, figure out the right values for SAGE_NUM_THREADS (default diff --git a/sagemath-linbox-1.6.patch b/sagemath-linbox-1.6.patch index bb2d0116aadf..86991d63c26c 100644 --- a/sagemath-linbox-1.6.patch +++ b/sagemath-linbox-1.6.patch @@ -50,6 +50,27 @@ index f3a7ce3..8bf62f1 100644 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 @@ -147,10 +168,74 @@ index 35a3fa0..fb0e0dc 100644 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..132140f 100644 +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, @@ -160,6 +245,22 @@ index 7fa386e..132140f 100644 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 @@ -356,10 +457,33 @@ index 6a5e164..230a16e 100644 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..dd3a2f0 100644 +index 241167a..9b4184f 100644 --- a/src/sage/matrix/matrix_modn_sparse.pyx +++ b/src/sage/matrix/matrix_modn_sparse.pyx -@@ -882,7 +882,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -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 @@ -368,7 +492,7 @@ index 241167a..dd3a2f0 100644 - ``'linbox_sparse_elimination'`` - use LinBox sparse elimination -@@ -949,7 +949,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -949,7 +944,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - ``b`` -- a dense integer vector @@ -377,7 +501,7 @@ index 241167a..dd3a2f0 100644 ``'sparse_elimination'``, ``'wiedemann'`` or ``'blackbox'``. OUTPUT: a pair ``(a, d)`` consisting of -@@ -968,7 +968,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -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) @@ -386,7 +510,7 @@ index 241167a..dd3a2f0 100644 ((-1, -7, -3, -1), 1) sage: m._solve_vector_linbox(b0, 'sparse_elimination') ((-1, -7, -3, -1), 1) -@@ -984,7 +984,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -984,7 +979,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): TESTS:: @@ -395,7 +519,7 @@ index 241167a..dd3a2f0 100644 ....: "blackbox", "wiedemann"] sage: for i in range(20): ....: dim = randint(1, 30) -@@ -1025,8 +1025,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -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()) @@ -406,7 +530,7 @@ index 241167a..dd3a2f0 100644 elif method == METHOD_SPARSE_ELIMINATION: linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) elif method == METHOD_BLACKBOX: -@@ -1081,7 +1081,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -1081,7 +1076,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): TESTS:: @@ -415,7 +539,7 @@ index 241167a..dd3a2f0 100644 ....: "blackbox", "wiedemann"] sage: for _ in range(10): -@@ -1136,8 +1136,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): +@@ -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]) @@ -491,7 +615,7 @@ index f0fd7e35..8ae25c5 100644 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 3739020..a7f9c2f 100644 +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): |