git: 1cfa47f320fa - main - sysutils/slurm-wlm: update to 25.11.2 & fix sockaddr length handling on BSD
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 11 Mar 2026 13:39:24 UTC
The branch main has been updated by thierry:
URL: https://cgit.FreeBSD.org/ports/commit/?id=1cfa47f320fa8b1fa1edba614397087aac846ab1
commit 1cfa47f320fa8b1fa1edba614397087aac846ab1
Author: GenericRikka <rikka.goering@outlook.de>
AuthorDate: 2026-03-10 17:30:17 +0000
Commit: Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2026-03-11 13:39:19 +0000
sysutils/slurm-wlm: update to 25.11.2 & fix sockaddr length handling on BSD
- Update to Slurm 25.11.3.
- Fix BSD sockaddr length handling by introducing slurm_sockaddr_fixlen()
and using it for AF_INET/AF_INET6/AF_UNIX bind/connect/getnameinfo call
sites (avoids EINVAL and incorrect sockaddr lengths on BSD).
- Detect/link HDF5 high-level library (-lhdf5_hl) when needed for HDF5
profiling components.
- Added S2N option
- Removed outdated GUI guarding
PR: 292799
Reported by: rikka.goering (at] outlook.de
---
sysutils/slurm-wlm/Makefile | 21 +-
sysutils/slurm-wlm/distinfo | 6 +-
sysutils/slurm-wlm/files/patch-config.h.in | 20 ++
sysutils/slurm-wlm/files/patch-configure | 392 +++++++++++++++++++++
.../slurm-wlm/files/patch-src_common_Makefile.in | 43 +++
sysutils/slurm-wlm/files/patch-src_common_net.c | 29 ++
.../slurm-wlm/files/patch-src_common_sack__api.c | 27 ++
.../patch-src_common_slurm__protocol__socket.c | 88 +++++
.../files/patch-src_common_slurm__sockaddr.c | 92 +++++
.../files/patch-src_common_slurm__sockaddr.h | 29 ++
.../files/patch-src_common_stepd__proxy.c | 27 ++
.../slurm-wlm/files/patch-src_common_util-net.c | 30 ++
.../slurm-wlm/files/patch-src_common_xsystemd.c | 28 ++
sysutils/slurm-wlm/files/patch-src_conmgr_con.c | 74 ++++
..._plugins_acct__gather__profile_hdf5_Makefile.in | 19 +
..._acct__gather__profile_hdf5_sh5util_Makefile.in | 24 ++
.../files/patch-src_plugins_auth_slurm_sack.c | 31 ++
sysutils/slurm-wlm/files/patch-src_scrun_anchor.c | 35 ++
.../files/patch-src_slurmd_slurmstepd_req.c | 44 +++
...otocol__pack_pack__job__alloc__info__msg-test.c | 8 +
sysutils/slurm-wlm/pkg-plist | 2 +
21 files changed, 1056 insertions(+), 13 deletions(-)
diff --git a/sysutils/slurm-wlm/Makefile b/sysutils/slurm-wlm/Makefile
index 97a1fc171086..1c676d36a530 100644
--- a/sysutils/slurm-wlm/Makefile
+++ b/sysutils/slurm-wlm/Makefile
@@ -1,6 +1,5 @@
PORTNAME= slurm
-DISTVERSION= 25.11.0
-PORTREVISION= 1
+DISTVERSION= 25.11.3
CATEGORIES= sysutils
MASTER_SITES= https://download.schedmd.com/slurm/
PKGNAMESUFFIX= -wlm
@@ -47,6 +46,7 @@ CONFIGURE_ENV= MAKE=${GMAKE}
INSTALL_TARGET= install-strip
TEST_TARGET= check
+TESTING_UNSAFE= yes
CFLAGS+= -I${WRKSRC}/slurm
LDFLAGS+= -lsysinfo -lprocstat -fcommon
@@ -60,7 +60,7 @@ PLIST_SUB= GROUPS=${GROUPS} \
USERS=${USERS}
PORTDOCS= *
-OPTIONS_DEFINE= CURL DOCS GUI HDF5 HWLOC IPMI
+OPTIONS_DEFINE= CURL DOCS GUI HDF5 HWLOC IPMI S2N
OPTIONS_DEFAULT= HDF5 HWLOC
OPTIONS_SUB= yes
@@ -69,6 +69,7 @@ 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
@@ -78,7 +79,8 @@ 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= glibtest gtktest x11
+GUI_CONFIGURE_ENABLE= sview
+GUI_CONFIGURE_OFF= --disable-sview
HDF5_LIB_DEPENDS= libhdf5.so:science/hdf5 \
libhdf5_hl.so:science/hdf5
@@ -94,6 +96,10 @@ 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}
+S2N_CONFIGURE_OFF= --without-s2n
+
_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
@@ -106,7 +112,7 @@ pre-configure:
(cd ${WRKSRC} && \
${GREP} -RIl '"/proc' src | ${XARGS} ${REINPLACE_CMD} \
-e 's|"/proc|"/compat/linux/proc|g' \
- -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."; \
@@ -121,11 +127,6 @@ pre-configure:
${FIND} ${WRKSRC} -name Makefile.in | ${XARGS} \
${REINPLACE_CMD} -e 's|htmldir = \$${datadir.*$$|htmldir = @htmldir@|'
-# Hack around nonfunctional --disable-gtktest flag
-pre-configure-GUI-off:
- ${REINPLACE_CMD} -e 's|min_gtk_version=.*|min_gtk_version=2000.0.0|' \
- ${WRKSRC}/configure
-
post-install:
@${MKDIR} ${STAGEDIR}/var/spool/slurmctld \
${STAGEDIR}${ETCDIR}
diff --git a/sysutils/slurm-wlm/distinfo b/sysutils/slurm-wlm/distinfo
index 95b9151f9a8a..d4dffa84ca5d 100644
--- a/sysutils/slurm-wlm/distinfo
+++ b/sysutils/slurm-wlm/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1762496373
-SHA256 (slurm-25.11.0.tar.bz2) = d63f585a73f3d504ddce42ed7205b75e4d79372a43e0f47535cd51ecc5383d09
-SIZE (slurm-25.11.0.tar.bz2) = 6714268
+TIMESTAMP = 1771602829
+SHA256 (slurm-25.11.3.tar.bz2) = 2928cf9be4005ae6cbc40633c375b4d0f8dcf16573256ab27e4fd84cce57ff3f
+SIZE (slurm-25.11.3.tar.bz2) = 6728996
diff --git a/sysutils/slurm-wlm/files/patch-config.h.in b/sysutils/slurm-wlm/files/patch-config.h.in
new file mode 100644
index 000000000000..fa28fb559310
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-config.h.in
@@ -0,0 +1,20 @@
+--- config.h.in.orig 2026-01-29 06:29:02 UTC
++++ config.h.in
+@@ -1,5 +1,17 @@
+ /* config.h.in. Generated from configure.ac by autoheader. */
+
++/* Define to 1 if 'sa_len' is a member of 'struct sockaddr'. */
++#undef HAVE_STRUCT_SOCKADDR_SA_LEN
++
++/* Define to 1 if 'sin_len' is a member of 'struct sockaddr_in'. */
++#undef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
++
++/* Define to 1 if 'sin6_len' is a member of 'struct sockaddr_in6'. */
++#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
++
++/* Define to 1 if 'sun_len' is a member of 'struct sockaddr_un'. */
++#undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN
++
+ /* Define if building universal (internal helper macro) */
+ #undef AC_APPLE_UNIVERSAL_BUILD
+
diff --git a/sysutils/slurm-wlm/files/patch-configure b/sysutils/slurm-wlm/files/patch-configure
new file mode 100644
index 000000000000..ff3073aa4b2c
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-configure
@@ -0,0 +1,392 @@
+--- configure.orig 2026-02-19 21:12:55 UTC
++++ configure
+@@ -784,6 +784,7 @@ HDF5_LIBS
+ HDF5_FFLAGS
+ HDF5_FC
+ HDF5_LIBS
++HDF5_HL_LIBS
+ HDF5_LDFLAGS
+ HDF5_CPPFLAGS
+ HDF5_CFLAGS
+@@ -12827,7 +12828,7 @@ printf %s "checking whether the $compiler linker ($LD)
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+- link_all_deplibs=unknown
++ link_all_deplibs=no
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+@@ -13125,7 +13126,7 @@ _LT_EOF
+
+ *-mlibc)
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+@@ -13134,7 +13135,7 @@ _LT_EOF
+ wlarc=
+ else
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ fi
+ ;;
+
+@@ -13153,7 +13154,7 @@ _LT_EOF
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -13182,7 +13183,7 @@ _LT_EOF
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -13200,7 +13201,7 @@ _LT_EOF
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -13865,7 +13866,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
++ archive_expsym_cmds='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-version-script,$lib-ver'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
+ else
+@@ -14734,7 +14735,7 @@ freebsd* | dragonfly* | midnightbsd*)
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+- library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
++ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major'
+ soname_spec='$libname$release$shared_ext$major'
+ need_version=no
+ need_lib_prefix=no
+@@ -16492,7 +16493,7 @@ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ printf "%s\n" "no" >&6; }
+ else
+- if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
++ if $STRIP -V 2>&1 | $GREP "strip" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -16506,7 +16507,7 @@ printf "%s\n" "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ printf "%s\n" "yes" >&6; }
+ ;;
+- freebsd*)
++dragonfly* | freebsd*)
+ if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+@@ -16752,7 +16753,7 @@ module_expsym_cmds_CXX=
+ inherit_rpath_CXX=no
+ module_cmds_CXX=
+ module_expsym_cmds_CXX=
+-link_all_deplibs_CXX=unknown
++link_all_deplibs_CXX=no
+ old_archive_cmds_CXX=$old_archive_cmds
+ reload_flag_CXX=$reload_flag
+ reload_cmds_CXX=$reload_cmds
+@@ -16969,7 +16970,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
+ # archiving commands below assume that GNU ld is being used.
+ if test yes = "$with_gnu_ld"; then
+ archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+@@ -17668,7 +17669,7 @@ fi
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+@@ -17676,7 +17677,7 @@ fi
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+@@ -17708,7 +17709,7 @@ fi
+ ;;
+ *) # Version 6 and above use weak symbols
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$lib-ver -o $lib'
+ ;;
+ esac
+
+@@ -17719,7 +17720,7 @@ fi
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-version-script $wl$lib-ver'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+@@ -17753,7 +17754,7 @@ fi
+ # Sun C++ 5.9
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-version-script $wl$lib-ver'
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ compiler_needs_object_CXX=yes
+@@ -17825,7 +17826,7 @@ fi
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
++ archive_expsym_cmds_CXX='echo "{ global:" > $lib-ver~ sed -e "s|$|;|" < $export_symbols >> $lib-ver~ echo "local: *; };" >> $lib-ver~$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-version-script,$lib-ver -o $lib'
+ export_dynamic_flag_spec_CXX='$wl-E'
+ whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+ fi
+@@ -19384,7 +19385,7 @@ freebsd* | dragonfly* | midnightbsd*)
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+- library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
++ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major'
+ soname_spec='$libname$release$shared_ext$major'
+ need_version=no
+ need_lib_prefix=no
+@@ -24160,7 +24161,7 @@ case $host_os in
+
+ case $host_os in
+
+- freebsd*)
++dragonfly* | freebsd*)
+
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+@@ -25027,6 +25028,7 @@ HDF5_LIBS=""
+ HDF5_CPPFLAGS=""
+ HDF5_LDFLAGS=""
+ HDF5_LIBS=""
++HDF5_HL_LIBS=""
+ HDF5_FC=""
+ HDF5_FFLAGS=""
+ HDF5_FLIBS=""
+@@ -25416,7 +25418,59 @@ printf "%s\n" "#define H5_USE_18_API 1" >>confdefs.h
+ fi
+
+
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for H5PTopen in -lhdf5_hl" >&5
++printf %s "checking for H5PTopen in -lhdf5_hl... " >&6; }
++if test ${ac_cv_lib_hdf5_hl_H5PTopen+y}
++then :
++ printf %s "(cached) " >&6
++else case e in #(
++ e)
++ ac_check_lib_save_LIBS=$LIBS
++ ac_check_lib_save_LDFLAGS=$LDFLAGS
++ # Ensure the test link sees both -L/-Wl flags and libs provided by AX_LIB_HDF5()
++ LDFLAGS="$LDFLAGS $HDF5_LDFLAGS"
++ LIBS="-lhdf5_hl $HDF5_LIBS $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
+
++/* Override any GCC internal prototype to avoid an error. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char H5PTopen (void);
++int
++main (void)
++{
++return H5PTopen ();
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"
++then :
++ ac_cv_lib_hdf5_hl_H5PTopen=yes
++else case e in #(
++ e) ac_cv_lib_hdf5_hl_H5PTopen=no ;;
++esac
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.beam \
++ conftest$ac_exeext conftest.$ac_ext
++ LIBS=$ac_check_lib_save_LIBS
++ LDFLAGS=$ac_check_lib_save_LDFLAGS
++ ;;
++esac
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_hl_H5PTopen" >&5
++printf "%s\n" "$ac_cv_lib_hdf5_hl_H5PTopen" >&6; }
++if test "x$ac_cv_lib_hdf5_hl_H5PTopen" = xyes
++then :
++ HDF5_HL_LIBS="-lhdf5_hl"
++else case e in #(
++ e) HDF5_HL_LIBS="" ;;
++esac
++fi
++
++
+ #
+ # Handle user hints
+ #
+@@ -27518,6 +27572,133 @@ fi
+ fi
+
+ fi
++
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct sockaddr has member sa_len" >&5
++printf %s "checking whether struct sockaddr has member sa_len... " >&6; }
++if test ${ac_cv_member_struct_sockaddr_sa_len+y}
++then :
++ printf %s "(cached) " >&6
++else case e in #(
++ e)
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++#include <sys/socket.h>
++int main(void) { (void) ((struct sockaddr *)0)->sa_len; return 0; }
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"
++then :
++ ac_cv_member_struct_sockaddr_sa_len=yes
++else case e in #(
++ e) ac_cv_member_struct_sockaddr_sa_len=no ;;
++esac
++fi
++rm -f conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
++ ;;
++esac
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_member_struct_sockaddr_sa_len" >&5
++printf "%s\n" "$ac_cv_member_struct_sockaddr_sa_len" >&6; }
++if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes
++then :
++ printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h
++fi
++
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct sockaddr_in has member sin_len" >&5
++printf %s "checking whether struct sockaddr_in has member sin_len... " >&6; }
++if test ${ac_cv_member_struct_sockaddr_in_sin_len+y}
++then :
++ printf %s "(cached) " >&6
++else case e in #(
++ e)
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++int main(void) { (void) ((struct sockaddr_in *)0)->sin_len; return 0; }
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"
++then :
++ ac_cv_member_struct_sockaddr_in_sin_len=yes
++else case e in #(
++ e) ac_cv_member_struct_sockaddr_in_sin_len=no ;;
++esac
++fi
++rm -f conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
++ ;;
++esac
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_member_struct_sockaddr_in_sin_len" >&5
++printf "%s\n" "$ac_cv_member_struct_sockaddr_in_sin_len" >&6; }
++if test "x$ac_cv_member_struct_sockaddr_in_sin_len" = xyes
++then :
++ printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1" >>confdefs.h
++fi
++
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct sockaddr_in6 has member sin6_len" >&5
++printf %s "checking whether struct sockaddr_in6 has member sin6_len... " >&6; }
++if test ${ac_cv_member_struct_sockaddr_in6_sin6_len+y}
++then :
++ printf %s "(cached) " >&6
++else case e in #(
++ e)
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++int main(void) { (void) ((struct sockaddr_in6 *)0)->sin6_len; return 0; }
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"
++then :
++ ac_cv_member_struct_sockaddr_in6_sin6_len=yes
++else case e in #(
++ e) ac_cv_member_struct_sockaddr_in6_sin6_len=no ;;
++esac
++fi
++rm -f conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
++ ;;
++esac
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_member_struct_sockaddr_in6_sin6_len" >&5
++printf "%s\n" "$ac_cv_member_struct_sockaddr_in6_sin6_len" >&6; }
++if test "x$ac_cv_member_struct_sockaddr_in6_sin6_len" = xyes
++then :
++ printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1" >>confdefs.h
++fi
++
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct sockaddr_un has member sun_len" >&5
++printf %s "checking whether struct sockaddr_un has member sun_len... " >&6; }
++if test ${ac_cv_member_struct_sockaddr_un_sun_len+y}
++then :
++ printf %s "(cached) " >&6
++else case e in #(
++ e)
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++int main(void) { (void) ((struct sockaddr_un *)0)->sun_len; return 0; }
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"
++then :
++ ac_cv_member_struct_sockaddr_un_sun_len=yes
++else case e in #(
++ e) ac_cv_member_struct_sockaddr_un_sun_len=no ;;
++esac
++fi
++rm -f conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
++ ;;
++esac
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_member_struct_sockaddr_un_sun_len" >&5
++printf "%s\n" "$ac_cv_member_struct_sockaddr_un_sun_len" >&6; }
++if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes
++then :
++ printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1" >>confdefs.h
++fi
+
+
+ #
diff --git a/sysutils/slurm-wlm/files/patch-src_common_Makefile.in b/sysutils/slurm-wlm/files/patch-src_common_Makefile.in
new file mode 100644
index 000000000000..93f49d1fdc93
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_Makefile.in
@@ -0,0 +1,43 @@
+--- src/common/Makefile.in.orig 2026-01-15 20:26:01 UTC
++++ src/common/Makefile.in
+@@ -179,6 +179,7 @@ am_libcommon_la_OBJECTS = assoc_mgr.lo bitstring.lo ca
+ slurm_opt.lo slurm_protocol_api.lo slurm_protocol_defs.lo \
+ slurm_protocol_pack.lo slurm_protocol_util.lo \
+ slurm_protocol_socket.lo slurm_resolv.lo \
++ slurm_sockaddr.lo \
+ slurm_resource_info.lo slurm_rlimits_info.lo \
+ slurm_step_layout.lo slurm_time.lo slurmdb_defs.lo \
+ slurmdb_pack.lo slurmdbd_defs.lo slurmdbd_pack.lo spank.lo \
+@@ -711,6 +712,8 @@ libcommon_la_SOURCES = \
+ slurm_protocol_socket.h \
+ slurm_resolv.c \
+ slurm_resolv.h \
++ slurm_sockaddr.c \
++ slurm_sockaddr.h \
+ slurm_resource_info.c \
+ slurm_resource_info.h \
+ slurm_rlimits_info.c \
+@@ -909,6 +912,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_protocol_socket.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_protocol_util.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_resolv.Plo@am__quote@ # am--include-marker
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_sockaddr.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_resource_info.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_rlimits_info.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_step_layout.Plo@am__quote@ # am--include-marker
+@@ -1134,6 +1138,7 @@ distclean: distclean-am
+ -rm -f ./$(DEPDIR)/slurm_protocol_socket.Plo
+ -rm -f ./$(DEPDIR)/slurm_protocol_util.Plo
+ -rm -f ./$(DEPDIR)/slurm_resolv.Plo
++ -rm -f ./$(DEPDIR)/slurm_sockaddr.Plo
+ -rm -f ./$(DEPDIR)/slurm_resource_info.Plo
+ -rm -f ./$(DEPDIR)/slurm_rlimits_info.Plo
+ -rm -f ./$(DEPDIR)/slurm_step_layout.Plo
+@@ -1279,6 +1284,7 @@ maintainer-clean: maintainer-clean-am
+ -rm -f ./$(DEPDIR)/slurm_protocol_socket.Plo
+ -rm -f ./$(DEPDIR)/slurm_protocol_util.Plo
+ -rm -f ./$(DEPDIR)/slurm_resolv.Plo
++ -rm -f ./$(DEPDIR)/slurm_sockaddr.Plo
+ -rm -f ./$(DEPDIR)/slurm_resource_info.Plo
+ -rm -f ./$(DEPDIR)/slurm_rlimits_info.Plo
+ -rm -f ./$(DEPDIR)/slurm_step_layout.Plo
diff --git a/sysutils/slurm-wlm/files/patch-src_common_net.c b/sysutils/slurm-wlm/files/patch-src_common_net.c
new file mode 100644
index 000000000000..26392482a5e7
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_net.c
@@ -0,0 +1,29 @@
+--- src/common/net.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/net.c
+@@ -81,6 +81,7 @@
+ #include "src/common/log.h"
+ #include "src/common/macros.h"
+ #include "src/common/net.h"
++#include "src/common/slurm_sockaddr.h"
+ #include "src/common/slurm_protocol_api.h"
+ #include "src/common/util-net.h"
+ #include "src/common/xmalloc.h"
+@@ -108,6 +109,8 @@ int net_stream_listen(int *fd, uint16_t *port)
+ /* bind ephemeral port */
+ slurm_setup_addr(&sin, 0);
+
++ len = slurm_sockaddr_fixlen((struct sockaddr *)&sin, len);
++
+ if ((*fd = socket(sin.ss_family, SOCK_STREAM, IPPROTO_TCP)) < 0)
+ return -1;
+
+@@ -259,7 +262,8 @@ static bool _is_port_ok(int s, uint16_t port, bool loc
+ return false;
+ }
+
+- if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
++ socklen_t alen = slurm_sockaddr_fixlen((struct sockaddr *)&addr, sizeof(addr));
++ if (bind(s, (struct sockaddr *) &addr, alen) < 0) {
+ log_flag(NET, "%s: bind() failed on port:%d fd:%d: %m",
+ __func__, port, s);
+ return false;
diff --git a/sysutils/slurm-wlm/files/patch-src_common_sack__api.c b/sysutils/slurm-wlm/files/patch-src_common_sack__api.c
new file mode 100644
index 000000000000..2c9132cd1ce8
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_sack__api.c
@@ -0,0 +1,27 @@
+--- src/common/sack_api.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/sack_api.c
+@@ -43,6 +43,7 @@
+ #include "src/common/pack.h"
+ #include "src/common/sack_api.h"
+ #include "src/common/slurm_protocol_api.h"
++#include "src/common/slurm_sockaddr.h"
+ #include "src/common/xmalloc.h"
+
+ #define SACK_CLUSTER_PATTERN "/run/slurm-%s/sack.socket"
+@@ -64,14 +65,14 @@ static int _sack_try_connection(struct sockaddr_un *ad
+ static int _sack_try_connection(struct sockaddr_un *addr)
+ {
+ int fd;
+- size_t len = strlen(addr->sun_path) + 1 + sizeof(addr->sun_family);
++ socklen_t len = slurm_sockaddr_fixlen((struct sockaddr *)addr, (socklen_t)sizeof(*addr));
+
+ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+ debug3("%s: socket() failed: %m", __func__);
+ return -1;
+ }
+
+- if (connect(fd, (struct sockaddr *) addr, len) < 0) {
++ if (connect(fd, (struct sockaddr *)addr, len) < 0) {
+ debug3("%s: connect() failed for %s: %m",
+ __func__, addr->sun_path);
+ close(fd);
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..2eea65b685a9
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c
@@ -0,0 +1,88 @@
+--- src/common/slurm_protocol_socket.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/slurm_protocol_socket.c
+@@ -64,6 +64,7 @@
+ #include "src/common/read_config.h"
+ #include "src/common/slurm_protocol_api.h"
+ #include "src/common/slurm_protocol_socket.h"
++#include "src/common/slurm_sockaddr.h"
+ #include "src/common/slurm_time.h"
+ #include "src/common/strlcpy.h"
+ #include "src/common/util-net.h"
+@@ -107,7 +108,9 @@ static void _sock_bind_wild(int sockfd)
+ slurm_setup_addr(&sin, RANDOM_USER_PORT);
+
+ for (retry=0; retry < PORT_RETRIES ; retry++) {
+- rc = bind(sockfd, (struct sockaddr *) &sin, sizeof(sin));
++ socklen_t blen = slurm_sockaddr_fixlen(
++ (struct sockaddr *)&sin, (socklen_t)sizeof(sin));
++ rc = bind(sockfd, (struct sockaddr *)&sin, blen);
+ if (rc >= 0)
+ break;
+ slurm_set_port(&sin, RANDOM_USER_PORT);
+@@ -543,26 +546,30 @@ extern int slurm_init_msg_engine(slurm_addr_t *addr, b
+
+ extern int slurm_init_msg_engine(slurm_addr_t *addr, bool quiet)
+ {
+- socklen_t bind_len = (addr->ss_family == AF_INET6) ?
+- sizeof(struct sockaddr_in6) :
+- sizeof(struct sockaddr_in);
+ int rc;
+ int fd;
+ int log_lvl = LOG_LEVEL_ERROR;
+ const int one = 1;
+ const size_t sz1 = sizeof(one);
++ socklen_t bind_len = slurm_sockaddr_fixlen((struct sockaddr *)addr,
++ (socklen_t)sizeof(*addr));
++
+ #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+- /*
+- * The BSDs requires the sa_len field to be set correctly in
+- * struct sockaddr_in / sockaddr_in6 before calling bind().
+- * If unset, bind() may fail with EINVAL.
+- */
++/*
++ * Fallback: if configure didn't detect any sockaddr length fields,
++ * preserve the historical BSD workaround.
++ */
++#if !defined(HAVE_STRUCT_SOCKADDR_IN_SIN_LEN) && \
++ !defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN) && \
++ !defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
+ if (addr->ss_family == AF_INET)
+- ((struct sockaddr_in *) addr)->sin_len = bind_len;
++ ((struct sockaddr_in *)addr)->sin_len =
++ (uint8_t)sizeof(struct sockaddr_in);
+ else if (addr->ss_family == AF_INET6)
+- ((struct sockaddr_in6 *) addr)->sin6_len = bind_len;
++ ((struct sockaddr_in6 *)addr)->sin6_len =
++ (uint8_t)sizeof(struct sockaddr_in6);
+ #endif
+-
++#endif
+ if (quiet)
+ log_lvl = LOG_LEVEL_DEBUG;
+
+@@ -688,8 +695,10 @@ extern int slurm_open_stream(slurm_addr_t *addr, bool
+ _sock_bind_wild(fd);
+ }
+
+- rc = _slurm_connect(fd, (struct sockaddr const *)addr,
+- sizeof(*addr));
++ slurm_addr_t tmp = *addr;
++ socklen_t alen = slurm_sockaddr_fixlen(
++ (struct sockaddr *)&tmp, (socklen_t)sizeof(tmp));
++ rc = _slurm_connect(fd, (struct sockaddr const *)&tmp, alen);
+ if (!rc) {
+ /* success */
+ break;
+@@ -756,8 +765,10 @@ extern int slurm_open_unix_stream(char *addr_name, int
+ memset(&sa, 0, sizeof(sa));
+ sa.sun_family = AF_UNIX;
+ strcpy(sa.sun_path, addr_name);
++ socklen_t slen = slurm_sockaddr_fixlen((struct sockaddr *)&sa,
++ (socklen_t)sizeof(sa));
+
+- while ((rc = connect(*fd, (struct sockaddr *) &sa, SUN_LEN(&sa))) &&
++ while ((rc = connect(*fd, (struct sockaddr *)&sa, slen)) &&
+ (errno == EINTR))
+ ; /* empty loop */
+
diff --git a/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.c b/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.c
new file mode 100644
index 000000000000..2d741194dccf
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.c
@@ -0,0 +1,92 @@
+--- src/common/slurm_sockaddr.c.orig 2026-01-29 00:01:06 UTC
++++ src/common/slurm_sockaddr.c
+@@ -0,0 +1,89 @@
++#include "config.h"
++
++#include "src/common/slurm_sockaddr.h"
++
++#include <stddef.h>
++#include <stdint.h>
++#include <string.h>
++#include <sys/un.h>
++#include <netinet/in.h>
++
++/* Safe pathname length for AF_UNIX (avoids overruns). */
++static socklen_t _unix_sock_len(const struct sockaddr_un *un, socklen_t provided)
++{
++ /* Linux abstract namespace: sun_path[0] == '\0' => length is provided. */
++ if (provided >= (socklen_t)offsetof(struct sockaddr_un, sun_path) &&
++ un->sun_path[0] == '\0') {
++ return provided;
++ }
++
++ size_t maxn = sizeof(un->sun_path);
++ size_t n = strnlen(un->sun_path, maxn);
++
++ /* include terminating NUL like classic pathname sockets */
++ socklen_t len = (socklen_t)(offsetof(struct sockaddr_un, sun_path) + n);
++ return len;
++}
++
++socklen_t slurm_sockaddr_fixlen(struct sockaddr *sa, socklen_t provided_len)
++{
++ if (!sa)
++ return provided_len;
++
++ switch (sa->sa_family) {
++ case AF_INET: {
++ socklen_t len = (socklen_t)sizeof(struct sockaddr_in);
++#if defined(HAVE_STRUCT_SOCKADDR_IN_SIN_LEN)
++ ((struct sockaddr_in *)sa)->sin_len = (uint8_t)len;
++#elif defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
++ sa->sa_len = (uint8_t)len;
++#endif
++ return len;
++ }
++ case AF_INET6: {
++ socklen_t len = (socklen_t)sizeof(struct sockaddr_in6);
++#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN)
++ ((struct sockaddr_in6 *)sa)->sin6_len = (uint8_t)len;
++#elif defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
++ sa->sa_len = (uint8_t)len;
++#endif
++ return len;
++ }
++ case AF_UNIX: {
++ struct sockaddr_un *un = (struct sockaddr_un *)sa;
++ socklen_t len = _unix_sock_len(un, provided_len);
++#if defined(HAVE_STRUCT_SOCKADDR_UN_SUN_LEN)
++ un->sun_len = (uint8_t)len;
++#elif defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
++ sa->sa_len = (uint8_t)len;
++#endif
++ return len;
++ }
++ default:
++#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
++ /* best effort: if caller provided a meaningful length, reflect it */
++ if (provided_len <= 255)
++ sa->sa_len = (uint8_t)provided_len;
++#endif
++ return provided_len;
++ }
++}
++
++int slurm_sockaddr_copy_fix(struct sockaddr_storage *dst,
++ const struct sockaddr *src,
++ socklen_t src_len,
++ socklen_t *out_len)
++{
++ if (!dst || !src || !out_len)
++ return -1;
++
++ socklen_t n = src_len;
++ if (n > (socklen_t)sizeof(*dst))
++ n = (socklen_t)sizeof(*dst);
++
++ memset(dst, 0, sizeof(*dst));
++ memcpy(dst, src, n);
++
++ *out_len = slurm_sockaddr_fixlen((struct sockaddr *)dst, n);
++ return 0;
++}
diff --git a/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.h b/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.h
new file mode 100644
index 000000000000..df97c7b91333
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_slurm__sockaddr.h
@@ -0,0 +1,29 @@
+--- src/common/slurm_sockaddr.h.orig 2026-01-29 00:01:06 UTC
++++ src/common/slurm_sockaddr.h
+@@ -0,0 +1,26 @@
++#pragma once
++
++#include <sys/types.h>
++#include <sys/socket.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/* Fix length fields (sin_len/sin6_len/sun_len/sa_len when present) and
++ * return the correct socklen_t to pass to bind/connect/getnameinfo.
++ *
++ * - If sa is mutable, you can call this directly.
++ * - If sa is const, use slurm_sockaddr_copy_fix() to copy into a mutable buffer.
++ */
++socklen_t slurm_sockaddr_fixlen(struct sockaddr *sa, socklen_t provided_len);
++
++/* Copy src->dst and then apply slurm_sockaddr_fixlen() on dst. */
++int slurm_sockaddr_copy_fix(struct sockaddr_storage *dst,
++ const struct sockaddr *src,
++ socklen_t src_len,
++ socklen_t *out_len);
++
++#ifdef __cplusplus
++}
++#endif
diff --git a/sysutils/slurm-wlm/files/patch-src_common_stepd__proxy.c b/sysutils/slurm-wlm/files/patch-src_common_stepd__proxy.c
new file mode 100644
index 000000000000..d29e60530a2e
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_stepd__proxy.c
@@ -0,0 +1,27 @@
+--- src/common/stepd_proxy.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/stepd_proxy.c
+@@ -40,6 +40,7 @@
+ #include "src/common/read_config.h"
+ #include "src/common/slurm_protocol_api.h"
+ #include "src/common/slurm_protocol_pack.h"
++#include "src/common/slurm_sockaddr.h"
+ #include "src/common/stepd_api.h"
+ #include "src/common/stepd_proxy.h"
+ #include "src/common/xmalloc.h"
+@@ -299,13 +300,14 @@ static int _stepd_connect_to_slurmd(void)
+ static int _stepd_connect_to_slurmd(void)
+ {
+ struct sockaddr_un slurmd_addr = { .sun_family = AF_UNIX };
+- size_t len;
++ socklen_t len;
+ int fd;
+
+ (void) snprintf(slurmd_addr.sun_path, sizeof(slurmd_addr.sun_path),
+ "%s/slurmd.socket", slurmd_spooldir);
+
+- len = strlen(slurmd_addr.sun_path) + 1 + sizeof(slurmd_addr.sun_family);
++ len = slurm_sockaddr_fixlen((struct sockaddr *)&slurmd_addr,
++ (socklen_t)sizeof(slurmd_addr));
+
+ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+ error("%s: socket() failed: %m", __func__);
diff --git a/sysutils/slurm-wlm/files/patch-src_common_util-net.c b/sysutils/slurm-wlm/files/patch-src_common_util-net.c
new file mode 100644
index 000000000000..2552b6b2e2d0
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_util-net.c
@@ -0,0 +1,30 @@
+--- src/common/util-net.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/util-net.c
+@@ -60,6 +60,7 @@
+ #include "src/common/xassert.h"
+ #include "src/common/xmalloc.h"
+ #include "src/common/xstring.h"
++#include "src/common/slurm_sockaddr.h"
+
+ static pthread_mutex_t hostentLock = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_rwlock_t getnameinfo_cache_lock = PTHREAD_RWLOCK_INITIALIZER;
+@@ -400,8 +401,18 @@ static char *_getnameinfo(const slurm_addr_t *addr)
+ {
+ char hbuf[NI_MAXHOST] = "\0";
+ int err;
++ struct sockaddr_storage ss;
++ socklen_t alen = 0;
+
+- err = getnameinfo((const struct sockaddr *) addr, sizeof(*addr),
++
++ if (slurm_sockaddr_copy_fix(&ss, (const struct sockaddr *)addr,
++ (socklen_t)sizeof(*addr), &alen) < 0) {
++ log_flag(NET, "%s: slurm_sockaddr_copy_fix(%pA) failed",
++ __func__, addr);
++ return NULL;
++ }
++
++ err = getnameinfo((const struct sockaddr *)&ss, alen,
+ hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD);
+ if (err == EAI_SYSTEM) {
+ log_flag(NET, "%s: getnameinfo(%pA) failed: %s: %m",
diff --git a/sysutils/slurm-wlm/files/patch-src_common_xsystemd.c b/sysutils/slurm-wlm/files/patch-src_common_xsystemd.c
new file mode 100644
index 000000000000..072e972775a5
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_common_xsystemd.c
@@ -0,0 +1,28 @@
+--- src/common/xsystemd.c.orig 2026-01-15 20:26:01 UTC
++++ src/common/xsystemd.c
+@@ -45,6 +45,7 @@
+ #include "src/common/read_config.h"
+ #include "src/common/slurm_protocol_defs.h"
+ #include "src/common/strlcpy.h"
*** 312 LINES SKIPPED ***