Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
c98f70f
Cachepath: parse_loc utilities.
rountree-alt Oct 3, 2025
77fd7d3
Cachepath: remove/rename [orig_]location.
rountree-alt Oct 3, 2025
c3dba38
Cachepath: Configure-time support.
rountree-alt Oct 3, 2025
7e1715d
Cachepath: Internal messaging for path resolution
rountree-alt Oct 3, 2025
2020634
Cachepath: Adds cobo_allreduce()
rountree-alt Oct 3, 2025
dfdf166
Cachepath: Adds parameters to config_mgr
rountree-alt Oct 3, 2025
38bacd3
Cachepath: adds flux parameter support
rountree-alt Oct 3, 2025
6d34e18
Cachepath: Adds logging support.
rountree-alt Oct 3, 2025
69f03de
Cachepath: Removes out-of-root cleanup checks.
rountree-alt Oct 3, 2025
36540be
Cachepath: Set of small, miscellaneous patches.
rountree-alt Oct 3, 2025
0eb779a
Fixes per Matt's comments.
rountree-alt Oct 21, 2025
61ba31c
Single source of truth for client cachepath.
rountree-alt Oct 22, 2025
78ee5ff
Comments the cachepath variables.
rountree-alt Oct 22, 2025
f9aa472
Removes internal vars from spindle_launch.h
rountree-alt Oct 23, 2025
ef75381
Client cachepath message now uses single response.
rountree-alt Oct 23, 2025
3c83f6c
Removes assert(0) in network error paths.
rountree-alt Oct 23, 2025
1134a1c
Renames ldcs_audit_server_md_consensus().
rountree-alt Oct 23, 2025
57eb3fe
Adds explicit enum values to CmdlineShortOptions.
rountree-alt Oct 23, 2025
4a43875
Return instead of exit on network errors.
rountree-alt Oct 23, 2025
97ae725
Apply rename to configuration and parameters.
rountree-alt Oct 24, 2025
9756688
Renaming location variables/fields to commpath.
rountree-alt Oct 24, 2025
2b0acc0
Renames enums.
rountree-alt Oct 24, 2025
fa47cf1
Use strdup() for commpath instead of stack var.
rountree-alt Nov 5, 2025
e025e83
Adds LDCS_COMMPATH
rountree-alt Nov 12, 2025
a2c25ac
Restores checkLinkForLeak() to test_driver.c
rountree-alt Nov 13, 2025
77b7375
Replacing "location" with "commpath" as needed.
rountree-alt Nov 13, 2025
332e67f
Continues location rename.
rountree-alt Nov 14, 2025
193cba2
Fixes -Wsign-compare warning in new code.
rountree-alt Dec 7, 2025
5f3a1df
LDCS_CHOSEN_PARSED_CACHEPATH set in bootstrap.
rountree-alt Dec 7, 2025
857f9e7
Updates test_driver.c to ignore FIFO files.
rountree-alt Dec 19, 2025
5e508a4
Bump docker/setup-buildx-action in /.github/workflows
dependabot[bot] Jan 1, 2026
7ce216c
Bump actions/checkout from 6.0.0 to 6.0.1 in /.github/workflows
dependabot[bot] Jan 1, 2026
8de2636
Sets TMPDIR=/tmp in each Dockerfile
rountree-alt Jan 12, 2026
8285cb8
Bugfix: Prevent segfault when TMPDIR is not given
neicker Feb 19, 2024
871825d
Bugfix: Fix segfault when trying to bind unforeseen symbol
neicker Feb 19, 2024
d51caee
Bugfix: Actually use scontrol for host expansion if detected
neicker Feb 19, 2024
f486040
Bugfix: Fix argument propagation to Slurm SPANK plugin
nchaimov Nov 6, 2025
7cb16bb
Bugfix: Let debug report the correct assignment
neicker Feb 19, 2024
d040c95
Bugfix: Prevent memory leak
neicker Feb 19, 2024
743441d
Actually debug print scontrol's command line
neicker Feb 19, 2024
254b8d8
Cleanup the unique_file helping to identify the local BE process
neicker Feb 19, 2024
b0e557c
Do not write 'fepid' file that is never read again
neicker Feb 19, 2024
ccd129d
Let spindle helper escape to own process group
neicker Feb 19, 2024
17099f6
Remove combined_argc, combined_argv which is never used
neicker Feb 19, 2024
0f6289f
Add detection of sinfo binary for use in SPANK plugin
nchaimov Nov 6, 2025
3755c18
Translate Slurm NodeName to NodeAddr for server communication setup
neicker Feb 19, 2024
e62ad67
Check for SPANK's spank_prepend_task_argv() in configure
nchaimov Nov 6, 2025
608ea09
Use spank_prepend_task_argv() to tweak task's argv
neicker Feb 19, 2024
58f433f
Only free env_value if it was actually allocated
nchaimov Nov 14, 2025
e50f2eb
Don't require rsh launch when SPANK plugin is built; ensure shutdown is
nchaimov Dec 31, 2025
495286b
Handle --level=off in SPANK plugin
nchaimov Jan 8, 2026
2d6d5a8
CI testing for SPANK plugin
nchaimov Jan 12, 2026
4f8d30b
Use SLURM_STEP_NODELIST to account for change in NNODES between sallo…
nchaimov Feb 11, 2026
84ef9e7
Restores --with-localstorage to generate error.
rountree-alt Feb 12, 2026
3a355e7
Merge branch 'devel' into commpath
rountree Feb 12, 2026
5bb6c40
Merge branch 'spank-plugin' into mergetest
rountree-alt Feb 13, 2026
123ba20
Updates spank plugin to use commpath.
rountree-alt Feb 13, 2026
007b2c7
Updates a configure script to use commpath.
rountree-alt Feb 13, 2026
3e02e46
Additional integration for commpath + spank-plugin.
rountree-alt Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,61 @@ jobs:
cd containers/spindle-slurm-ubuntu/testing
docker compose down

