Merge updates from master

This commit is contained in:
Repository mirror & CI
2023-11-13 22:45:18 +00:00
6 changed files with 261 additions and 1 deletions

View File

@@ -31,6 +31,21 @@ IUSE="lua52compat static-libs"
S="${WORKDIR}/LuaJIT-${GIT_COMMIT}"
src_configure() {
tc-export_build_env
# You need to use a 32-bit toolchain to build for a 32-bit architecture.
# Some 64-bit toolchains (like amd64 and ppc64) usually have multilib
# enabled, allowing you to build in 32-bit with -m32. This won't work in all
# cases, but it will otherwise just break, so it's worth trying anyway. If
# you're trying to build for 64-bit from 32-bit, then you're screwed, sorry.
# See https://github.com/LuaJIT/LuaJIT/issues/664 for the upstream issue.
if tc-is-cross-compiler && [[ $(tc-get-build-ptr-size) != 4 && $(tc-get-ptr-size) == 4 ]]; then
BUILD_CFLAGS+=" -m32"
BUILD_LDFLAGS+=" -m32"
fi
}
_emake() {
emake \
Q= \
@@ -55,7 +70,6 @@ _emake() {
}
src_compile() {
tc-export_build_env
_emake XCFLAGS="$(usex lua52compat "-DLUAJIT_ENABLE_LUA52COMPAT" "")"
}

View File

@@ -1216,4 +1216,18 @@ tc-get-c-rtlib() {
return 0
}
# @FUNCTION: tc-get-ptr-size
# @RETURN: Size of a pointer in bytes for CHOST (e.g. 4 or 8).
tc-get-ptr-size() {
$(tc-getCPP) -P - <<< __SIZEOF_POINTER__ ||
die "Could not determine CHOST pointer size"
}
# @FUNCTION: tc-get-build-ptr-size
# @RETURN: Size of a pointer in bytes for CBUILD (e.g. 4 or 8).
tc-get-build-ptr-size() {
$(tc-getBUILD_CPP) -P - <<< __SIZEOF_POINTER__ ||
die "Could not determine CBUILD pointer size"
}
fi

View File

@@ -0,0 +1 @@
DIST polymake-4.11-minimal.tar.bz2 7325783 BLAKE2B 87e62741e4e44c5fea7454d5cc8cb205cf13f8ee743c1d72100f937d0677505ce0c5c8f5b37c118f89079ca88f313991eaefb2ea02c49b6c7b45c438c6f9e13b SHA512 94adf3fcec21de50451091a04ca17010f5e71b44e3dcd4e2d52b9f952b94ee0cf3f6df15657b761b0bda20eb47cbdc0cb2481bb440c7243442be34f913292246

View File

@@ -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

View File

@@ -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>

View File

@@ -0,0 +1,124 @@
# 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"
# Tests observed failing after upgrade to polymake-4.5. No idea if they
# worked prior to that. Someone who actually understands polymake will
# have to get these working (at least briefly) before we re-enable them.
RESTRICT=test
PATCHES=( "${FILESDIR}/${P}-singular-sat.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'."
}