summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-mathematics/Macaulay2')
-rw-r--r--sci-mathematics/Macaulay2/Macaulay2-1.7_pre.ebuild154
-rw-r--r--sci-mathematics/Macaulay2/Manifest4
-rw-r--r--sci-mathematics/Macaulay2/files/1.6-lapack.patch50
-rw-r--r--sci-mathematics/Macaulay2/files/1.6-paths-of-external-programs.patch73
-rw-r--r--sci-mathematics/Macaulay2/files/70Macaulay2-gentoo.el11
-rw-r--r--sci-mathematics/Macaulay2/metadata.xml16
6 files changed, 308 insertions, 0 deletions
diff --git a/sci-mathematics/Macaulay2/Macaulay2-1.7_pre.ebuild b/sci-mathematics/Macaulay2/Macaulay2-1.7_pre.ebuild
new file mode 100644
index 000000000000..b7bd82d811d8
--- /dev/null
+++ b/sci-mathematics/Macaulay2/Macaulay2-1.7_pre.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+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="
+ http://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
+ <dev-libs/ntl-7
+ sci-mathematics/pari[gmp]
+ >=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
+}
diff --git a/sci-mathematics/Macaulay2/Manifest b/sci-mathematics/Macaulay2/Manifest
new file mode 100644
index 000000000000..1cab32948f73
--- /dev/null
+++ b/sci-mathematics/Macaulay2/Manifest
@@ -0,0 +1,4 @@
+DIST Macaulay2-1.7_pre.tar.bz2 4639477 SHA256 b14918187724f8911bc50edf87c9692209ff0c2191feb257084adc87609eb1cd SHA512 e70376d1e54b6e239ebb3bf676507a2115fdf5c4fbe05f320553029a84114b74d78f54e4d1bdc7643131f3c45c301e83c21ff99e4d4b675372e971368398d6f5 WHIRLPOOL 396311aadb8a7845deaee5aeca49c431430abc46201e935ef72c4579c9cbe6cd4da85f3e09ff0fe647031f8050fb7c62f63ecce251bf34648c1848cd00eef68e
+DIST factory-4.0.0+m4.tar.gz 4711126 SHA256 9b2498cc7fc6765f1c586e8061ebe236cdce4b32a44721a235ad2644ec3124fb SHA512 1dacb9aae52e655bccbbc960397b02351050791594dd9c39771f0da7f8c6e8130a8827c2a675c3fbaaa214606e123ac9776e1c73d143649353cefc50cadeea3e WHIRLPOOL 47c4d6261fc6cc9c172035d8774f0cde9fa669fa164fc4a0f47e84ba789d69d14f5a16d042451564412fdedddec71335714ad751508495c22cea25b69f10b925
+DIST factory.4.0.1-gftables.tar.gz 2974152 SHA256 9cd158ceb1c2b1c47bdca2c0b004bba92cb0e0aaa0ea6a43ca784ebdce10eebd SHA512 060c58fe6e4565dd5e7649bfa070f14dec3c383a55ebab52a9f02b58a6405e2183e0c7e08964cddb87b81e872c0d8a52d7bd4575d07269547be544cf6a725a76 WHIRLPOOL a721a6824681118578c7289cea77a3f47e5c7654f30dc454eaac76b19cc89e416ae54b8d21a69f897d7087d4b67990634fc960f81df2ea53f428868d608dc9c2
+DIST gtest-1.7.0.tar.gz 1001582 SHA256 c0f860eee47c86e0aeb462fd0bdfd70e3975297e0b8b178e0e03a95e1f6c9bc4 SHA512 a9f5c047b39efb2d11b55ee9913662ca402ac6837b3ad2d278ecfbd1caf32ed4546f169e3e92503d57bf3b62ccf89cd062da1c7ea3638aae98e868d2766363c3 WHIRLPOOL 36edbdf8be7c3793a89918a3c43d74e75a6281a37c394f7d2f20506130a76aab04a3beddba01bf7f0e9b6901c7e834ca014c31c913c0ea846d3f6be9c93599d2
diff --git a/sci-mathematics/Macaulay2/files/1.6-lapack.patch b/sci-mathematics/Macaulay2/files/1.6-lapack.patch
new file mode 100644
index 000000000000..e9a434eeb28e
--- /dev/null
+++ b/sci-mathematics/Macaulay2/files/1.6-lapack.patch
@@ -0,0 +1,50 @@
+--- configure.ac 2012-10-24 09:29:55.240498786 -0700
++++ configure.ac.2 2012-10-30 15:07:27.172846300 -0700
+@@ -1285,46 +1285,7 @@
+ done
+ test $BUILD_factory = yes && BUILTLIBS="$SINGULARLIBS $BUILTLIBS"
+
+-# we need to do the fortran library testing last, in case AC_SEARCH_LIBS adds
+-# one of them to $LIBS, making it impossible to check for the presence of C or
+-# C++ libraries. (I'm not sure why putting -llapack on the gcc command line
+-# needlessly causes the library to be linked against.)
+-FORTRANUSED=no
+-if test "$LAPACK" = yes
+-then AC_MSG_CHECKING([whether the vecLib framework is available])
+- SAVELIBS=$LIBS LIBS="-framework vecLib $LIBS"
+- AC_LANG(C)
+- AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM(,[sgemv_();dgetrf_();])],
+- [
+- AC_MSG_RESULT(yes)
+- ],
+- [
+- AC_MSG_RESULT(no)
+- LIBS=$SAVELIBS
+- FORTRANUSED=yes
+- if test $BUILD_lapack = no
+- then AC_LANG(Fortran)
+- if test "$FC" = ""
+- then AC_MSG_ERROR(no fortran compiler found)
+- else AC_MSG_NOTICE(using fortran compiler $FC)
+- fi
+- AC_SEARCH_LIBS(sgemv,blas f77blas,,BUILD_lapack=yes)
+- AC_SEARCH_LIBS(dgetrf,lapack,,BUILD_lapack=yes)
+- fi
+- ])
+-fi
+-test $BUILD_lapack = yes && BUILTLIBS="-llapack -lblas $BUILTLIBS"
+-
+-if test $BUILD_lapack = yes
+-then # test whether the fortran compiler can handle lapack, which, starting with
+- # version 3.2, requires fortran 90, not fortran 77
+- AC_LANG(Fortran)
+- AC_MSG_CHECKING([whether the fortran compiler is modern enough for lapack])
+- AC_COMPILE_IFELSE([instrinsic maxloc],
+- AC_MSG_ERROR(the fortran compiler ($FC) does not support the Fortran 90 language required for compiling lapack),
+- AC_MSG_RESULT(yes))
+-fi
++BUILTLIBS="$(${PKG_CONFIG} --libs lapack) $BUILTLIBS"
+
+ if test $BUILD_memtailor = yes
+ then BUILTLIBS="-lmemtailor $BUILTLIBS"
diff --git a/sci-mathematics/Macaulay2/files/1.6-paths-of-external-programs.patch b/sci-mathematics/Macaulay2/files/1.6-paths-of-external-programs.patch
new file mode 100644
index 000000000000..4c090deec9d8
--- /dev/null
+++ b/sci-mathematics/Macaulay2/files/1.6-paths-of-external-programs.patch
@@ -0,0 +1,73 @@
+diff -U 3 -dHrN M2source/Macaulay2/packages/FourTiTwo.m2 M2source.patch/Macaulay2/packages/FourTiTwo.m2
+--- M2source/Macaulay2/packages/FourTiTwo.m2 2011-09-22 14:36:51.000000000 +0100
++++ M2source.patch/Macaulay2/packages/FourTiTwo.m2 2011-09-24 21:24:12.000000000 +0100
+@@ -47,7 +47,7 @@
+
+ path'4ti2 = (options FourTiTwo).Configuration#"path"
+ -- NOTE: the absolute path should be put into the .init file for 4ti2 inside the .Macaulay2 directory.
+-if path'4ti2 == "" then path'4ti2 = prefixDirectory | currentLayout#"programs"
++if path'4ti2 == "" then path'4ti2 = "/usr/bin/"
+
+ getFilename = () -> (
+ filename := temporaryFileName();
+diff -U 3 -dHrN M2source/Macaulay2/packages/gfanInterface.m2 M2source.patch/Macaulay2/packages/gfanInterface.m2
+--- M2source/Macaulay2/packages/gfanInterface.m2 2011-05-14 12:00:59.000000000 +0100
++++ M2source.patch/Macaulay2/packages/gfanInterface.m2 2011-09-24 21:24:12.000000000 +0100
+@@ -25,7 +25,7 @@
+ }
+
+ gfan'path = gfanInterface#Options#Configuration#"path"
+-if gfan'path == "" then gfan'path = prefixDirectory | currentLayout#"programs"
++if gfan'path == "" then gfan'path = "/usr/bin/"
+ if instance(gfan'path, String) then gfan'path = {gfan'path}
+ if not instance(gfan'path,List) then error "expected configuration option gfan'path to be a list of strings or a string"
+ gfan'path = join(
+diff -U 3 -dHrN M2source/Macaulay2/packages/NautyGraphs.m2 M2source.patch/Macaulay2/packages/NautyGraphs.m2
+--- M2source/Macaulay2/packages/NautyGraphs.m2 2011-08-26 11:05:30.000000000 +0100
++++ M2source.patch/Macaulay2/packages/NautyGraphs.m2 2011-09-24 21:25:53.000000000 +0100
+@@ -32,7 +32,7 @@
+ -- Check the ~/.Macaulay2/init-NautyGraphs.m2 file for the absolute path.
+ -- If it's not there, then use the M2-Programs directory.
+ nauty'path = (options NautyGraphs).Configuration#"path";
+-if nauty'path == "" then nauty'path = prefixDirectory | currentLayout#"programs";
++if nauty'path == "" then nauty'path = "/usr/bin/";
+
+ -------------------
+ -- Exports
+diff -U 3 -dHrN M2source/Macaulay2/packages/Nauty.m2 M2source.patch/Macaulay2/packages/Nauty.m2
+--- M2source/Macaulay2/packages/Nauty.m2 2011-08-26 11:05:30.000000000 +0100
++++ M2source.patch/Macaulay2/packages/Nauty.m2 2011-09-24 21:24:12.000000000 +0100
+@@ -48,7 +48,8 @@
+ -- Check the ~/.Macaulay2/init-Nauty.m2 file for the absolute path.
+ -- If it's not there, then use the M2-Programs directory.
+ nauty'path = (options Nauty).Configuration#"path";
+-if nauty'path == "" then nauty'path = prefixDirectory | currentLayout#"programs";
++if nauty'path == "" then nauty'path = "/usr/bin/";
++
+
+ -------------------
+ -- Exports
+diff -U 3 -dHrN M2source/Macaulay2/packages/Normaliz.m2 M2source.patch/Macaulay2/packages/Normaliz.m2
+--- M2source/Macaulay2/packages/Normaliz.m2 2011-05-25 16:47:50.000000000 +0100
++++ M2source.patch/Macaulay2/packages/Normaliz.m2 2011-09-24 21:24:12.000000000 +0100
+@@ -166,7 +166,7 @@
+ nmzExec="normaliz";
+ );
+ -- return nmzExec;
+- return prefixDirectory | currentLayout#"programs" | nmzExec;
++ return "/usr/bin/" | nmzExec;
+ );
+
+
+diff -U 3 -dHrN M2source/Macaulay2/packages/StatePolytope.m2 M2source.patch/Macaulay2/packages/StatePolytope.m2
+--- M2source/Macaulay2/packages/StatePolytope.m2 2010-09-10 16:47:20.000000000 +0100
++++ M2source.patch/Macaulay2/packages/StatePolytope.m2 2011-09-24 21:24:12.000000000 +0100
+@@ -31,7 +31,7 @@
+
+
+ gfanCommand = (options StatePolytope)#Configuration#"gfan command"
+-if gfanCommand === "gfan" then gfanCommand = prefixDirectory | currentLayout#"programs" | gfanCommand
++if gfanCommand === "gfan" then gfanCommand = "/usr/bin/" | gfanCommand
+ gfanCommand = "!" | gfanCommand
+
+ --The next two functions print out the ring and the ideal in the format required by gfan
diff --git a/sci-mathematics/Macaulay2/files/70Macaulay2-gentoo.el b/sci-mathematics/Macaulay2/files/70Macaulay2-gentoo.el
new file mode 100644
index 000000000000..ac86e2132ed5
--- /dev/null
+++ b/sci-mathematics/Macaulay2/files/70Macaulay2-gentoo.el
@@ -0,0 +1,11 @@
+;; sci-mathematics/Macaulay2 init file
+
+(add-to-list 'load-path "/usr/share/emacs/site-lisp/Macaulay2")
+
+(defvar M2-exe "/usr/bin/M2" "*The default Macaulay2 executable name.")
+(autoload 'M2 "M2.el" "Run Macaulay 2 in a buffer." t)
+(autoload 'Macaulay2 "M2" "Run Macaulay 2 in a buffer, non-interactive." t)
+(autoload 'M2-mode "M2" "Macaulay 2 editing mode" t)
+(autoload 'm2-mode "M2" "Macaulay 2 editing mode, name in lower case" t)
+(autoload 'm2-comint-mode "M2" "Macaulay 2 command interpreter mode, name in lower case" t)
+(setq auto-mode-alist (append auto-mode-alist '(("\\.m2$" . M2-mode)))) \ No newline at end of file
diff --git a/sci-mathematics/Macaulay2/metadata.xml b/sci-mathematics/Macaulay2/metadata.xml
new file mode 100644
index 000000000000..3513de74db1a
--- /dev/null
+++ b/sci-mathematics/Macaulay2/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>tomka@gentoo.org</email>
+ <name>Thomas Kahle</name>
+ </maintainer>
+ <herd>sci-mathematics</herd>
+ <use>
+ <flag name="optimization">Accept upstream's choices for -O option, i.e. -O3 almost everywhere.</flag>
+ </use>
+ <longdescription lang="en">
+ Macaulay2 is a research tool for algraic geometry and commutative
+ algebra.
+</longdescription>
+</pkgmetadata>