summaryrefslogtreecommitdiff
path: root/sci-mathematics/polymake
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-11-14 04:26:46 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-11-14 04:26:46 +0000
commit62ce4dfbf01c603a668dabde87ccc5b4ca4069af (patch)
tree7b3cda13b94b1830f816c9e0e0d728d4af37d1d4 /sci-mathematics/polymake
parent48b1a38e1711d2eec2733c3cd4b1b8ae49fbc47a (diff)
gentoo auto-resync : 14:11:2023 - 04:26:45
Diffstat (limited to 'sci-mathematics/polymake')
-rw-r--r--sci-mathematics/polymake/Manifest5
-rw-r--r--sci-mathematics/polymake/files/polymake-4.11-barycentric-subdiv.patch23
-rw-r--r--sci-mathematics/polymake/files/polymake-4.11-singular-sat.patch53
-rw-r--r--sci-mathematics/polymake/metadata.xml54
-rw-r--r--sci-mathematics/polymake/polymake-4.11.ebuild122
5 files changed, 257 insertions, 0 deletions
diff --git a/sci-mathematics/polymake/Manifest b/sci-mathematics/polymake/Manifest
new file mode 100644
index 000000000000..987a3369b0ec
--- /dev/null
+++ b/sci-mathematics/polymake/Manifest
@@ -0,0 +1,5 @@
+AUX polymake-4.11-barycentric-subdiv.patch 807 BLAKE2B e2e632146e6d96e5966444283a0226caf26dfd7dab482a35289e2b6f9acaa791db015787b4b91f5c2f3abc47323227377dd296dfc21b777315979e58d2e36af8 SHA512 f5332d3a558a0b3dc1b0cc0846131210857d2a6ad11647fd64cd5366c04c349752d06e30da3f93568ff5d2f04f8419b8c9ef6e71460e997c295cb6959a8964e1
+AUX polymake-4.11-singular-sat.patch 2212 BLAKE2B 659d07040141617f7ac6cb8572c44bf4d9ba332f1f4ddb5434987ea900009ef2b3ebefa27ead63a60c6048b58c3a853c797d82af1f3c8793f2c506f09dfd43f0 SHA512 fc46ec6753ddf14d389b9e03421a909bf572e4e7d6acf3dec7319d3bf704ba7710ba1c4719bf6b9153599f523e36cf83ac8b8218141f72a43343c94373fc5b57
+DIST polymake-4.11-minimal.tar.bz2 7325783 BLAKE2B 87e62741e4e44c5fea7454d5cc8cb205cf13f8ee743c1d72100f937d0677505ce0c5c8f5b37c118f89079ca88f313991eaefb2ea02c49b6c7b45c438c6f9e13b SHA512 94adf3fcec21de50451091a04ca17010f5e71b44e3dcd4e2d52b9f952b94ee0cf3f6df15657b761b0bda20eb47cbdc0cb2481bb440c7243442be34f913292246
+EBUILD polymake-4.11.ebuild 3938 BLAKE2B 3be7f4538453e5d588176a5976e4bc8c3f7e8d5771096445bb82840846fee0dbb70cb04cf461663747b0c56066a8eb91eeb04f080d6c3d1a3ae83b3b052f0f59 SHA512 759382797478ae27197b0f760d5780e6643879ae0589dc21f9224d3a4e49ef381a6587f01080d78c6d48d8b68ce9e59916b59194584324c8c733de77be4ca45d
+MISC metadata.xml 1765 BLAKE2B 4e13dfb267c8100df81d8be89e7915ba850f55fea4256882264b13a0307c60cd8346ff46bf972018b334bf2d0dc387761244c1e0c3b8c7a1f4613a2a87458538 SHA512 7fd8af42bccc7710bd7c4159759b42ace43f638365a83defee96568e6ab4d6c186f49e71cbf68291fcd3b8b30fd7f883e8096c001c6bbf233d6f7336fa266f7c
diff --git a/sci-mathematics/polymake/files/polymake-4.11-barycentric-subdiv.patch b/sci-mathematics/polymake/files/polymake-4.11-barycentric-subdiv.patch
new file mode 100644
index 000000000000..2f58b0f76299
--- /dev/null
+++ b/sci-mathematics/polymake/files/polymake-4.11-barycentric-subdiv.patch
@@ -0,0 +1,23 @@
+commit d55dc6bd7f2da9245884f86706cb96e2d11fa83a
+Author: Benjamin Lorenz <lorenz@math.tu-berlin.de>
+Date: Tue Nov 7 16:49:33 2023 +0100
+
+ barycentric_subdivision: dont call back on empty strings
+
+ thanks jamesjer
+
+ @Jenkins: merge
+
+diff --git a/apps/topaz/src/barycentric_subdivision.cc b/apps/topaz/src/barycentric_subdivision.cc
+index 753afb4040..e2d4130bc3 100644
+--- a/apps/topaz/src/barycentric_subdivision.cc
++++ b/apps/topaz/src/barycentric_subdivision.cc
+@@ -139,7 +139,7 @@ bs_data2Object(const bool realize,
+ else
+ desc << k << "th ";
+ desc << "barycentric subdivision of " << description;
+- if (description.back() != '\n')
++ if (description.empty() || description.back() != '\n')
+ desc << endl;
+ p_out.set_description() << desc.str();
+ return p_out;
diff --git a/sci-mathematics/polymake/files/polymake-4.11-singular-sat.patch b/sci-mathematics/polymake/files/polymake-4.11-singular-sat.patch
new file mode 100644
index 000000000000..739e503ac246
--- /dev/null
+++ b/sci-mathematics/polymake/files/polymake-4.11-singular-sat.patch
@@ -0,0 +1,53 @@
+commit 4ce0549f510d246c8f69c85c509fc2d13d882442
+Author: Benjamin Lorenz <lorenz@math.tu-berlin.de>
+Date: Thu Nov 9 11:15:06 2023 +0100
+
+ singular: support new return types for saturation command
+
+ This was changed from (ideal, exponent) to just the ideal in singular 4-3-2p5.
+ To allow older versions we keep using sat but support both return types
+ instead of switching to the new sat_with_exp.
+
+diff --git a/bundled/singular/apps/ideal/src/singularIdeal.cc b/bundled/singular/apps/ideal/src/singularIdeal.cc
+index 4cbc00a6f4..bdade5c29d 100644
+--- a/bundled/singular/apps/ideal/src/singularIdeal.cc
++++ b/bundled/singular/apps/ideal/src/singularIdeal.cc
+@@ -236,22 +236,24 @@ public:
+ arg.next->data=(void *)idCopy(J);
+ // call primdecSY
+ BOOLEAN res=iiMake_proc(sathdl, nullptr ,&arg);
+- if(!res && (iiRETURNEXPR.Typ() == LIST_CMD)){
+- lists L = (lists)iiRETURNEXPR.Data();
+- SingularIdeal_wrap* result;
+- if(L->m[0].Typ() == IDEAL_CMD){
+- result = new SingularIdeal_impl((::ideal) (L->m[0].Data()),singRing);
+- } else {
+- throw std::runtime_error("Something went wrong for the primary decomposition");
++ if(!res) {
++ ::ideal iddata = nullptr;
++ if (iiRETURNEXPR.Typ() == LIST_CMD) {
++ lists L = (lists)iiRETURNEXPR.Data();
++ if(L->m[0].Typ() == IDEAL_CMD)
++ iddata = (::ideal) L->m[0].Data();
++ } else if (iiRETURNEXPR.Typ() == IDEAL_CMD) {
++ iddata = (::ideal) iiRETURNEXPR.Data();
++ }
++ if (iddata != nullptr) {
++ SingularIdeal_wrap* result = new SingularIdeal_impl(iddata, singRing);
++ iiRETURNEXPR.CleanUp();
++ iiRETURNEXPR.Init();
++ return result;
+ }
+- iiRETURNEXPR.CleanUp();
+- iiRETURNEXPR.Init();
+- return result;
+- } else {
+- iiRETURNEXPR.Init();
+- throw std::runtime_error("Something went wrong for the saturation");
+ }
+-
++ iiRETURNEXPR.Init();
++ throw std::runtime_error("saturation: unable to parse ideal from return value");
+ }
+
+ Array<SingularIdeal_wrap*> primary_decomposition() const
diff --git a/sci-mathematics/polymake/metadata.xml b/sci-mathematics/polymake/metadata.xml
new file mode 100644
index 000000000000..e8e79ebd3fc8
--- /dev/null
+++ b/sci-mathematics/polymake/metadata.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>sci-mathematics@gentoo.org</email>
+ <name>Gentoo Mathematics Project</name>
+</maintainer>
+<use>
+ <flag name="bliss">
+ Enable <pkg>sci-libs/bliss</pkg> interface for graph and face lattice
+ isomorphism computations.
+ </flag>
+ <flag name="cdd">
+ Enable <pkg>sci-libs/cddlib</pkg> interface for convex hull
+ computations (Should be kept enabled).
+ </flag>
+ <flag name="flint">
+ Build with "strongly recommended" support for
+ <pkg>sci-mathematics/flint</pkg>.
+ </flag>
+ <flag name="libpolymake">
+ Build the polymake library to build applications using the C++
+ interface.
+ </flag>
+ <flag name="lrs">
+ Enable <pkg>sci-libs/lrslib</pkg> interface for convex hull
+ computations.
+ </flag>
+ <flag name="nauty">
+ Build the extension for graph automorphism computations using
+ <pkg>sci-mathematics/nauty</pkg>.
+ </flag>
+ <flag name="normaliz">
+ Build the bundled extension for lattice computations using
+ <pkg>sci-mathematics/normaliz</pkg>.
+ </flag>
+ <flag name="ppl">
+ Enable <pkg>dev-libs/ppl</pkg> interface for convex hull computations.
+ </flag>
+ <flag name="singular">
+ Enable the interface to <pkg>sci-mathematics/singular</pkg> for
+ ideal related computations.
+ </flag>
+</use>
+<longdescription lang="en">
+ Polymake is open source software for research in polyhedral
+ geometry. It deals with polytopes, polyhedra, and fans as well as
+ simplicial complexes, matroids, graphs, tropical hypersurfaces, and
+ other objects.
+</longdescription>
+<upstream>
+ <remote-id type="github">polymake/polymake</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/sci-mathematics/polymake/polymake-4.11.ebuild b/sci-mathematics/polymake/polymake-4.11.ebuild
new file mode 100644
index 000000000000..5feccaae668e
--- /dev/null
+++ b/sci-mathematics/polymake/polymake-4.11.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic ninja-utils toolchain-funcs
+
+DESCRIPTION="Tool for polyhedral geometry and combinatorics"
+SRC_URI="https://polymake.org/lib/exe/fetch.php/download/${P}-minimal.tar.bz2"
+HOMEPAGE="https://polymake.org/"
+
+# polymake itself is GPL-2, but even the minimal tarball bundles a lot
+# of other code. I've included everything that turns up with a
+#
+# find ./ -name 'LICENSE' -o -name 'COPYING'
+#
+# in the list below. If any of these bother you, you may want to take a
+# closer look at how (or even if) the corresponding code is being used.
+LICENSE="BSD GPL-2 GPL-2+ MIT WTFPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+IUSE="bliss +cdd +flint +normaliz libpolymake lrs nauty ppl singular"
+
+REQUIRED_USE="^^ ( bliss nauty )"
+
+# The "configure" script isn't autotools; it basically exists just to
+# exec some other perl script but using the familiar name.
+BDEPEND="dev-lang/perl
+ ${NINJA_DEPEND}"
+
+DEPEND="
+ libpolymake? ( dev-lang/perl )
+ dev-libs/boost:=
+ dev-libs/gmp:=
+ dev-libs/libxml2:2=
+ dev-libs/libxslt:=
+ dev-libs/mpfr:=
+ sys-libs/readline:=
+ bliss? ( sci-libs/bliss:=[gmp] )
+ cdd? ( sci-libs/cddlib:= )
+ flint? ( sci-mathematics/flint:= )
+ lrs? ( >=sci-libs/lrslib-051:=[gmp] )
+ nauty? ( sci-mathematics/nauty:= )
+ normaliz? ( >=sci-mathematics/normaliz-3.8:= )
+ ppl? ( dev-libs/ppl:= )
+ singular? ( sci-mathematics/singular:= )"
+
+RDEPEND="${DEPEND}
+ dev-lang/perl
+ dev-perl/JSON
+ dev-perl/Term-ReadLine-Gnu
+ dev-perl/TermReadKey
+ dev-perl/XML-SAX
+ dev-perl/XML-Writer"
+
+PATCHES=(
+ "${FILESDIR}/${P}-singular-sat.patch"
+ "${FILESDIR}/${P}-barycentric-subdiv.patch"
+)
+
+src_configure() {
+ # Without this, the build system tries to use "the highest possible"
+ # optimization level and will override what's in your CXXFLAGS.
+ export CXXOPT=""
+
+ tc-export CC CXX
+
+ # We need to define BLISS_USE_GMP if bliss was built with gmp support.
+ # Therefore we require gmp support on bliss, so that the package
+ # manager can prevent rebuilds with changed gmp flag. Yes, this should
+ # be append-cppflags; but the build system doesn't respect CPPFLAGS.
+ use bliss && append-cxxflags -DBLISS_USE_GMP
+
+ # This isn't an autotools ./configure script, so a lot of things
+ # don't work the way you'd expect. We disable openmp unconditionally
+ # because it's only supposedly only used for building the bundled
+ # libnormaliz (we unbundle it) and for something called to_simplex
+ # that I can't find anywhere in the polymake source.
+ ./configure --prefix="${EPREFIX}/usr" \
+ --libdir="${EPREFIX}/usr/$(get_libdir)" \
+ --libexecdir="${EPREFIX}/usr/$(get_libdir)/polymake" \
+ $(usev !libpolymake "--without-callable") \
+ --without-java \
+ --without-javaview \
+ --without-native \
+ --without-scip \
+ --without-soplex \
+ --without-openmp \
+ $(use_with bliss bliss "${EPREFIX}/usr") \
+ $(use_with cdd cdd "${EPREFIX}/usr") \
+ $(use_with flint flint "${EPREFIX}/usr") \
+ $(use_with lrs lrs "${EPREFIX}/usr") \
+ $(use_with nauty nauty "${EPREFIX}/usr") \
+ $(use_with normaliz libnormaliz "${EPREFIX}/usr") \
+ $(use_with ppl ppl "${EPREFIX}/usr") \
+ $(use_with singular singular "${EPREFIX}/usr") \
+ || die
+}
+
+# There is a backwards-compatible Makefile that would call ninja for us
+# in src_compile/src_install, but it doesn't handle MAKEOPTS correctly.
+src_compile() {
+ eninja -C build/Opt
+}
+
+src_install() {
+ # DESTDIR needs to find its way into the real install script,
+ # support/install.pl.
+ export DESTDIR="${D}"
+ eninja -C build/Opt install
+}
+
+src_test() {
+ perl/polymake --script run_testcases --emacs-style \
+ || die "test suite failed"
+}
+
+pkg_postinst() {
+ elog "Additional features for polymake are available through external"
+ elog "software such as sci-mathematics/4ti2 and sci-mathematics/topcom."
+ elog "After installing new external software run 'polymake --reconfigure'."
+}