[arch-commits] Commit in sagemath/trunk (11 files)

Antonio Rojas arojas at archlinux.org
Thu Oct 20 05:56:08 UTC 2016


    Date: Thursday, October 20, 2016 @ 05:56:07
  Author: arojas
Revision: 192642

Update to 7.4, split jupyter kernel

Modified:
  sagemath/trunk/PKGBUILD
  sagemath/trunk/env.patch
  sagemath/trunk/is-package-installed.patch
  sagemath/trunk/jupyter-path.patch
  sagemath/trunk/package.patch
  sagemath/trunk/sagemath-singular4.patch
Deleted:
  sagemath/trunk/anal.h
  sagemath/trunk/clean.patch
  sagemath/trunk/linbox-1.4.patch
  sagemath/trunk/paths.patch
  sagemath/trunk/sagemath-ipython5.patch

----------------------------+
 PKGBUILD                   |   88 +++---
 anal.h                     |   65 -----
 clean.patch                |   24 -
 env.patch                  |   73 +----
 is-package-installed.patch |   80 ------
 jupyter-path.patch         |    9 
 linbox-1.4.patch           |  470 ------------------------------------
 package.patch              |   37 ++
 paths.patch                |   13 -
 sagemath-ipython5.patch    |  548 -------------------------------------------
 sagemath-singular4.patch   |  137 ++++++++--
 11 files changed, 207 insertions(+), 1337 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-10-20 05:23:09 UTC (rev 192641)
+++ PKGBUILD	2016-10-20 05:56:07 UTC (rev 192642)
@@ -7,28 +7,27 @@
 # Contributor: Stefan Husmann <stefan-husmann at t-online dot de>
 # Special thanks to Nareto for moving the compile from the .install to the PKGBUILD
 
-pkgname=sagemath
-pkgver=7.3
-pkgrel=5
+pkgbase=sagemath
+pkgname=(sagemath sagemath-jupyter)
+pkgver=7.4
+pkgrel=1
 pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab"
 arch=(i686 x86_64)
 url="http://www.sagemath.org"
 license=(GPL)
-depends=(ipython2 cysignals ppl palp brial singular cliquer maxima-ecl gfan sympow tachyon python2-rpy2 nauty
+depends=(ipython2 cysignals ppl palp brial singular cliquer maxima-ecl gfan sympow tachyon python2-rpy2 nauty # fpylll
   python2-matplotlib python2-scipy python2-sympy python2-networkx python2-pillow libgap flintqs lcalc lrcalc arb
   eclib gmp-ecm zn_poly gd python2-cvxopt pynac linbox rubiks pari-galdata pari-seadata-small planarity rankwidth
   sage-data-combinatorial_designs sage-data-elliptic_curves sage-data-graphs sage-data-polytopes_db sage-data-conway_polynomials)
 optdepends=('cython2: to compile cython code' 'python2-pkgconfig: to compile cython code'
   'jmol: 3D plots' 'sage-notebook: Browser-based (flask) notebook interface'
-  'sagemath-doc: Documentation and inline help' 'ipython2-notebook: Jupyter notebook interface' 'mathjax: Jupyter notebook interface'
+  'sagemath-doc: Documentation and inline help' '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'
   'modular_decomposition: modular decomposition of graphs' 'ffmpeg: to export animations to video' 'imagemagick: to show animations'
   'coxeter3: Coxeter groups implementation' 'cryptominisat: SAT solver' 'gap-data: for computing Galois groups'
   'lrs: Algorithms for linear reverse search used in game theory and for computing volume of polytopes'
-  'libhomfly: for computing the homfly polynomial of links' 'libbraiding: for computing in braid groups'
-  'python2-igraph: igraph backend for graph theory' 'sage-notebook-exporter: convert flask notebooks to jupyter'
-  'jupyter-notebook: Jupyter notebook interface')
+  'libhomfly: for computing the homfly polynomial of links' 'libbraiding: for computing in braid groups')
 makedepends=(cython2 boost ratpoints symmetrica fflas-ffpack python2-jinja coin-or-cbc libhomfly libbraiding
   mcqd coxeter3 cryptominisat modular_decomposition bliss-graphs tdlib python2-pkgconfig meataxe) # libfes
 conflicts=(sage-mathematics)
@@ -35,27 +34,21 @@
 replaces=(sage-mathematics)
 provides=(sage-mathematics)
 source=("$pkgname-$pkgver.tar.gz::https://github.com/sagemath/sage/archive/$pkgver.tar.gz"
-        anal.h env.patch paths.patch clean.patch skip-check.patch cython-sys-path.patch is-package-installed.patch package.patch
-        disable-fes.patch jupyter-path.patch test-optional.patch python-2.7.11.patch linbox-1.4.patch ecm-7.patch
-        sagemath-ipython5.patch increase-rtol.patch sagemath-singular4.patch)
-md5sums=('cb2aed3d24de7b2228a9b34e81a27870'
-         'a906a180d198186a39820b0a2f9a9c63'
-         'd4d3c235c99b2bc92dde9f6e53935a8d'
-         '45b84ae5579273196df44f7464a01a30'
-         '6d9ae0978ce6a05a0da2cafdfb178a09'
+        env.patch skip-check.patch cython-sys-path.patch is-package-installed.patch package.patch disable-fes.patch
+        jupyter-path.patch test-optional.patch python-2.7.11.patch ecm-7.patch increase-rtol.patch sagemath-singular4.patch)
+md5sums=('8311ee35a309dbc668b5148795211254'
+         'b902f9e21dd13c2c9efea4803f003501'
          '6cafcb381437d4751fd55b25d5090987'
          'a1bcdd3fe620dbae60ed8b0e98b2ece7'
-         'b3ecf7c93a90e0afccbc686af9fdc85f'
-         '9ba81f717ffd4e20b8b2f2a318307488'
+         '5dca842e4440e4ef235ae18c1b1f20e3'
+         '493a9e0eae9b2ef87544b42785ae11ea'
          '06a67e611d10aa2381efe1f08ea4ffd9'
-         '16b529194c6105c3364127bd8f1efa83'
+         '0d88207416dfb98a17bf8886257d9a02'
          'cdcabd475b80afe0534a5621e972736e'
          'ef927896f2071b442b1d07d7e69f5f3a'
-         'a276f0fbbff6eade409d0569ebd728d4'
          '0c9a57d35de80c2cd418ebec912efbbb'
-         '2bcaca7284dda963ebdc17daf78cf6c9'
          '39d3fded716d2a7ae0ab03e0896b7497'
-         '803627177ff5c28e1e73f2678d15c4df')
+         '4bd7305e8b69add8356f9751470cf587')
 
 prepare(){
   cd sage-$pkgver
@@ -63,24 +56,16 @@
 # Arch-specific patches
 # assume all optional packages are installed
   patch -p0 -i ../package.patch
-# find L.h header
-  sed -e 's|libLfunction|Lfunction|' -i src/sage/libs/lcalc/lcalc_sage.h
 # don't try to link against libpng 1.2
   sed -e 's|png12|png|' -i src/module_list.py
 # set env variables
   patch -p0 -i ../env.patch
-# fix paths in python imports
-  patch -p0 -i ../paths.patch
-# don't try to remove installed files
-  patch -p0 -i ../clean.patch
 # skip checking build status
   patch -p0 -i ../skip-check.patch
 # supress warning about GAP install dir
   sed -e "s|gapdir = os.path.join(SAGE_LOCAL, 'gap', 'latest')|gapdir = '/usr/lib/gap'|" -i src/sage/libs/gap/util.pyx 
-# find bliss headers
-  sed -e 's|graph.hh|bliss/graph.hh|' -i src/sage/graphs/bliss.pyx
 # don't list optional packages when running tests
-  patch -p0 -i ../test-optional.patch
+# patch -p0 -i ../test-optional.patch
 # set jupyter path
   patch -p0 -i ../jupyter-path.patch
 # fix timeit with Python 2.7.11
@@ -90,7 +75,7 @@
 # fix regressions with ECM 7
   patch -p1 -i ../ecm-7.patch
 # increase numerical tolerance, needed by scipy 0.18
-  patch -p1 -i ../increase-rtol.patch
+# patch -p1 -i ../increase-rtol.patch
 
 # Upstream patches  
 # fix build against libfes 0.2 http://trac.sagemath.org/ticket/15209
@@ -97,10 +82,6 @@
 #  patch -p0 -i ../fes02.patch
 # disable fes module, fails to compile
   patch -p0 -i ../disable-fes.patch
-# port to new givaro/fflas-ffpack/linbox http://trac.sagemath.org/ticket/17635
-  patch -p1 -i ../linbox-1.4.patch
-# port to ipython 5.0 https://trac.sagemath.org/ticket/21006
-  patch -p1 -i ../sagemath-ipython5.patch
 # replace is_package_installed usage http://trac.sagemath.org/ticket/20377
   patch -p1 -i ../is-package-installed.patch
 # port to Singular 4 https://trac.sagemath.org/ticket/17254
@@ -111,11 +92,7 @@
   sed -e 's|cython {OPT}|cython2 {OPT}|' -e 's|python setup.py|python2 setup.py|' -i src/sage/misc/cython.py
   sed -e 's|exec ipython|exec ipython2|' -e 's|cygdb|cygdb2|' -i src/bin/sage
   sed -e "s|'cython'|'cython2'|" -i src/bin/sage-cython
-  sed -e 's|python -c|python2 -c|' -i src/Makefile
-
-# copy required private PARI header
-  mkdir -p src/pari
-  cp "$srcdir"/anal.h src/pari/anal.h
+  sed -e 's|python -c|python2 -c|' -i src/generate_py_source.mk
 }
 
 
@@ -126,19 +103,15 @@
   export SAGE_SRC="$PWD"
   export CC=gcc
 
-  make sage/libs/pari/auto_gen.pxi
-  make sage/ext/interpreters/__init__.py
-
   python2 setup.py build
 }
 
