# $Id: PKGBUILD 189079 2016-09-09 17:19:23Z arojas $ # 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 # Maintainer: André Silva pkgname=sagemath pkgver=7.3 pkgrel=5.parabola1 pkgdesc="Free Mathematics Software, free software replacement of Magma, Maple, Mathematica, and Matlab, without nonfree nauty support" arch=(i686 x86_64 armv7h) url="http://www.sagemath.org" license=(GPL) depends=(ipython2 cysignals ppl palp brial singular cliquer maxima-ecl gfan sympow tachyon python2-rpy2 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' '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') 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) 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' '6cafcb381437d4751fd55b25d5090987' 'a1bcdd3fe620dbae60ed8b0e98b2ece7' 'b3ecf7c93a90e0afccbc686af9fdc85f' '9ba81f717ffd4e20b8b2f2a318307488' '06a67e611d10aa2381efe1f08ea4ffd9' '16b529194c6105c3364127bd8f1efa83' 'cdcabd475b80afe0534a5621e972736e' 'ef927896f2071b442b1d07d7e69f5f3a' 'a276f0fbbff6eade409d0569ebd728d4' '0c9a57d35de80c2cd418ebec912efbbb' '2bcaca7284dda963ebdc17daf78cf6c9' '39d3fded716d2a7ae0ab03e0896b7497' '803627177ff5c28e1e73f2678d15c4df') prepare(){ cd sage-$pkgver # Parabola-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 # set jupyter path patch -p0 -i ../jupyter-path.patch # fix timeit with Python 2.7.11 patch -p0 -i ../python-2.7.11.patch # search system paths for cython includes patch -p1 -i ../cython-sys-path.patch # 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 # Upstream patches # fix build against libfes 0.2 http://trac.sagemath.org/ticket/15209 # 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 patch -p1 -i ../sagemath-singular4.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 {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 } build() { cd sage-$pkgver/src export SAGE_LOCAL="/usr" 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() { cd sage-$pkgver/src export SAGE_ROOT="/usr" export SAGE_LOCAL="$SAGE_ROOT" export SAGE_SRC="$PWD" export CC=gcc export JUPYTER_PATH="$pkgdir"/usr/share/jupyter python2 setup.py install --root="$pkgdir" --optimize=1 --skip-build mkdir -p "$pkgdir"/usr/bin cp bin/sage "$pkgdir"/usr/bin for _i in arch-env banner cachegrind callgrind cleaner coverage coverageall 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/source # Remove sage_setup rm -r "$pkgdir"/usr/lib/python2.7/site-packages/sage_setup }