# $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/ }