-package() {
+package_sagemath() {
+  optdepends+=('sagemath-jupyter: Jupyter kernel')
   cd sage-$pkgver/src
 
-  export SAGE_ROOT="/usr"
-  export SAGE_LOCAL="$SAGE_ROOT"
-  export SAGE_SRC="$PWD"
-  export CC=gcc
+  export SAGE_ROOT="$PWD"
+  export SAGE_LOCAL="/usr"
   export JUPYTER_PATH="$pkgdir"/usr/share/jupyter
 
   python2 setup.py install --root="$pkgdir" --optimize=1 --skip-build
@@ -161,4 +134,21 @@
 
 # Remove sage_setup
   rm -r "$pkgdir"/usr/lib/python2.7/site-packages/sage_setup
+
+# Split jupyter kernel
+  rm -r "$pkgdir"/usr/share/jupyter
 }
+
+package_sagemath-jupyter() {
+  pkgdesc='Jupyter kernel for SageMath'
+  depends=(sagemath python2-ipykernel jupyter-notebook mathjax thebe)
+  optdepends=('sage-notebook-exporter: convert flask notebooks to Jupyter')
+
+  cd sage-$pkgver/src
+
+  export SAGE_ROOT="$PWD"
+  export SAGE_LOCAL="/usr"
+  export JUPYTER_PATH="$pkgdir"/usr/share/jupyter
+
+  python2 -c "from sage.repl.ipython_kernel.install import SageKernelSpec; SageKernelSpec.update()"
+}

Deleted: anal.h
===================================================================
--- anal.h	2016-10-20 05:23:09 UTC (rev 192641)
+++ anal.h	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,65 +0,0 @@
-/* Copyright (C) 2000  The PARI group.
-
-This file is part of the PARI/GP package.
-
-PARI/GP is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation. It is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY WHATSOEVER.
-
-Check the License for details. You should have received a copy of it, along
-with the package; see the file 'COPYING'. If not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
-
-/*************************************************************************/
-/*                                                                       */
-/*                 Declarations specific to the analyzer                 */
-/*                                                                       */
-/*************************************************************************/
-BEGINEXTERN
-/* GP control structures */
-#define EXPR_WRAP(code, call) \
-{ GEN z; GEN __E = code; \
-  push_lex(gen_0, __E); z = call; pop_lex(1); return z; }
-#define EXPR_ARG __E, &gp_eval
-#define EXPR_ARGUPTO __E, &gp_evalupto
-#define EXPR_ARGBOOL __E, &gp_evalbool
-
-/* functions */
-void   changevalue(entree *ep, GEN val);
-void    freeep(entree *ep);
-void   pari_fill_hashtable(entree **table, entree *ep);
-
-void compile_err(const char *msg, const char *str);
-void compile_varerr(const char *str);
-
-#ifdef STACK_CHECK
-extern THREAD void *PARI_stack_limit;
-#endif
-
-extern entree  **varentries;
-
-struct node_loc
-{
-  const char *start,*end;
-};
-
-union token_value { long val; };
-
-int pari_lex(union token_value *yylval, struct node_loc *yylloc, char **lex);
-int pari_parse(char **lex);
-entree* fetch_entry(const char *s, long len);
-entree* fetch_member(const char *s, long len);
-void pari_close_parser(void);
-void pari_close_compiler(void);
-void pari_close_evaluator(void);
-void pari_init_parser(void);
-void pari_init_compiler(void);
-void pari_init_evaluator(void);
-void optimizenode(long n);
-void push_frame(GEN C, long lpc, long flag);
-const char * closure_func_err(void);
-GEN  gp_closure(long n);
-long eval_mnemonic(GEN str, const char *tmplate);
-
-ENDEXTERN

Deleted: clean.patch
===================================================================
--- clean.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ clean.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,24 +0,0 @@
---- src/setup.py.orig	2014-11-16 10:34:05.521441703 +0100
-+++ src/setup.py	2014-11-16 10:34:16.054812569 +0100
-@@ -620,21 +620,6 @@
- 
- 
- #########################################################
--### Clean
--#########################################################
--
--print('Cleaning up stale installed files....')
--t = time.time()
--from sage_setup.clean import clean_install_dir
--output_dirs = SITE_PACKAGES + glob.glob(os.path.join(SAGE_SRC, 'build', 'lib*'))
--for output_dir in output_dirs:
--    print('- cleaning {0}'.format(output_dir))
--    clean_install_dir(output_dir, python_packages, python_modules,
--            ext_modules, python_data_files)
--print('Finished cleaning, time: %.2f seconds.' % (time.time() - t))
--
--
--#########################################################
- ### Install also Jupyter kernel spec
- #########################################################
- 

Modified: env.patch
===================================================================
--- env.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ env.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -41,48 +41,18 @@
 -fi
 +NEW_SAGE_ROOT="/usr"
  
- # Don't execute the commands more than once for the same version of
- # sage-env.  Check this after checking the validity of SAGE_ROOT, but
-@@ -245,21 +211,13 @@
+ # Display the Sage startup banner, used in src/bin/sage
+ sage_banner() {
+@@ -187,7 +187,7 @@
+ 
+ # SAGE_LOCAL is the installation prefix and can be customized
+ if [ -z "$SAGE_LOCAL" ]; then
+-    export SAGE_LOCAL="$SAGE_ROOT/local"
++    export SAGE_LOCAL="/usr"
  fi
  
- # Setting Sage-related location environment variables.
--export SAGE_LOCAL="$SAGE_ROOT/local"
--export SAGE_ETC="$SAGE_LOCAL/etc"
--export SAGE_SHARE="$SAGE_LOCAL/share"
--export SAGE_EXTCODE="$SAGE_SHARE/sage/ext"
--export SAGE_SPKG_INST="$SAGE_LOCAL/var/lib/sage/installed"
--export SAGE_LOGS="$SAGE_ROOT/logs/pkgs"
--export SAGE_SRC="$SAGE_ROOT/src"
--export SAGE_DOC_SRC="$SAGE_SRC/doc"
--export SAGE_DOC="$SAGE_SHARE/doc/sage"
--
--if [ -z "${SAGE_ORIG_PATH_SET}" ]; then 
--    SAGE_ORIG_PATH=$PATH && export SAGE_ORIG_PATH 
--    SAGE_ORIG_PATH_SET=True && export SAGE_ORIG_PATH_SET 
--fi 
--export PATH="$SAGE_ROOT/build/bin:$SAGE_SRC/bin:$SAGE_LOCAL/bin:$PATH"
-+export SAGE_LOCAL="$SAGE_ROOT"
-+export SAGE_ETC="/etc/sage"
-+export SAGE_SHARE="$SAGE_LOCAL/share/sage"
-+export SAGE_EXTCODE="$SAGE_SHARE/ext"
-+export SAGE_SRC="$SAGE_SHARE/source"
-+export SAGE_DOC_SRC="/usr/share/doc/sage"
-+export SAGE_DOC="/usr/share/doc/sage"
- 
- if [ "$SAGE_BANNER" = "bare" ]; then
-     export SAGE_BANNER_TEXT=$(cat "$SAGE_ROOT/VERSION.txt")
-@@ -319,9 +277,6 @@
- GPHELP="$SAGE_LOCAL/bin/gphelp" && export GPHELP
- GPDOCDIR="$SAGE_LOCAL/share/pari/doc" && export GPDOCDIR
- 
--SINGULARPATH="$SAGE_LOCAL/share/singular" && export SINGULARPATH
--SINGULAR_EXECUTABLE="$SAGE_LOCAL/bin/Singular" && export SINGULAR_EXECUTABLE
--
- if [ -z "$SAGE_REPO_ANONYMOUS" ]; then
-     SAGE_REPO_ANONYMOUS="git://trac.sagemath.org/sage.git"
-     export SAGE_REPO_ANONYMOUS
-@@ -364,10 +319,10 @@
+ # sage-env must know where the Sage's script files are
+@@ -374,6 +337,9 @@
      export SAGE_STARTUP_FILE
  fi
  
@@ -89,24 +59,11 @@
 +export LIBMTX="$DOT_SAGE/meataxe"
 +[[ -d $LIBMTX ]] || mkdir $LIBMTX # Create meataxe data dir
 +
--IPYTHONDIR=`find "$SAGE_SPKG_INST" -name "ipython*"`
--if [ -n "$IPYTHONDIR" ]; then
--    export IPYTHONDIR="$DOT_SAGE/${IPYTHONDIR##*/}"
--fi
-+export IPYTHONDIR="$DOT_SAGE/ipython"
- 
- if [ "$PYTHON_EGG_CACHE" = "" ]; then
-     PYTHON_EGG_CACHE="$DOT_SAGE/.python-eggs"
-@@ -453,8 +400,6 @@
-         fi
-     fi
- fi
--MAXIMA_PREFIX="$SAGE_ROOT/local" && export MAXIMA_PREFIX
--
- PERL5LIB="$SAGE_LOCAL/lib/perl5:$PERL5LIB" && export PERL5LIB
- 
- ############ architecture flags
-@@ -622,9 +567,6 @@
+ if [ -z "$IPYTHONDIR" ]; then
+     # We hardcode a version number in the directory name. The idea is
+     # that we keep using the same version number as long as that is
+
+@@ -629,9 +608,6 @@
      LD_LIBRARY_PATH="$SAGE_LOCAL/bin:$LD_LIBRARY_PATH" && export LD_LIBRARY_PATH
  fi
  

Modified: is-package-installed.patch
===================================================================
--- is-package-installed.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ is-package-installed.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -10,7 +10,7 @@
  from sage.env import SAGE_SHARE
  from sage.misc.all import walltime
  
-@@ -828,7 +827,7 @@ class MiniCremonaDatabase(SQLDatabase):
+@@ -824,7 +823,7 @@ class MiniCremonaDatabase(SQLDatabase):
              if N < self.largest_conductor():
                  message = "There is no elliptic curve with label " + label \
                      + " in the database"
@@ -19,7 +19,7 @@
                  message = "There is no elliptic curve with label " + label \
                      + " in the currently available databases"
              else:
-@@ -1677,7 +1676,7 @@ def CremonaDatabase(name=None,mini=None,set_global=None):
+@@ -1673,7 +1672,7 @@ def CremonaDatabase(name=None,mini=None,set_global=None):
      if name is None and not set_global:
          return _db
      if set_global and name is None:
@@ -103,7 +103,7 @@
 index 252984f..ce19682 100644
 --- a/src/sage/graphs/generic_graph.py
 +++ b/src/sage/graphs/generic_graph.py
-@@ -7856,7 +7856,6 @@ class GenericGraph(GenericGraph_pyx):
+@@ -7858,7 +7858,6 @@ class GenericGraph(GenericGraph_pyx):
             sage: abs(flow_ff-flow_igraph) < 0.00001         # optional python_igraph
             True
          """
@@ -111,7 +111,7 @@
          self._scream_if_not_simple(allow_loops=True)
          if vertex_bound and algorithm in ["FF", "igraph"]:
              raise ValueError("This method does not support both " +
-@@ -7874,10 +7873,12 @@ class GenericGraph(GenericGraph_pyx):
+@@ -7876,10 +7875,12 @@ class GenericGraph(GenericGraph_pyx):
          if algorithm is None:
              if vertex_bound:
                  algorithm = "LP"
@@ -127,64 +127,6 @@
  
          if (algorithm == "FF"):
              return self._ford_fulkerson(x,y, value_only=value_only, integer=integer, use_edge_labels=use_edge_labels)
-@@ -20251,17 +20252,22 @@ class GenericGraph(GenericGraph_pyx):
-             Subgroup of (Permutation Group with generators [(0,7)(1,4)(2,3)(6,8)]) generated by [(0,7)(1,4)(2,3)(6,8)]]
- 
-         """
--        from sage.misc.package import is_package_installed
-+        has_bliss=True
-+        try:
-+            from sage.graphs.bliss import automorphism_group
-+        except ImportError:
-+            has_bliss=False
-+
-         if (algorithm == 'bliss'           or   # explicit choice from the user; or
-             (algorithm is None             and  # by default
-              not edge_labels               and
--             is_package_installed('bliss'))):
-+             has_bliss)):
-+
-+            if (not has_bliss):
-+                raise NotImplementedError("you need to install bliss or set algorithm=sage to use this command")
-+
-             if edge_labels:
-                 raise ValueError("bliss cannot be used when edge_labels is True")
--            try:
--                from sage.graphs.bliss import automorphism_group
--            except ImportError:
--                raise ImportError("You must install the 'bliss' package to run this command.")
- 
-             A = automorphism_group(self, partition)
- 
-@@ -20903,17 +20909,22 @@ class GenericGraph(GenericGraph_pyx):
-             True
- 
-         """
--        from sage.misc.package import is_package_installed
-+        has_bliss=True
-+        try:
-+            from sage.graphs.bliss import canonical_form
-+        except ImportError:
-+            has_bliss=False
-+
-         if (algorithm == 'bliss'           or  # explicit request; or
-             (algorithm is None             and # default choice
--             is_package_installed('bliss') and
-+	     has_bliss                     and
-              not edge_labels)):
-+
-+            if (not has_bliss):
-+                raise NotImplementedError("you need to install bliss or set algorithm=sage to use this command")
-+
-             if edge_labels:
-                 raise ValueError("bliss cannot be used when edge_labels is True")
--            try:
--                from sage.graphs.bliss import canonical_form
--            except ImportError:
--                raise ImportError("You must install the 'bliss' package to run this command.")
-             return canonical_form(self, partition, return_graph, certify)
- 
-         if (algorithm is not None and
 diff --git a/src/sage/graphs/graph_generators.py b/src/sage/graphs/graph_generators.py
 index 5919ab3..1766796 100644
 --- a/src/sage/graphs/graph_generators.py
@@ -270,7 +212,7 @@
 index c801636..f43e6d9 100644
 --- a/src/sage/groups/generic.py
 +++ b/src/sage/groups/generic.py
-@@ -1396,15 +1396,15 @@ def structure_description(G, latex=False):
+@@ -1400,15 +1400,15 @@ def structure_description(G, latex=False):
          sage: groups.matrix.GL(4,2).structure_description() # optional - database_gap
          'A8'
      """
