diff options
Diffstat (limited to 'sysutils/slurm-wlm')
-rw-r--r-- | sysutils/slurm-wlm/Makefile | 9 | ||||
-rw-r--r-- | sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c | 43 | ||||
-rw-r--r-- | sysutils/slurm-wlm/files/patch-src_interfaces_cgroup.c | 6 | ||||
-rw-r--r-- | sysutils/slurm-wlm/pkg-plist | 1 |
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 |