# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=5 PYTHON_COMPAT=( python2_7 ) inherit autotools elisp-common eutils flag-o-matic python-single-r1 toolchain-funcs FACTORY="factory-4.0.0+m4" FACTORY_GFTABLES="factory.4.0.1-gftables" DESCRIPTION="Research tool for commutative algebra and algebraic geometry" HOMEPAGE="http://www.math.uiuc.edu/Macaulay2/" BASE_URI="http://www.math.uiuc.edu/Macaulay2/Downloads/OtherSourceCode/trunk" SRC_URI=" https://dev.gentoo.org/~tomka/files/${P}.tar.bz2 ${BASE_URI}/${FACTORY}.tar.gz ${BASE_URI}/${FACTORY_GFTABLES}.tar.gz ${BASE_URI}/gtest-1.7.0.tar.gz" SLOT="0" LICENSE="GPL-2" KEYWORDS="amd64 x86" IUSE="debug emacs +optimization" REQUIRED_USE="${PYTHON_REQUIRED_USE}" DEPEND="${PYTHON_DEPS} sys-process/time virtual/pkgconfig" RDEPEND="${PYTHON_DEPS} sys-libs/gdbm =sys-libs/readline-6.1 dev-libs/libxml2:2 sci-mathematics/flint[gc] sci-mathematics/frobby sci-mathematics/4ti2 sci-mathematics/nauty >=sci-mathematics/normaliz-2.8 sci-mathematics/gfan sci-libs/mpir[cxx] dev-libs/mpfr sci-libs/cdd+ sci-libs/cddlib sci-libs/lrslib[gmp] virtual/blas virtual/lapack dev-util/ctags sys-libs/ncurses >=dev-libs/boehm-gc-7.4[threads] dev-libs/libatomic_ops emacs? ( virtual/emacs )" SITEFILE=70Macaulay2-gentoo.el S="${WORKDIR}/M2/" pkg_setup () { tc-export CC CPP CXX PKG_CONFIG append-cppflags "-I/usr/include/frobby" # gtest needs python:2 python-single-r1_pkg_setup } src_prepare() { # Patching .m2 files to look for external programs in # /usr/bin epatch "${FILESDIR}"/1.6-paths-of-external-programs.patch # Shortcircuit lapack tests epatch "${FILESDIR}"/1.6-lapack.patch # Factory is a statically linked library which (in this flavor) are not used by any # other program. We build it internally and don't install it. cp "${DISTDIR}/${FACTORY}.tar.gz" "${S}/BUILD/tarfiles/" \ || die "copy failed" cp "${DISTDIR}/${FACTORY_GFTABLES}.tar.gz" "${S}/BUILD/tarfiles/" \ || die "copy failed" # Macaulay2 developers want that gtest is built internally because # the documentation says it may fail if build with options not the # same as the tested program. cp "${DISTDIR}/gtest-1.7.0.tar.gz" "${S}/BUILD/tarfiles/" \ || die "copy failed" eautoreconf } src_configure (){ # Recommended in bug #268064 Possibly unecessary # but should not hurt anybody. if ! use emacs; then tags="ctags" fi # configure instead of econf to enable install with --prefix ./configure LIBS="$($(tc-getPKG_CONFIG) --libs lapack)" \ --prefix="${D}/usr" \ --disable-encap \ --disable-strip \ --with-issue=Gentoo \ $(use_enable optimization optimize) \ $(use_enable debug) \ --enable-build-libraries="factory" \ --with-unbuilt-programs="4ti2 gfan normaliz nauty cddplus lrslib" \ || die "failed to configure Macaulay" } src_compile() { # Parallel build not supported yet emake IgnoreExampleErrors=true -j1 if use emacs; then cd "${S}/Macaulay2/emacs" || die elisp-compile *.el fi } src_test() { # No parallel tests yet & Need to increase the time # limit for long running tests in Schubert2 to pass emake TLIMIT=550 -j1 check } src_install () { # Parallel install not supported yet emake IgnoreExampleErrors=true -j1 install # Remove emacs files and install them in the # correct place if use emacs rm -rf "${ED}"/usr/share/emacs/site-lisp || die if use emacs; then cd "${S}/Macaulay2/emacs" || die elisp-install ${PN} *.elc *.el elisp-site-file-install "${FILESDIR}/${SITEFILE}" fi } pkg_postinst() { if use emacs; then elisp-site-regen elog "If you want to set a hot key for Macaulay2 in Emacs add a line similar to" elog "(global-set-key [ f12 ] 'M2)" elog "in order to set it to F12 (or choose a different one)." fi } pkg_postrm() { use emacs && elisp-site-regen }