spindle-slurm-plugin-ubuntu:
name: Testsuite (Slurm Plugin, Ubuntu)
environment: Spindle CI
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out Spindle
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8

- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
with:
version: latest

- name: Login to GitHub Container Registry
if: ${{ !env.ACT }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate MariaDB configuration
id: slurm-ubuntu-mariadb
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
./generate_config.sh

- name: Build spindle-slurm-plugin-ubuntu image
id: slurm-ubuntu-build
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose --progress=plain build

- name: Bring spindle-slurm-plugin-ubuntu up
id: slurm-ubuntu-up
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose up -d --wait --wait-timeout 120

- name: Verify munge works in spindle-slurm-plugin-ubuntu
id: slurm-ubuntu-munge
run: |
docker exec slurm-plugin-head bash -c 'munge -n | unmunge'

- name: Run spindle-slurm-plugin-ubuntu testsuite
id: slurm-ubuntu-testsuite
run: |
docker exec slurm-plugin-head bash -c 'cd Spindle-build/testsuite && salloc -n${workers} -N${workers} ./runTests ${workers}'

- name: Bring spindle-slurm-plugin-ubuntu down
id: slurm-ubuntu-down
if: ${{ always() }}
continue-on-error: true
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose down

1 change: 1 addition & 0 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@ SCONTROL_ABSPATH = @SCONTROL_ABSPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SINFO_ABSPATH = @SINFO_ABSPATH@
SRUN_PATH = @SRUN_PATH@
STATICFLAG = @STATICFLAG@
STRIP = @STRIP@
Expand Down
13 changes: 10 additions & 3 deletions config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
/* Whether we are using a broken srun */
#undef BROKEN_SRUN

/* Colon-separated list of potential back-end cache directories */
#undef CACHEPATHS

/* Back-end directory for communication and housekeeping */
#undef COMMPATH

/* Define if were using biter for client/server communication */
#undef COMM_BITER

Expand Down Expand Up @@ -33,6 +39,10 @@
/* Slurm with via plugin is enabled */
#undef ENABLE_SLURM_PLUGIN

/* Define to 1 if you have the declaration of `spank_prepend_task_argv', and
to 0 if you don't. */
#undef HAVE_DECL_SPANK_PREPEND_TASK_ARGV

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

Expand Down Expand Up @@ -127,9 +137,6 @@
/* Default mode for slurm launch */
#undef SLURMLAUNCH_ENABLED

/* The default local directory for Spindle */
#undef SPINDLE_LOC

/* The default colon-separated list of directories that Spindle will not cache
files out of */
#undef SPINDLE_LOCAL_PREFIX
Expand Down
155 changes: 149 additions & 6 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,7 @@ LIBOBJS
PKGSYSCONF_DIR
BLD_SLURMPLUGIN_FALSE
BLD_SLURMPLUGIN_TRUE
SINFO_ABSPATH
SCONTROL_ABSPATH
BE_host
BE_CXXCPP
Expand Down Expand Up @@ -847,6 +848,8 @@ enable_maintainer_mode
with_default_port
with_default_num_ports
with_localstorage
with_cachepaths
with_commpath
with_default_local_prefix
with_testrm
with_rm
Expand Down Expand Up @@ -1589,7 +1592,12 @@ Optional Packages:
--with-default-numports=NUM
Number of TCP/IP ports to scan for Spindle server
communication
--with-localstorage=DIR Directory on back-ends for storing relocated files
--with-localstorage=DIR (obsolete)
Use --with-cachepaths and --with-commpath instead.
--with-cachepaths=DIR Colon-separated list of potential back-end cache
directories
--with-compath=DIR Back-end directory for communication and
housekeeping
--with-default-local-prefix=DIRS
Colon-seperated list of directories that Spindle
will not cache files out of
Expand Down Expand Up @@ -2212,6 +2220,52 @@ fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_mongrel

# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly.
ac_fn_c_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
#ifndef $as_decl_name
#ifdef __cplusplus
(void) $as_decl_use;
#else
(void) $as_decl_name;
#endif
#endif

;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$3=yes"
else
eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_decl
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
Expand Down Expand Up @@ -16617,17 +16671,31 @@ fi

# Check whether --with-localstorage was given.
if test "${with_localstorage+set}" = set; then :
withval=$with_localstorage; SPINDLE_LOC=${withval}
withval=$with_localstorage; as_fn_error $? "requested obsolete option --with-localstorage. Use --with-cachepaths and --with-commpath instead." "$LINENO" 5
fi


# Check whether --with-cachepaths was given.
if test "${with_cachepaths+set}" = set; then :
withval=$with_cachepaths; CACHEPATHS=${withval}
else
CACHEPATHS=$DEFAULT_LOC
fi


# Check whether --with-commpath was given.
if test "${with_commpath+set}" = set; then :
withval=$with_commpath; COMMPATH=${withval}
else
SPINDLE_LOC=$DEFAULT_LOC
COMMPATH=$DEFAULT_LOC
fi


# Check whether --with-default-local-prefix was given.
if test "${with_default_local_prefix+set}" = set; then :
withval=$with_default_local_prefix; SPINDLE_LOCAL_PREFIX=${withval}
else
SPINDLE_LOCAL_PREFIX="$DEFAULT_LOCAL_PREFIX:$SPINDLE_LOC"
SPINDLE_LOCAL_PREFIX="$DEFAULT_LOCAL_PREFIX:$COMMPATH"
fi


Expand All @@ -16647,7 +16715,12 @@ _ACEOF


cat >>confdefs.h <<_ACEOF
#define SPINDLE_LOC "$SPINDLE_LOC"
#define COMMPATH "$COMMPATH"
_ACEOF


cat >>confdefs.h <<_ACEOF
#define CACHEPATHS "$CACHEPATHS"
_ACEOF


Expand Down Expand Up @@ -16911,7 +16984,7 @@ $as_echo "yes" >&6; }
$as_echo "$as_me: WARNING: Slurm launching was explicitly requested, but slurm $srun_version, which is later than $bad_srun_major.$bad_srun_minor, was detected. This version of slurm breaks spindle daemon launch. You might still be able to get spindle to work by running jobs with srun's --overlap option. Or you could switch to having spindle launch daemons with rsh/ssh by passing the --with-rsh-launch option, and ensuring that rsh/ssh to nodes works on your cluster." >&2;}
fi

