inherit elisp-common eutils flag-o-matic toolchain-funcs autotools IUSE="emacs" DESCRIPTION="research tool for commutative algebra and algebraic geometry" SRC_URI=" http://www.math.uiuc.edu/Macaulay2/Downloads/SourceCode/${P}-r8438-src.tar.bz2 ftp://www.mathematik.uni-kl.de/pub/Math/Singular/Factory/factory-3-1-0.tar.gz \ ftp://www.mathematik.uni-kl.de/pub/Math/Singular/Libfac/libfac-3-1-0.tar.gz \ http://www.math.uiuc.edu/Macaulay2/Extra/frobby_vmike3.tar.gz" # mirror://gentoo/${P}-src.tar.bz2 # We should keep frobby, factory and libfac in sync, and if possible make # separate ebuilds later HOMEPAGE="http://www.math.uiuc.edu/Macaulay2/" SLOT="0" LICENSE="GPL-2" KEYWORDS="~x86 ~amd64" # The ntl version is a due to factory # If =boehm-gc-7.1 ?? # Works fine here on a 3GB RAM machine. pkg_setup() { # boehm-gc currently is broken with USE='threads' # (see bug #195335) causing Macaulay2 to fail # if built_with_use "dev-libs/boehm-gc" "threads" \ # && has_version "=dev-libs/boehm-gc-7*"; then # echo # eerror "dev-libs/boehm-gc-7* with USE=\"threads\" is" # eerror "currently broken (see bug #195335) causing" # eerror "Macaulay to fail building. Please re-emerge" # eerror "dev-libs/boehm-gc-7* with USE=\"-threads\"!" # die "boehm-gc setup error" # echo # fi if ! built_with_use "sci-mathematics/pari" "gmp"; then echo eerror "sci-mathematics/pari must be built with gmp useflag" die "pari setup error" echo fi } S="${WORKDIR}/${P}-r8438" src_unpack() { unpack ${A} # How can we prevent unpacking of frobby? It's not needed. cd "${S}" sed -e "s:\$docdirtail/${PN}:\$docdirtail/${P}:" \ -i configure.ac \ || die "Failed to fix doc install directory." } src_compile() { cd "${WORKDIR}/factory" epatch "${FILESDIR}"/patch-3.1.0b econf --enable-NTL --prefix="${WORKDIR}" || \ die "failed to configure factory" # -j1 is still necessary emake -j1 || die "failed to build factory" make install || die "failed to install factory" cd "${WORKDIR}/libfac" CPPFLAGS="-I${WORKDIR}/include" econf --with-NOSTREAMIO \ --prefix="${WORKDIR}" || die "failed to configure libfac" emake || die "failed to build libfac" make install || die "failed to install libfac" # Put sourcfile in the right location: mkdir "${S}/BUILD/tarfiles" cp "${DISTDIR}/frobby_vmike3.tar.gz" "${S}/BUILD/tarfiles/" \ || die "copy failed" cd "${S}" sed -e "/^docm2RelDir/s:Macaulay2:${P}:" \ -i include/config.Makefile.in \ || die "failed to fix makefile" CXXFLAGS="${CXXFLAGS} -Wno-deprecated" append-ldflags "-L${WORKDIR}/$(get_libdir)" emake -j1 && CPPFLAGS="-I/usr/include/gc -I${WORKDIR}/include" \ ./configure --prefix="${D}/usr" --disable-encap \ || die "failed to configure Macaulay" emake -j1 || die "failed to build Macaulay" } src_test() { cd "${S}" make check || die "tests failed" } src_install () { make install || die "install failed" # nothing useful in here, get rid of it # NOTE: Macaulay installs into lib even on amd64 hence don't # replace lib with $(get_libdir) below! rm -fr "${D}"/usr/lib \ || die "failed to remove empty /usr/lib" use emacs && elisp-site-file-install "${FILESDIR}/${SITEFILE}" } 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 }