git: 102f62ebb37a - main - sysutils/slurm-wlm: fix slurmctld

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Sun, 03 Aug 2025 14:03:33 UTC
The branch main has been updated by thierry:

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

commit 102f62ebb37a34b8963c0ebf89ccb5877da7f956
Author:     Generic Rikka <rikka.goering@outlook.de>
AuthorDate: 2025-08-02 13:13:34 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2025-08-03 14:02:33 +0000

    sysutils/slurm-wlm: fix slurmctld
    
    PR:             288593
---
 sysutils/slurm-wlm/Makefile                        |  2 +-
 .../patch-src_common_slurm__protocol__socket.c     | 43 ++++++++++++++++++++++
 .../slurm-wlm/files/patch-src_interfaces_cgroup.c  |  6 +--
 3 files changed, 47 insertions(+), 4 deletions(-)

diff --git a/sysutils/slurm-wlm/Makefile b/sysutils/slurm-wlm/Makefile
index 4db32cacac65..384df809dcbf 100644
--- a/sysutils/slurm-wlm/Makefile
+++ b/sysutils/slurm-wlm/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	slurm
 DISTVERSION=	23.11.7
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	sysutils
 MASTER_SITES=	https://download.schedmd.com/slurm/
 PKGNAMESUFFIX=	-wlm
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;
  	}