From 5b4549b5edf987dc4464826f33b9cdfb78f1869a Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Wed, 23 Jul 2025 15:22:51 -0400 Subject: [PATCH] sci-mathematics/polymake: add 4.14 Adds "+bliss" to IUSE to finally fix the pkgcheck warning. One of bliss/nauty are required, and bliss is the lighter-weight of the two, so it makes a better default. Our nauty package also tends to lag a bit because we use several of Debian's patches that need to be rerolled for each release. Signed-off-by: Michael Orlitzky --- sci-mathematics/polymake/Manifest | 1 + sci-mathematics/polymake/polymake-4.14.ebuild | 117 ++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 sci-mathematics/polymake/polymake-4.14.ebuild diff --git a/sci-mathematics/polymake/Manifest b/sci-mathematics/polymake/Manifest index 6559e69948cd..743035af980f 100644 --- a/sci-mathematics/polymake/Manifest +++ b/sci-mathematics/polymake/Manifest @@ -1 +1,2 @@ DIST polymake-4.13-minimal.tar.bz2 7338096 BLAKE2B c4d60ab48cb4fd21e6ea38ccdf85086e92c1ad2b80434180c07da036de9e462439e73f05d271d1c0aa150a8eeda59b20d5314fbf8fd7b17c2eb3f0e0b0384c78 SHA512 cd281a1f293434d96efceeb02e25d23fb334fa0c0ecdf5af10489d12850dca43c05eaa36e86fbd4a0b1fab9e83b03ad694d655a8710ea5ed9f000297a4d86d50 +DIST polymake-4.14-minimal.tar.bz2 7337590 BLAKE2B 0c293b3b184fd2a854f31967427eeca0675ef707a3c36e7b1d90b2a59c68f9fafbddabd61e7d7540596ca6df3378924e32887fbcb27bc97b3b7c1001e3dacaed SHA512 d4deb0c72613090867f123915f5de4b865477d31778fdf212ea233c196307d22047f7a718bf7b21609155a75aa0a4021bc68a8e1f6085b7c8131cdeec1ae87ac diff --git a/sci-mathematics/polymake/polymake-4.14.ebuild b/sci-mathematics/polymake/polymake-4.14.ebuild new file mode 100644 index 000000000000..522c10bb5da0 --- /dev/null +++ b/sci-mathematics/polymake/polymake-4.14.ebuild @@ -0,0 +1,117 @@ +# Copyright 1999-2025 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" +HOMEPAGE="https://polymake.org/" +SRC_URI="https://polymake.org/lib/exe/fetch.php/download/${P}-minimal.tar.bz2" + +# 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 ~amd64-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" + +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'." +}