git: dc1c95ace580 - main - math/polymake: Update 4.13 => 4.15, improve port

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Tue, 16 Jun 2026 22:10:20 UTC
The branch main has been updated by vvd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=dc1c95ace580a305c66ee63d4514c2713e730d46

commit dc1c95ace580a305c66ee63d4514c2713e730d46
Author:     Philipp Ost <bsd@philippost.de>
AuthorDate: 2026-06-16 21:52:10 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2026-06-16 22:04:53 +0000

    math/polymake: Update 4.13 => 4.15, improve port
    
    Changelogs:
    https://polymake.org/doku.php/news/release_4_14
    https://polymake.org/doku.php/news/release_4_15
    
    - Set USES+=llvm:max=19 for FreeBSD with llvm 21+ - this is a stop-gap
      measure, as polymake fails to compile with newer versions of llvm:
      https://forum.polymake.org/viewtopic.php?p=4242.
    - Remove OPTIMIZED_CFLAGS option.
    - Replace BLISS_{BUILD,RUN}_DEPENDS with BLISS_LIB_DEPENDS.
    - Set default option to nauty instead of bliss.
    - Move 7 common dependencies from BUILD_DEPENDS and RUN_DEPENDS to
      _BR_DEPENDS.
    - Fix warnings from portclippy.
    - Reformat Makefile with portfmt.
    - Replace *_CONFIGURE_ON/*_CONFIGURE_OFF with *_CONFIGURE_WITH -
      simplify and reduce size of options block.
    - Move perl module Ext.so from PLIST_FILES in Makefile to pkg-plist.
    - Add substitution for SOVER and DISTVERSION in plist.
    - Merge all STRIP in one call.
    
    PR:             296012
    Sponsored by:   UNIS Labs
    Co-authored-by: Vladimir Druzenko <vvd@FreeBSD.org>
---
 math/polymake/Makefile                             | 163 +++++++++------------
 math/polymake/distinfo                             |   6 +-
 .../patch-external_permlib_include_permlib_bsgs.h  |  11 --
 ...include_permlib_predicate_identity__predicate.h |  11 --
 ...ib_predicate_pointwise__stabilizer__predicate.h |  11 --
 ...ermlib_predicate_stabilizes__point__predicate.h |  11 --
 ...include_permlib_predicate_subgroup__predicate.h |  11 --
 ...ermlib_search_partition_backtrack__refinement.h |  11 --
 ...l_permlib_include_permlib_sorter_base__sorter.h |  11 --
 ..._permlib_include_permlib_sorter_group__sorter.h |  11 --
 ...ermlib_include_permlib_sorter_trivial__sorter.h |  11 --
 .../files/patch-lib_core_include_ContainerChain.h  | 131 -----------------
 .../files/patch-lib_core_include_GenericMatrix.h   |  17 ---
 ...tch-lib_core_include_internal_pool__allocator.h |  14 --
 .../polymake/files/patch-lib_core_include_optional |  38 -----
 math/polymake/pkg-plist                            |  26 ++--
 16 files changed, 85 insertions(+), 409 deletions(-)

diff --git a/math/polymake/Makefile b/math/polymake/Makefile
index 65ae1b3781b2..7081e825f391 100644
--- a/math/polymake/Makefile
+++ b/math/polymake/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	polymake
-DISTVERSION=	4.13
-PORTREVISION=	5
+DISTVERSION=	4.15
 CATEGORIES=	math
 MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/V${DISTVERSION}/ \
 		https://polymake.org/lib/exe/fetch.php/download/
@@ -13,26 +12,21 @@ WWW=		https://www.polymake.org/
 LICENSE=	GPLv2+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	boost-libs>=1.72:devel/boost-libs \
-		ninja:devel/ninja \
-		permlib>=0.2.9:math/permlib \
+_BR_DEPENDS=	boost-libs>=1.72:devel/boost-libs \
+		p5-JSON>=2.97:converters/p5-JSON \
+		p5-Term-ReadKey>=2.38:devel/p5-Term-ReadKey \
+		p5-Term-ReadLine-Gnu>=1.37:devel/p5-Term-ReadLine-Gnu \
 		p5-XML-SAX>=1.02:textproc/p5-XML-SAX \
 		p5-XML-Writer>=0.900:textproc/p5-XML-Writer \
-		p5-Term-ReadLine-Gnu>=1.37:devel/p5-Term-ReadLine-Gnu \
-		p5-Term-ReadKey>=2.38:devel/p5-Term-ReadKey \
-		p5-JSON>=2.97:converters/p5-JSON
+		permlib>=0.2.9:math/permlib
+BUILD_DEPENDS=	${_BR_DEPENDS} \
+		ninja:devel/ninja
 LIB_DEPENDS=	libcddgmp.so:math/cddlib \
 		libflint.so:math/flint2 \
 		libgmpxx.so:math/gmp \
 		libmpfr.so:math/mpfr
-RUN_DEPENDS=	bash>=5.0:shells/bash \
-		boost-libs>=1.72:devel/boost-libs \
-		permlib>=0.2.9:math/permlib \
-		p5-XML-SAX>=1.02:textproc/p5-XML-SAX \
-		p5-XML-Writer>=0.900:textproc/p5-XML-Writer \
-		p5-Term-ReadLine-Gnu>=1.37:devel/p5-Term-ReadLine-Gnu \
-		p5-Term-ReadKey>=2.38:devel/p5-Term-ReadKey \
-		p5-JSON>=2.97:converters/p5-JSON
+RUN_DEPENDS=	${_BR_DEPENDS} \
+		bash>=5.0:shells/bash
 
 USES=		compiler:c++14-lang gmake gnome perl5 readline shebangfix \
 		tar:bzip2
@@ -46,39 +40,42 @@ SHEBANG_GLOB=	*.pl *.sh
 # polymake's configure script expects options to be disabled by --without-option
 # and most options to be enabled by --with-option=DIR
 HAS_CONFIGURE=	yes
-CONFIGURE_ARGS=	--prefix=${PREFIX} \
+CONFIGURE_LOG=	build/bundled.log
+CONFIGURE_ARGS=	--bindir=${PREFIX}/bin \
+		--datadir=${DATADIR} \
+		--docdir=${DOCSDIR} \
 		--exec-prefix=${PREFIX} \
-		--bindir=${PREFIX}/bin \
 		--includedir=${PREFIX}/include \
 		--libdir=${PREFIX}/lib \
 		--libexecdir=${PREFIX}/libexec/polymake \
-		--datadir=${PREFIX}/share/polymake \
-		--docdir=${DOCSDIR} \
-		--without-prereq \
-		--with-libcxx \
+		--prefix=${PREFIX} \
 		--with-cdd=${LOCALBASE} \
 		--with-flint=${LOCALBASE} \
+		--with-libcxx \
 		--with-permlib=${LOCALBASE}/lib \
 		--without-java \
 		--without-javaview \
 		--without-native \
+		--without-prereq \
 		--without-sympol
-CONFIGURE_LOG=	build/bundled.log
+
+# The port uses the minimal distribution tarball without bundled libraries.
+# Set WRKSRC accordingly.
+WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTVERSION}
 
 # Optional features; SoPlex defaults to off due to licencsing and SCIP defaults
 # to off due to a dependency on libsoplex.so.
-OPTIONS_DEFINE=	LRS NORMALIZ OPENMP OPTIMIZED_CFLAGS PPL SCIP SINGULAR SOPLEX TESTS
-OPTIONS_DEFAULT=	BLISS LRS NORMALIZ OPENMP OPTIMIZED_CFLAGS PPL SINGULAR
+OPTIONS_DEFINE=		LRS NORMALIZ OPENMP PPL SCIP SINGULAR SOPLEX TESTS
+OPTIONS_DEFAULT=	LRS NAUTY NORMALIZ OPENMP PPL SINGULAR
+# polymake needs either math/bliss or math/nauty to compute graph automorphism
+# groups
+OPTIONS_SINGLE=		GRAPH
+OPTIONS_SINGLE_GRAPH=	BLISS NAUTY
 # Exlude lrslib on i386 and powerpc because it is marked BROKEN for those
 # architectures
 OPTIONS_EXCLUDE_i386=	LRS
 OPTIONS_EXCLUDE_powerpc=	LRS
-OPTIONS_SUB=	yes
-
-# polymake needs either math/bliss or math/nauty to compute graph automorphism
-# groups
-OPTIONS_SINGLE=	GRAPH
-OPTIONS_SINGLE_GRAPH=	BLISS NAUTY
+OPTIONS_SUB=		yes
 
 BLISS_DESC=	Compute graph automorphism groups using bliss
 GRAPH_DESC=	Graph automorphism groups
@@ -91,115 +88,91 @@ SINGULAR_DESC=	Computation of Groebner bases
 SOPLEX_DESC=	Solver for linear programming problems
 TESTS_DESC=	Run bundled self tests after build
 
-BLISS_CONFIGURE_ON=	--with-bliss=${LOCALBASE}
-BLISS_CONFIGURE_OFF=	--without-bliss
-BLISS_BUILD_DEPENDS=	bliss-graph-tool>=0.73:math/bliss # does it need the tool or the library? LIB_DEPENDS should be used in the latter case.
-BLISS_RUN_DEPENDS=	bliss-graph-tool>=0.73:math/bliss
+BLISS_LIB_DEPENDS=	libbliss.so:math/bliss
+BLISS_CONFIGURE_WITH=	bliss=${LOCALBASE}
 
-NAUTY_CONFIGURE_ON=	--with-nauty=${LOCALBASE}
-NAUTY_CONFIGURE_OFF=	--without-nauty
-NAUTY_LIB_DEPENDS=	libnauty.so:math/nauty
-
-LRS_CONFIGURE_ON=	--with-lrs=${LOCALBASE} \
-			--with-lrs-include=${LOCALBASE}/include/lrslib
-LRS_CONFIGURE_OFF=	--without-lrs
 LRS_LIB_DEPENDS=	liblrs.so:math/lrslib
+LRS_CONFIGURE_ON=	--with-lrs-include=${LOCALBASE}/include/lrslib
+LRS_CONFIGURE_WITH=	lrs=${LOCALBASE}
 
-NORMALIZ_CONFIGURE_ON=	--with-libnormaliz=${LOCALBASE}
-NORMALIZ_CONFIGURE_OFF=	--without-libnormaliz
-NORMALIZ_LIB_DEPENDS=	libnormaliz.so:math/libnormaliz
+NAUTY_LIB_DEPENDS=	libnauty.so:math/nauty
+NAUTY_CONFIGURE_WITH=	nauty=${LOCALBASE}
 
-OPENMP_CONFIGURE_OFF=	--without-openmp
+NORMALIZ_LIB_DEPENDS=		libnormaliz.so:math/libnormaliz
+NORMALIZ_CONFIGURE_WITH=	libnormaliz=${LOCALBASE}
 
-OPTIMIZED_CFLAGS_CFLAGS=	-O3
+OPENMP_CONFIGURE_WITH=	openmp
 
-PPL_CONFIGURE_ON=	--with-ppl=${LOCALBASE}
-PPL_CONFIGURE_OFF=	--without-ppl
 PPL_LIB_DEPENDS=	libppl.so:devel/ppl
+PPL_CONFIGURE_WITH=	ppl=${LOCALBASE}
 
-SCIP_CONFIGURE_ON=	--with-scip=${LOCALBASE}
-SCIP_CONFIGURE_OFF=	--without-scip
 SCIP_LIB_DEPENDS=	libscip.so:math/SCIP
+SCIP_CONFIGURE_WITH=	scip=${LOCALBASE}
 
-SINGULAR_CONFIGURE_ON=	--with-singular=${LOCALBASE}
-SINGULAR_CONFIGURE_OFF=	--without-singular
-SINGULAR_LIB_DEPENDS=	libSingular.so:math/singular
+SINGULAR_LIB_DEPENDS=		libSingular.so:math/singular
+SINGULAR_CONFIGURE_WITH=	singular=${LOCALBASE}
 
-SOPLEX_CONFIGURE_ON=	--with-soplex=${LOCALBASE}
-SOPLEX_CONFIGURE_OFF=	--without-soplex
 SOPLEX_LIB_DEPENDS=	libsoplex-pic.so:math/SoPlex
+SOPLEX_CONFIGURE_WITH=	soplex=${LOCALBASE}
 
 TESTS_VARS=	USE_PERL5+=test
 
-# The port uses the minimal distribution tarball without bundled libraries.
-# Set WRKSRC accordingly.
-WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTVERSION}
-
 .include <bsd.port.options.mk>
 
+.if ${OPSYS} == FreeBSD && ( \
+	${OSVERSION} >= 1404501 && ${OSVERSION} < 1500000 || \
+	${OSVERSION} >= 1501501 && ${OSVERSION} < 1600000 || \
+	${OSVERSION} >= 1600017 )
+USES+=		llvm:max=19
+.endif
+
 # Deal with site specific installation directory
 # polymake installs a perlxs module which depends on the perl configuration
 PERL_ARCHNAME=	${:!${PERL} -E 'use Config; print "\$Config::Config{archname}";'!}
-PLIST_FILES=	libexec/polymake/perlx/${PERL_VERSION}/${PERL_ARCHNAME}/auto/Polymake/Ext/Ext.so
+PLIST_SUB+=	PERL_ARCHNAME=${PERL_ARCHNAME} \
+		PERL_VERSION=${PERL_VERSION} \
+		VER=${DISTVERSION} \
+		SOVER=${SOVER}
 
 # Keep track of the major version
-DISTVERSION_MAJ=	${:!expr ${DISTVERSION} : '\([0-9]*\).*'!}
+SOVER=		${DISTVERSION:R}
 
 post-install:
 	${RLN} ${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION} \
-		${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION_MAJ}
+		${STAGEDIR}${PREFIX}/lib/libpolymake.so.${SOVER}
 	${RLN} ${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION} \
 		${STAGEDIR}${PREFIX}/lib/libpolymake.so
 
-	${STRIP_CMD} \
-		${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION} \
-
 .for _lp in libpolymake-apps libpolymake-apps-rt
 	${RLN} ${STAGEDIR}${PREFIX}/lib/${_lp}.so.${DISTVERSION} \
-		${STAGEDIR}${PREFIX}/lib/${_lp}.so.${DISTVERSION_MAJ}
+		${STAGEDIR}${PREFIX}/lib/${_lp}.so.${SOVER}
 	${RLN} ${STAGEDIR}${PREFIX}/lib/${_lp}.so.${DISTVERSION} \
 		${STAGEDIR}${PREFIX}/lib/${_lp}.so
 
 	${RLN} ${STAGEDIR}${PREFIX}/lib/${_lp}.so.${DISTVERSION} \
-		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${DISTVERSION_MAJ}
+		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${SOVER}
 	${RLN} ${STAGEDIR}${PREFIX}/lib/${_lp}.so.${DISTVERSION} \
 		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so
 
 	${RLN} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${DISTVERSION} \
-		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${DISTVERSION_MAJ}
+		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${SOVER}
 	${RLN} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${DISTVERSION} \
 		${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so
-# strip the libraries
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/${_lp}.so.${DISTVERSION}
-.endfor
-
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/polymake/perlx/${PERL_VERSION}/${PERL_ARCHNAME}/auto/Polymake/Ext/Ext.so
-
-.for l in common fan fulton graph group matroid polytope topaz tropical
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/${l}.so
 .endfor
 
-# only strip libexec/polymake/lib/ideal.so iff SINGULAR=on, if SINGULAR=off it
-# is an empty file and stripping fails
-.if ${PORT_OPTIONS:MSINGULAR}
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/ideal.so
-.endif
-
-.for lp in libpolymake-apps libpolymake-apps-rt
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/polymake/lib/${lp}.so.${DISTVERSION}
-.endfor
+# strip the libraries
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION} \
+		${STAGEDIR}${PREFIX}/libexec/polymake/lib/libpolymake-*.so.${DISTVERSION} \
+		${common fan fulton graph group ideal matroid polytope topaz tropical \
+			:L:C|^(.*)$|${STAGEDIR}${PREFIX}/libexec/polymake/lib/\1.so|} \
+		${STAGEDIR}${PREFIX}/libexec/polymake/perlx/${PERL_VERSION}/${PERL_ARCHNAME}/auto/Polymake/Ext/Ext.so
 
 post-install-TESTS-on: test
 
 # Set HOME=${WRKDIR} to prevent polymake writing its .polymake directory outside
-# WRKDIR.
+# WRKDIR. Also tests fail if TERM is not defined.
 test:
-	@cd ${WRKSRC} && HOME=${WRKDIR} perl/polymake --script run_testcases
-
-.include <bsd.port.pre.mk>
-
-.if ${PERL_LEVEL} >= 504200
-BROKEN=	polymake has not been checked for compatibility with perl 5.42 or newer
-.endif
+	@(cd ${WRKSRC} && \
+		HOME=${WRKDIR} TERM=vt100 perl/polymake --script run_testcases)
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/math/polymake/distinfo b/math/polymake/distinfo
index e3d780791b0b..fd27da882c78 100644
--- a/math/polymake/distinfo
+++ b/math/polymake/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1727625660
-SHA256 (polymake-4.13-minimal.tar.bz2) = f3adacd063b9ea60d5e9c37c6183f5dbb7458b0cb3491eba3efc38f20c565ceb
-SIZE (polymake-4.13-minimal.tar.bz2) = 7338096
+TIMESTAMP = 1780934589
+SHA256 (polymake-4.15-minimal.tar.bz2) = 30e0a8f89013cf7a9a44ed90db2f69c49bf181050664c7e6bdb861c610b1bdb9
+SIZE (polymake-4.15-minimal.tar.bz2) = 7338374
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_bsgs.h b/math/polymake/files/patch-external_permlib_include_permlib_bsgs.h
deleted file mode 100644
index 176060a8a967..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_bsgs.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/bsgs.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/bsgs.h
-@@ -461,7 +461,7 @@ template <class PERM>
-  * stabilizer chain are next to each other.
-  */
- template <class PERM>
--class StrongGeneratingSetSorter : public std::binary_function<typename PERM::ptr, typename PERM::ptr, bool> {
-+class StrongGeneratingSetSorter {
- public:
- 	/**
- 	 * @param baseBegin begin-iterator(dom_int) to the base relative to which the strong generating set is to be sorted
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_predicate_identity__predicate.h b/math/polymake/files/patch-external_permlib_include_permlib_predicate_identity__predicate.h
deleted file mode 100644
index 0f8e6404edf9..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_predicate_identity__predicate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/predicate/identity_predicate.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/predicate/identity_predicate.h
-@@ -39,7 +39,7 @@ template <class PERM>
- 
- /// predicate matching a permutation if it stabilizes a given list of points pointwise
- template <class PERM>
--class IdentityPredicate : public std::unary_function<typename PERM::ptr, bool> {
-+class IdentityPredicate {
- public:
- 	/// evaluate predicate
- 	bool operator()(const typename PERM::ptr &p) const {
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_predicate_pointwise__stabilizer__predicate.h b/math/polymake/files/patch-external_permlib_include_permlib_predicate_pointwise__stabilizer__predicate.h
deleted file mode 100644
index 176cdb17ca29..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_predicate_pointwise__stabilizer__predicate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/predicate/pointwise_stabilizer_predicate.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/predicate/pointwise_stabilizer_predicate.h
-@@ -39,7 +39,7 @@ template <class PERM>
- 
- /// predicate matching a permutation if it stabilizes a given list of points pointwise
- template <class PERM>
--class PointwiseStabilizerPredicate : public std::unary_function<typename PERM::ptr, bool> {
-+class PointwiseStabilizerPredicate {
- public:
- 	/// constructor
- 	/**
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_predicate_stabilizes__point__predicate.h b/math/polymake/files/patch-external_permlib_include_permlib_predicate_stabilizes__point__predicate.h
deleted file mode 100644
index 311db4d802ed..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_predicate_stabilizes__point__predicate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/predicate/stabilizes_point_predicate.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/predicate/stabilizes_point_predicate.h
-@@ -39,7 +39,7 @@ template <class PERM>
- 
- /// predicate matching points that are stabilized by given permutations
- template <class PERM>
--class StabilizesPointPredicate : public std::unary_function<unsigned long, bool> {
-+class StabilizesPointPredicate {
- public:
- 	/// constructor
- 	/**
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_predicate_subgroup__predicate.h b/math/polymake/files/patch-external_permlib_include_permlib_predicate_subgroup__predicate.h
deleted file mode 100644
index 93ca0a5b9a9e..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_predicate_subgroup__predicate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/predicate/subgroup_predicate.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/predicate/subgroup_predicate.h
-@@ -42,7 +42,7 @@ template <class PERM>
- 
- /// abstract base class for subgroup (and coset) predicates
- template <class PERM>
--class SubgroupPredicate : public std::unary_function<PERM, bool> {
-+class SubgroupPredicate {
- public:
- 	/// virtual destructor
- 	virtual ~SubgroupPredicate() {}
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_search_partition_backtrack__refinement.h b/math/polymake/files/patch-external_permlib_include_permlib_search_partition_backtrack__refinement.h
deleted file mode 100644
index 4ac79394f799..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_search_partition_backtrack__refinement.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/search/partition/backtrack_refinement.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/search/partition/backtrack_refinement.h
-@@ -67,7 +67,7 @@ class BacktrackRefinement : public Refinement<PERM> { 
- 	
- 	typedef typename Refinement<PERM>::RefinementPtr RefinementPtr;
- 	
--	struct RefinementSorter : public std::binary_function<RefinementPtr, RefinementPtr, bool> {
-+	struct RefinementSorter {
- 		RefinementSorter(const BaseSorterByReference& sorter, const Partition* pi) : m_sorter(sorter), m_pi(pi) {}
- 		
- 		bool operator()(RefinementPtr a, RefinementPtr b) const {
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_sorter_base__sorter.h b/math/polymake/files/patch-external_permlib_include_permlib_sorter_base__sorter.h
deleted file mode 100644
index 2c7604b05d84..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_sorter_base__sorter.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/sorter/base_sorter.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/sorter/base_sorter.h
-@@ -39,7 +39,7 @@ template<class ORDER>
- 
- /// A sorter that sorts a sequence with respect to a given input ordering
- template<class ORDER>
--class OrderedSorter : public std::binary_function<unsigned long, unsigned long, bool> {
-+class OrderedSorter {
- public:
- 	/// true iff a preceeds b in given sequence
- 	bool operator() (unsigned long a, unsigned long b) const {
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_sorter_group__sorter.h b/math/polymake/files/patch-external_permlib_include_permlib_sorter_group__sorter.h
deleted file mode 100644
index 7cf655ca5d21..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_sorter_group__sorter.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/sorter/group_sorter.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/sorter/group_sorter.h
-@@ -39,7 +39,7 @@ template <class PERM>
- 
- /// A sorter that sorts a sequence of permutations with respect to a ordering induced by a base
- template <class PERM>
--class GroupSorter : public std::binary_function<PERM, PERM, bool>{
-+class GroupSorter {
- public:
- 	/// constructor
- 	/**
diff --git a/math/polymake/files/patch-external_permlib_include_permlib_sorter_trivial__sorter.h b/math/polymake/files/patch-external_permlib_include_permlib_sorter_trivial__sorter.h
deleted file mode 100644
index dcc9ea434dbb..000000000000
--- a/math/polymake/files/patch-external_permlib_include_permlib_sorter_trivial__sorter.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- external/permlib/include/permlib/sorter/trivial_sorter.h.orig	2024-09-24 09:32:47 UTC
-+++ external/permlib/include/permlib/sorter/trivial_sorter.h
-@@ -36,7 +36,7 @@ namespace permlib {
- namespace permlib {
- 
- /// A sorter that sorts a sequence in natural numerical order (1 < 2 < 3 < ...)
--class TrivialSorter : public std::binary_function<unsigned long, unsigned long, bool>{
-+class TrivialSorter {
- public:
- 	/// true iff a < b
- 	bool operator() (unsigned long a, unsigned long b) const {
diff --git a/math/polymake/files/patch-lib_core_include_ContainerChain.h b/math/polymake/files/patch-lib_core_include_ContainerChain.h
deleted file mode 100644
index bff622bf092a..000000000000
--- a/math/polymake/files/patch-lib_core_include_ContainerChain.h
+++ /dev/null
@@ -1,131 +0,0 @@
---- lib/core/include/ContainerChain.h.orig	2024-09-24 09:32:47 UTC
-+++ lib/core/include/ContainerChain.h
-@@ -1128,15 +1128,15 @@ class modified_container_tuple_impl (public)
- 
-    Int size() const
-    {
--      return this->manip_top().template get_container(size_constant<base_t::normal_it_pos>()).size();
-+      return this->manip_top().get_container(size_constant<base_t::normal_it_pos>()).size();
-    }
-    Int dim() const
-    {
--      return get_dim(this->manip_top().template get_container(size_constant<base_t::normal_it_pos>()));
-+      return get_dim(this->manip_top().get_container(size_constant<base_t::normal_it_pos>()));
-    }
-    bool empty() const
-    {
--      return this->manip_top().template get_container(size_constant<base_t::normal_it_pos>()).empty();
-+      return this->manip_top().get_container(size_constant<base_t::normal_it_pos>()).empty();
-    }
- 
-    decltype(auto) front()
-@@ -1153,40 +1153,40 @@ class modified_container_tuple_impl (public)
-    iterator make_begin(std::index_sequence<Index...>, mlist<Features...>)
-    {
-       return iterator(this->manip_top().get_operation(),
--                      ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).begin()...);
-+                      ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).begin()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    iterator make_end(std::index_sequence<Index...>, mlist<Features...>)
-    {
-       return iterator(this->manip_top().get_operation(),
--                      ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).end()...);
-+                      ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).end()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    const_iterator make_begin(std::index_sequence<Index...>, mlist<Features...>) const
-    {
-       return const_iterator(this->manip_top().get_operation(),
--                            ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).begin()...);
-+                            ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).begin()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    const_iterator make_end(std::index_sequence<Index...>, mlist<Features...>) const
-    {
-       return const_iterator(this->manip_top().get_operation(),
--                            ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).end()...);
-+                            ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).end()...);
-    }
- 
-    template <size_t... Index>
-    decltype(auto) make_front(std::index_sequence<Index...>)
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>()).front()... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>()).front()... );
-    }
- 
-    template <size_t... Index>
-    decltype(auto) make_front(std::index_sequence<Index...>) const
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>()).front()... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>()).front()... );
-    }
- };
- 
-@@ -1230,40 +1230,40 @@ class modified_container_tuple_impl<Top, Params, std::
-    reverse_iterator make_rbegin(std::index_sequence<Index...>, mlist<Features...>)
-    {
-       return reverse_iterator(this->manip_top().get_operation(),
--                              ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).rbegin()...);
-+                              ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).rbegin()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    reverse_iterator make_rend(std::index_sequence<Index...>, mlist<Features...>)
-    {
-       return reverse_iterator(this->manip_top().get_operation(),
--                              ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).rend()...);
-+                              ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).rend()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    const_reverse_iterator make_rbegin(std::index_sequence<Index...>, mlist<Features...>) const
-    {
-       return const_reverse_iterator(this->manip_top().get_operation(),
--                                    ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).rbegin()...);
-+                                    ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).rbegin()...);
-    }
- 
-    template <size_t... Index, typename... Features>
-    const_reverse_iterator make_rend(std::index_sequence<Index...>, mlist<Features...>) const
-    {
-       return const_reverse_iterator(this->manip_top().get_operation(),
--                                    ensure(this->manip_top().template get_container(size_constant<Index>()), muntag_t<Features>()).rend()...);
-+                                    ensure(this->manip_top().get_container(size_constant<Index>()), muntag_t<Features>()).rend()...);
-    }
- 
-    template <size_t... Index>
-    decltype(auto) make_back(std::index_sequence<Index...>)
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>()).back()... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>()).back()... );
-    }
- 
-    template <size_t... Index>
-    decltype(auto) make_back(std::index_sequence<Index...>) const
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>()).back()... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>()).back()... );
-    }
- };
- 
-@@ -1285,13 +1285,13 @@ class modified_container_tuple_impl<Top, Params, std::
-    template <size_t... Index>
-    decltype(auto) make_random(Int i, std::index_sequence<Index...>)
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>())[i]... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>())[i]... );
-    }
- 
-    template <size_t... Index>
-    decltype(auto) make_random(Int i, std::index_sequence<Index...>) const
-    {
--      return this->manip_top().get_operation()( this->manip_top().template get_container(size_constant<Index>())[i]... );
-+      return this->manip_top().get_operation()( this->manip_top().get_container(size_constant<Index>())[i]... );
-    }
- };
- 
diff --git a/math/polymake/files/patch-lib_core_include_GenericMatrix.h b/math/polymake/files/patch-lib_core_include_GenericMatrix.h
deleted file mode 100644
index 62ade36b0d90..000000000000
--- a/math/polymake/files/patch-lib_core_include_GenericMatrix.h
+++ /dev/null
@@ -1,17 +0,0 @@
---- lib/core/include/GenericMatrix.h.orig	2024-09-24 09:32:47 UTC
-+++ lib/core/include/GenericMatrix.h
-@@ -1525,12 +1525,12 @@ class ConcatRows< BlockMatrix<MatrixList, std::true_ty
-    template <size_t i>
-    decltype(auto) get_container(size_constant<i>)
-    {
--      return concat_rows(this->hidden().template get_container(size_constant<i>()));
-+      return concat_rows(this->hidden().get_container(size_constant<i>()));
-    }
-    template <size_t i>
-    decltype(auto) get_container(size_constant<i>) const
-    {
--      return concat_rows(this->hidden().template get_container(size_constant<i>()));
-+      return concat_rows(this->hidden().get_container(size_constant<i>()));
-    }
- 
-    ConcatRows& operator= (const ConcatRows& other) { return ConcatRows::generic_type::operator=(other); }
diff --git a/math/polymake/files/patch-lib_core_include_internal_pool__allocator.h b/math/polymake/files/patch-lib_core_include_internal_pool__allocator.h
deleted file mode 100644
index f4c4252e2d86..000000000000
--- a/math/polymake/files/patch-lib_core_include_internal_pool__allocator.h
+++ /dev/null
@@ -1,14 +0,0 @@
---- lib/core/include/internal/pool_allocator.h.orig	2024-09-24 09:32:47 UTC
-+++ lib/core/include/internal/pool_allocator.h
-@@ -34,7 +34,11 @@ class allocator : public PM_ALLOCATOR_BASE<char> { (pu
- public:
-    void* allocate(std::size_t n)
-    {
-+#if __cplusplus < 201703L
-       return base_t::allocate(n, nullptr);
-+#else
-+      return base_t::allocate(n);
-+#endif
-    }
-    void deallocate(void* p, std::size_t n)
-    {
diff --git a/math/polymake/files/patch-lib_core_include_optional b/math/polymake/files/patch-lib_core_include_optional
deleted file mode 100644
index cb7d9756dc41..000000000000
--- a/math/polymake/files/patch-lib_core_include_optional
+++ /dev/null
@@ -1,38 +0,0 @@
---- lib/core/include/optional.orig	2024-09-24 09:32:47 UTC
-+++ lib/core/include/optional
-@@ -7,6 +7,8 @@
- // Moreover, older clangs produce strange errors even in combination with libstdc++.
- // For this configuration, we include a minimal implementation just covering our needs.
- 
-+#if __cplusplus < 201703L
-+
- #if defined(__clang__) && (defined(_LIBCPP_STD_VER) || __clang_major__ < 4)
- 
- #include "polymake/internal/type_union.h"
-@@ -76,8 +78,6 @@ using pm::make_optional;
- 
- #else // GCC or clang >= 4
- 
--#if __cplusplus < 201703L
--
- # include <experimental/optional>
- 
- namespace polymake {
-@@ -91,6 +91,8 @@ using std::experimental::make_optional;
- using std::experimental::make_optional;
- }
- 
-+#endif
-+
- #else
- 
- #include <optional>
-@@ -105,8 +107,6 @@ using std::make_optional;
- using std::nullopt;
- using std::make_optional;
- }
--
--#endif
- 
- #endif
- 
diff --git a/math/polymake/pkg-plist b/math/polymake/pkg-plist
index b0d937a789df..15a58fd911ec 100644
--- a/math/polymake/pkg-plist
+++ b/math/polymake/pkg-plist
@@ -373,14 +373,14 @@ include/polymake/tropical/thomog.h
 include/polymake/type_utils.h
 include/polymake/vector
 lib/libpolymake-apps-rt.so
-lib/libpolymake-apps-rt.so.4
-lib/libpolymake-apps-rt.so.4.13
+lib/libpolymake-apps-rt.so.%%SOVER%%
+lib/libpolymake-apps-rt.so.%%VER%%
 lib/libpolymake-apps.so
-lib/libpolymake-apps.so.4
-lib/libpolymake-apps.so.4.13
+lib/libpolymake-apps.so.%%SOVER%%
+lib/libpolymake-apps.so.%%VER%%
 lib/libpolymake.so
-lib/libpolymake.so.4
-lib/libpolymake.so.4.13
+lib/libpolymake.so.%%SOVER%%
+lib/libpolymake.so.%%VER%%
 libexec/polymake/config.ninja
 libexec/polymake/lib/common.so
 libexec/polymake/lib/fan.so
@@ -389,16 +389,16 @@ libexec/polymake/lib/graph.so
 libexec/polymake/lib/group.so
 libexec/polymake/lib/ideal.so
 libexec/polymake/lib/libpolymake-apps-rt.so
-libexec/polymake/lib/libpolymake-apps-rt.so.4
-libexec/polymake/lib/libpolymake-apps-rt.so.4.13
+libexec/polymake/lib/libpolymake-apps-rt.so.%%SOVER%%
+libexec/polymake/lib/libpolymake-apps-rt.so.%%VER%%
 libexec/polymake/lib/libpolymake-apps.so
-libexec/polymake/lib/libpolymake-apps.so.4
-libexec/polymake/lib/libpolymake-apps.so.4.13
+libexec/polymake/lib/libpolymake-apps.so.%%SOVER%%
+libexec/polymake/lib/libpolymake-apps.so.%%VER%%
 libexec/polymake/lib/matroid.so
 libexec/polymake/lib/polytope.so
 libexec/polymake/lib/topaz.so
 libexec/polymake/lib/tropical.so
-@comment libexec/polymake/perlx/%%PERL_VERSION%%/amd64-freebsd-thread-multi/auto/Polymake/Ext/Ext.so
+libexec/polymake/perlx/%%PERL_VERSION%%/%%PERL_ARCHNAME%%/auto/Polymake/Ext/Ext.so
 libexec/polymake/shared
 %%DATADIR%%/apps/common/perllib/BackgroundViewer.pm
 %%DATADIR%%/apps/common/perllib/Geomview.pm
@@ -925,6 +925,7 @@ libexec/polymake/shared
 %%DATADIR%%/apps/polytope/src/schlegel_transform.cc
 %%DATADIR%%/apps/polytope/src/separating_hyperplane.cc
 %%DATADIR%%/apps/polytope/src/simplex.cc
+%%DATADIR%%/apps/polytope/src/smooth_vertices.cc
 %%DATADIR%%/apps/polytope/src/solids.cc
 %%DATADIR%%/apps/polytope/src/spherize.cc
 %%DATADIR%%/apps/polytope/src/split_compatibility_graph.cc
@@ -1112,7 +1113,6 @@ libexec/polymake/shared
 %%DATADIR%%/apps/tropical/src/dual_addition_version_cone.cc
 %%DATADIR%%/apps/tropical/src/dual_addition_version_cycle.cc
 %%DATADIR%%/apps/tropical/src/envelope.cc
-%%DATADIR%%/apps/tropical/src/extract_pseudovertices.cc
 %%DATADIR%%/apps/tropical/src/feasible_cell.cc
 %%DATADIR%%/apps/tropical/src/hypersimplex.cc
 %%DATADIR%%/apps/tropical/src/hypersurface.cc
@@ -1508,6 +1508,7 @@ libexec/polymake/shared
 %%DATADIR%%/upgrades/3.5
 %%DATADIR%%/upgrades/4.1
 %%DATADIR%%/upgrades/4.12
+%%DATADIR%%/upgrades/4.14
 %%DATADIR%%/upgrades/4.2
 %%DATADIR%%/upgrades/4.3
 %%DATADIR%%/upgrades/4.4
@@ -1527,6 +1528,7 @@ libexec/polymake/shared
 %%DATADIR%%/upgrades/big_objects-4.0.1
 %%DATADIR%%/upgrades/big_objects-4.1.1
 %%DATADIR%%/upgrades/big_objects-4.11.1
+%%DATADIR%%/upgrades/big_objects-4.13.1
 %%DATADIR%%/upgrades/big_objects-4.2.1
 %%DATADIR%%/upgrades/big_objects-4.3.1
 %%DATADIR%%/upgrades/big_objects-4.3.3