From 7a24dbb2f6dca9e0c30f75c3c9b12d81c41bd984 Mon Sep 17 00:00:00 2001 From: Omar Vega Ramos Date: Thu, 16 Jul 2015 14:21:34 -0500 Subject: sagemath: add new package to [libre] --- libre/sagemath/PKGBUILD | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 libre/sagemath/PKGBUILD (limited to 'libre/sagemath/PKGBUILD') diff --git a/libre/sagemath/PKGBUILD b/libre/sagemath/PKGBUILD new file mode 100644 index 000000000..485f89544 --- /dev/null +++ b/libre/sagemath/PKGBUILD @@ -0,0 +1,169 @@ +# $Id: PKGBUILD 118896 2014-09-13 07:12:02Z arcanis $ +# Maintainer (Arch): Evgeniy Alekseev +# Maintainer (Arch): Antonio Rojas +# Contributor (Arch): Daniel Wallace +# Contributor (Arch): Thomas Dziedzic +# Contributor (Arch): Osman Ugus +# Contributor (Arch): Stefan Husmann +# Special thanks to Nareto for moving the compile from the .install to the PKGBUILD +# Maintainer: Omar Vega Ramos + +pkgname=sagemath +pkgver=6.7 +pkgrel=3.parabola1 +pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab, without nonfree nauty recommendation" +arch=('i686' 'x86_64') +url="http://www.sagemath.org" +license=('GPL') +depends=('ipython2' 'ppl' 'glpk' 'mpfi' 'palp' 'polybori' 'singular' 'libcliquer' 'maxima-ecl' 'gfan' 'sympow' 'tachyon' 'python2-rpy2' + 'python2-matplotlib' 'python2-scipy' 'python2-sympy' 'python2-networkx' 'libgap' 'gap' 'flintqs' 'lcalc' 'lrcalc' + 'eclib' 'gmp-ecm' 'zn_poly' 'gd' 'python2-cvxopt' 'pynac' 'linbox' 'gsl' 'rubiks' 'pari-galdata' 'pari-seadata-small' + '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' 'jmol: 3D plots' 'sage-notebook: Browser-based (flask) notebook interface' + 'sagemath-doc: Documentation and inline help' 'sagemath-src: source files needed to build cython code' + 'ipython2-notebook: IPython notebook interface' 'mathjax: IPython notebook interface' + 'coin-or-cbc: COIN backend for numerical computations' + 'buckygen: for generating fullerene graphs' 'plantri: for generating some classes of graphs' 'benzene: for generating fusenes and benzenoids' + 'libfes: exhaustive search of solutions for boolean polynomial systems' 'modular_decomposition: modular decomposition of graphs' + 'lrs: Algorithms for linear reverse search used in game theory and for computing volume of polytopes' 'imagemagick: to show animations' + 'coxeter3: Coxeter groups implementation' 'cryptominisat: SAT solver' 'arb: floating-point ball arithmetic') +makedepends=('cython2-devel' 'boost' 'scons' 'ratpoints' 'symmetrica' 'fflas-ffpack' 'python2-jinja' 'coin-or-cbc' + 'mcqd' 'libfes' 'coxeter3' 'cryptominisat' 'arb' 'modular_decomposition' 'bliss-graphs') +conflicts=('sage-mathematics') +replaces=('sage-mathematics') +provides=('sage-mathematics') +source=("$pkgname-$pkgver.tar.gz::https://github.com/sagemath/sage/archive/$pkgver.tar.gz" +# "http://www.sagemath.org/packages/upstream/pexpect/pexpect-2.0.tar.bz2" +"http://mirrors.mit.edu/sage/spkg/upstream/pexpect/pexpect-2.0.tar.bz2" +'anal.h' 'package.patch' 'c_lib.patch' 'env.patch' 'paths.patch' 'clean.patch' 'skip-check.patch' +'pexpect-env.patch' 'pexpect-del.patch' 'fes02.patch' 'ntl9.patch') +md5sums=('df744e882a4b25b42dd8347e202cd497' + 'd9a3e113ed147dcee8f89962a8dccd43' + 'a906a180d198186a39820b0a2f9a9c63' + '0eb5ac1537aac93bd67a2925c0cfd84d' + 'c452558d3496b07be472dad57195d45d' + '3fc9a5bb250896533365c30c2b926e3c' + '020bdb34b6fc0f2c9f46341bdb79937a' + '46c212a3a6713b0f78c370c7186d0982' + '5947a420a0b1483f0cbc74c76895789b' + 'a83a3b1bc7fcb7cbf752a83a8311fc42' + 'f333939ea6c41377b66407c81016cee4' + '506944613082ba7f5b34360939ca90eb' + '308abbb1a49db9b8f0e088aff69567ff') + +prepare(){ + cd sage-$pkgver + +# Arch-specific patches +# assume all optional packages are installed + patch -p0 -i "$srcdir"/package.patch +# don't assume Sage is already available (Fedora) + patch -p0 -i "$srcdir"/c_lib.patch +# find L.h header + sed -e 's|libLfunction|Lfunction|' -i src/module_list.py +# 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 "$srcdir"/env.patch +# fix paths in python imports + patch -p0 -i "$srcdir"/paths.patch +# fix cython linking + sed -e "s| atlas(),||" -i src/sage/misc/cython.py +# don't try to remove installed files + patch -p0 -i "$srcdir"/clean.patch +# skip checking build status + patch -p0 -i "$srcdir"/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 +# fix Cremona database detection + sed -e "s|is_package_installed('database_cremona_ellcurve')|os.path.exists('/usr/share/sage/cremona/cremona.db')|" \ + -i src/sage/databases/cremona.py +# fix IPython kernel path + sed -e "s|os.path.join(SAGE_ROOT, 'sage')|'/usr/bin/sage'|" -i src/sage/repl/ipython_kernel/install.py +# find bliss headers + sed -e 's|graph.hh|bliss/graph.hh|' -i src/sage/graphs/bliss.pyx +# Rename class to fix conflicts with NTL + sed -e 's|WrappedPtr|SageWrappedPtr|' -i src/sage/libs/polybori/decl.pxd -i src/sage/libs/polybori/pb_wrap.h + +# Upstream patches +# fix build against libfes 0.2 http://trac.sagemath.org/ticket/15209 + patch -p0 -i "$srcdir"/fes02.patch +# fix build aginst NTL 9 (Fedora) + patch -p0 -i "$srcdir"/ntl9.patch + +# use python2 + sed -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' -e 's|exec python|exec python2|' -i src/bin/* + sed -e 's|cython %s %s|cython2 %s %s|' -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 + +# remove developer interface + rm -r src/sage/dev + + cd "$srcdir"/pexpect-2.0 +# fix env in pexpect + patch -p1 -i "$srcdir"/pexpect-env.patch +# hide exceptions in pexpect + patch -p1 -i "$srcdir"/pexpect-del.patch +} + + +build() { + cd sage-$pkgver/src + + export SAGE_LOCAL="/usr" + export SAGE_SRC="$PWD" + export CC=gcc + + pushd c_lib + CXX=g++ UNAME=Linux SAGE64=auto scons + popd + + make sage/libs/pari/auto_gen.pxi + make sage/ext/interpreters/__init__.py + + python2 setup.py build + +# build pexpect + pushd "$srcdir"/pexpect-2.0 + python2 setup.py build + popd +} + +package() { + cd sage-$pkgver/src + + export SAGE_ROOT="/usr" + export SAGE_LOCAL="$SAGE_ROOT" + export SAGE_SRC="$PWD" + + python2 setup.py install --root="$pkgdir" --optimize=1 + + mkdir -p "$pkgdir"/usr/{bin,lib} + cp c_lib/libcsage.so "$pkgdir"/usr/lib + cp bin/sage "$pkgdir"/usr/bin + for _i in arch-env banner cachegrind callgrind cleaner coverage coverageall CSI CSI-helper.py cython env eval grep grepdoc inline-fortran ipython \ + massif maxima.lisp native-execute notebook num-threads.py omega open preparse python rst2sws rst2txt run run-cython runtests startuptime.py \ + sws2rst valgrind version.sh + do + cp bin/sage-$_i "$pkgdir"/usr/bin + done + cp bin/math-readline "$pkgdir"/usr/bin + + mkdir -p "$pkgdir"/usr/share/sage + cp -r ext "$pkgdir"/usr/share/sage + +# Create SAGE_SRC, needed for the notebook + mkdir "$pkgdir"/usr/share/sage/src + +# Install Sage's own pexpect + cd "$srcdir"/pexpect-2.0 + python2 setup.py install --root="$pkgdir" --optimize=1 + mkdir -p "$pkgdir"/usr/lib/sage/site-packages/ + mv "$pkgdir"/usr/lib/python2.7/site-packages/pexpect* "$pkgdir"/usr/lib/sage/site-packages/ +} -- cgit v1.2.3