summaryrefslogtreecommitdiff
path: root/sysutils/slurm-wlm
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/slurm-wlm')
-rw-r--r--sysutils/slurm-wlm/Makefile9
-rw-r--r--sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c43
-rw-r--r--sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c6
-rw-r--r--sysutils/slurm-wlm/pkg-plist1
4 files changed, 53 insertions, 6 deletions
diff --git a/sysutils/slurm-wlm/Makefile b/sysutils/slurm-wlm/Makefile
index 4db32cacac65..b7002208382b 100644
--- a/sysutils/slurm-wlm/Makefile
+++ b/sysutils/slurm-wlm/Makefile
@@ -1,11 +1,11 @@
PORTNAME= slurm
DISTVERSION= 23.11.7
-PORTREVISION= 4
+PORTREVISION= 7
CATEGORIES= sysutils
MASTER_SITES= https://download.schedmd.com/slurm/
PKGNAMESUFFIX= -wlm
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= rikka.goering@outlook.de
COMMENT= Simple Linux Utility for Resource Management
WWW= https://slurm.schedmd.com/
@@ -43,7 +43,8 @@ GNU_CONFIGURE= yes
GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
INSTALL_TARGET= install-strip
TEST_TARGET= check
-PLIST_SUB= PORTVERSION="${DISTVERSION}" VER="${DISTVERSION:R}"
+PLIST_SUB= PORTVERSION="${DISTVERSION}" VER="${DISTVERSION:R}" \
+ USERS=${USERS} GROUPS=${GROUPS}
SHEBANG_FILES= doc/html/shtml2html.py doc/man/man2html.py
PORTDOCS= *
@@ -162,6 +163,8 @@ pre-configure:
${REINPLACE_CMD} -e 's|htmldir = \$${datadir.*$$|htmldir = @htmldir@|'
post-install:
+ @${MKDIR} ${STAGEDIR}/var/spool/slurmctld
+ @${CHMOD} 700 ${STAGEDIR}/var/spool/slurmctld
${INSTALL_DATA} ${WRKSRC}/etc/slurm.conf.example \
${STAGEDIR}${PREFIX}/etc/slurm.conf.sample
diff --git a/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c b/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c
new file mode 100644
index 000000000000..d5ae5ef84c32
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c
@@ -0,0 +1,43 @@
+--- src/common/slurm_protocol_socket.c.orig 2024-05-21 17:19:51 UTC
++++ src/common/slurm_protocol_socket.c
+@@ -491,6 +491,27 @@ extern int slurm_init_msg_engine(slurm_addr_t *addr, b
+ extern int slurm_init_msg_engine(slurm_addr_t *addr, bool quiet)
+ {
+ int rc;
++
++ #if defined(__FreeBSD__)
++ /*
++ * FreeBSD requires the sa_len field to be set correctly in
++ * struct sockaddr_in / sockaddr_in6 before calling bind().
++ * If it is unset, bind() may fail with EINVAL.
++ *
++ * This adjustment ensures the correct length is set based
++ * on the address family before bind() is called.
++ */
++ if (addr->ss_family == AF_INET) {
++ ((struct sockaddr_in *)addr)->sin_len = sizeof(struct sockaddr_in);
++ } else if (addr->ss_family == AF_INET6) {
++ ((struct sockaddr_in6 *)addr)->sin6_len = sizeof(struct sockaddr_in6);
++ }
++
++ /* Track the correct length for bind() */
++ socklen_t bind_len = (addr->ss_family == AF_INET6)
++ ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in);
++ #endif
++
+ int fd;
+ int log_lvl = LOG_LEVEL_ERROR;
+ const int one = 1;
+@@ -511,7 +532,11 @@ extern int slurm_init_msg_engine(slurm_addr_t *addr, b
+ goto error;
+ }
+
+- rc = bind(fd, (struct sockaddr const *) addr, sizeof(*addr));
++ #if defined(__FreeBSD__)
++ rc = bind(fd, (struct sockaddr const *) addr, bind_len);
++ #else
++ rc = bind(fd, (struct sockaddr const *) addr, sizeof(*addr));
++ #endif
+ if (rc < 0) {
+ format_print(log_lvl, "Error binding slurm stream socket: %m");
+ goto error;
diff --git a/sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c b/sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c
index 12bf2f7f5656..4b8616be9ee3 100644
--- a/sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c
+++ b/sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c
@@ -1,6 +1,6 @@
---- src/interfaces/cgroup.c.orig 2023-11-21 22:33:29 UTC
+--- src/interfaces/cgroup.c.orig 2024-05-21 17:19:51 UTC
+++ src/interfaces/cgroup.c
-@@ -419,6 +419,7 @@ extern char *autodetect_cgroup_version(void)
+@@ -421,6 +421,7 @@ extern char *autodetect_cgroup_version(void)
struct statfs fs;
int cgroup_ver = -1;
@@ -8,7 +8,7 @@
if (statfs("/sys/fs/cgroup/", &fs) < 0) {
error("cgroup filesystem not mounted in /sys/fs/cgroup/");
return NULL;
-@@ -451,6 +452,7 @@ extern char *autodetect_cgroup_version(void)
+@@ -453,6 +454,7 @@ extern char *autodetect_cgroup_version(void)
error("Unknown filesystem type mounted on /sys/fs/cgroup");
return NULL;
}
diff --git a/sysutils/slurm-wlm/pkg-plist b/sysutils/slurm-wlm/pkg-plist
index 72bf05a521d4..315d8d210ce4 100644
--- a/sysutils/slurm-wlm/pkg-plist
+++ b/sysutils/slurm-wlm/pkg-plist
@@ -255,3 +255,4 @@ sbin/slurmctld
sbin/slurmd
sbin/slurmdbd
sbin/slurmstepd
+@dir(%%USERS%%,%%GROUPS%%,700) /var/spool/slurmctld