forked from Lainports/freebsd-ports
It has been common practice to have one or more URLs at the end of the ports' pkg-descr files, one per line and prefixed with "WWW:". These URLs should point at a project website or other relevant resources. Access to these URLs required processing of the pkg-descr files, and they have often become stale over time. If more than one such URL was present in a pkg-descr file, only the first one was tarnsfered into the port INDEX, but for many ports only the last line did contain the port specific URL to further information. There have been several proposals to make a project URL available as a macro in the ports' Makefiles, over time. This commit implements such a proposal and moves one of the WWW: entries of each pkg-descr file into the respective port's Makefile. A heuristic attempts to identify the most relevant URL in case there is more than one WWW: entry in some pkg-descr file. URLs that are not moved into the Makefile are prefixed with "See also:" instead of "WWW:" in the pkg-descr files in order to preserve them. There are 1256 ports that had no WWW: entries in pkg-descr files. These ports will not be touched in this commit. The portlint port has been adjusted to expect a WWW entry in each port Makefile, and to flag any remaining "WWW:" lines in pkg-descr files as deprecated. Approved by: portmgr (tcberner)
198 lines
6.9 KiB
Makefile
198 lines
6.9 KiB
Makefile
PORTNAME= polymake
|
|
DISTVERSION= 4.6
|
|
PORTREVISION= 5
|
|
CATEGORIES= math
|
|
MASTER_SITES= https://polymake.org/lib/exe/fetch.php/download/
|
|
DISTNAME= ${PORTNAME}-${DISTVERSION}-minimal
|
|
|
|
MAINTAINER= bsd@philippost.de
|
|
COMMENT= Software package for research in polyhedral geometry
|
|
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 \
|
|
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
|
|
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
|
|
|
|
USES= compiler:c++14-lang gmake gnome perl5 readline shebangfix \
|
|
tar:bzip2
|
|
USE_GNOME= libxml2 libxslt
|
|
USE_LDCONFIG= ${PREFIX}/lib
|
|
USE_PERL5= build run
|
|
|
|
SHEBANG_FILES= resources/host-agent/bin/env resources/host-agent/bin/polymake
|
|
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} \
|
|
--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 \
|
|
--with-cdd=${LOCALBASE} \
|
|
--with-flint=${LOCALBASE} \
|
|
--with-permlib=${LOCALBASE}/lib \
|
|
--without-java \
|
|
--without-javaview \
|
|
--without-sympol
|
|
CONFIGURE_LOG= build/bundled.log
|
|
|
|
# Optional features; SoPlex defaults to off due to licencsing and SCIP defaults
|
|
# to off due to a dependency on libsoplex.so.
|
|
OPTIONS_DEFINE= LRS NATIVE NORMALIZ OPENMP PPL SCIP SINGULAR SOPLEX TESTS
|
|
OPTIONS_DEFAULT= BLISS LRS NORMALIZ OPENMP PPL SINGULAR
|
|
# 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
|
|
|
|
BLISS_DESC= Compute graph automorphism groups using bliss
|
|
GRAPH_DESC= Graph automorphism groups
|
|
LRS_DESC= Convex hull computation and vertex enumeration
|
|
NATIVE_DESC= Build with native optimizations (-march=native)
|
|
NAUTY_DESC= Compute graph automorphism groups using nauty
|
|
NORMALIZ_DESC= Computations in affine monoids and lattice polytopes
|
|
PPL_DESC= Manipulation of convex polyhedra
|
|
SCIP_DESC= Solver for mixed integer linear and nonlinear problems
|
|
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
|
|
BLISS_RUN_DEPENDS= bliss-graph-tool>=0.73:math/bliss
|
|
|
|
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
|
|
|
|
NATIVE_CONFIGURE_OFF= --without-native
|
|
|
|
NORMALIZ_CONFIGURE_ON= --with-libnormaliz=${LOCALBASE}
|
|
NORMALIZ_CONFIGURE_OFF= --without-libnormaliz
|
|
NORMALIZ_LIB_DEPENDS= libnormaliz.so:math/libnormaliz
|
|
|
|
OPENMP_CONFIGURE_OFF= --without-openmp
|
|
|
|
PPL_CONFIGURE_ON= --with-ppl=${LOCALBASE}
|
|
PPL_CONFIGURE_OFF= --without-ppl
|
|
PPL_LIB_DEPENDS= libppl.so:devel/ppl
|
|
|
|
SCIP_CONFIGURE_ON= --with-scip=${LOCALBASE}
|
|
SCIP_CONFIGURE_OFF= --without-scip
|
|
SCIP_LIB_DEPENDS= libscip.so:math/SCIP
|
|
|
|
SINGULAR_CONFIGURE_ON= --with-singular=${LOCALBASE}
|
|
SINGULAR_CONFIGURE_OFF= --without-singular
|
|
SINGULAR_LIB_DEPENDS= libSingular.so:math/singular
|
|
|
|
SOPLEX_CONFIGURE_ON= --with-soplex=${LOCALBASE}
|
|
SOPLEX_CONFIGURE_OFF= --without-soplex
|
|
SOPLEX_LIB_DEPENDS= libsoplex-pic.so:math/SoPlex
|
|
|
|
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>
|
|
|
|
# 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
|
|
|
|
# Keep track of the major version
|
|
DISTVERSION_MAJ= ${:!expr ${DISTVERSION} : '\([0-9]*\).*'!}
|
|
|
|
post-install:
|
|
${RLN} ${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION} \
|
|
${STAGEDIR}${PREFIX}/lib/libpolymake.so.${DISTVERSION_MAJ}
|
|
${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}
|
|
${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}
|
|
${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}
|
|
${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
|
|
|
|
post-install-TESTS-on: test
|
|
|
|
# Set HOME=${WRKDIR} to prevent polymake writing its .polymake directory outside
|
|
# WRKDIR.
|
|
test:
|
|
@cd ${WRKSRC} && HOME=${WRKDIR} perl/polymake --script run_testcases
|
|
|
|
.include <bsd.port.mk>
|