@@ -285,7 +227,7 @@
          description = str(G._gap_().StructureDescription())
      except RuntimeError:
 -        if not is_package_installed('database_gap'):
-+	if not os.path.isfile(os.path.join(SAGE_LOCAL, "gap", "latest", "small", "readsml.g")):
++	if not os.path.isfile(os.path.join(SAGE_LOCAL, "lib", "gap", "small", "readsml.g")):
              raise RuntimeError("You must install the optional database_gap package first.")
          raise
  
@@ -310,7 +252,7 @@
          load_hap()
          from sage.arith.all import is_prime
          if not (p == 0 or is_prime(p)):
-@@ -1683,9 +1680,7 @@ class PermutationGroup_generic(group.FiniteGroup):
+@@ -1682,9 +1679,7 @@ class PermutationGroup_generic(group.FiniteGroup):
          try:
              return [Integer(n) for n in self._gap_().IdGroup()]
          except RuntimeError:
@@ -321,7 +263,7 @@
  
      def id(self):
          """
-@@ -1736,9 +1731,7 @@ class PermutationGroup_generic(group.FiniteGroup):
+@@ -1735,9 +1730,7 @@ class PermutationGroup_generic(group.FiniteGroup):
          try:
              return Integer(self._gap_().PrimitiveIdentification())
          except RuntimeError:
@@ -332,7 +274,7 @@
  
      def center(self):
          """
