From nobody Wed Mar 11 13:39:24 2026 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fWBgJ3Vt0z6VBqv for ; Wed, 11 Mar 2026 13:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fWBgJ33rZz4Fbq for ; Wed, 11 Mar 2026 13:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773236364; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=y2+S9kZDs0EEfY9ceJ9hUXao157UWEbso2b3bWxOS1g=; b=T76Y+RcY9n5m5orsnhETjkO5iPKfRmkThtrxj6W2hpoRHI4QZ9adIYLz5MKl3Lj40Tf3pt 0ZXav1MjBehgpksny1/5ztj6/2hNcBH7fF8tgcMGGJidX+chnZMzlM5lVxHYB2ts3zkeHi SWtdpi7xMiF4e9eDrdy7UmM2sHG4Cwg7oj9BTbsxtiICiEVOPripq7pAqvvNQQjR0dUmob TNk5kndi+x28j0swXuNm0gqGxR7XBaNl7Yowf1Fd8pGbSUz3hVGa56YSqwIrkTUlbr443A sxaWhefDV/O+QToCeDDWSogALehf3Ligs0pC4E77RdhTV3tYFNh2xgoUNLc2hg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773236364; a=rsa-sha256; cv=none; b=F67miYIGY4pAQrZO23nsDCsE6NDEiq4d0+QKkSDicIX/nBNTHGCSIhW8ooDlKcbgQC99Y6 ndmEyHmNd+hfNMZ8FKYU2lfLzLTohfa06Ns6zUs7zaTqI8g+fqdiwYyMZjj9HbNgttKe8i YsaE/hCn8monfpAMmJL54xvi+QSlpoVp9oer0MnLm2VRYsJ7fop6oxm4K0p55hUi5zdNdi Ksfudd/VSLxlAT5VEWgqzBQQpPu5olYtxnnXmXZWCFyzXN2fh5jpvDCguuj4frB+PyYmDs hYPQF0WdLga7lrw8/Gyk5ySbTQE+h6JqTkr5iCF/PexsMWHC/ZEf7nGwuwcQ0A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773236364; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=y2+S9kZDs0EEfY9ceJ9hUXao157UWEbso2b3bWxOS1g=; b=ZgJ8fc+5Q5omEHvMsbVzGtHk4k/8dOX72LHPo5+VTs0GhJLzoP3dkqHozn9ssqfSNzD4aO gdcHe1/1gCaCDVNClDM3D2f55X1L7YVFGNnGSLSpzlJk5nwt0LLy/tLWBwLi9htbAcL2aE vh7X6tJUSy7EXRTMLH94g66d8cAtjg+Ku5XzCb1gpEenIrqKmsotGdjZ1x6Tpu+G/wvgKf kjkzZ+GQAmVWkpcitYuB8xDshwRlJguaAeXAL0ihlraovdkOOcdDT+tVdUu2kVbrUS2Zkb z5hEAzRrn1serW9Jn0atdPDhEp8TTY0pqzS/NGapxYJ05LlgrQHxbqT0Yt5vwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fWBgJ2Vykz11MX for ; Wed, 11 Mar 2026 13:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27cdb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 11 Mar 2026 13:39:24 +0000 To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Cc: GenericRikka From: Thierry Thomas Subject: git: 1cfa47f320fa - main - sysutils/slurm-wlm: update to 25.11.2 & fix sockaddr length handling on BSD List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thierry X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1cfa47f320fa8b1fa1edba614397087aac846ab1 Auto-Submitted: auto-generated Date: Wed, 11 Mar 2026 13:39:24 +0000 Message-Id: <69b1708c.27cdb.720ee9b2@gitrepo.freebsd.org> The branch main has been updated by thierry: URL: https://cgit.FreeBSD.org/ports/commit/?id=1cfa47f320fa8b1fa1edba614397087aac846ab1 commit 1cfa47f320fa8b1fa1edba614397087aac846ab1 Author: GenericRikka AuthorDate: 2026-03-10 17:30:17 +0000 Commit: Thierry Thomas 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 ++#include ++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 ++#include ++#include ++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 ++#include ++#include ++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 ++#include ++#include ++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 ++#include ++#include ++#include ++#include ++ ++/* 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 ++#include ++ ++#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 ***