diff options
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | latte-count.patch | 10 | ||||
-rw-r--r-- | sagemath-bliss-0.77.patch | 96 | ||||
-rw-r--r-- | sagemath-lrcalc2.patch | 685 | ||||
-rw-r--r-- | test-optional.patch | 4 |
6 files changed, 94 insertions, 723 deletions
@@ -1,6 +1,6 @@ pkgbase = sagemath-git pkgdesc = Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab - pkgver = 9.5.rc0.r0.g38323507f6 + pkgver = 9.6.beta3.r0.g1e8ba0aac4 pkgrel = 1 url = http://www.sagemath.org arch = x86_64 @@ -100,15 +100,13 @@ pkgbase = sagemath-git source = sagemath-optional-packages.patch source = latte-count.patch source = test-optional.patch - source = sagemath-lrcalc2.patch source = sagemath-linbox-1.7.patch source = sagemath-bliss-0.77.patch sha256sums = SKIP sha256sums = eee5fa15d8c7be7e009166dbde3ea24bb10d7793dc12880516f278f86b1a6694 - sha256sums = 2f310081357996b7d3bf813e63d07c0fc04d6724adbfbd1beeb554e9476e2e4c - sha256sums = d1310321bf07491658e83087a6ddb0011738fa17a1dc3275d6d5c6907eaf3df8 - sha256sums = c8a1fb98f454dfd52101373e478e396d83a7d55c2c658b1d246a86603cbb15e8 + sha256sums = 2bf9e2b44c20c5bec9d90782f59a87374a3c726241179191e9589179e1550a03 + sha256sums = 9d042070df3dfd53a1248659677798da888f733548eda91a6d5169c7aa1907e1 sha256sums = eacea27b214d32cb886a75695153dfc36b5bad2fd2517e8e4eee18e74220e9e3 - sha256sums = 49ede468b8e1e7b8d7a390aab9ff1a6e899a0c5e487632cbf76902d80c637505 + sha256sums = b467a41e1e0a0850f7722d875a743233751966a206c2f61401c7582aa722f84e pkgname = sagemath-git @@ -6,7 +6,7 @@ # Contributor: Stefan Husmann <stefan-husmann at t-online dot de> pkgname=sagemath-git -pkgver=9.5.rc0.r0.g38323507f6 +pkgver=9.6.beta3.r0.g1e8ba0aac4 pkgrel=1 pkgdesc='Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab' arch=(x86_64) @@ -54,16 +54,14 @@ source=(git://git.sagemath.org/sage.git#branch=develop sagemath-optional-packages.patch latte-count.patch test-optional.patch - sagemath-lrcalc2.patch sagemath-linbox-1.7.patch sagemath-bliss-0.77.patch) sha256sums=('SKIP' 'eee5fa15d8c7be7e009166dbde3ea24bb10d7793dc12880516f278f86b1a6694' - '2f310081357996b7d3bf813e63d07c0fc04d6724adbfbd1beeb554e9476e2e4c' - 'd1310321bf07491658e83087a6ddb0011738fa17a1dc3275d6d5c6907eaf3df8' - 'c8a1fb98f454dfd52101373e478e396d83a7d55c2c658b1d246a86603cbb15e8' + '2bf9e2b44c20c5bec9d90782f59a87374a3c726241179191e9589179e1550a03' + '9d042070df3dfd53a1248659677798da888f733548eda91a6d5169c7aa1907e1' 'eacea27b214d32cb886a75695153dfc36b5bad2fd2517e8e4eee18e74220e9e3' - '49ede468b8e1e7b8d7a390aab9ff1a6e899a0c5e487632cbf76902d80c637505') + 'b467a41e1e0a0850f7722d875a743233751966a206c2f61401c7582aa722f84e') pkgver() { cd sage @@ -74,8 +72,6 @@ prepare(){ cd sage # Upstream patches -# Replace lrcalc.pyx with a wrapper over lrcalc's python bindings https://trac.sagemath.org/ticket/31355 - patch -p1 -i ../sagemath-lrcalc2.patch # Fix build with linbox 1.7 https://trac.sagemath.org/ticket/32959 patch -p1 -i ../sagemath-linbox-1.7.patch # Fix build with bliss 0.77 https://trac.sagemath.org/ticket/33010 diff --git a/latte-count.patch b/latte-count.patch index 7e3b4a93a545..1879c55cd0f9 100644 --- a/latte-count.patch +++ b/latte-count.patch @@ -2,7 +2,7 @@ diff --git a/src/sage/geometry/polyhedron/base_ZZ.py b/src/sage/geometry/polyhed index 268af9db0d..70d41dfa30 100644 --- a/src/sage/geometry/polyhedron/base_ZZ.py +++ b/src/sage/geometry/polyhedron/base_ZZ.py -@@ -193,7 +193,7 @@ class Polyhedron_ZZ(Polyhedron_base): +@@ -194,7 +194,7 @@ class Polyhedron_ZZ(Polyhedron_base): sage: p = P._ehrhart_polynomial_latte(maxdet=5, verbose=True) # optional - latte_int This is LattE integrale ... ... @@ -11,7 +11,7 @@ index 268af9db0d..70d41dfa30 100644 ... sage: p # optional - latte_int 1/2*t^2 + 3/2*t + 1 -@@ -201,7 +201,7 @@ class Polyhedron_ZZ(Polyhedron_base): +@@ -202,7 +202,7 @@ class Polyhedron_ZZ(Polyhedron_base): sage: p = P._ehrhart_polynomial_latte(dual=True, verbose=True) # optional - latte_int This is LattE integrale ... ... @@ -20,7 +20,7 @@ index 268af9db0d..70d41dfa30 100644 ... sage: p # optional - latte_int 1/2*t^2 + 3/2*t + 1 -@@ -209,7 +209,7 @@ class Polyhedron_ZZ(Polyhedron_base): +@@ -210,7 +210,7 @@ class Polyhedron_ZZ(Polyhedron_base): sage: p = P._ehrhart_polynomial_latte(irrational_primal=True, verbose=True) # optional - latte_int This is LattE integrale ... ... @@ -29,7 +29,7 @@ index 268af9db0d..70d41dfa30 100644 ... sage: p # optional - latte_int 1/2*t^2 + 3/2*t + 1 -@@ -217,7 +217,7 @@ class Polyhedron_ZZ(Polyhedron_base): +@@ -218,7 +218,7 @@ class Polyhedron_ZZ(Polyhedron_base): sage: p = P._ehrhart_polynomial_latte(irrational_all_primal=True, verbose=True) # optional - latte_int This is LattE integrale ... ... @@ -38,7 +38,7 @@ index 268af9db0d..70d41dfa30 100644 ... sage: p # optional - latte_int 1/2*t^2 + 3/2*t + 1 -@@ -229,7 +229,7 @@ class Polyhedron_ZZ(Polyhedron_base): +@@ -230,7 +230,7 @@ class Polyhedron_ZZ(Polyhedron_base): ... RuntimeError: LattE integrale program failed (exit code 1): ... diff --git a/sagemath-bliss-0.77.patch b/sagemath-bliss-0.77.patch index 2c0f11b56b81..4f95bcedf635 100644 --- a/sagemath-bliss-0.77.patch +++ b/sagemath-bliss-0.77.patch @@ -1,3 +1,34 @@ +diff --git a/build/pkgs/bliss/SPKG.rst b/build/pkgs/bliss/SPKG.rst +index 236b87a199..77407f16ac 100644 +--- a/build/pkgs/bliss/SPKG.rst ++++ b/build/pkgs/bliss/SPKG.rst +@@ -10,20 +10,19 @@ canonical forms of graphs. + License + ------- + +-LGPL ++LGPL3 + + + Upstream Contact + ---------------- + +-Bliss is currently being maintained by Tommi Junttila and Petteri Kaski. ++Bliss is currently being maintained by Tommi Junttila at + +-http://www.tcs.tkk.fi/Software/bliss/index.html ++https://users.aalto.fi/~tjunttil/bliss/index.html ++ ++Bliss used to be maintained by Tommi Junttila and Petteri Kaski up to version 0.73 at + +-We apply patches generated from https://github.com/mkoeppe/bliss (branch +-apply_debian_patches) as our upstream. This tracks the patches from the +-Debian package, adding an autotools build system and adjusting the +-include file locations. ++http://www.tcs.tkk.fi/Software/bliss/index.html + + Dependencies + ------------ diff --git a/build/pkgs/bliss/checksums.ini b/build/pkgs/bliss/checksums.ini index e97d89587b..0c1ebf647b 100644 --- a/build/pkgs/bliss/checksums.ini @@ -29,19 +60,54 @@ index e93ee1376f..9e1e206c41 100644 @@ -1 +1 @@ -0.73+debian-1+sage-2016-08-02.p0 +0.77 +diff --git a/build/pkgs/bliss/patches/bliss-0.77-install.patch b/build/pkgs/bliss/patches/bliss-0.77-install.patch +new file mode 100644 +index 0000000000..caab14aa40 +--- /dev/null ++++ b/build/pkgs/bliss/patches/bliss-0.77-install.patch +@@ -0,0 +1,32 @@ ++diff --git a/CMakeLists.txt b/CMakeLists.txt ++index 01ed093..cfdb0a6 100644 ++--- a/CMakeLists.txt +++++ b/CMakeLists.txt ++@@ -62,3 +62,27 @@ if(USE_GMP) ++ target_link_libraries(bliss-executable ${GMP_LIBRARIES}) ++ endif(USE_GMP) ++ set_target_properties(bliss-executable PROPERTIES OUTPUT_NAME bliss) +++ +++include(GNUInstallDirs) +++ +++set( +++ BLISS_HEADERS +++ src/bliss_C.h +++ src/uintseqhash.hh +++ src/abstractgraph.hh +++ src/stats.hh +++ src/digraph.hh +++ src/defs.hh +++ src/heap.hh +++ src/graph.hh +++ src/partition.hh +++ src/kqueue.hh +++ src/utils.hh +++ src/orbit.hh +++ src/timer.hh +++ src/bignum.hh +++) +++ +++install(TARGETS bliss-executable RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +++install(TARGETS bliss LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +++install(FILES ${BLISS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/bliss) diff --git a/build/pkgs/bliss/spkg-install.in b/build/pkgs/bliss/spkg-install.in -index aaf4c3037b..ad1fe8176c 100644 +index aaf4c3037b..4124a2338e 100644 --- a/build/pkgs/bliss/spkg-install.in +++ b/build/pkgs/bliss/spkg-install.in -@@ -1,4 +1,6 @@ +@@ -1,4 +1,4 @@ cd src -sdh_configure --disable-gmp +sdh_cmake -DUSE_GMP=OFF -DCMAKE_VERBOSE_MAKEFILE=ON sdh_make --sdh_make_install -+sdh_install src/*.hh $SAGE_LOCAL/include/bliss/ -+sdh_install libbliss.so $SAGE_LOCAL/lib/ -+sdh_install bliss $SAGE_LOCAL/bin/ + sdh_make_install diff --git a/build/pkgs/bliss/spkg-src b/build/pkgs/bliss/spkg-src deleted file mode 100755 index 90073233b7..0000000000 @@ -77,18 +143,16 @@ index 90073233b7..0000000000 - - diff --git a/src/sage/graphs/bliss.pyx b/src/sage/graphs/bliss.pyx -index 22e861a587..fa426e3d11 100644 +index bf15833664..4f4e0ee3ca 100644 --- a/src/sage/graphs/bliss.pyx +++ b/src/sage/graphs/bliss.pyx -@@ -47,22 +47,27 @@ cdef extern from "bliss/graph.hh" namespace "bliss": +@@ -47,22 +47,23 @@ cdef extern from "bliss/graph.hh" namespace "bliss": cdef cppclass Graph(AbstractGraph): Graph(const unsigned int) void add_edge(const unsigned int, const unsigned int) - void find_automorphisms(Stats&, void (*)(void* , unsigned int, - const unsigned int*), void*) -+ #void find_automorphisms(Stats&, void (*)(void* , unsigned int, -+ #const unsigned int*), void*) - void change_color(const unsigned int, const unsigned int); + void change_color(const unsigned int, const unsigned int) - const unsigned int* canonical_form(Stats&, void (*)(void*,unsigned int, - const unsigned int*), void*) + const unsigned int* canonical_form(Stats&) @@ -100,9 +164,7 @@ index 22e861a587..fa426e3d11 100644 void add_edge(const unsigned int, const unsigned int) - void find_automorphisms(Stats&, void (*)(void* , unsigned int, - const unsigned int*), void*) -+ #void find_automorphisms(Stats&, void (*)(void* , unsigned int, -+ #const unsigned int*), void*) - void change_color(const unsigned int, const unsigned int); + void change_color(const unsigned int, const unsigned int) - const unsigned int* canonical_form(Stats&, void (*)(void*,unsigned int, - const unsigned int*), void*) + const unsigned int* canonical_form(Stats&) @@ -116,7 +178,7 @@ index 22e861a587..fa426e3d11 100644 cdef int encoding_numbits(int n): r""" -@@ -124,9 +129,6 @@ cdef void add_gen(void *user_param, unsigned int n, const unsigned int *aut): +@@ -124,9 +125,6 @@ cdef void add_gen(void *user_param, unsigned int n, const unsigned int *aut): sig_free(done) @@ -126,7 +188,7 @@ index 22e861a587..fa426e3d11 100644 ##################################################### # constructing bliss graphs from edge lists ##################################################### -@@ -345,10 +347,10 @@ cdef canonical_form_from_edge_list(int Vnr, list Vout, list Vin, int Lnr=1, list +@@ -345,10 +343,10 @@ cdef canonical_form_from_edge_list(int Vnr, list Vout, list Vin, int Lnr=1, list if directed: d = bliss_digraph_from_labelled_edges(Vnr, Lnr, Vout, Vin, labels, partition) @@ -139,7 +201,7 @@ index 22e861a587..fa426e3d11 100644 for i in range(len(Vout)): x = Vout[i] -@@ -640,11 +642,11 @@ cdef automorphism_group_gens_from_edge_list(int Vnr, Vout, Vin, int Lnr=1, label +@@ -640,11 +638,11 @@ cdef automorphism_group_gens_from_edge_list(int Vnr, Vout, Vin, int Lnr=1, label if directed: d = bliss_digraph_from_labelled_edges(Vnr, Lnr, Vout, Vin, labels, partition) diff --git a/sagemath-lrcalc2.patch b/sagemath-lrcalc2.patch deleted file mode 100644 index 47e06450608d..000000000000 --- a/sagemath-lrcalc2.patch +++ /dev/null @@ -1,685 +0,0 @@ -diff --git a/build/pkgs/lrcalc/checksums.ini b/build/pkgs/lrcalc/checksums.ini -index 7a0e6a1b96..8b8620ba52 100644 ---- a/build/pkgs/lrcalc/checksums.ini -+++ b/build/pkgs/lrcalc/checksums.ini -@@ -1,4 +1,5 @@ --tarball=lrcalc-VERSION.tar.gz --sha1=89c288875bc3e3e2919876cb645bdfd7316b5965 --md5=6bba16c0cca9debccd0af847bd3d4a23 --cksum=3738483656 -+tarball=liblrcalc-VERSION.tar.gz -+sha1=2a98661eb39c7ef526c932f7886fc3142fd639ab -+md5=7cfa8f67287f2b70a15a833b94bc24b6 -+cksum=2250996027 -+upstream_url=https://sites.math.rutgers.edu/~asbuch/lrcalc/lrcalc-VERSION.tar.gz -diff --git a/build/pkgs/lrcalc/package-version.txt b/build/pkgs/lrcalc/package-version.txt -index 92ab3427e8..879b416e60 100644 ---- a/build/pkgs/lrcalc/package-version.txt -+++ b/build/pkgs/lrcalc/package-version.txt -@@ -1 +1 @@ --1.2.p1 -+2.1 -diff --git a/build/pkgs/lrcalc/patches/includes.patch b/build/pkgs/lrcalc/patches/includes.patch -deleted file mode 100644 -index 707da176a6..0000000000 ---- a/build/pkgs/lrcalc/patches/includes.patch -+++ /dev/null -@@ -1,90 +0,0 @@ --From 4a5e1c8c3c11efdb1cbb4239825a6bf4bf1c52f8 Mon Sep 17 00:00:00 2001 --From: Anders Skovsted Buch <asbuch@math.rutgers.edu> --Date: Sun, 29 Nov 2015 16:25:56 -0500 --Subject: [PATCH] Patch by Jeroen Demeyer to change include <vector.h> to -- "vector.h", plus similar cases. -- ----- -- src/lrcalc.c | 2 +- -- src/maple.c | 4 ++-- -- src/schublib.h | 2 +- -- src/symfcn.c | 6 +++--- -- src/symfcn.h | 4 ++-- -- 5 files changed, 9 insertions(+), 9 deletions(-) -- --diff --git a/src/lrcalc.c b/src/lrcalc.c --index aff3f75..60df49e 100644 ----- a/src/lrcalc.c --+++ b/src/lrcalc.c --@@ -8,7 +8,7 @@ -- #include <stdlib.h> -- extern char *optarg; -- ---#include <vectarg.h> --+#include "vectarg.h" -- -- #include "symfcn.h" -- #include "maple.h" --diff --git a/src/maple.c b/src/maple.c --index fdc0768..a5f4d14 100644 ----- a/src/maple.c --+++ b/src/maple.c --@@ -4,8 +4,8 @@ -- */ -- -- #include <stdio.h> ---#include <vector.h> ---#include <hashtab.h> --+#include "vector.h" --+#include "hashtab.h" -- #include "maple.h" -- -- --diff --git a/src/schublib.h b/src/schublib.h --index a8e8511..864850c 100644 ----- a/src/schublib.h --+++ b/src/schublib.h --@@ -1,7 +1,7 @@ -- #ifndef _SCHUBLIB_H -- #define _SCHUBLIB_H -- ---#include <hashtab.h> --+#include "hashtab.h" -- -- hashtab *trans(vector *w, int vars, hashtab *res); -- hashtab *monk(int i, hashtab *slc, int rank); --diff --git a/src/symfcn.c b/src/symfcn.c --index 4ffbe4b..fd5df5d 100644 ----- a/src/symfcn.c --+++ b/src/symfcn.c --@@ -5,9 +5,9 @@ -- -- #include <stdio.h> -- ---#include <alloc.h> ---#include <vector.h> ---#include <hashtab.h> --+#include "alloc.h" --+#include "vector.h" --+#include "hashtab.h" -- -- #include "symfcn.h" -- --diff --git a/src/symfcn.h b/src/symfcn.h --index b8543b1..29bb00d 100644 ----- a/src/symfcn.h --+++ b/src/symfcn.h --@@ -1,8 +1,8 @@ -- #ifndef _SYMFCN_H -- #define _SYMFCN_H -- ---#include <hashtab.h> ---#include <vector.h> --+#include "hashtab.h" --+#include "vector.h" -- -- int part_itr_sz(vector *part); -- int part_itr_sub(vector *part, vector *outer); ---- --2.1.1.1.g1fb337f -- -diff --git a/build/pkgs/lrcalc/spkg-configure.m4 b/build/pkgs/lrcalc/spkg-configure.m4 -index f2f8b74f8f..b8171ce23f 100644 ---- a/build/pkgs/lrcalc/spkg-configure.m4 -+++ b/build/pkgs/lrcalc/spkg-configure.m4 -@@ -1,9 +1,10 @@ - SAGE_SPKG_CONFIGURE([lrcalc], [ -- AC_CHECK_HEADERS([lrcalc/schublib.h], [ -+ AC_LANG_PUSH([C]) -+ AC_CHECK_HEADERS([lrcalc/schublib.h] [lrcalc/lrcoef.h], [ - AC_SEARCH_LIBS([mult_poly_schubert], [lrcalc], [], [sage_spkg_install_lrcalc=yes]) - ], [sage_spkg_install_lrcalc=yes], -- [[#ifndef _HASHTAB_H -- #include <lrcalc/hashtab.h> -- #include <lrcalc/vector.h> -+ [[#ifndef _IVECTOR_H -+ #include <lrcalc/ivector.h> - #endif]]) -+ AC_LANG_POP - ]) -diff --git a/build/pkgs/lrcalc/spkg-install.in b/build/pkgs/lrcalc/spkg-install.in -index d6665bfb42..a863950189 100644 ---- a/build/pkgs/lrcalc/spkg-install.in -+++ b/build/pkgs/lrcalc/spkg-install.in -@@ -1,9 +1,5 @@ - cd src - --# Use newer version of config.guess and config.sub (see Trac #19725) --cp "$SAGE_ROOT"/config/config.guess . --cp "$SAGE_ROOT"/config/config.sub . -- - sdh_configure - sdh_make - sdh_make_install -diff --git a/build/pkgs/lrcalc_python/SPKG.rst b/build/pkgs/lrcalc_python/SPKG.rst -new file mode 100644 -index 0000000000..3a98d556ca ---- /dev/null -+++ b/build/pkgs/lrcalc_python/SPKG.rst -@@ -0,0 +1,22 @@ -+lrcalc_python: Littlewood-Richardson calculator -+=============================================== -+ -+Description -+----------- -+ -+Python bindings for the Littlewood-Richardson Calculator -+ -+http://sites.math.rutgers.edu/~asbuch/lrcalc/ -+ -+License -+------- -+ -+GNU General Public License V3 -+ -+ -+Upstream Contact -+---------------- -+ -+Anders S. Buch (asbuch@math.rutgers.edu) -+ -+https://bitbucket.org/asbuch/lrcalc -diff --git a/build/pkgs/lrcalc_python/checksums.ini b/build/pkgs/lrcalc_python/checksums.ini -new file mode 100644 -index 0000000000..bdfef8711e ---- /dev/null -+++ b/build/pkgs/lrcalc_python/checksums.ini -@@ -0,0 +1,5 @@ -+tarball=lrcalc-VERSION.tar.gz -+sha1=3e9366d9e8b8beccec70b07d174b8f6683c01574 -+md5=4ae444d12ed8e0dd770594ea3ef4a208 -+cksum=2741305196 -+upstream_url=https://pypi.io/packages/source/l/lrcalc/lrcalc-VERSION.tar.gz -diff --git a/build/pkgs/lrcalc_python/dependencies b/build/pkgs/lrcalc_python/dependencies -new file mode 100644 -index 0000000000..63e5177ae0 ---- /dev/null -+++ b/build/pkgs/lrcalc_python/dependencies -@@ -0,0 +1,5 @@ -+$(PYTHON) lrcalc | $(PYTHON_TOOLCHAIN) cython -+ -+---------- -+All lines of this file are ignored except the first. -+It is copied by SAGE_ROOT/build/make/install into SAGE_ROOT/build/make/Makefile. -diff --git a/build/pkgs/lrcalc_python/install-requires.txt b/build/pkgs/lrcalc_python/install-requires.txt -new file mode 100644 -index 0000000000..8b44d97f4b ---- /dev/null -+++ b/build/pkgs/lrcalc_python/install-requires.txt -@@ -0,0 +1 @@ -+lrcalc ~=2.1 -diff --git a/build/pkgs/lrcalc_python/package-version.txt b/build/pkgs/lrcalc_python/package-version.txt -new file mode 100644 -index 0000000000..879b416e60 ---- /dev/null -+++ b/build/pkgs/lrcalc_python/package-version.txt -@@ -0,0 +1 @@ -+2.1 -diff --git a/build/pkgs/lrcalc_python/spkg-install.in b/build/pkgs/lrcalc_python/spkg-install.in -new file mode 100644 -index 0000000000..deba1bb42b ---- /dev/null -+++ b/build/pkgs/lrcalc_python/spkg-install.in -@@ -0,0 +1 @@ -+cd src && sdh_pip_install . -diff --git a/build/pkgs/lrcalc_python/type b/build/pkgs/lrcalc_python/type -new file mode 100644 -index 0000000000..a6a7b9cd72 ---- /dev/null -+++ b/build/pkgs/lrcalc_python/type -@@ -0,0 +1 @@ -+standard -diff --git a/build/pkgs/sagelib/dependencies b/build/pkgs/sagelib/dependencies -index 9c7797b1f4..3369d4d905 100644 ---- a/build/pkgs/sagelib/dependencies -+++ b/build/pkgs/sagelib/dependencies -@@ -1,4 +1,4 @@ --FORCE $(SCRIPTS) arb boost_cropped $(BLAS) brial cliquer cypari cysignals cython ecl eclib ecm flint libgd gap giac givaro glpk gmpy2 gsl iml jinja2 jupyter_core lcalc lrcalc libbraiding libhomfly libpng linbox m4ri m4rie memory_allocator mpc mpfi mpfr $(MP_LIBRARY) ntl numpy pari pip pkgconfig planarity ppl pplpy primesieve primecount primecountpy pycygwin $(PYTHON) ratpoints requests rw sage_conf singular symmetrica zn_poly $(PCFILES) | $(PYTHON_TOOLCHAIN) sage_setup -+FORCE $(SCRIPTS) arb boost_cropped $(BLAS) brial cliquer cypari cysignals cython ecl eclib ecm flint libgd gap giac givaro glpk gmpy2 gsl iml jinja2 jupyter_core lcalc lrcalc_python libbraiding libhomfly libpng linbox m4ri m4rie memory_allocator mpc mpfi mpfr $(MP_LIBRARY) ntl numpy pari pip pkgconfig planarity ppl pplpy primesieve primecount primecountpy pycygwin $(PYTHON) ratpoints requests rw sage_conf singular symmetrica zn_poly $(PCFILES) | $(PYTHON_TOOLCHAIN) sage_setup - - ---------- - All lines of this file are ignored except the first. -diff --git a/src/sage/libs/lrcalc/lrcalc.pxd b/src/sage/libs/lrcalc/lrcalc.pxd -deleted file mode 100644 -index 10b88db93f..0000000000 ---- a/src/sage/libs/lrcalc/lrcalc.pxd -+++ /dev/null -@@ -1,77 +0,0 @@ --# distutils: libraries = lrcalc -- --cdef extern from "lrcalc/hashtab.h": -- ctypedef struct hashtab: -- pass -- -- ctypedef struct hash_itr: -- pass -- -- ctypedef unsigned long hashkey_t -- ctypedef int (*cmp_t) (void* a, void* b) -- ctypedef hashkey_t (*hash_t) (void* a) -- -- hashtab* hash_new(cmp_t cm, hash_t hsh) -- void hash_free(hashtab *ht) -- -- void* hash_lookup(hashtab *ht, void *key) -- void* hash_insert(hashtab *ht, void *key, void *value) -- -- bint hash_good(hash_itr) -- void hash_first(hashtab* s, hash_itr itr) -- void hash_next(hash_itr itr) -- void* hash_key(hash_itr itr) -- void* hash_value(hash_itr itr) -- int hash_intvalue(hash_itr itr) -- --cdef extern from "lrcalc/vector.h": -- ctypedef struct vector: -- size_t length -- int* array -- -- vector* v_new(int length) -- void v_free(vector* v) -- void v_print(vector *v) -- int v_length(vector* v) -- int v_elem(vector* v, int i) -- -- ctypedef struct vecpair: -- vector *first -- vector *second -- -- vector* vp_first(vecpair* vp) -- vector* vp_second(vecpair* vp) -- --cdef extern from "lrcalc/list.h": -- cdef struct _list: -- void **array -- size_t allocated -- size_t length -- void l_free(_list *lst) -- --cdef extern from "lrcalc/symfcn.h": -- long long lrcoef_c "lrcoef"(vector* outer, vector* inner1, vector* inner2) -- hashtab* mult_c "mult"(vector *sh1, vector *sh2, int maxrows) -- hashtab* skew_c "skew"(vector *outer, vector *inner, int maxrows) -- hashtab* coprod_c "coprod"(vector *part, int all) -- void fusion_reduce_c "fusion_reduce"(hashtab* ht, int rows, int cols, int opt_zero) -- _list *quantum_reduce_c "quantum_reduce"(hashtab* ht, int rows, int col) -- -- ctypedef struct skewtab: -- vector *outer -- vector *inner -- vector *conts -- int maxrows -- vector *conjugate -- int rows -- int cols -- int matrix[1] -- -- skewtab *st_new(vector *outer, vector *inner, vector *conts, int maxrows) -- int st_next(skewtab *st) -- void st_print(skewtab *st) -- void st_free(skewtab *st) -- -- --cdef extern from "lrcalc/schublib.h": -- hashtab* mult_schubert_c "mult_schubert"(vector *sh1, vector *sh2, int rank) -diff --git a/src/sage/libs/lrcalc/lrcalc.pyx b/src/sage/libs/lrcalc/lrcalc.py -similarity index 65% -rename from src/sage/libs/lrcalc/lrcalc.pyx -rename to src/sage/libs/lrcalc/lrcalc.py -index b591081ec4..65db959944 100644 ---- a/src/sage/libs/lrcalc/lrcalc.pyx -+++ b/src/sage/libs/lrcalc/lrcalc.py -@@ -187,180 +187,24 @@ AUTHORS: - # https://www.gnu.org/licenses/ - # **************************************************************************** - --from sage.rings.integer cimport Integer --from sage.structure.parent cimport Parent - from sage.combinat.partition import _Partitions - from sage.combinat.permutation import Permutation --from sage.combinat.skew_tableau import SkewTableau -+from sage.combinat.skew_tableau import SkewTableaux -+from sage.combinat.skew_partition import SkewPartition -+from sage.rings.integer import Integer -+import lrcalc - -- --cdef vector* iterable_to_vector(it): -- """ -- Return an lrcalc vector (which is a list of integers) from a Python iterable. -- -- TESTS:: -- -- sage: from sage.libs.lrcalc.lrcalc import test_iterable_to_vector -- sage: x = test_iterable_to_vector(Partition([3,2,1])); x #indirect doctest -- [3, 2, 1] -- """ -- cdef vector* v -- cdef list itr = list(it) -- cdef int n = len(itr) -- cdef int i -- v = v_new(n) -- for i in range(n): -- v.array[i] = int(itr[i]) -- return v -- -- --cdef list vector_to_list(vector *v): -- """ -- Converts a lrcalc vector to Python list. -- -- TESTS:: -- -- sage: from sage.libs.lrcalc.lrcalc import test_iterable_to_vector -- sage: x = test_iterable_to_vector([]); x #indirect doctest -- [] -- """ -- cdef int i, n -- n = v_length(v) -- cdef list result = [None]*n -- for i in range(n): -- result[i] = Integer(v_elem(v, i)) -- return result -- -- --def test_iterable_to_vector(it): -- """ -- A wrapper function for the cdef function ``iterable_to_vector`` -- and ``vector_to_list``, to test that they are working correctly. -- -- EXAMPLES:: -- -- sage: from sage.libs.lrcalc.lrcalc import test_iterable_to_vector -- sage: x = test_iterable_to_vector([3,2,1]); x -- [3, 2, 1] -- """ -- cdef vector *v = iterable_to_vector(it) -- result = vector_to_list(v) -- v_free(v) -- return result -- -- --cdef skewtab_to_SkewTableau(skewtab *st): -- """ -- A wrapper function which transforms the data set ``st`` used in -- ``lrcalc`` to a ``SkewTableau`` in Sage. -+def _lrcalc_dict_to_sage(result): -+ r""" -+ Translate from lrcalc output format to Sage expected format. - - TESTS:: - -- sage: from sage.libs.lrcalc.lrcalc import test_skewtab_to_SkewTableau -- sage: test_skewtab_to_SkewTableau([],[]) -- [] -- """ -- inner = vector_to_list(st.inner) -- outer = vector_to_list(st.outer) -- return SkewTableau(expr=[[inner[y] for y in range(len(outer))], -- [[st.matrix[x + y * st.cols] + 1 -- for x in range(inner[y], outer[y])] -- for y in range(len(outer) - 1, -1, -1)]]) -- -- --def test_skewtab_to_SkewTableau(outer, inner): -- """ -- A wrapper function for the cdef function ``skewtab_to_SkewTableau`` -- for testing purposes. -- -- It constructs the first LR skew tableau of shape ``outer/inner`` -- as an ``lrcalc`` ``skewtab``, and converts it to a -- :class:`SkewTableau`. -- -- EXAMPLES:: -- -- sage: from sage.libs.lrcalc.lrcalc import test_skewtab_to_SkewTableau -- sage: test_skewtab_to_SkewTableau([3,2,1],[]) -- [[1, 1, 1], [2, 2], [3]] -- sage: test_skewtab_to_SkewTableau([4,3,2,1],[1,1]).pp() -- . 1 1 1 -- . 2 2 -- 1 3 -- 2 -- """ -- cdef vector* o = iterable_to_vector(outer) -- cdef vector* i = iterable_to_vector(inner+[0]*(len(outer)-len(inner))) -- cdef skewtab* st = st_new(o, i, NULL, 0) -- return skewtab_to_SkewTableau(st) -- -- --cdef dict sf_hashtab_to_dict(hashtab *ht): -- """ -- Return a dictionary representing a Schur function. The keys are -- partitions and the values are integers <class 'sage.rings.integer.Integer'>. -- -- EXAMPLES:: -- - sage: from sage.libs.lrcalc.lrcalc import mult -- sage: sorted(mult([1],[1]).items()) #indirect doctest -- [([1, 1], 1), ([2], 1)] -- sage: assert isinstance(mult([1],[1]),dict)#indirect doctest -- """ -- cdef hash_itr itr -- cdef dict result = {} -- cdef list p -- hash_first(ht, itr) -- while hash_good(itr): -- p = vector_to_list(<vector*> hash_key(itr)) -- result[_Partitions(p)] = Integer(hash_intvalue(itr)) -- hash_next(itr) -- return result -- -- --cdef dict schubert_hashtab_to_dict(hashtab *ht): -- """ -- Return a dictionary corresponding to a Schubert polynomial whose keys -- are permutations and whose values are integers <class 'sage.rings.integer.Integer'>. -- -- EXAMPLES:: -- -- sage: from sage.libs.lrcalc.lrcalc import mult_schubert -- sage: mult_schubert([3,2,1], [1,2,3]) #indirect doctest -- {[3, 2, 1]: 1} -- """ -- cdef hash_itr itr -- cdef dict result = {} -- hash_first(ht, itr) -- while hash_good(itr): -- p = vector_to_list(<vector*> hash_key(itr)) -- result[Permutation(p)] = Integer(hash_intvalue(itr)) -- hash_next(itr) -- return result -- -- --cdef dict vp_hashtab_to_dict(hashtab *ht): -- """ -- Return a dictionary corresponding to the coproduct of a Schur function whose keys are -- pairs of partitions and whose values are integers <class 'sage.rings.integer.Integer'>. -- -- EXAMPLES:: -- -- sage: from sage.libs.lrcalc.lrcalc import coprod -- sage: coprod([1]) #indirect doctest -- {([1], []): 1} -+ sage: mult([2,1],[3,2,1],3) # indirect doctest -+ {[3, 3, 3]: 1, [4, 3, 2]: 2, [4, 4, 1]: 1, [5, 2, 2]: 1, [5, 3, 1]: 1} - """ -- cdef hash_itr itr -- cdef vecpair* vp -- cdef dict result = {} -- hash_first(ht, itr) -- while hash_good(itr): -- vp = <vecpair*> hash_key(itr) -- p1 = _Partitions(vector_to_list(vp_first(vp))) -- p2 = _Partitions(vector_to_list(vp_second(vp))) -- result[(p1, p2)] = Integer(hash_intvalue(itr)) -- hash_next(itr) -- return result -- -+ return {_Partitions(la):Integer(k) for la,k in result.items()} - - def lrcoef_unsafe(outer, inner1, inner2): - r""" -@@ -392,18 +236,7 @@ def lrcoef_unsafe(outer, inner1, inner2): - sage: lrcoef_unsafe([2,1,1,1,1], [2,1], [2,1]) - 0 - """ -- cdef long long result -- cdef vector *o -- cdef vector *i1 -- cdef vector *i2 -- o = iterable_to_vector(outer) -- i1 = iterable_to_vector(inner1) -- i2 = iterable_to_vector(inner2) -- result = lrcoef_c(o, i1, i2) -- v_free(o) -- v_free(i1) -- v_free(i2) -- return Integer(result) -+ return Integer(lrcalc.lrcoef(outer, inner1, inner2)) - - - def lrcoef(outer, inner1, inner2): -@@ -510,44 +343,24 @@ def mult(part1, part2, maxrows=None, level=None, quantum=None): - if quantum is not None and (level is None or maxrows is None): - raise ValueError('missing parameters maxrows or level') - -- cdef vector* v1 = iterable_to_vector(part1) -- cdef vector* v2 = iterable_to_vector(part2) -- if maxrows is None: -- maxrows = 0 -- cdef hashtab* ht = mult_c(v1, v2, int(maxrows)) -- cdef hashtab* tab -- cdef dict result -- - if quantum is None: - if level is not None: -- fusion_reduce_c(ht, int(maxrows), int(level), int(0)) -- result = sf_hashtab_to_dict(ht) -- v_free(v1) -- v_free(v2) -- hash_free(ht) -- return result -+ return _lrcalc_dict_to_sage(lrcalc.mult_fusion(part1, part2, maxrows, level)) -+ if maxrows is None: -+ maxrows = -1 -+ return _lrcalc_dict_to_sage(lrcalc.mult(part1, part2, maxrows)) - - # Otherwise do quantum multiplication -- cdef _list *qlist -- cdef dict temp -- qlist = quantum_reduce_c(ht, int(maxrows), int(level)) -- # The above call frees the memory associated with ht -- v_free(v1) -- v_free(v2) -- -- cdef Parent P = quantum.parent() -- result = {} -- for i in range(qlist.length): -- tab = <hashtab*>(qlist.array[i]) -- temp = sf_hashtab_to_dict(tab) -- for k in temp: -- result[k] = result.get(k, P.zero()) + quantum**i * temp[k] -- hash_free(tab) -- l_free(qlist) -- return result -- -- --def skew(outer, inner, maxrows=0): -+ result = lrcalc.mult_quantum(part1, part2, maxrows, level, degrees=True) -+ P = quantum.parent() -+ output = {} -+ for i,k in result.items(): -+ la = _Partitions(i[0]) -+ output[la] = output.get(la, P.zero()) + k*quantum**(i[1]) -+ return output -+ -+ -+def skew(outer, inner, maxrows=-1): - """ - Compute the Schur expansion of a skew Schur function. - -@@ -572,14 +385,7 @@ def skew(outer, inner, maxrows=0): - sage: sorted(skew([2,1],[1]).items()) - [([1, 1], 1), ([2], 1)] - """ -- cdef vector* v1 = iterable_to_vector(outer) -- cdef vector* v2 = iterable_to_vector(inner) -- cdef hashtab* ht = skew_c(v1, v2, int(maxrows)) -- result = sf_hashtab_to_dict(ht) -- v_free(v1) -- v_free(v2) -- hash_free(ht) -- return result -+ return _lrcalc_dict_to_sage(lrcalc.skew(outer, inner, maxrows)) - - - def coprod(part, all=0): -@@ -609,12 +415,8 @@ def coprod(part, all=0): - sage: sorted(coprod([2,1]).items()) - [(([1, 1], [1]), 1), (([2], [1]), 1), (([2, 1], []), 1)] - """ -- cdef vector* v1 = iterable_to_vector(part) -- cdef hashtab* ht = coprod_c(v1, int(all)) -- result = vp_hashtab_to_dict(ht) -- v_free(v1) -- hash_free(ht) -- return result -+ result = lrcalc.coprod(part, all) -+ return {tuple(_Partitions(mu) for mu in la):Integer(k) for la,k in result.items()} - - - def mult_schubert(w1, w2, rank=0): -@@ -646,17 +448,11 @@ def mult_schubert(w1, w2, rank=0): - ([6, 4, 3, 1, 2, 5], 1), ([6, 5, 2, 1, 3, 4], 1), - ([7, 3, 4, 1, 2, 5, 6], 1), ([7, 4, 2, 1, 3, 5, 6], 1)] - """ -- cdef vector* v1 = iterable_to_vector(w1) -- cdef vector* v2 = iterable_to_vector(w2) -- cdef hashtab* ht = mult_schubert_c(v1, v2, int(rank)) -- result = schubert_hashtab_to_dict(ht) -- v_free(v1) -- v_free(v2) -- hash_free(ht) -- return result -+ result = lrcalc.schubmult(w1, w2, rank) -+ return {Permutation(list(la)):Integer(k) for la,k in result.items()} - - --def lrskew(outer, inner, weight=None, maxrows=0): -+def lrskew(outer, inner, weight=None, maxrows=-1): - r""" - Iterate over the skew LR tableaux of shape ``outer / inner``. - -@@ -703,21 +499,20 @@ def lrskew(outer, inner, weight=None, maxrows=0): - sage: list(lrskew([3,2,1],[2], weight=[3,1])) - [[[None, None, 1], [1, 1], [2]]] - """ -- cdef vector* o = iterable_to_vector(outer) -- cdef vector* i = iterable_to_vector(inner + [0]*(len(outer) - len(inner))) -- cdef skewtab* st = st_new(o, i, NULL, int(maxrows)) -+ iterator = lrcalc.lr_iterator(outer, inner, maxrows) -+ shape = SkewPartition([outer, inner]) - - if weight is None: -- yield skewtab_to_SkewTableau(st) -- while st_next(st): -- yield skewtab_to_SkewTableau(st) -+ ST = SkewTableaux() -+ for data in iterator: -+ yield ST.from_shape_and_word(shape, [i+1 for i in data]) - else: - wt = _Partitions(weight) -- r = skewtab_to_SkewTableau(st) -- if r.weight() == wt: -- yield r -- while st_next(st): -- r = skewtab_to_SkewTableau(st) -- if r.weight() == wt: -- yield r -- st_free(st) -+ ST = SkewTableaux() -+ for data in iterator: -+ m = max(data) + 1 -+ w = [0] * m -+ for j in data: -+ w[j] += 1 -+ if w == wt: -+ yield ST.from_shape_and_word(shape, [i+1 for i in data]) diff --git a/test-optional.patch b/test-optional.patch index 60901a3f5679..d73f701e1727 100644 --- a/test-optional.patch +++ b/test-optional.patch @@ -2,7 +2,7 @@ diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py index 2d93841e50..937e20cd2e 100644 --- a/src/sage/doctest/control.py +++ b/src/sage/doctest/control.py -@@ -357,11 +357,6 @@ class DocTestController(SageObject): +@@ -400,11 +400,6 @@ class DocTestController(SageObject): # that the package is actually installed). if 'optional' in options.optional: options.optional.discard('optional') @@ -12,6 +12,6 @@ index 2d93841e50..937e20cd2e 100644 - options.optional.add(pkg.name) - from sage.features import package_systems - options.optional.update(system.name for system in package_systems()) + options.optional.update(system.name |