-@@ -4114,8 +4107,6 @@ class PermutationGroup_generic(group.FiniteGroup):
+@@ -4113,8 +4106,6 @@ class PermutationGroup_generic(group.FiniteGroup):
          - David Joyner and Graham Ellis
  
          """
@@ -361,7 +303,7 @@
 index da41cb0..49cae0b 100644
 --- a/src/sage/rings/polynomial/multi_polynomial_sequence.py
 +++ b/src/sage/rings/polynomial/multi_polynomial_sequence.py
-@@ -159,7 +159,6 @@ from sage.misc.cachefunc import cached_method
+@@ -163,7 +163,6 @@ from sage.misc.cachefunc import cached_method
  
  from types import GeneratorType
  from sage.misc.converting_dict import KeyConvertingDict
@@ -369,7 +311,7 @@
  
  from sage.structure.sequence import Sequence, Sequence_generic
  
-@@ -1429,10 +1428,11 @@ class PolynomialSequence_gf2(PolynomialSequence_generic):
+@@ -1433,10 +1432,11 @@ class PolynomialSequence_gf2(PolynomialSequence_generic):
  
          if S != []:
              if algorithm == "exhaustive_search":

Modified: jupyter-path.patch
===================================================================
--- jupyter-path.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ jupyter-path.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -10,15 +10,6 @@
  
  class SageKernelSpec(object):
 
-@@ -151,7 +151,7 @@
-              '{connection_file}']
-         """
-         return [
--            os.path.join(SAGE_ROOT, 'sage'),
-+            os.path.join(SAGE_ROOT, 'bin', 'sage'),
-             '--python',
-             '-m', 'sage.repl.ipython_kernel',
-             '-f', '{connection_file}',
 @@ -208,7 +208,7 @@
              sage: spec._symlink_resources()    # not tested
          """

Deleted: linbox-1.4.patch
===================================================================
--- linbox-1.4.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ linbox-1.4.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,470 +0,0 @@
-diff --git a/src/module_list.py b/src/module_list.py
-index a49ed36..7798cb8 100644
---- a/src/module_list.py
-+++ b/src/module_list.py
-@@ -27,6 +27,18 @@ lapack_libs = list(lapack_pc['libraries'])
- lapack_library_dirs = list(lapack_pc['library_dirs'])
- lapack_include_dirs = list(lapack_pc['include_dirs'])
- 
-+# FFLAS-FFPACK
-+fflas_ffpack_pc = pkgconfig.parse('fflas-ffpack')
-+fflas_ffpack_libs = list(fflas_ffpack_pc['libraries'])
-+fflas_ffpack_library_dirs = list(fflas_ffpack_pc['library_dirs'])
-+fflas_ffpack_cflags = pkgconfig.cflags('fflas-ffpack').split()
-+
-+# Givaro
-+givaro_pc = pkgconfig.parse('givaro')
-+givaro_libs = list(givaro_pc['libraries'])
-+givaro_library_dirs = list(givaro_pc['library_dirs'])
-+givaro_cflags = pkgconfig.cflags('givaro').split()
-+
- # GNU Scientific Library
- # Note we replace the built-in gslcblas with the above cblas
- gsl_pc = pkgconfig.parse('gsl')
-@@ -40,6 +52,12 @@ gd_libs = list(gd_pc['libraries'])
- gd_library_dirs = list(gd_pc['library_dirs'])
- gd_include_dirs = list(gd_pc['include_dirs'])
- 
-+# LinBox
-+linbox_pc = pkgconfig.parse('linbox')
-+linbox_libs = list(linbox_pc['libraries'])
-+linbox_library_dirs = list(linbox_pc['library_dirs'])
-+linbox_cflags = pkgconfig.cflags('linbox').split()
-+
- # PNG image library
- png_pc = pkgconfig.parse('libpng')
- png_libs = list(png_pc['libraries'])
-@@ -58,9 +76,18 @@ zlib_include_dirs = list(zlib_pc['include_dirs'])
- #########################################################
- 
- aliases = dict(
-+    FFLASFFPACK_CFLAGS=fflas_ffpack_cflags,
-+    FFLASFFPACK_LIBRARIES=fflas_ffpack_libs,
-+    FFLASFFPACK_LIBDIR=fflas_ffpack_library_dirs,
-+    GIVARO_CFLAGS=givaro_cflags,
-+    GIVARO_LIBRARIES=givaro_libs,
-+    GIVARO_LIBDIR=givaro_library_dirs,
-     GSL_LIBRARIES=gsl_libs,
-     GSL_LIBDIR=gsl_library_dirs,
-     GSL_INCDIR=gsl_include_dirs,
-+    LINBOX_CFLAGS=linbox_cflags,
-+    LINBOX_LIBRARIES=linbox_libs,
-+    LINBOX_LIBDIR=linbox_library_dirs,
- )
- 
- #########################################################
-@@ -91,12 +118,6 @@ except ValueError:
- singular_libs = ['singular', 'flint', 'ntl', 'gmpxx', 'gmp', 'readline', 'm']
- 
- #########################################################
--### Givaro flags
--#########################################################
--
--givaro_extra_compile_args =['-D__STDC_LIMIT_MACROS']
--
--#########################################################
- ### Library order
- #########################################################
- 
-@@ -111,8 +132,7 @@ givaro_extra_compile_args =['-D__STDC_LIMIT_MACROS']
- # at the very end of the list.
- library_order_list = [
-     "singular", "ec", "ecm",
--    "linboxsage", "ntl", "iml", "linbox", "givaro",
--] + gsl_libs + [
-+] + linbox_libs  + gsl_libs + [
-     "pari", "flint", "ratpoints", "ecl", "glpk", "ppl",
-     "arb", "fplll", "mpfi", "mpfr", "mpc", "gmp", "gmpxx",
-     "brial",
-@@ -611,13 +631,10 @@ ext_modules = [
- 
-     Extension('sage.libs.linbox.linbox',
-               sources = ['sage/libs/linbox/linbox.pyx'],
--              libraries = ['linboxsage', 'ntl', 'iml', 'linbox',
--                           'givaro', 'mpfr', 'gmp', 'gmpxx'] + cblas_libs,
-+              libraries = linbox_libs,
-               language = 'c++',
-               library_dirs = cblas_library_dirs,
--              include_dirs = cblas_include_dirs,
--              extra_compile_args = givaro_extra_compile_args,
--              depends = [os.path.join(SAGE_INC, 'givaro', 'givconfig.h')]),
-+              include_dirs = cblas_include_dirs),
- 
-     Extension('sage.libs.lcalc.lcalc_Lfunction',
-               sources = ['sage/libs/lcalc/lcalc_Lfunction.pyx'],
-@@ -665,9 +682,8 @@ ext_modules = [
- 
-     Extension('sage.libs.singular.singular',
-               sources = ['sage/libs/singular/singular.pyx'],
--              libraries = ['givaro'] + singular_libs,
--              language="c++",
--              extra_compile_args = givaro_extra_compile_args),
-+              libraries = singular_libs,
-+              language="c++"),
- 
-     Extension('sage.libs.singular.polynomial',
-               sources = ['sage/libs/singular/polynomial.pyx'],
-@@ -687,8 +703,7 @@ ext_modules = [
-     Extension('sage.libs.singular.function',
-               sources = ['sage/libs/singular/function.pyx'],
-               libraries = singular_libs,
--              language="c++",
--              extra_compile_args = givaro_extra_compile_args),
-+              language="c++"),
- 
-     Extension('sage.libs.singular.option',
-               sources = ['sage/libs/singular/option.pyx'],
-@@ -944,19 +959,17 @@ ext_modules = [
-     Extension('sage.matrix.matrix_modn_dense_float',
-               sources = ['sage/matrix/matrix_modn_dense_float.pyx'],
-               language="c++",
--              libraries = ['ntl', 'linbox', 'givaro', 'mpfr', 'gmpxx', 'gmp'] + cblas_libs,
-+              libraries = linbox_libs + cblas_libs,
-               library_dirs = cblas_library_dirs,
--              include_dirs = cblas_include_dirs,
--              extra_compile_args = nocxx11_args + ['-DDISABLE_COMMENTATOR'] + givaro_extra_compile_args),
-+              include_dirs = cblas_include_dirs),
- 
-     Extension('sage.matrix.matrix_modn_dense_double',
-               sources = ['sage/matrix/matrix_modn_dense_double.pyx'],
-               language="c++",
--              libraries = ['ntl', 'linbox', 'givaro', 'mpfr', 'gmpxx', 'gmp'] + cblas_libs,
-+              libraries = linbox_libs + cblas_libs,
-               library_dirs = cblas_library_dirs,
-               include_dirs = cblas_include_dirs,
--              extra_compile_args = nocxx11_args + ["-D_XPG6", "-DDISABLE_COMMENTATOR"]
--                    + m4ri_extra_compile_args + givaro_extra_compile_args),
-+              extra_compile_args = ["-D_XPG6"]),
- 
-     Extension('sage.matrix.matrix_modn_sparse',
-               sources = ['sage/matrix/matrix_modn_sparse.pyx']),
-@@ -1400,8 +1413,7 @@ ext_modules = [
-     Extension('sage.rings.finite_rings.element_givaro',
-               sources = ["sage/rings/finite_rings/element_givaro.pyx"],
-               libraries = ['givaro', 'ntl', 'gmpxx', 'gmp', 'm'],
--              language='c++',
--              extra_compile_args = givaro_extra_compile_args),
-+              language='c++'),
- 
-     Extension('sage.rings.finite_rings.element_ntl_gf2e',
-               sources = ['sage/rings/finite_rings/element_ntl_gf2e.pyx'],
-@@ -1421,8 +1433,7 @@ ext_modules = [
-               sources = ["sage/rings/finite_rings/hom_finite_field_givaro.pyx"],
-               # this order is needed to compile under windows.
-               libraries = ['givaro', 'ntl', 'gmpxx', 'gmp', 'm'],
--              language='c++',
--              extra_compile_args = givaro_extra_compile_args),
-+              language='c++'),
- 
-     ################################
-     ##
-@@ -1574,8 +1585,7 @@ ext_modules = [
-     Extension('sage.rings.polynomial.plural',
-               sources = ['sage/rings/polynomial/plural.pyx'],
-               libraries = ['m', 'readline', 'singular', 'givaro', 'gmpxx', 'gmp'],
--              language="c++",
--              extra_compile_args = givaro_extra_compile_args),
-+              language="c++"),
- 
-     Extension('sage.rings.polynomial.multi_polynomial_libsingular',
-               sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx'],
-diff --git a/src/sage/libs/linbox/echelonform.pxd b/src/sage/libs/linbox/echelonform.pxd
-index 3097c8b..cf4902d 100644
---- a/src/sage/libs/linbox/echelonform.pxd
-+++ b/src/sage/libs/linbox/echelonform.pxd
-@@ -1,23 +1,27 @@
-+# distutils: extra_compile_args = LINBOX_CFLAGS
-+# distutils: libraries = LINBOX_LIBRARIES
-+# distutils: library_dirs = LINBOX_LIBDIR
-+
- from sage.libs.linbox.modular cimport ModDoubleField, ModDoubleFieldElement, ModFloatField, ModFloatFieldElement
- from libc.stdint cimport uint64_t
- 
--cdef extern from "linbox/matrix/blas-matrix.h" namespace "LinBox":
--    cdef cppclass BlasMatrixDouble "LinBox::BlasMatrix<LinBox::Modular<double> >":
-+cdef extern from "linbox/matrix/dense-matrix.h" namespace "LinBox":
-+    cdef cppclass BlasMatrixDouble "LinBox::DenseMatrix<Givaro::Modular<double> >":
-         BlasMatrixDouble(ModDoubleField F, uint64_t nrows, uint64_t ncols)
-         void setEntry(size_t i, size_t j, ModDoubleFieldElement t)
-         ModDoubleFieldElement &getEntry(size_t i, size_t j)
- 
--    cdef cppclass BlasMatrixFloat "LinBox::BlasMatrix<LinBox::Modular<float> >":
-+    cdef cppclass BlasMatrixFloat "LinBox::DenseMatrix<Givaro::Modular<float> >":
-         BlasMatrixFloat(ModFloatField F, uint64_t nrows, uint64_t ncols)
-         void setEntry(size_t i, size_t j, ModFloatFieldElement t)
-         ModFloatFieldElement &getEntry(size_t i, size_t j)
- 
- cdef extern from "linbox/algorithms/echelon-form.h":
--    cdef cppclass EchelonFormDomainDouble "LinBox::EchelonFormDomain<LinBox::Modular<double> >":
-+    cdef cppclass EchelonFormDomainDouble "LinBox::EchelonFormDomain<Givaro::Modular<double> >":
-         EchelonFormDomainDouble(ModDoubleField)
-         int rowReducedEchelon(BlasMatrixDouble, BlasMatrixDouble)
- 
--    cdef cppclass EchelonFormDomainFloat "LinBox::EchelonFormDomain<LinBox::Modular<float> >":
-+    cdef cppclass EchelonFormDomainFloat "LinBox::EchelonFormDomain<Givaro::Modular<float> >":
-         EchelonFormDomainFloat(ModFloatField)
-         int rowReducedEchelon(BlasMatrixFloat, BlasMatrixFloat)
- 
-diff --git a/src/sage/libs/linbox/fflas.pxd b/src/sage/libs/linbox/fflas.pxd
-index e102004..01ab1b1 100644
---- a/src/sage/libs/linbox/fflas.pxd
-+++ b/src/sage/libs/linbox/fflas.pxd
-@@ -1,3 +1,7 @@
-+# distutils: extra_compile_args = FFLASFFPACK_CFLAGS
-+# distutils: libraries = FFLASFFPACK_LIBRARIES
-+# distutils: library_dirs = FFLASFFPACK_LIBDIR
-+
- from .modular cimport ModDoubleField, ModFloatField, ModDoubleFieldElement, ModFloatFieldElement
- 
- cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "std":
-diff --git a/src/sage/libs/linbox/linbox.pyx b/src/sage/libs/linbox/linbox.pyx
-index e932347..a9bd6d1 100644
---- a/src/sage/libs/linbox/linbox.pyx
-+++ b/src/sage/libs/linbox/linbox.pyx
-@@ -1,3 +1,7 @@
-+# distutils: extra_compile_args = LINBOX_CFLAGS
-+# distutils: libraries = LINBOX_LIBRARIES
-+# distutils: library_dirs = LINBOX_LIBDIR
-+
- r"""
- Linbox interface
- """
-diff --git a/src/sage/libs/linbox/modular.pxd b/src/sage/libs/linbox/modular.pxd
-index 7ef204c..ea5fb29 100644
---- a/src/sage/libs/linbox/modular.pxd
-+++ b/src/sage/libs/linbox/modular.pxd
-@@ -1,10 +1,10 @@
--cdef extern from "linbox/field/modular.h":
-+cdef extern from "givaro/modular.h":
-     # double
- 
--    cdef cppclass ModDoubleFieldElement "LinBox::Modular<double>::Element":
-+    cdef cppclass ModDoubleFieldElement "Givaro::Modular<double>::Element":
-         pass
- 
--    cdef cppclass ModDoubleField "LinBox::Modular<double>":
-+    cdef cppclass ModDoubleField "Givaro::Modular<double>":
-         ModDoubleField(int modulus)
-         ModDoubleFieldElement init(ModDoubleFieldElement res, int v)
-         ModDoubleFieldElement init(ModDoubleFieldElement res, double v)
-@@ -20,10 +20,10 @@ cdef extern from "linbox/field/modular.h":
- 
- 
-     # float
--    cdef cppclass ModFloatFieldElement "LinBox::Modular<float>::Element":
-+    cdef cppclass ModFloatFieldElement "Givaro::Modular<float>::Element":
-         pass
- 
--    cdef cppclass ModFloatField "LinBox::Modular<float>":
-+    cdef cppclass ModFloatField "Givaro::Modular<float>":
-         ModFloatField(int modulus)
-         ModFloatFieldElement init(ModFloatFieldElement res, int v)
-         ModFloatFieldElement init(ModFloatFieldElement res, double v)
-diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx
-index 33d7f7ec..77f6e0a 100644
---- a/src/sage/libs/singular/singular.pyx
-+++ b/src/sage/libs/singular/singular.pyx
-@@ -23,6 +23,7 @@ cdef extern from "limits.h":
- 
- import os
- 
-+from libc.stdint cimport int64_t
- from sage.libs.singular.decl cimport intvec
- from sage.libs.singular.decl cimport SR_HDL, SR_INT, SR_TO_INT
- from sage.libs.singular.decl cimport singular_options, singular_verbose_options
-@@ -156,7 +157,7 @@ cdef FFgivE si2sa_GFqGivaro(number *n, ring *_ring, Cache_givaro cache):
-     order = cache.objectptr.cardinality() - 1
- 
-     while z:
--        c = cache.objectptr.initi(c, <long>napGetCoeff(z))
-+        c = cache.objectptr.initi(c, <int64_t>napGetCoeff(z))
-         e = napGetExpFrom(z,1, _ring)
-         if e == 0:
-             ret = cache.objectptr.add(ret, c, ret)
-diff --git a/src/sage/rings/finite_rings/element_givaro.pxd b/src/sage/rings/finite_rings/element_givaro.pxd
-index 68def46..91c4ed7 100644
---- a/src/sage/rings/finite_rings/element_givaro.pxd
-+++ b/src/sage/rings/finite_rings/element_givaro.pxd
-@@ -1,9 +1,15 @@
--from sage.structure.element cimport Element, RingElement, ModuleElement
--from sage.rings.finite_rings.element_base cimport FinitePolyExtElement
-+# distutils: extra_compile_args = GIVARO_CFLAGS
-+
-+from libcpp.vector cimport vector
-+ctypedef vector[int] intvec
-+
-+from libc.stdint cimport int64_t
- 
--from sage.structure.parent  cimport Parent
-+from sage.rings.finite_rings.element_base cimport FinitePolyExtElement
-+from sage.structure.parent cimport Parent
- from sage.structure.sage_object cimport SageObject
- 
-+
- cdef extern from "givaro/givconfig.h":
-     pass
- 
-@@ -13,16 +19,7 @@ cdef extern from "givaro/givrandom.h":
- 
-     GivRandom GivRandomSeeded  "Givaro::GivRandom"(unsigned long seed)
- 
--cdef extern from "givaro/givgfq.h":
--    ctypedef struct intvec "std::vector<unsigned int>":
--        void (* push_back)(int elem)
--
--    ctypedef struct constintvec "const std::vector<unsigned int>"
--
--    intvec intvec_factory "std::vector<unsigned int>"(int len)
--
--cdef extern from "givaro/givgfq.h":
--
-+cdef extern from "givaro/gfq.h":
-     ctypedef struct GivaroGfq "Givaro::GFqDom<int>":
-         #attributes
-         unsigned int one
-@@ -40,10 +37,10 @@ cdef extern from "givaro/givgfq.h":
-         unsigned int (* cardinality)()
-         int (* exponent)()
-         int (* random)(GivRandom gen, int res)
--        int (* initi "init")(int res, int e)
-+        int (* initi "init")(int res, int64_t e)
-         int (* initd "init")(int res, double e)
-         int (* indeterminate)()
--        int (* convert)(int r, int p)
-+        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)
-@@ -60,7 +57,12 @@ cdef extern from "givaro/givgfq.h":
-     void delete "delete "(void *o)
-     int gfq_element_factory "Givaro::GFqDom<int>::Element"()
- 
--cdef class FiniteField_givaroElement(FinitePolyExtElement) #forward declaration
-+
-+cdef class FiniteField_givaroElement(FinitePolyExtElement):
-+    cdef int element
-+    cdef Cache_givaro _cache
-+    cdef object _multiplicative_order
-+    cdef FiniteField_givaroElement _new_c(self, int value)
- 
- cdef class Cache_givaro(SageObject):
-     cdef GivaroGfq *objectptr # C++ object
-@@ -85,11 +87,4 @@ cdef class FiniteField_givaro_iterator:
-     cdef int iterator
-     cdef Cache_givaro _cache
- 
--cdef class FiniteField_givaroElement(FinitePolyExtElement):
--    cdef int element
--    cdef Cache_givaro _cache
--    cdef object _multiplicative_order
--    cdef FiniteField_givaroElement _new_c(self, int value)
--
--
- cdef inline FiniteField_givaroElement make_FiniteField_givaroElement(Cache_givaro cache, int x)
-diff --git a/src/sage/rings/finite_rings/element_givaro.pyx b/src/sage/rings/finite_rings/element_givaro.pyx
-index d32b5cf..f2afa44 100644
---- a/src/sage/rings/finite_rings/element_givaro.pyx
-+++ b/src/sage/rings/finite_rings/element_givaro.pyx
-@@ -59,8 +59,9 @@ from sage.misc.randstate cimport randstate, current_randstate
- from sage.rings.finite_rings.finite_field_base cimport FiniteField
- from sage.rings.ring cimport Ring
- from element_ext_pari import FiniteField_ext_pariElement
--from element_pari_ffelt import FiniteFieldElement_pari_ffelt
-+from element_pari_ffelt cimport FiniteFieldElement_pari_ffelt
- from sage.structure.sage_object cimport SageObject
-+from sage.structure.element cimport Element, ModuleElement, RingElement
- import operator
- import sage.arith.all
- import finite_field_constructor as finite_field
-@@ -374,18 +375,16 @@ cdef class Cache_givaro(SageObject):
-         elif isinstance(e, int) or \
-              isinstance(e, Integer) or \
-              isinstance(e, long) or is_IntegerMod(e):
--            try:
--                e_int = e
--            except OverflowError:
--                e_int = e % self.characteristic()
-+            e_int = e % self.characteristic()
-             res = self.objectptr.initi(res, e_int)
- 
-         elif e is None:
-             e_int = 0
--            res = self.objectptr.initi(res,e_int)
-+            res = self.objectptr.initi(res, e_int)
- 
-         elif isinstance(e, float):
--            res = self.objectptr.initd(res,e)
-+            e_int = int(e) % self.characteristic()
-+            res = self.objectptr.initd(res, e_int)
- 
-         elif isinstance(e, str):
-             return self.parent(eval(e.replace("^","**"),self.parent.gens_dict()))
-@@ -395,8 +394,8 @@ cdef class Cache_givaro(SageObject):
-                 raise TypeError("e.parent must match self.vector_space")
-             ret = self._zero_element
-             for i in range(len(e)):
--                e_entry = e[i] % self.characteristic()
--                res = self.objectptr.initi(res, int(e_entry))
-+                e_int = e[i] % self.characteristic()
-+                res = self.objectptr.initi(res, e_int)
-                 to_add = make_FiniteField_givaroElement(self, res)
-                 ret = ret + to_add*self.parent.gen()**i
-             return ret
-@@ -435,8 +434,8 @@ cdef class Cache_givaro(SageObject):
-                 raise ValueError("list is too long")
-             ret = self._zero_element
-             for i in range(len(e)):
--                e_entry = e[i] % self.characteristic()
--                res = self.objectptr.initi(res, int(e_entry))
-+                e_int = e[i] % self.characteristic()
-+                res = self.objectptr.initi(res, e_int)
-                 to_add = make_FiniteField_givaroElement(self, res)
-                 ret = ret + to_add*self.parent.gen()**i
-             return ret
-@@ -573,19 +572,17 @@ cdef class Cache_givaro(SageObject):
-         cdef int ret = k.zero
-         cdef int a = k.indeterminate()
-         cdef int at = k.one
--        cdef unsigned int ch = k.characteristic()
--        cdef int _n, t, i
-+        cdef int ch = k.characteristic()
-+        cdef int t, i
- 
-         if n<0 or n>k.cardinality():
-             raise TypeError("n must be between 0 and self.order()")
- 
--        _n = n
--
-         for i from 0 <= i < k.exponent():
--            t = k.initi(t, _n%ch)
-+            t = k.initi(t, n % ch)
-             ret = k.axpy(ret, t, at, ret)
-             at = k.mul(at,at,a)
--            _n = _n/ch
-+            n //= ch
-         return make_FiniteField_givaroElement(self, ret)
- 
-     def _element_repr(self, FiniteField_givaroElement e):
-diff --git a/src/sage/rings/finite_rings/finite_field_givaro.py b/src/sage/rings/finite_rings/finite_field_givaro.py
-index adbaab3..c431f6d 100644
---- a/src/sage/rings/finite_rings/finite_field_givaro.py
-+++ b/src/sage/rings/finite_rings/finite_field_givaro.py
-@@ -270,7 +270,8 @@ class FiniteField_givaro(FiniteField):
-             sage: k(2) # indirect doctest
-             0
- 
--            Floats coerce in:
-+        Floats are converted like integers::
-+
-             sage: k(float(2.0))
-             0
- 
-@@ -344,7 +345,7 @@ class FiniteField_givaro(FiniteField):
-             sage: k(pari('Mod(1,2)'))
-             1
-             sage: k(pari('Mod(2,3)'))
--            0
-+            a
-             sage: k(pari('Mod(1,3)*a^20'))
-             a^7 + a^5 + a^4 + a^2
- 

Modified: package.patch
===================================================================
--- package.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ package.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,11 +1,40 @@
 --- src/sage/misc/package.py.orig	2014-11-23 15:58:13.000000000 +0100
 +++ src/sage/misc/package.py	2015-01-22 20:32:25.651383902 +0100
-@@ -204,7 +204,7 @@
-     Otherwise, installing "pillow" will cause this function to think
-     that "pil" is installed, for example.
+@@ -343,7 +343,7 @@
+         sage: for pkg in list_packages('pip', local=True):
+         ....:     assert not is_package_installed(pkg)
      """
--    return any(p.split('-')[0] == package for p in installed_packages())
+-    return any(p.split('-')[0] == package for p in installed_packages(exclude_pip))
 +    return True
  
  def package_versions(package_type, local=False):
      r"""
+--- src/sage_setup/optional_extension.py.orig  2016-10-19 18:35:10.092577510 +0000
++++ src/sage_setup/optional_extension.py       2016-10-19 18:38:13.514765366 +0000
+@@ -21,8 +21,6 @@
+ from distutils.extension import Extension
+ from sage.misc.package import is_package_installed, list_packages
+ 
+-all_packages = list_packages(local=True)
+-
+ 
+ class CythonizeExtension(Extension):
+     """
+@@ -75,15 +73,7 @@
+     try:
+         condition = kwds.pop("condition")
+     except KeyError:
+-        pkg = kwds.pop("package")
+-        try:
+-            pkginfo = all_packages[pkg]
+-        except KeyError:
+-            # Might be an installed old-style package
+-            condition = is_package_installed(pkg)
+-        else:
+-            condition = (pkginfo["installed_version"] == pkginfo["remote_version"])
+-
++        condition = True
+     if condition:
+         return Extension(*args, **kwds)
+     else:
+     

Deleted: paths.patch
===================================================================
--- paths.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ paths.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,13 +0,0 @@
---- src/sage/env.py.orig	2014-06-25 10:47:25.827203554 +1200
-+++ src/sage/env.py	2014-06-25 10:49:07.667402821 +1200
-@@ -90,8 +90,8 @@
- 
- # bunch of sage directories and files
- _add_variable_or_fallback('SAGE_ROOT',       None)
--_add_variable_or_fallback('SAGE_LOCAL',      opj('$SAGE_ROOT', 'local'))
--_add_variable_or_fallback('SAGE_ETC',        opj('$SAGE_LOCAL', 'etc'))
-+_add_variable_or_fallback('SAGE_LOCAL',      '/usr')
-+_add_variable_or_fallback('SAGE_ETC',        '/etc/sage')
- _add_variable_or_fallback('SAGE_INC',        opj('$SAGE_LOCAL', 'include'))
- _add_variable_or_fallback('SAGE_SHARE',      opj('$SAGE_LOCAL', 'share'))
- 

Deleted: sagemath-ipython5.patch
===================================================================
--- sagemath-ipython5.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ sagemath-ipython5.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,548 +0,0 @@
-diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py
-index 2654016..d3daed6 100644
---- a/src/sage/doctest/forker.py
-+++ b/src/sage/doctest/forker.py
-@@ -116,10 +116,6 @@ def init_sage():
-     from sage.structure.debug_options import debug
-     debug.refine_category_hash_check = True
- 
--    # Disable IPython colors during doctests
--    from sage.repl.interpreter import DEFAULT_SAGE_CONFIG
--    DEFAULT_SAGE_CONFIG.TerminalInteractiveShell.colors = 'NoColor'
--
-     # We import readline before forking, otherwise Pdb doesn't work
-     # os OS X: http://trac.sagemath.org/14289
-     import readline
-@@ -1088,15 +1084,13 @@ class SageDocTestRunner(doctest.DocTestRunner):
-             sage: _ = sage0.eval("import doctest, sys, os, multiprocessing, subprocess")
-             sage: _ = sage0.eval("from sage.doctest.parsing import SageOutputChecker")
-             sage: _ = sage0.eval("import sage.doctest.forker as sdf")
--            sage: _ = sage0.eval("sdf.init_sage()")
-             sage: _ = sage0.eval("from sage.doctest.control import DocTestDefaults")
-             sage: _ = sage0.eval("DD = DocTestDefaults(debug=True)")
-             sage: _ = sage0.eval("ex1 = doctest.Example('a = 17', '')")
-             sage: _ = sage0.eval("ex2 = doctest.Example('2*a', '1')")
-             sage: _ = sage0.eval("DT = doctest.DocTest([ex1,ex2], globals(), 'doubling', None, 0, None)")
-             sage: _ = sage0.eval("DTR = sdf.SageDocTestRunner(SageOutputChecker(), verbose=False, sage_options=DD, optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS)")
--            sage: sage0._prompt = r"debug: "
--            sage: print(sage0.eval("DTR.run(DT, clear_globs=False)")) # indirect doctest
-+            sage: print(sage0.eval("sdf.init_sage(); DTR.run(DT, clear_globs=False)")) # indirect doctest
-             **********************************************************************
-             Line 1, in doubling
-             Failed example:
-@@ -1110,7 +1104,6 @@ class SageDocTestRunner(doctest.DocTestRunner):
-             ...
-             sage: sage0.eval("a")
-             '...17'
--            sage: sage0._prompt = "sage: "
-             sage: sage0.eval("quit")
-             'Returning to doctests...TestResults(failed=1, attempted=2)'
-         """
-@@ -1144,13 +1137,14 @@ class SageDocTestRunner(doctest.DocTestRunner):
-                         print(src)
-                         if ex.want:
-                             print(doctest._indent(ex.want[:-1]))
--                    from sage.repl.interpreter import DEFAULT_SAGE_CONFIG
-+                    from sage.repl.configuration import sage_ipython_config
-+                    from sage.repl.prompts import DebugPrompts
-                     from IPython.terminal.embed import InteractiveShellEmbed
--                    import copy
--                    cfg = copy.deepcopy(DEFAULT_SAGE_CONFIG)
--                    prompt_config = cfg.PromptManager
--                    prompt_config.in_template = 'debug: '
--                    prompt_config.in2_template = '.....: '
-+                    cfg = sage_ipython_config.default()
-+                    # Currently this doesn't work: prompts only work in pty
-+                    # We keep simple_prompt=True, prompts will be "In [0]:"
-+                    # cfg.InteractiveShell.prompts_class = DebugPrompts
-+                    # cfg.InteractiveShell.simple_prompt = False
-                     shell = InteractiveShellEmbed(config=cfg, banner1='', user_ns=dict(globs))
-                     shell(header='', stack_depth=2)
-                 except KeyboardInterrupt:
-@@ -1248,6 +1242,7 @@ class SageDocTestRunner(doctest.DocTestRunner):
-             sage: _ = sage0.eval("ex = doctest.Example('E = EllipticCurve([0,0]); E', 'A singular Elliptic Curve')")
-             sage: _ = sage0.eval("DT = doctest.DocTest([ex], globals(), 'singular_curve', None, 0, None)")
-             sage: _ = sage0.eval("DTR = sdf.SageDocTestRunner(SageOutputChecker(), verbose=False, sage_options=DD, optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS)")
-+            sage: old_prompt = sage0._prompt
-             sage: sage0._prompt = r"\(Pdb\) "
-             sage: sage0.eval("DTR.run(DT, clear_globs=False)") # indirect doctest
-             '... ArithmeticError("invariants " + str(ainvs) + " define a singular curve")'
-@@ -1257,7 +1252,7 @@ class SageDocTestRunner(doctest.DocTestRunner):
-             '...EllipticCurve_field.__init__(self, K, ainvs)'
-             sage: sage0.eval("p ainvs")
-             '(0, 0, 0, 0, 0)'
--            sage: sage0._prompt = "sage: "
-+            sage: sage0._prompt = old_prompt
-             sage: sage0.eval("quit")
-             'TestResults(failed=1, attempted=1)'
-         """
-diff --git a/src/sage/doctest/test.py b/src/sage/doctest/test.py
-index d69136f..a6cc4d0 100644
---- a/src/sage/doctest/test.py
-+++ b/src/sage/doctest/test.py
-@@ -360,7 +360,7 @@ Test the ``--debug`` option::
-         s...: b = 5
-         s...: a + b
-         8
--    debug:
-+    In [1]:
-     <BLANKLINE>
-     Returning to doctests...
-     **********************************************************************
-diff --git a/src/sage/interfaces/sage0.py b/src/sage/interfaces/sage0.py
-index 87bfc0b..77cd151 100644
---- a/src/sage/interfaces/sage0.py
-+++ b/src/sage/interfaces/sage0.py
-@@ -18,6 +18,7 @@ from __future__ import absolute_import
- 
- import cPickle
- import os
-+import re
- 
- from .expect import Expect, ExpectElement, FunctionElement
- import sage.repl.preparse
-@@ -146,10 +147,17 @@ class Sage(ExtraTabCompletion, Expect):
-             if init_code is None:
-                 init_code = ['from sage.all import *', 'import cPickle']
-         else:
--            # Disable the IPython history (implemented as SQLite database)
--            # to avoid problems with locking.
--            command = "sage-ipython --HistoryManager.hist_file=:memory: --colors=NoColor"
--            prompt = "sage: "
-+            command = ' '.join([
-+                'sage-ipython',
-+                # Disable the IPython history (implemented as SQLite database)
-+                # to avoid problems with locking.
-+                '--HistoryManager.hist_file=:memory:',
-+                # Disable everything that prints ANSI codes
-+                '--colors=NoColor',
-+                '--no-term-title',
-+                '--simple-prompt',
-+            ])
-+            prompt = re.compile('In \[\d+\]: ')
-             if init_code is None:
-                 init_code = ['import cPickle']
- 
-diff --git a/src/sage/misc/trace.py b/src/sage/misc/trace.py
-index 0da17e7..efcaa33 100644
---- a/src/sage/misc/trace.py
-+++ b/src/sage/misc/trace.py
-@@ -54,6 +54,7 @@ def trace(code, preparse=True):
-         sage: import pexpect
-         sage: s = pexpect.spawn('sage')
-         sage: _ = s.sendline("trace('print(factor(10))'); print(3+97)")
-+        sage: _ = s.expect('ipdb>', timeout=90)
-         sage: _ = s.sendline("s"); _ = s.sendline("c");
-         sage: _ = s.expect('100', timeout=90)
- 
-diff --git a/src/sage/repl/configuration.py b/src/sage/repl/configuration.py
-new file mode 100644
-index 0000000..5034039
---- /dev/null
-+++ b/src/sage/repl/configuration.py
-@@ -0,0 +1,152 @@
-+r"""
-+Sage's IPython Configuration
-+"""
-+
-+#*****************************************************************************
-+#       Copyright (C) 2016 Volker Braun <vbraun.name at gmail.com>
-+#
-+#  Distributed under the terms of the GNU General Public License (GPL)
-+#  as published by the Free Software Foundation; either version 2 of
-+#  the License, or (at your option) any later version.
-+#                  http://www.gnu.org/licenses/
-+#*****************************************************************************
-+
-+from __future__ import absolute_import
-+
-+import sys
-+import copy
-+from traitlets.config.loader import Config
-+
-+from sage.repl.prompts import SagePrompts
-+
-+
-+# Name of the Sage IPython extension
-+SAGE_EXTENSION = 'sage'
-+
-+
-+class SageIpythonConfiguration(object):
-+
-+    def _doctest_mode(self):
-+        """
-+        Whether we are in doctest mode
-+
-+        This returns ``True`` during doctests.
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config._doctest_mode()
-+            True
-+        """
-+        from sage.doctest import DOCTEST_MODE
-+        return DOCTEST_MODE
-+    
-+    def _allow_ansi(self):
-+        """
-+        Whether to allow ANSI escape sequences
-+
-+        This returns ``False`` during doctests to avoid ANSI escape 
-+        sequences.
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config._allow_ansi()
-+            False
-+        """
-+        return (not self._doctest_mode()) and sys.stdout.isatty()
-+
-+    def colors(self):
-+        """
-+        Return the IPython color palette
-+
-+        This returns ``'NoColor'`` during doctests to avoid ANSI escape 
-+        sequences.
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config.simple_prompt()
-+            True
-+        """
-+        return 'LightBG' if self._allow_ansi() else 'NoColor'
-+
-+    def simple_prompt(self):
-+        """
-+        Return whether to use the simple prompt
-+
-+        This returns ``True`` during doctests to avoid ANSI escape sequences.
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config.simple_prompt()
-+            True
-+        """
-+        return not self._allow_ansi()
-+
-+    def term_title(self):
-+        """
-+        Return whether to set the terminal title
-+
-+        This returns false during doctests to avoid ANSI escape sequences.
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config.term_title()
-+            False
-+        """
-+        return self._allow_ansi()
-+
-+    def default(self):
-+        """
-+        Return a new default configuration object
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config.default()
-+            {'InteractiveShell': {'colors': ...
-+        """
-+        from sage.repl.interpreter import SageTerminalInteractiveShell
-+        cfg = Config(
-+            TerminalIPythonApp=Config(
-+                display_banner=False,
-+                verbose_crash=True,
-+                test_shell=False,
-+                shell_class=SageTerminalInteractiveShell,
-+            ),
-+            InteractiveShell=Config(
-+                prompts_class=SagePrompts,
-+                ast_node_interactivity='all',
-+                colors=self.colors(),
-+                simple_prompt=self.simple_prompt(),
-+                term_title=self.term_title(),
-+                confirm_exit=False,
-+                separate_in=''
-+            ),
-+            InteractiveShellApp=Config(extensions=[SAGE_EXTENSION]),
-+        )
-+        if self._doctest_mode():
-+            # Using the file-backed history causes problems in parallel tests
-+            cfg.HistoryManager = Config(hist_file=':memory:')
-+        return cfg
-+
-+    def copy(self):
-+        """
-+        Return a copy of the current configuration
-+
-+        EXAMPLES::
-+        
-+            sage: from sage.repl.configuration import sage_ipython_config
-+            sage: sage_ipython_config.copy()
-+            {'InteractiveShell': {'colors': ...
-+        """
-+        try:
-+            return copy.deepcopy(get_ipython().config)
-+        except NameError:
-+            return self.default()
-+
-+
-+sage_ipython_config = SageIpythonConfiguration()
-diff --git a/src/sage/repl/interpreter.py b/src/sage/repl/interpreter.py
-index e0499c7..1f4eda7 100644
---- a/src/sage/repl/interpreter.py
-+++ b/src/sage/repl/interpreter.py
-@@ -102,18 +102,15 @@ Check that Cython source code appears in tracebacks::
- #*****************************************************************************
- 
- 
--import copy
- import os
- import re
--import sys
- from sage.repl.preparse import preparse
-+from sage.repl.prompts import SagePrompts, InterfacePrompts
- 
--from traitlets.config.loader import Config
- from traitlets import Bool, Type
- 
- from sage.env import SAGE_LOCAL
--
--SAGE_EXTENSION = 'sage'
-+from sage.repl.configuration import sage_ipython_config, SAGE_EXTENSION
- 
- def embedded():
-     """
-@@ -370,31 +367,7 @@ class SageTestShell(SageShellOverride, TerminalInteractiveShell):
-         rc = super(SageTestShell, self).run_cell(*args, **kwds)
- 
- 
--###################################################################
--# Default configuration
--###################################################################
--
--DEFAULT_SAGE_CONFIG = Config(
--    PromptManager = Config(
--        in_template = 'sage: ',
--        in2_template = '....: ',
--        justify = False,
--        out_template = ''),
--    TerminalIPythonApp = Config(
--        display_banner = False,
--        verbose_crash = True,
--        test_shell = False,
--        shell_class = SageTerminalInteractiveShell,
--    ),
--    InteractiveShell = Config(
--        ast_node_interactivity = 'all',
--        colors = 'LightBG' if sys.stdout.isatty() else 'NoColor',
--        confirm_exit = False,
--        separate_in = ''),
--    InteractiveShellApp = Config(extensions=[SAGE_EXTENSION]),
--)
--
--
-+    
- ###################################################################
- # Transformers used in the SageInputSplitter
- ###################################################################
-@@ -614,19 +587,17 @@ def interface_shell_embed(interface):
-         sage: shell = interface_shell_embed(gap)
-         sage: shell.run_cell('List( [1..10], IsPrime )')
-         [ false, true, true, false, true, false, true, false, false, false ]
--        <IPython.core.interactiveshell.ExecutionResult object at 0x...>
--    """
--    try:
--        cfg = copy.deepcopy(get_ipython().config)
--    except NameError:
--        cfg = copy.deepcopy(DEFAULT_SAGE_CONFIG)
--    cfg.PromptManager['in_template'] = interface.name() + ': '
--    cfg.PromptManager['in2_template'] = len(interface.name())*'.' + ': '
-+        <repr(<IPython.core.interactiveshell.ExecutionResult at 0x...>) failed: 
-+        AttributeError: type object 'ExecutionResult' has no attribute '__qualname__'>
- 
-+    Note that the repr error is https://github.com/ipython/ipython/issues/9756
-+    """
-+    cfg = sage_ipython_config.copy()
-     ipshell = InteractiveShellEmbed(config=cfg,
-                                     banner1='\n  --> Switching to %s <--\n\n'%interface,
--                                    exit_msg = '\n  --> Exiting back to Sage <--\n')
-+                                    exit_msg='\n  --> Exiting back to Sage <--\n')
-     ipshell.interface = interface
-+    ipshell.prompts = InterfacePrompts(interface.name())
- 
-     while ipshell.prefilter_manager.transformers:
-         ipshell.prefilter_manager.transformers.pop()
-@@ -669,7 +640,7 @@ def get_test_shell():
-         sage: out + err
-         ''
-     """
--    config = copy.deepcopy(DEFAULT_SAGE_CONFIG)
-+    config = sage_ipython_config.default()
-     config.TerminalIPythonApp.test_shell = True
-     config.TerminalIPythonApp.shell_class = SageTestShell
-     app = SageTerminalApp.instance(config=config)
-@@ -748,12 +719,9 @@ class SageTerminalApp(TerminalIPythonApp):
-             sage: os.environ['IPYTHONDIR'] = IPYTHONDIR
-         """
-         super(SageTerminalApp, self).load_config_file(*args, **kwds)
--
--        newconfig = copy.deepcopy(DEFAULT_SAGE_CONFIG)
--
-+        newconfig = sage_ipython_config.default()
-         # merge in the config loaded from file
-         newconfig.merge(self.config)
--
-         self.config = newconfig
- 
-     def init_shell(self):
-@@ -767,7 +735,7 @@ class SageTerminalApp(TerminalIPythonApp):
- 
-         EXAMPLES::
- 
--            sage: from sage.repl.interpreter import SageTerminalApp, DEFAULT_SAGE_CONFIG
-+            sage: from sage.repl.interpreter import SageTerminalApp
-             sage: app = SageTerminalApp.instance()
-             sage: app.shell
-             <sage.repl.interpreter.SageTestShell object at 0x...>
-@@ -776,7 +744,6 @@ class SageTerminalApp(TerminalIPythonApp):
-         self.shell = self.shell_class.instance(
-             parent=self,
-             config=self.config,
--            display_banner=False,
-             profile_dir=self.profile_dir,
-             ipython_dir=self.ipython_dir)
-         self.shell.configurables.append(self)
-diff --git a/src/sage/repl/ipython_tests.py b/src/sage/repl/ipython_tests.py
-index 0fa568d..2bb34cd 100644
---- a/src/sage/repl/ipython_tests.py
-+++ b/src/sage/repl/ipython_tests.py
-@@ -100,6 +100,12 @@ Next, test the pinfo2 magic for Cython code::
-     ...
-     File:   .../sage/tests/stl_vector.pyx
-     Type:   type
-+
-+Test that there are no warnings being ignored internally::
-+
-+    sage: import warnings
-+    sage: warnings.simplefilter('error');  get_test_shell()
-+    <sage.repl.interpreter.SageTestShell object at 0x...>
- '''
- 
- 
-diff --git a/src/sage/repl/prompts.py b/src/sage/repl/prompts.py
-new file mode 100644
-index 0000000..e885730
---- /dev/null
-+++ b/src/sage/repl/prompts.py
-@@ -0,0 +1,92 @@
-+r"""
-+Sage Commandline Prompts
-+"""
-+
-+#*****************************************************************************
-+#       Copyright (C) 2016 Volker Braun <vbraun.name at gmail.com>
-+#
-+# This program is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation, either version 2 of the License, or
-+# (at your option) any later version.
-+#                  http://www.gnu.org/licenses/
-+#*****************************************************************************
-+
-+from pygments.token import Token
-+from IPython.terminal.prompts import Prompts
-+
-+
-+class SagePrompts(Prompts):
-+
-+    def in_prompt_tokens(self, cli=None):
-+        return [
-+            (Token.Prompt, 'sage: '),
-+        ]
-+
-+    def continuation_prompt_tokens(self, cli=None, width=None):
-+        return [
-+            (Token.Prompt, '....: '),
-+        ]
-+
-+    def rewrite_prompt_tokens(self):
-+        return [
-+            (Token.Prompt, '----> '),
-+        ]
-+
-+    def out_prompt_tokens(self):
-+        return [
-+            (Token.OutPrompt, ''),
-+        ]
-+
-+    
-+class InterfacePrompts(Prompts):
-+
-+    def __init__(self, interface_name):
-+        self.__name = interface_name
-+        self.__width = len(interface_name)
-+    
-+    def in_prompt_tokens(self, cli=None):
-+        return [
-+            (Token.Prompt, self.__name + ': '),
-+        ]
-+
-+    def continuation_prompt_tokens(self, cli=None, width=None):
-+        return [
-+            (Token.Prompt, '.' * self.__width + ': '),
-+        ]
-+
-+    def rewrite_prompt_tokens(self):
-+        return [
-+            (Token.Prompt, '-' * self.__width + '> '),
-+        ]
-+
-+    def out_prompt_tokens(self):
-+        return [
-+            (Token.OutPrompt, ''),
-+        ]
-+
-+
-+class DebugPrompts(Prompts):
-+
-+    def in_prompt_tokens(self, cli=None):
-+        return [
-+            (Token.Prompt, 'debug: '),
-+        ]
-+
-+    def continuation_prompt_tokens(self, cli=None, width=None):
-+        return [
-+            (Token.Prompt, '.....: '),
-+        ]
-+
-+    def rewrite_prompt_tokens(self):
-+        return [
-+            (Token.Prompt, '-----> '),
-+        ]
-+
-+    def out_prompt_tokens(self):
-+        return [
-+            (Token.OutPrompt, ''),
-+        ]
-+
-+    
-+    
-diff --git a/src/sage/tests/cmdline.py b/src/sage/tests/cmdline.py
-index 0d15d82..417ec5e 100644
---- a/src/sage/tests/cmdline.py
-+++ b/src/sage/tests/cmdline.py
-@@ -385,7 +385,7 @@ def test_executable(args, input="", timeout=100.0, **kwds):
-         **********************************************************************
-         Previously executed commands:
-             s...: assert True == False
--        debug:
-+        In [1]:
-         <BLANKLINE>
-         Returning to doctests...
-         **********************************************************************

Modified: sagemath-singular4.patch
===================================================================
--- sagemath-singular4.patch	2016-10-20 05:23:09 UTC (rev 192641)
+++ sagemath-singular4.patch	2016-10-20 05:56:07 UTC (rev 192642)
@@ -1,3 +1,16 @@
+diff --git a/src/bin/sage b/src/bin/sage
+index 46da103..96de4bc 100755
+--- a/src/bin/sage
++++ b/src/bin/sage
+@@ -472,7 +472,7 @@ fi
+ 
+ if [ "$1" = '-singular' -o "$1" = '--singular' ]; then
+     shift
+-    exec singular "$@"
++    exec Singular "$@"
+ fi
+ 
+ if [ "$1" = '-sqlite3' -o "$1" = '--sqlite3' ]; then
 diff --git a/src/doc/de/tutorial/interfaces.rst b/src/doc/de/tutorial/interfaces.rst
 index c452b11..037cfc3 100644
 --- a/src/doc/de/tutorial/interfaces.rst
@@ -95,7 +108,7 @@
      //   number of vars : 2
      //        block   1 : ordering dp
 diff --git a/src/module_list.py b/src/module_list.py
-index 5948fa2..240078c 100644
+index 0dee41b..ec842b7 100644
 --- a/src/module_list.py
 +++ b/src/module_list.py
 @@ -58,6 +58,12 @@ linbox_libs = list(linbox_pc['libraries'])
@@ -144,7 +157,7 @@
 +    "ec", "ecm",
  ] + linbox_libs  + gsl_libs + [
      "pari", "flint", "ratpoints", "ecl", "glpk", "ppl",
-     "arb", "fplll", "mpfi", "mpfr", "mpc", "gmp", "gmpxx",
+     "arb", "mpfi", "mpfr", "mpc", "gmp", "gmpxx",
 @@ -190,20 +193,7 @@ ext_modules = [
                 language='c++',
                 libraries = ["flint", "gmp", "gmpxx", "m", "ntl"]),
@@ -167,7 +180,7 @@
  
      Extension('sage.algebras.quatalg.quaternion_algebra_cython',
                 sources = ['sage/algebras/quatalg/quaternion_algebra_cython.pyx'],
-@@ -678,35 +668,7 @@ ext_modules = [
+@@ -675,35 +665,7 @@ ext_modules = [
                sources = ['sage/libs/readline.pyx'],
                libraries = ['readline']),
  
@@ -204,7 +217,7 @@
  
      Extension('sage.libs.symmetrica.symmetrica',
                sources = ["sage/libs/symmetrica/symmetrica.pyx"],
-@@ -973,9 +935,7 @@ ext_modules = [
+@@ -970,9 +932,7 @@ ext_modules = [
                sources = ['sage/matrix/matrix_modn_sparse.pyx']),
  
      Extension('sage.matrix.matrix_mpolynomial_dense',
@@ -215,7 +228,7 @@
  
      Extension('sage.matrix.matrix_rational_dense',
                sources = ['sage/matrix/matrix_rational_dense.pyx'],
-@@ -1585,19 +1545,13 @@ ext_modules = [
+@@ -1569,19 +1529,13 @@ ext_modules = [
                sources = ['sage/rings/polynomial/multi_polynomial.pyx']),
  
      Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
@@ -239,7 +252,7 @@
      Extension('sage.rings.polynomial.multi_polynomial_ring_generic',
                sources = ['sage/rings/polynomial/multi_polynomial_ring_generic.pyx']),
 diff --git a/src/sage/arith/misc.py b/src/sage/arith/misc.py
-index c0ffd96..c03a365 100644
+index a7fa5a1..c943bc5 100644
 --- a/src/sage/arith/misc.py
 +++ b/src/sage/arith/misc.py
 @@ -3246,7 +3246,7 @@ def binomial(x, m, **kwds):
@@ -252,7 +265,7 @@
          Multivariate Polynomial Ring in x, y over Ring of integers modulo 7
  
 diff --git a/src/sage/categories/pushout.py b/src/sage/categories/pushout.py
-index c04531a..979e56f 100644
+index 60dfc3a..37a0914 100644
 --- a/src/sage/categories/pushout.py
 +++ b/src/sage/categories/pushout.py
 @@ -3201,6 +3201,7 @@ class BlackBoxConstructionFunctor(ConstructionFunctor):
@@ -264,10 +277,10 @@
          //   number of vars : 1
          //        block   1 : ordering lp
 diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
-index 8149e1e..309bc09 100644
+index f9de7d0..c86a9bd 100644
 --- a/src/sage/interfaces/expect.py
 +++ b/src/sage/interfaces/expect.py
-@@ -1210,6 +1210,7 @@ If this all works, you can then make calls like:
+@@ -1212,6 +1212,7 @@ If this all works, you can then make calls like:
  
              sage: R.<x> = QQ[]; f = x^3 + x + 1;  g = x^3 - x - 1; r = f.resultant(g); gap(ZZ); singular(R)
              Integers
@@ -276,10 +289,10 @@
              //   number of vars : 1
              //        block   1 : ordering lp
 diff --git a/src/sage/interfaces/interface.py b/src/sage/interfaces/interface.py
-index 7c86013..0ee4207 100644
+index 816acfa..95b4a91 100644
 --- a/src/sage/interfaces/interface.py
 +++ b/src/sage/interfaces/interface.py
-@@ -732,6 +732,7 @@ class InterfaceElement(RingElement):
+@@ -733,6 +733,7 @@ class InterfaceElement(Element):
              PolynomialRing( Rationals, ["x"] )
              sage: S = singular.ring(0, ('x'))
              sage: loads(dumps(S))
@@ -288,7 +301,7 @@
              //   number of vars : 1
              //        block   1 : ordering lp
 diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
-index 5ebe7d2..4994909 100644
+index 5ebe7d2..0887e0c 100644
 --- a/src/sage/interfaces/singular.py
 +++ b/src/sage/interfaces/singular.py
 @@ -64,6 +64,7 @@ factorization::
@@ -456,6 +469,36 @@
          //   characteristic : 0
          //   number of vars : 1
          //        block   1 : ordering lp
+@@ -2252,13 +2275,15 @@ def generate_docstring_dictionary():
+         sage: from sage.interfaces.singular import generate_docstring_dictionary
+         sage: generate_docstring_dictionary()
+     """
++    from sage.env import SAGE_LOCAL
++
+     global nodes
+     global node_names
+ 
+     nodes.clear()
+     node_names.clear()
+ 
+-    singular_docdir = os.environ["SAGE_LOCAL"]+"/share/singular/"
++    singular_docdir = SAGE_LOCAL+"/share/singular/"
+ 
+     new_node = re.compile("File: singular\.hlp,  Node: ([^,]*),.*")
+     new_lookup = re.compile("\* ([^:]*):*([^.]*)\..*")
+diff --git a/src/sage/interfaces/tests.py b/src/sage/interfaces/tests.py
+index e41f15c..af9797a 100644
+--- a/src/sage/interfaces/tests.py
++++ b/src/sage/interfaces/tests.py
+@@ -39,7 +39,7 @@ Test that write errors to stderr are handled gracefully by GAP
+     0
+     sage: subprocess.call("echo syntax error | ipython", **kwds) in (0,1)
+     True
+-    sage: subprocess.call("echo syntax error | singular", **kwds)
++    sage: subprocess.call("echo syntax error | Singular", **kwds)
+     0
+ """
+ from __future__ import print_function
 diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd
 index 7a5af56..8235e9d 100644
 --- a/src/sage/libs/singular/decl.pxd
@@ -1845,7 +1888,7 @@
 -
 -
 diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx
-index 7245090..c83c5ea 100644
+index 7245090..7495325 100644
 --- a/src/sage/libs/singular/singular.pyx
 +++ b/src/sage/libs/singular/singular.pyx
 @@ -5,12 +5,14 @@ AUTHOR:
@@ -2491,7 +2534,7 @@
  
  cdef init_libsingular():
      """
-@@ -712,18 +761,25 @@ cdef init_libsingular():
+@@ -712,18 +761,26 @@ cdef init_libsingular():
  
      cdef void *handle = NULL
  
@@ -2505,6 +2548,7 @@
 -                    print(err)
 -            break
 +    import os
++    from sage.env import SAGE_LOCAL 
 +    UNAME = os.uname()[0]
 +    if UNAME[:6] == "CYGWIN":
 +        extension = "dll"
@@ -2514,7 +2558,7 @@
 +        extension = "so"
 +
 +    # library name changed from libsingular to libSingular btw 3.x and 4.x
-+    lib = os.environ['SAGE_LOCAL']+"/lib/libSingular."+extension
++    lib = SAGE_LOCAL+"/lib/libSingular."+extension
 +
 +    if not os.path.exists(lib):
 +        raise ImportError("cannot locate Singular library ({})".format(lib))
@@ -2528,7 +2572,7 @@
  
      # load SINGULAR
      siInit(lib)
-@@ -737,9 +793,7 @@ cdef init_libsingular():
+@@ -737,9 +794,7 @@ cdef init_libsingular():
      _saved_options = (int(singular_options), 0, 0)
      _saved_verbose_options = int(singular_verbose_options)
  
@@ -2545,13 +2589,13 @@
 +++ b/src/sage/misc/cython.py
 @@ -310,7 +310,7 @@ def cython(filename, verbose=False, compile_message=False,
          sage: code = [
-         ... "#clang C++",
-         ... "#cinclude %s/include/singular %s/include/factory"%(SAGE_LOCAL, SAGE_LOCAL),
--        ... "#clib m readline singular givaro ntl gmpxx gmp",
-+        ... "#clib m readline Singular givaro ntl gmpxx gmp",
-         ... "from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular",
-         ... "from sage.libs.singular.polynomial cimport singular_polynomial_pow",
-         ... "def test(MPolynomial_libsingular p):",
+         ....: "#clang C++",
+         ....: "#cinclude %s/include/singular %s/include/factory"%(SAGE_LOCAL, SAGE_LOCAL),
+-        ....: "#clib m readline singular givaro ntl gmpxx gmp",
++        ....: "#clib m readline Singular givaro ntl gmpxx gmp",
+         ....: "from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular",
+         ....: "from sage.libs.singular.polynomial cimport singular_polynomial_pow",
+         ....: "def test(MPolynomial_libsingular p):",
 diff --git a/src/sage/rings/multi_power_series_ring_element.py b/src/sage/rings/multi_power_series_ring_element.py
 index 6388859..142f38b 100644
 --- a/src/sage/rings/multi_power_series_ring_element.py
@@ -3308,7 +3352,7 @@
          To produce a dense polynomial, pick ``terms=Infinity``::
  
 diff --git a/src/sage/rings/polynomial/pbori.pyx b/src/sage/rings/polynomial/pbori.pyx
-index 4f2ab18..bd7fb83 100644
+index 54e00d9..13b6cdb 100644
 --- a/src/sage/rings/polynomial/pbori.pyx
 +++ b/src/sage/rings/polynomial/pbori.pyx
 @@ -1370,6 +1370,7 @@ cdef class BooleanPolynomialRing(MPolynomialRing_generic):
@@ -3610,11 +3654,49 @@
              //   characteristic : 2
              //   number of vars : 2
              //        block   1 : ordering dp
+diff --git a/src/sage/schemes/curves/affine_curve.py b/src/sage/schemes/curves/affine_curve.py
+index 40235a1..72c520d 100644
+--- a/src/sage/schemes/curves/affine_curve.py
++++ b/src/sage/schemes/curves/affine_curve.py
+@@ -729,9 +729,9 @@ class AffineCurve(Curve_generic, AlgebraicScheme_subscheme_affine):
+             (Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by
+             24*x^2*ss1^3 + 24*ss1^3 + (a0^3 - 8*a0),
+              Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by
+-             24*s1^2*ss0 + (a0^3 - 8*a0)*ss0^2 + (6*a0^3)*s1,
++             24*s1^2*ss0 + (a0^3 - 8*a0)*ss0^2 + (-6*a0^3)*s1,
+              Affine Plane Curve over Number Field in a0 with defining polynomial y^4 - 4*y^2 + 16 defined by
+-             8*y^2*s0^4 + (-4*a0^3)*y*s0^3 - 32*s0^2 + (a0^3 - 8*a0)*y)
++             8*y^2*s0^4 + (4*a0^3)*y*s0^3 - 32*s0^2 + (a0^3 - 8*a0)*y)
+ 
+         ::
+ 
+@@ -1471,7 +1471,7 @@ class AffinePlaneCurve(AffineCurve):
+               To:   Affine Plane Curve over Number Field in a with defining
+             polynomial a^2 + 7 defined by x^2 + y^2 + 7
+               Defn: Defined on coordinates by sending (t) to
+-                    (((7*a)*t^2 + (a))/(-7*t^2 + 1), (-14*t)/(-7*t^2 + 1))
++                    ((-7*t^2 + 7)/((-a)*t^2 + (-a)), 14*t/((-a)*t^2 + (-a)))
+         """
+         para = self.projective_closure(i=0).rational_parameterization().defining_polynomials()
+         # these polynomials are homogeneous in two indeterminants, so dehomogenize wrt one of the variables
+diff --git a/src/sage/schemes/curves/projective_curve.py b/src/sage/schemes/curves/projective_curve.py
+index f666231..e62a177 100644
+--- a/src/sage/schemes/curves/projective_curve.py
++++ b/src/sage/schemes/curves/projective_curve.py
+@@ -1537,7 +1537,7 @@ class ProjectivePlaneCurve(ProjectiveCurve):
+               To:   Projective Plane Curve over Number Field in a with defining
+               polynomial a^2 + 1 defined by x^2 + y^2 + z^2
+               Defn: Defined on coordinates by sending (s : t) to
+-                    (s^2 - t^2 : (a)*s^2 + (a)*t^2 : -2*s*t)
++                    ((-a)*s^2 + (-a)*t^2 : s^2 - t^2 : 2*s*t)
+         """
+         if self.genus() != 0:
+             raise TypeError("this curve must have geometric genus zero")
 diff --git a/src/sage/structure/element.pyx b/src/sage/structure/element.pyx
-index e3114f4..839151f 100644
+index 6eaf3ec..1cc469c 100644
 --- a/src/sage/structure/element.pyx
 +++ b/src/sage/structure/element.pyx
-@@ -1781,15 +1781,14 @@ cdef class RingElement(ModuleElement):
+@@ -2391,15 +2391,14 @@ cdef class RingElement(ModuleElement):
              ...
              OverflowError: Exponent overflow (2147483648).
  
@@ -3636,7 +3718,7 @@
          """
          if dummy is not None:
 diff --git a/src/sage/tests/french_book/mpoly.py b/src/sage/tests/french_book/mpoly.py
-index e12740c..82b2988 100644
+index 430b9a3..19975ac 100644
 --- a/src/sage/tests/french_book/mpoly.py
 +++ b/src/sage/tests/french_book/mpoly.py
 @@ -163,7 +163,7 @@ Sage example in ./mpoly.tex, line 432::
@@ -3647,4 +3729,3 @@
 +  [z^17 - 1, -2*z^10 + y, -3/4*y^2 + x]
  
  Sage example in ./mpoly.tex, line 534::
- 



More information about the arch-commits mailing list