diff options
Diffstat (limited to 'sci-mathematics/sage/sage-4.5.3.ebuild')
-rw-r--r-- | sci-mathematics/sage/sage-4.5.3.ebuild | 338 |
1 files changed, 338 insertions, 0 deletions
diff --git a/sci-mathematics/sage/sage-4.5.3.ebuild b/sci-mathematics/sage/sage-4.5.3.ebuild new file mode 100644 index 0000000..195b3c6 --- /dev/null +++ b/sci-mathematics/sage/sage-4.5.3.ebuild @@ -0,0 +1,338 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="3" + +PYTHON_DEPEND="2:2.6" +PYTHON_USE_WITH="sqlite" + +inherit distutils eutils flag-o-matic python + +MY_P="sage-${PV}" + +DESCRIPTION="Math software for algebra, geometry, number theory, cryptography and numerical computation" +HOMEPAGE="http://www.sagemath.org" +SRC_URI="mirror://sage/spkg/standard/${MY_P}.spkg -> ${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="examples latex testsuite X" + +CDEPEND="|| ( =dev-lang/python-2.6.4-r99 + =dev-lang/python-2.6.5-r99 ) + dev-libs/gmp + >=dev-libs/mpfr-2.4.2 + >=dev-libs/ntl-5.5.2 + >=dev-lisp/ecls-10.2.1[-unicode] + >=dev-python/numpy-1.4.1[lapack] + >=sci-mathematics/eclib-20100711 + >=sci-mathematics/ecm-6.2.1 + >=sci-libs/flint-1.5.0[ntl] + >=sci-libs/fplll-3.0.12 + =sci-libs/givaro-3.2* + >=sci-libs/gsl-1.14 + >=sci-libs/iml-1.0.1 + >=sci-libs/libcliquer-1.2_p6 + >=sci-libs/linbox-1.1.6[ntl,sage] + >=sci-libs/m4ri-20100701 + >=sci-libs/mpfi-1.4 + >=sci-libs/pynac-0.2.0_p5 + >=sci-libs/symmetrica-2.0 + >=sci-libs/zn_poly-0.9 + >=sci-mathematics/glpk-4.43[gmp] + >=sci-mathematics/lcalc-1.23[pari] + >=sci-mathematics/pari-2.3.5[data,gmp] + >=sci-mathematics/polybori-0.6.5-r2[sage] + >=sci-mathematics/ratpoints-2.1.3 + ~sci-mathematics/sage-baselayout-${PV}[testsuite=] + ~sci-mathematics/sage-clib-${PV} + ~sci-mathematics/singular-3.1.1.4[libsingular] + media-libs/gd + media-libs/libpng + >=sys-libs/readline-6.0 + sys-libs/zlib + virtual/cblas" + +DEPEND="${CDEPEND} + =dev-python/cython-0.12*" + +RDEPEND="${CDEPEND} + >=dev-lang/R-2.10.1[lapack,readline] + >=dev-python/cvxopt-0.9 + >=dev-python/gdmodule-0.56 + >=dev-python/ipython-0.9.1 + >=dev-python/jinja-2.1.1 + >=dev-python/matplotlib-1.0.0 + ~dev-python/mpmath-0.15 + >=dev-python/networkx-1.2 + ~dev-python/pexpect-2.0 + >=dev-python/pycrypto-2.1.0 + >=dev-python/python-gnutls-1.1.4 + >=dev-python/rpy-2.0.6 + >=dev-python/sphinx-0.6.3 + dev-python/sqlalchemy + ~dev-python/sympy-0.6.6 + >=media-gfx/tachyon-0.98 + >=net-zope/zodb-3.7.0 + >=sci-libs/cddlib-094f + =sci-libs/scipy-0.8* + >=sci-mathematics/flintqs-20070817_p4 + >=sci-mathematics/gap-4.4.12 + >=sci-mathematics/gap-guava-3.4 + >=sci-mathematics/genus2reduction-0.3 + >=sci-mathematics/gfan-0.4 + >=sci-mathematics/cu2-20060223 + >=sci-mathematics/cubex-20060128 + >=sci-mathematics/dikcube-20070912_p12 + ~sci-mathematics/maxima-5.20.1[ecl] + >=sci-mathematics/mcube-20051209 + >=sci-mathematics/optimal-20040603 + >=sci-mathematics/palp-1.1 + ~sci-mathematics/sage-data-conway_polynomials-0.2 + ~sci-mathematics/sage-data-elliptic_curves-0.1 + ~sci-mathematics/sage-data-graphs-20070722_p1 + ~sci-mathematics/sage-data-polytopes_db-20100210 + >=sci-mathematics/sage-doc-${PV} + ~sci-mathematics/sage-extcode-${PV} + ~sci-mathematics/sage-notebook-0.8.2 + >=sci-mathematics/sympow-1.018.1_p8 + examples? ( ~sci-mathematics/sage-examples-${PV} ) + testsuite? ( + ~sci-mathematics/sage-doc-${PV}[html] + ~sci-mathematics/sage-examples-${PV} + ) + latex? ( ~dev-tex/sage-latex-2.2.5 )" + +# TODO: check if use flags are necessary + +src_prepare() { + # ATLAS independence + local cblaslibs=\'$(pkg-config --libs-only-l cblas | sed \ + -e 's/^-l//' \ + -e "s/ -l/\',\'/g" \ + -e 's/,.pthread//g' \ + -e "s: ::")\' + + ############################################################################ + # Fixes to Sage's build system + ############################################################################ + + # Fix startup issue and python-2.6.5 problem + append-flags -fno-strict-aliasing -DNDEBUG + + # fix build file to make it compile without other Sage components + epatch "${FILESDIR}"/${PN}-4.3.4-site-packages.patch + + # add pari and gmp to everything. + sed -i "s:\['stdc++', 'ntl'\]:\['stdc++', 'ntl','pari','gmp'\]:g" setup.py \ + || die "failed to add pari and gmp everywhere" + + # remove annoying std=c99 from a c++ file. + epatch "${FILESDIR}"/${PN}-4.4.4-extra-stdc99.patch + + # Fix ecls bug for ppc see #308909. This has to be done before sed is applied to module_list.py + if use ppc ; then + epatch "${FILESDIR}"/${P}-ecls_ppc.patch + fi + + # upgrade to numpy-1.4.1/scipy-0.8 + epatch "${FILESDIR}"/trac_9808_numpy_doctest_change.patch + + # use already installed csage + rm -rf c_lib || die "failed to remove c library directory" + + # patch SAGE_LOCAL + sed -i "s:SAGE_LOCAL = SAGE_ROOT + '/local/':SAGE_LOCAL = os.environ['SAGE_LOCAL']:g" \ + module_list.py setup.py || die "failed to patch SAGE_LOCAL" + + # fix include paths + sed -i \ + -e "s:SAGE_ROOT[[:space:]]*+[[:space:]]*\([\'\"]\)/local/include/\([^\1]*\)\1:SAGE_LOCAL + \1/include/\2\1:g" \ + -e "s:sage/c_lib/include/:${EPREFIX}/usr/include/csage/:g" \ + module_list.py || die "failed to patch paths for libraries" + + sed -i "s:'%s/sage/sage/ext'%SAGE_DEVEL:'sage/ext':g" \ + setup.py || die "failed to patch extensions path" + + # fix png library name + sed -i "s:png12:$(libpng-config --libs | cut -dl -f2):g" \ + module_list.py || die "failed to patch png library name" + + # fix numpy path + sed -i "s:SAGE_ROOT+'/local/lib/python/site-packages/numpy/core/include':'$(python_get_sitedir)/numpy/core/include':g" \ + module_list.py || die "failed to patch path for numpy include directory" + + # fix cython path + sed -i "s:SAGE_LOCAL + '/lib/python/site-packages/Cython/Includes/':'$(python_get_sitedir)/Cython/Includes/':g" \ + setup.py || die "failed to patch path for cython include directory" + + # fix lcalc path + sed -i "s:include/lcalc/:include/Lfunction/:g" module_list.py \ + || die "failed to patch path for lcalc include directory" + + # rebuild in place + sed -i "s:SAGE_DEVEL + 'sage/sage/ext/interpreters':'sage/ext/interpreters':g" \ + setup.py || die "failed to patch interpreters path" + + # fix include paths and CBLAS/ATLAS + sed -i \ + -e "s:'%s/include/csage'%SAGE_LOCAL:'${EPREFIX}/usr/include/csage':g" \ + -e "s:'%s/sage/sage/ext'%SAGE_DEVEL:'sage/ext':g" \ + setup.py || die "failed to patch include paths" + + sed -i \ + -e "s:BLAS, BLAS2:${cblaslibs}:g" \ + -e "s:,BLAS:,${cblaslibs}:g" \ + module_list.py || die "failed to patch module_list.py for ATLAS" + + # enable glpk + sed -i "s:is_package_installed('glpk'):True:g" module_list.py \ + || die "failed to enable glpk" + + # TODO: why does Sage fail with linbox commentator ? + + ############################################################################ + # Fixes to Sage itself + ############################################################################ + + # gmp-5 compatibility - works with gmp-4.3 as well + sed -i "s:__GMP_BITS_PER_MP_LIMB:GMP_LIMB_BITS:g" sage/rings/integer.pyx \ + || die "failed to patch for gmp-5" + + # run maxima with ecl + sed -i \ + -e "s:maxima-noreadline:maxima -l ecl:g" \ + -e "s:maxima --very-quiet:maxima -l ecl --very-quiet:g" \ + sage/interfaces/maxima.py || die "failed to patch maxima commands" + + # Uses singular internal copy of the factory header + sed -i "s:factory.h:singular/factory.h:" sage/libs/singular/singular-cdefs.pxi \ + || die "failed to patch factory header""" + + # upgrade to matplotlib-1.0.0 as it is now marked stable + epatch "${FILESDIR}"/trac-9221-matplotlib-update.patch + + # use delaunay from matplotlib (see ticket #6946) + epatch "${FILESDIR}"/${PN}-4.3.3-delaunay-from-matplotlib.patch + + # use arpack from scipy (see also scipy ticket #231) + epatch "${FILESDIR}"/${PN}-4.3.3-arpack-from-scipy.patch + + # Fix portage QA warning. Potentially prevent some leaking. + epatch "${FILESDIR}"/${PN}-4.4.2-flint.patch + + sed -i "s:cblas(), atlas():${cblaslibs}:" sage/misc/cython.py \ + || die "failed to patch cython.py for ATLAS" + + # patch for optional glpk + sed -i "s:\.\./\.\./local/include/glpk\.h:${EPREFIX}/usr/include/glpk.h:g" \ + sage/numerical/mip_glpk.pxd || die "failed to patch mip_glpk.pxd" + + sed -i "s:\.\./\.\./\.\./\.\./devel/sage/sage:..:g" \ + sage/numerical/mip_glpk.pyx || die "failed to patch mip_glpk.pyx" + + # Ticket #5155: + + # save gap_stamp to directory where sage is able to write + sed -i "s:GAP_STAMP = '%s/local/bin/gap_stamp'%SAGE_ROOT:GAP_STAMP = '%s/gap_stamp'%DOT_SAGE:g" \ + sage/interfaces/gap.py || die "patch to patch gap interface" + + # fix qepcad paths + epatch "${FILESDIR}"/${PN}-4.5.1-fix-qepcad-path.patch + + # fix save path (for testing only) + sed -i "s:save(w,'test'):save(w,tmp_filename('test')):g" \ + sage/combinat/words/morphism.py || die "failed to patch path for save" + + # Ticket #8898: + + # make sure line endings are unix ones so as not to confuse python-2.6.5 + edos2unix sage/libs/mpmath/ext_impl.pxd + edos2unix sage/libs/mpmath/ext_main.pyx + edos2unix sage/libs/mpmath/ext_main.pxd + edos2unix sage/libs/mpmath/ext_libmp.pyx + + # replace SAGE_ROOT/local with SAGE_LOCAL + epatch "${FILESDIR}"/${PN}-4.5.1-fix-SAGE_LOCAL.patch + + # patch path for saving sessions + sed -i "s:save_session('tmp_f', :save_session(tmp_f, :g" \ + sage/misc/session.pyx || die "failed to patch session path" + + # patch lie library path + sed -i "s:open(SAGE_LOCAL + 'lib/lie/INFO\.0'):open(SAGE_LOCAL + '/share/lie/INFO.0'):g" \ + sage/interfaces/lie.py || die "failed to patch lie library path" + + # Patch to singular info file shipped with sage-doc + sed -i "s:os.environ\[\"SAGE_LOCAL\"\]+\"/share/singular/\":os.environ\[\"SAGE_DOC\"\]+\"/\":g" \ + sage/interfaces/singular.py || die "failed to patch singular.hlp path" + + # fix test paths + sed -i \ + -e "s:'my_animation.gif':tmp_filename('my_animation')+'.gif':g" \ + -e "s:'wave.gif':tmp_filename('wave')+'.gif':g" \ + -e "s:'wave0.sobj':tmp_filename('wave0')+'.sobj':g" \ + -e "s:'wave1.sobj':tmp_filename('wave1')+'.sobj':g" \ + sage/plot/animate.py + + # do not forget to run distutils + distutils_src_prepare +} + +src_configure() { + export SAGE_LOCAL="${EPREFIX}"/usr + export SAGE_ROOT="${EPREFIX}"/usr/share/sage + export SAGE_VERSION=${PV} + + export MAKE=${MAKEOPTS} + + # files are not built unless they are touched + find sage -name "*pyx" -exec touch '{}' \; \ + || die "failed to touch *pyx files" +} + +src_install() { + distutils_src_install + + if use testsuite ; then + # install testable sources and sources needed for testing + find sage ! \( -name "*.py" -o -name "*.pyx" -o -name "*.pxd" -o \ + -name "*.pxi" \) -type f -delete \ + || die "failed to remove non-testable sources" + + insinto "${SAGE_ROOT}"/devel/sage-main + doins -r sage || die + fi +} + +pkg_postinst() { + einfo "If you use Sage's browser interface ('Sage Notebook') and experience" + einfo "an 'Internal Server Error' you should append the following line to" + einfo "your ~/.bashrc (replace firefox with your favorite browser and note" + einfo "that it your case it WILL NOT WORK with xdg-open):" + einfo "" + einfo " export SAGE_BROWSER=/usr/bin/firefox" + einfo "" + einfo "Sage comes with the 'Standard' set of Sage Packages, i.e. those" + einfo "listed at: http://sagemath.org/packages/standard/ which are now" + einfo "already installed." + einfo "There are also some packages of the 'Optional' set (which consists" + einfo "of the these: http://sagemath.org/packages/optional/) available" + einfo "which may be installed with portage as usual." + + if use testsuite ; then + + einfo "You have installed Sage's testsuite. In order to test Sage run the" + einfo "following command in a directory where Sage may write to:" + einfo "" + einfo " sage -testall" + einfo "" + einfo "Note that testing Sage may take more than 4 hours. If you want to" + einfo "compare your results look at the list of known failures:" + einfo "" + einfo " http://github.com/cschwan/sage-on-gentoo/wiki/Known-test-failures" + + fi +} |