if [ "x$ENABLE_RSH_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_LAUNCH" != "x1" ] ; then
if [ "x$ENABLE_RSH_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_PLUGIN" != "xtrue" ] ; then
if test "x$BROKEN_SRUN" == "x1"; then
as_fn_error $? "Slurm support was requested, but slurm $srun_version, which is later than $bad_srun_major.$bad_srun_minor, was detected. This version of slurm breaks spindle daemon launch. You can disable this error message and build spindle with slurm-based daemon launching anyways by explicitly passing the --with-slurm-launch option (you might still be able to get spindle to work by running jobs with srun's --overlap option). Or you could switch to having spindle launch daemons with rsh/ssh by passing the --with-rsh-launch option, and ensuring that rsh/ssh to nodes works on your cluster." "$LINENO" 5
else
Expand Down Expand Up @@ -18658,6 +18731,18 @@ fi


CPPFLAGS=$OCPPFLAGS
ac_fn_c_check_decl "$LINENO" "spank_prepend_task_argv" "ac_cv_have_decl_spank_prepend_task_argv" "#include<slurm/spank.h>
"
if test "x$ac_cv_have_decl_spank_prepend_task_argv" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
fi

cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SPANK_PREPEND_TASK_ARGV $ac_have_decl
_ACEOF


OPATH=$PATH
if test "x$SLURM_DIR" != "x"; then
Expand Down Expand Up @@ -18707,6 +18792,50 @@ fi
if test "x$SCONTROL_ABSPATH" == "xnotfound"; then
as_fn_error $? "Could not find scontrol" "$LINENO" 5
fi
# Extract the first word of "sinfo", so it can be a program name with args.
set dummy sinfo; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_SINFO_ABSPATH+:} false; then :
$as_echo_n "(cached) " >&6
else
case $SINFO_ABSPATH in
[\\/]* | ?:[\\/]*)
ac_cv_path_SINFO_ABSPATH="$SINFO_ABSPATH" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_SINFO_ABSPATH="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS

