[Bug 290211] sysutils/slurm-wlm: refresh rc.d scripts (slurmctld & slurmd): configurable conf/log dirs, pidfiles, status, and cleanup

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 13 Oct 2025 15:52:34 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290211

            Bug ID: 290211
           Summary: sysutils/slurm-wlm: refresh rc.d scripts (slurmctld &
                    slurmd): configurable conf/log dirs, pidfiles, status,
                    and cleanup
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: rikka.goering@outlook.de

Summary

Modernize and harden the slurmctld and slurmd rc.d services:
- Make the configuration file path configurable via rc.conf (default to
%%ETCDIR%%/slurm.conf).
- Add configurable log directory and pidfile locations; run via daemon(8) by
default.
- Implement robust status (and onestop) using pidfiles/rc.subr.
- Review & remove outdated bits; align defaults with current port
(--sysconfdir=%%ETCDIR%%).
- Preserve backwards compatibility with existing *_flags and SLURM_CONF.


Motivation / Why now

- The port now installs config under %%ETCDIR%%; rc.d should reflect that and
allow overrides.
- Current scripts lack a proper status and don’t consistently manage
pidfiles/logging.
- Users expect rc.d services to support configurable paths without editing
scripts.


Scope of change

- Files: files/slurmctld.in and files/slurmd.in
- No ABI/API change; rc knobs only.
- Defaults safe for fresh installs; compatible with existing deployments.


Proposed rc variables (defaults)

# Common (both services honour these)
slurm_user="slurm"
slurm_group="slurm"
slurm_conf="%%ETCDIR%%/slurm.conf"     # exported as SLURM_CONF
slurm_logdir="/var/log/slurm"          # created with 0750/slurm:slurm
slurm_rundir="/var/run/slurm"          # created with 0755/root:wheel

# Service-specific (overridable)
slurmctld_enable="NO"
slurmctld_flags=""                      # extra args
slurmctld_pidfile="/var/run/slurm/slurmctld.pid"
slurmctld_logfile="/var/log/slurm/slurmctld.log"

slurmd_enable="NO"
slurmd_flags=""
slurmd_pidfile="/var/run/slurm/slurmd.pid"
slurmd_logfile="/var/log/slurm/slurmd.log"


Behavioural details

- start: create run/log dirs, ensure ownership, export
SLURM_CONF="${slurm_conf}", start via daemon(8) with -P <pidfile> -o <logfile>
-r.
- status: use rc_subr pidfile helpers (status_cmd="${name}_status" with
check_pidfile).
- stop: stop_postcmd verifies pidfile removal; fall back to pkill -F if needed.
- reload: send HUP to daemon pid (both daemons support SIGHUP to re-read
config).
- Backward compatible: existing slurm_*_flags still honoured; SLURM_CONF can be
set globally in /etc/rc.conf or environment—rc script exports it from
slurm_conf if not already set.

-- 
You are receiving this mail because:
You are the assignee for the bug.