Files
ports/sysutils/slurm-wlm/Makefile
T
2026-10-04 04:07:15 +00:00

135 lines
4.1 KiB
Makefile

PORTNAME= slurm
DISTVERSION= 26.05.4
PORTREVISION= 1
CATEGORIES= sysutils
MASTER_SITES= https://download.schedmd.com/slurm/
PKGNAMESUFFIX= -wlm
MAINTAINER= rikka.goering@outlook.de
COMMENT= Simple Linux Utility for Resource Management
WWW= https://slurm.schedmd.com/
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
NOT_FOR_ARCHS= armv6 armv7 i386 powerpc powerpcspe
NOT_FOR_ARCHS_REASON= 32-bit support is deprecated
LIB_DEPENDS= libhttp_parser.so:www/http-parser \
libjson-c.so:devel/json-c \
libjwt.so:www/libjwt \
libllhttp.so:www/llhttp \
liblz4.so:archivers/liblz4 \
libmunge.so:security/munge \
librdkafka.so:net/librdkafka \
libsysinfo.so:devel/libsysinfo \
libunwind.so:devel/libunwind \
libyaml.so:textproc/libyaml
USES= compiler:c11 cpe gmake libtool localbase lua mysql:client perl5 \
pkgconfig python:build readline shebangfix ssl tar:bz2
CPE_VENDOR= schedmd
USE_LDCONFIG= yes
USE_PERL5= build
USE_RC_SUBR= slurmctld slurmd
SHEBANG_FILES= doc/html/shtml2html.py doc/man/man2html.py
GNU_CONFIGURE= yes
# FreeBSD Infiniband support is still experimental
CONFIGURE_ARGS= --disable-dependency-tracking \
--docdir=${DOCSDIR} \
--htmldir=${DOCSDIR} \
--sysconfdir=${ETCDIR} \
--with-mysql_config=${LOCALBASE}/bin
CONFIGURE_ENV= MAKE=${GMAKE}
INSTALL_TARGET= install-strip
TEST_TARGET= check
CFLAGS+= -I${WRKSRC}/slurm
LDFLAGS+= -lsysinfo -lprocstat -fcommon
TESTING_UNSAFE= yes
SUB_FILES= pkg-message
USERS= ${PORTNAME}
GROUPS= ${PORTNAME}
PLIST_SUB= GROUPS=${GROUPS} \
USERS=${USERS}
PORTDOCS= *
OPTIONS_DEFINE= CURL DOCS GUI HDF5 HWLOC IPMI S2N
OPTIONS_DEFAULT= HDF5 HWLOC
OPTIONS_SUB= yes
CURL_DESC= Require cURL for elasticsearch plugins
GUI_DESC= Build sview GUI config tool
HDF5_DESC= Job profiling using HDF5
HWLOC_DESC= Portable hardware locality
IPMI_DESC= IPMI energy consumption accounting
S2N_DESC= Build tls_s2n TLS plugin
CURL_LIB_DEPENDS= libcurl.so:ftp/curl
CURL_CONFIGURE_WITH= libcurl
DOCS_BUILD_DEPENDS= man2html:textproc/man2html
GUI_BUILD_DEPENDS= itstool:textproc/itstool
GUI_USES= gnome
GUI_USE= GNOME=cairo,gdkpixbuf,glib20,gtk20,pango
GUI_CONFIGURE_ENABLE= sview
HDF5_LIB_DEPENDS= libhdf5.so:science/hdf5 \
libhdf5_hl.so:science/hdf5
HDF5_CONFIGURE_WITH= hdf5
HDF5_CONFIGURE_ENV= H5CC=${LOCALBASE}/bin/h5cc \
H5FC=${LOCALBASE}/bin/h5fc
HDF5_LDFLAGS= -lhdf5_hl
HWLOC_LIB_DEPENDS= libhwloc.so.15:devel/hwloc2
HWLOC_CONFIGURE_WITH= hwloc
IPMI_LIB_DEPENDS= libfreeipmi.so:sysutils/freeipmi \
libipmimonitoring.so:sysutils/freeipmi
IPMI_CONFIGURE_WITH= freeipmi
S2N_LIB_DEPENDS= libs2n.so:security/s2n-tls
S2N_CONFIGURE_WITH= s2n=${LOCALBASE}
_ARCH= ${ARCH:S|aarch64|aarch64elf|:S|amd64|elf_amd64|:S|powerpc64le|elf64lppc|:S|powerpc64|elf64ppc|:S|riscv64|elf64lriscv|}
# SLURM's configure enables interactive jobs if pty.h exists. Replacing
# #include <pty.h> with appropriate headers will therefore not work, so instead
# add a pty.h for the build.
pre-configure:
${CP} ${FILESDIR}/pty.h ${WRKSRC}/slurm
${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' ${WRKSRC}/configure
# Make /proc => /compat/linux/proc edits only in files that exist & contain "/proc"
(cd ${WRKSRC} && \
${GREP} -RIl '"/proc' src | ${XARGS} ${REINPLACE_CMD} \
-e 's|"/proc|"/compat/linux/proc|g' \
-e 's|(/proc)|(/compat/linux/proc)|g')
@if ${WHICH} sbatch > /dev/null; then \
${ECHO_CMD} "********************************************"; \
${ECHO_CMD} "Build may fail while slurm-wlm is installed."; \
${ECHO_CMD} "Deinstall slurm-wlm and run make again."; \
${ECHO_CMD} "********************************************"; \
false; \
fi
# Fix lld binary-blob rule: add -m ${_ARCH} wherever --format=binary is used
${FIND} ${WRKSRC} -name Makefile.in -print0 | \
${XARGS} -0 ${GREP} -Il -- '--format=binary' | \
${XARGS} ${REINPLACE_CMD} -e 's|$$(LD) -r -o|$$(LD) -r -m ${_ARCH} -o|'
${FIND} ${WRKSRC} -name Makefile.in | ${XARGS} \
${REINPLACE_CMD} -e 's|htmldir = \$${datadir.*$$|htmldir = @htmldir@|'
post-install:
@${MKDIR} ${STAGEDIR}/var/spool/slurmctld \
${STAGEDIR}${ETCDIR}
${INSTALL_DATA} ${WRKSRC}/etc/slurm.conf.example \
${STAGEDIR}${ETCDIR}/slurm.conf.sample
.include <bsd.port.mk>