test -z "$ac_cv_path_SINFO_ABSPATH" && ac_cv_path_SINFO_ABSPATH="notfound"
;;
esac
fi
SINFO_ABSPATH=$ac_cv_path_SINFO_ABSPATH
if test -n "$SINFO_ABSPATH"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SINFO_ABSPATH" >&5
$as_echo "$SINFO_ABSPATH" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi


if test "x$SINFO_ABSPATH" == "xnotfound"; then
as_fn_error $? "Could not find sinfo" "$LINENO" 5
fi
PATH=$OPATH
fi

Expand All @@ -18720,6 +18849,16 @@ fi

SCONTROL_ABSPATH=$SCONTROL_ABSPATH

SINFO_ABSPATH=$SINFO_ABSPATH


if test "x$ENABLE_FLUX_PLUGIN" = "xtrue"; then
BLD_FLUXPLUGIN_TRUE=
BLD_FLUXPLUGIN_FALSE='#'
else
BLD_FLUXPLUGIN_TRUE='#'
BLD_FLUXPLUGIN_FALSE=
fi


cat >confcache <<\_ACEOF
Expand Down Expand Up @@ -18935,6 +19074,10 @@ if test -z "${BLD_SLURMPLUGIN_TRUE}" && test -z "${BLD_SLURMPLUGIN_FALSE}"; then
as_fn_error $? "conditional \"BLD_SLURMPLUGIN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${BLD_FLUXPLUGIN_TRUE}" && test -z "${BLD_FLUXPLUGIN_FALSE}"; then
as_fn_error $? "conditional \"BLD_FLUXPLUGIN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi

: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
Expand Down
7 changes: 7 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ if test "x$ENABLE_SLURM_PLUGIN" == "xtrue"; then
[],
[AC_MSG_ERROR([Could not find slurm/spank.h])])
CPPFLAGS=$OCPPFLAGS
AC_CHECK_DECLS([spank_prepend_task_argv], [], [], [[#include<slurm/spank.h>]])

OPATH=$PATH
if test "x$SLURM_DIR" != "x"; then
Expand All @@ -85,12 +86,18 @@ if test "x$ENABLE_SLURM_PLUGIN" == "xtrue"; then
if test "x$SCONTROL_ABSPATH" == "xnotfound"; then
AC_MSG_ERROR([Could not find scontrol])
fi
AC_PATH_PROG([SINFO_ABSPATH], [sinfo], [notfound])
if test "x$SINFO_ABSPATH" == "xnotfound"; then
AC_MSG_ERROR([Could not find sinfo])
fi
PATH=$OPATH
fi

AM_CONDITIONAL([BLD_SLURMPLUGIN], [test "x$ENABLE_SLURM_PLUGIN" == "xtrue"])
AC_SUBST(SCONTROL_ABSPATH, $SCONTROL_ABSPATH)
AC_SUBST(SINFO_ABSPATH, $SINFO_ABSPATH)
AC_SUBST(PKGSYSCONF_DIR)
AM_CONDITIONAL([BLD_FLUXPLUGIN], [test "x$ENABLE_FLUX_PLUGIN" = "xtrue"])

AC_OUTPUT

Expand Down
Loading
Loading