SHA256
1
0
forked from pool/slurm
slurm/slurm.spec
Christian Goll cda5ce024e Accepting request 1161499 from home:mslacken:branches:network:cluster
- removed Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch
  as incoperated upstream
* Changes in Slurm 23.02.5
 * Add the JobId to debug() messages indicating when cpus_per_task/mem_per_cpu
   or pn_min_cpus are being automatically adjusted.
 * Fix regression in 23.02.2 that caused slurmctld -R to crash on startup if
   a node features plugin is configured.
 * Fix and prevent reoccurring reservations from overlapping.
 * job_container/tmpfs - Avoid attempts to share BasePath between nodes.
 * Change the log message warning for rate limited users from verbose to info.
 * With CR_Cpu_Memory, fix node selection for jobs that request gres and
   *-mem-per-cpu.
 * Fix a regression from 22.05.7 in which some jobs were allocated too few
   nodes, thus overcommitting cpus to some tasks.
 * Fix a job being stuck in the completing state if the job ends while the
   primary controller is down or unresponsive and the backup controller has
   not yet taken over.
 * Fix slurmctld segfault when a node registers with a configured CpuSpecList
   while slurmctld configuration has the node without CpuSpecList.
 * Fix cloud nodes getting stuck in POWERED_DOWN+NO_RESPOND state after not
   registering by ResumeTimeout.
 * slurmstepd - Avoid cleanup of config.json-less containers spooldir getting
   skipped.
 * slurmstepd - Cleanup per task generated environment for containers in
   spooldir.
 * Fix scontrol segfault when 'completing' command requested repeatedly in
   interactive mode.
 * Properly handle a race condition between bind() and listen() calls in the
   network stack when running with SrunPortRange set.
 * Federation - Fix revoked jobs being returned regardless of the -a/--all

OBS-URL: https://build.opensuse.org/request/show/1161499
OBS-URL: https://build.opensuse.org/package/show/network:cluster/slurm?expand=0&rev=292
2024-03-26 08:40:44 +00:00

1404 lines
44 KiB
RPMSpec

#
# spec file
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# Check file META in sources: update so_version to (API_CURRENT - API_AGE)
%define so_version 40
# Make sure to update `upgrades` as well!
%define ver 23.11.5
%define _ver _23_11
%define dl_ver %{ver}
# so-version is 0 and seems to be stable
%define pmi_so 0
%define nss_so 2
%define pmix_so 2
%define ver_major %(ver=%{version}; echo ${ver%.*})
%define pname slurm
%define slurm_testsuite 1
ExcludeArch: i586 %arm s390
%if 0%{?suse_version} < 1500
ExcludeArch: s390x
%endif
%if 0%{?suse_version} < 1315
ExclusiveArch: do_not_build
%endif
%if 0%{?sle_version} == 120200
%define base_ver 1702
%define nocheck 1
%endif
%if 0%{?sle_version} == 150000
%define base_ver 1711
%endif
%if 0%{?sle_version} == 150100
%define base_ver 1808
%endif
%if 0%{?sle_version} == 150200
%define base_ver 2002
%endif
%if 0%{?sle_version} == 150300 || 0%{?sle_version} == 150400
%define base_ver 2011
%endif
%if 0%{?sle_version} == 150500 || 0%{?sle_version} == 150600
%define base_ver 2302
%endif
%define ver_m %{lua:x=string.gsub(rpm.expand("%ver"),"%.[^%.]*$","");print(x)}
# Keep format_spec_file from botching the define below:
%if 1 == 1
%define base_conflicts() %{?nil: #
Conflicts: %{*} < %{ver_m}.0
Conflicts: %{*} >= %{ver_m}.99 }
%endif
%if 0%{?base_ver} > 0 && 0%{?base_ver} < %{lua:x=string.gsub(rpm.expand("%_ver"),"_","");print(x)}
%define upgrade 1
%endif
%define upgrade_versions upgrades
%define do_obsoletes() %{lua:
local filename = rpm.expand("%_sourcedir") .. "/" .. rpm.expand("%upgrade_versions")
local version = rpm.expand("%version")
local arg = rpm.expand("%{1}")
local f = io.open(filename ,"r")
local em = false
if f~=nil then
f.close(f)
for line in io.lines(filename) do
if em then print('\\n') else em = true end
print("Obsoletes: " .. arg .. " = " .. line)
end
else
print("Obsoletes: " .. arg .. " < " .. version)
end }
%define upgrade_dep() %{?upgrade: #
Provides: %{*} = %{version}
%{expand:%%do_obsoletes %{*}}
Conflicts: %{*} }
%if 0%{?suse_version} >= 1500
%define have_sysuser 1
%endif
# Build with PMIx only for SLE >= 15.0 and TW
%if 0%{?sle_version} >= 150000 || 0%{suse_version} >= 1550
%{bcond_without pmix}
%else
%{bcond_with pmix}
%endif
%define python_ver 3
%if 0%{?sle_version} >= 150000 || 0%{?is_opensuse}
%define have_apache_rpm_macros 1
%define have_http_parser 1
%endif
# it seems as disabling slurmrestd has no effect on 22.05
%if 0%{?have_http_parser}
%define build_slurmrestd 1
%endif
%if 0
%define have_netloc 1
%endif
%if 0%{?suse_version} >= 1500
%define have_hdf5 1
%define have_boolean_deps 1
%define have_lz4 1
%define have_firewalld 1
%endif
%ifarch x86_64
%define have_libnuma 1
%else
%ifarch %{ix86}
%if 0%{?sle_version} >= 120200
%define have_libnuma 1
%endif
%endif
%endif
%define slurm_u %pname
%define slurm_g %pname
%define slurm_uid 120
%define slurmdir %{_rundir}/slurm
%define slurmdescr "SLURM workload manager"
%define libslurm libslurm%{so_version}
%{!?_rundir:%define _rundir /var/run}
%if !0%{?_pam_moduledir:1}
%define _pam_moduledir /%_lib
%endif
%if 0%{!?_pam_secconfdir:1}
%define _pam_secconfdir %{_sysconfdir}/security
%endif
Name: %{pname}%{?upgrade:%{_ver}}
Version: %{ver}
Release: 0
Summary: Simple Linux Utility for Resource Management
License: SUSE-GPL-2.0-with-openssl-exception
Group: Productivity/Clustering/Computing
URL: https://www.schedmd.com
Source: https://download.schedmd.com/slurm/%{pname}-%{dl_ver}.tar.bz2
Source1: %upgrade_versions
Source2: slurm-rpmlintrc
Source10: slurmd.xml
Source11: slurmctld.xml
Source12: slurmdbd.xml
# create: tar --owner=nobody --group=nogroup --exclude=*~ -cvzf test_setup.tar.gz test_setup
Source20: test_setup.tar.gz
Source21: README_Testsuite.md
Patch0: Remove-rpath-from-build.patch
Patch2: pam_slurm-Initialize-arrays-and-pass-sizes.patch
Patch10: Fix-test-21.41.patch
#Patch14: Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch
Patch15: Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch
%{upgrade_dep %pname}
Requires: %{name}-config = %{version}
%if 0%{?have_boolean_deps}
Requires: (%{name}-munge = %version if munge)
%else
Recommends: %{name}-munge = %version
%endif
Requires(pre): %{name}-node = %{version}
Recommends: %{name}-config-man = %{version}
Recommends: %{name}-doc = %{version}
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: coreutils
BuildRequires: fdupes
%{?have_firewalld:BuildRequires: firewalld}
BuildRequires: gcc-c++
BuildRequires: gtk2-devel
%if 0%{?have_hdf5}
BuildRequires: hdf5-devel
%endif
BuildRequires: libbitmask-devel
BuildRequires: libcpuset-devel
BuildRequires: python%{?python_ver}
%if 0%{?have_libnuma}
BuildRequires: libnuma-devel
%endif
BuildRequires: mysql-devel >= 5.0.0
BuildRequires: ncurses-devel
%{?with_pmix:BuildRequires: pmix-devel}
BuildRequires: openssl-devel >= 0.9.6
BuildRequires: pkgconfig
BuildRequires: readline-devel
%if 0%{?suse_version} > 1310 || 0%{?sle_version}
%if 0%{?sle_version} >= 120400 && 0%{?sle_version} < 150000
BuildRequires: infiniband-diags-devel
%else
BuildRequires: libibmad-devel
%endif
BuildRequires: libibumad-devel
%endif
%if 0%{?suse_version} > 1140
BuildRequires: libhwloc-devel
%ifarch %{ix86} x86_64
BuildRequires: freeipmi-devel
%endif
%endif
BuildRequires: libcurl-devel
BuildRequires: libjson-c-devel
%if 0%{?have_lz4}
BuildRequires: liblz4-devel
%endif
BuildRequires: libssh2-devel
BuildRequires: libyaml-devel
BuildRequires: rrdtool-devel
%{?have_sysuser:BuildRequires: sysuser-tools}
%{?systemd_ordering}
BuildRequires: dejagnu
BuildRequires: zlib-devel
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(systemd)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Obsoletes: slurm-sched-wiki < %{version}
Obsoletes: slurmdb-direct < %{version}
%description
SLURM is a fault-tolerant scalable cluster management and job
scheduling system for Linux clusters containing up to 65,536 nodes.
Components include machine status, partition management, job
management, scheduling and accounting modules.
%package doc
Summary: Documentation for SLURM
Group: Documentation/HTML
BuildArch: noarch
%{upgrade_dep %{pname}-doc}
%{base_conflicts %{pname}-config}
%package webdoc
Summary: Set up SLURM Documentation Server
Group: Productivity/Clustering/Computing
BuildArch: noarch
%if 0%{?have_apache_rpm_macros}
BuildRequires: apache-rpm-macros
%else
%define apache_sysconfdir /etc/apache2
%endif
Requires: slurm-doc = %{version}
Requires(pre): apache2
%{upgrade_dep %{pname}-webdoc}
%description webdoc
Set up HTTP server for SLURM configuration.
%description doc
Documentation (HTML) for the SLURM cluster managment software.
%package -n perl-%{name}
Summary: Perl API to SLURM
Group: Development/Languages/Perl
Requires: %{name} = %{version}
%if 0%{?suse_version} < 1140
Requires: perl = %{perl_version}
%else
%{libperl_requires}
%{perl_requires}
%endif
%{upgrade_dep perl-%{pname}}
%description -n perl-%{name}
This package includes the Perl API to provide an interface to SLURM
through Perl.
%package -n %{libslurm}
# the .so number of libslurm is bumped with each major release
# therefore no need for a version string for Leap/SLE upgrade packages
Summary: Libraries for SLURM
Group: System/Libraries
Requires: %{name}-config
Conflicts: %{name}-config < %{ver_major}
Conflicts: %{name}-config > %{ver_major}.99
Provides: libslurm = %{version}
Conflicts: libslurm
%description -n %{libslurm}
This package contains the library needed to run programs dynamically linked
with SLURM.
%package -n libpmi%{pmi_so}%{?upgrade:%{_ver}}
Summary: SLURM PMI Library
Group: System/Libraries
%{upgrade_dep libpmi%{pmi_so}}
%description -n libpmi%{pmi_so}%{?upgrade:%{_ver}}
This package contains the library needed to run programs dynamically linked
with SLURM.
%package -n libnss_%{pname}%{nss_so}%{?upgrade:%{_ver}}
Summary: NSS Plugin for SLURM
Group: System/Libraries
%{upgrade_dep libnss_%{pname}%{nss_so}}
%description -n libnss_%{pname}%{nss_so}%{?upgrade:%{_ver}}
libnss_slurm is an optional NSS plugin that permits password and group
resolution for a job on a compute node to be serviced through the local
slurmstepd process.
%package devel
Summary: Development package for SLURM
Group: Development/Libraries/C and C++
Requires: %{libslurm} = %{version}
Requires: %{name} = %{version}
Requires: libpmi%{pmi_so}%{?upgrade:%{_ver}} = %{version}
%{upgrade_dep %{pname}-devel}
%description devel
This package includes the header files for the SLURM API.
%package auth-none
Summary: SLURM auth NULL implementation (no authentication)
Group: Productivity/Clustering/Computing
Requires: %{name} = %{version}
%{upgrade_dep %{pname}-auth-none}
%description auth-none
This package cobtains the SLURM NULL authentication module.
%package munge
Summary: SLURM authentication and crypto implementation using Munge
Group: Productivity/Clustering/Computing
Requires: %{name}-plugins = %{version}
Requires: munge
BuildRequires: munge-devel
Obsoletes: %{name}-auth-munge < %{version}
Provides: %{name}-auth-munge = %{version}
%{upgrade_dep %{pname}-munge}
%description munge
This package contains the SLURM authentication module for Chris Dunlap's Munge.
%package sview
Summary: SLURM graphical interface
Group: Productivity/Clustering/Computing
Requires: %{name}-plugins = %version
%{upgrade_dep %{pname}-sview}
%description sview
sview is a graphical user interface to get and update state information for
jobs, partitions, and nodes managed by SLURM.
%package slurmdbd
Summary: SLURM database daemon
Group: Productivity/Clustering/Computing
Requires: %{name}-config = %{version}
Requires: %{name}-plugins = %{version}
Requires: %{name}-sql = %{version}
%if 0%{?suse_version} > 1310
Recommends: mariadb
%endif
%if 0%{?have_boolean_deps}
Recommends: (%{name}-munge = %version if munge)
%else
Recommends: %{name}-munge = %version
%endif
%{?systemd_ordering}
Obsoletes: slurm-sched-wiki < %{version}
Obsoletes: slurmdb-direct < %{version}
%{upgrade_dep %{pname}-slurmdbd}
%description slurmdbd
The SLURM database daemon provides accounting of jobs in a database.
%package sql
Summary: Slurm SQL support
Group: Productivity/Clustering/Computing
%{upgrade_dep %{pname}-sql}
%description sql
Contains interfaces to MySQL for use by SLURM.
%package plugins
Summary: SLURM plugins (loadable shared objects)
Group: Productivity/Clustering/Computing
%{upgrade_dep %{pname}-plugins}
%if %{with pmix}
Requires: libpmix%{pmix_so}
Requires: pmix
%endif
Requires: %{name}-config = %{version}
%description plugins
This package contains the SLURM plugins (loadable shared objects)
%package plugin-ext-sensors-rrd
Summary: SLURM ext_sensors/rrd Plugin (loadable shared objects)
Group: Productivity/Clustering/Computing
Requires: %{name}-plugins = %{version}
%{upgrade_dep %{pname}-plugin-ext-sensors-rrd}
# file was moved from slurm-plugins to here
Conflicts: %{pname}-plugins < %{version}
%description plugin-ext-sensors-rrd
This package contains the ext_sensors/rrd plugin used to read data
using RRD, a tool that creates and manages a linear database for
sampling and logging data.
%package torque
Summary: Wrappers for transitition from Torque/PBS to SLURM
Group: Productivity/Clustering/Computing
Requires: perl-%{name} = %{version}
Requires: perl-Switch
Provides: torque-client
Requires: %{name}-plugins = %{version}
%{upgrade_dep %{pname}-torque}
%description torque
Wrapper scripts for aiding migration from Torque/PBS to SLURM.
%package openlava
Summary: Wrappers for transitition from OpenLava/LSF to Slurm
Group: Productivity/Clustering/Computing
Requires: perl-%{name} = %{version}
BuildArch: noarch
%{upgrade_dep %{pname}-openlava}
%description openlava
Wrapper scripts for aiding migration from OpenLava/LSF to Slurm
%package seff
Summary: Mail tool that includes job statistics in user notification email
Group: Productivity/Clustering/Computing
Requires: perl-%{name} = %{version}
BuildArch: noarch
%{upgrade_dep %{pname}-seff}
%description seff
Mail program used directly by the SLURM daemons. On completion of a job,
it waits for accounting information to be available and includes that
information in the email body.
%package sjstat
Summary: Perl tool to print SLURM job state information
Group: Productivity/Clustering/Computing
Requires: %{name} = %{version}
BuildArch: noarch
%{upgrade_dep %{pname}-sjstat}
%if 0%{?suse_version} < 1140
Requires: perl = %{perl_version}
%else
%{perl_requires}
%endif
%description sjstat
This package contains a Perl tool to print SLURM job state information.
%package pam_slurm
Summary: PAM module for restricting access to compute nodes via SLURM
Group: Productivity/Clustering/Computing
Requires: %{name}-node = %{version}
%{upgrade_dep %{pname}-pam_slurm}
BuildRequires: pam-devel
%description pam_slurm
This module restricts access to compute nodes in a cluster where the Simple
Linux Utility for Resource Managment (SLURM) is in use. Access is granted
to root, any user with an SLURM-launched job currently running on the node,
or any user who has allocated resources on the node according to the SLURM.
%package lua
Summary: Lua API for SLURM
Group: Development/Languages/Other
Requires: %{name} = %{version}
%{upgrade_dep %{pname}-lua}
BuildRequires: lua-devel
%description lua
This package includes the Lua API to provide an interface to SLURM
through Lua.
%package rest
Summary: Slurm REST API Interface
Group: Productivity/Clustering/Computing
Requires: %{name}-config = %{version}
%if 0%{?have_http_parser}
BuildRequires: http-parser-devel
%endif
%if 0%{?have_boolean_deps}
Recommends: (%{name}-munge = %version if munge)
%else
Recommends: %{name}-munge = %version
%endif
%{upgrade_dep %{pname}-rest}
%description rest
This package provides the interface to SLURM via REST API.
%package node
Summary: Minimal slurm node
Group: Productivity/Clustering/Computing
Requires: %{name}-config = %{version}
Requires: %{name}-plugins = %{version}
%if 0%{?have_boolean_deps}
Recommends: (%{name}-munge = %version if munge)
%else
Recommends: %{name}-munge = %version
%endif
%{?with_pmix:Recommends: pmix-devel}
%{?systemd_ordering}
%{upgrade_dep %{pname}-node}
%description node
This package contains just the minmal code to run a compute node.
%package config
Summary: Config files and directories for slurm services
Group: Productivity/Clustering/Computing
Requires: logrotate
BuildArch: noarch
%if 0%{?suse_version} <= 1140
Requires(pre): pwdutils
%else
Requires(pre): shadow
%endif
%{?systemd_ordering}
%{upgrade_dep %{pname}-config}
%description config
This package contains the slurm config files necessary direcories
for the slurm daemons.
%package config-man
Summary: Config files and directories for slurm services
Group: Documentation/Man
BuildArch: noarch
%{upgrade_dep %{pname}-config-man}
%{base_conflicts %{pname}-config}
%description config-man
Man pages for the SLURM cluster managment software config files.
%package hdf5
Summary: Store accounting data in hdf5
Group: Productivity/Clustering/Computing
%{upgrade_dep %{pname}-hdf5}
Requires: %{name}-plugins = %version
%description hdf5
Plugin to store accounting in the hdf5 file format. This plugin has to be
activated in the slurm configuration. Includes also utility the program
sh5utils to merge this hdf5 files or extract data from them.
%package cray
Summary: Cray specific plugins
Group: Productivity/Clustering/Computing
%{upgrade_dep %{pname}-cray}
%description cray
Plugins for specific cray hardware, includes power and knl node management.
Contains also cray specific documentation.
# Certain packages are not shipped with SLE.
%define ts_depends %{?sle_version:Recommends}%{!?sle_version:Requires}
%package testsuite
Summary: Regression tests from Slurm sources
Group: Productivity/Clustering/Computing
%{upgrade_dep %{pname}-testsuite}
Requires: %{name} = %version
Requires: %{name}-auth-none = %version
Requires: %{name}-cray = %version
Requires: %{name}-devel = %version
%{?have_hdf5:%ts_depends: %{name}-hdf5 = %version}
Requires: %{name}-lua = %version
Requires: %{name}-munge = %version
Requires: %{name}-node = %version
Requires: %{name}-openlava = %version
Requires: %{name}-rest = %version
Requires: %{name}-seff = %version
Requires: %{name}-sjstat = %version
Requires: %{name}-slurmdbd = %version
Requires: %{name}-sql = %version
Requires: %{name}-torque = %version
Requires: mariadb
%{?with_pmix:Requires: pmix-devel}
Requires: bind-utils
Requires: bzip2
Requires: expect
Requires: gcc-c++
Requires: libnuma-devel
%ts_depends: openmpi4-gnu-hpc-devel
Requires: pam
Requires: pdsh
Requires: perl-%{name} = %version
Requires: sudo
Requires: tar
BuildRequires: sudo
%description testsuite
NOTE: THIS PACKAGE IS FOR TESTING PURPOSES ONLY. IT REQUIRES A
DEDICATED TESTING ENVIRONMENT.
DO NOT INSTALL ON A PRODUCTION SYSTEM!
Slurm provides a test set implemented as 'expect' scripts.
Not all of the tests are expected to pass, some require a modified
configuration. This test package is meant for internal purposes.
Do not run test suite and file bug reports for each failed test!
%prep
%setup -q -n %{pname}-%{dl_ver}
%autopatch -p1
%if 0%{?python_ver} < 3
# Workaround for wrongly flagged python3 to keep SLE-11-SP4 building
mkdir -p mybin; ln -s /usr/bin/python2 mybin/python3
%endif
%build
# needed as slurm works that way bsc#1200030
export SUSE_ZNOW=0
# To make stripped object files work which we ship in the
# testsuite package we need to build with -ffat-lto-objects.
# This should not affect anything as we do not ship static
# libraries and object files - except for the testsuite.
%if "%{?_lto_cflags}" != ""
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%endif
autoreconf
[ -e $(pwd)/mybin ] && PATH=$(pwd)/mybin:$PATH
%if 0%{?suse_version} < 1500
export CFLAGS="-std=gnu99 %optflags"
%endif
%configure --enable-shared \
--disable-static \
--without-rpath \
--without-datawarp \
--with-shared-libslurm \
--with-pam_dir=%_pam_moduledir \
%{?with_pmix:--with-pmix=%_prefix/} \
%if 0%{!?build_slurmrestd:1}
--disable-slurmrestd \
%endif
--with-yaml \
%{!?have_netloc:--without-netloc} \
--sysconfdir=%{_sysconfdir}/%{pname} \
%{!?have_hdf5:--without-hdf5} \
%{!?have_lz4:--without-lz4}
make %{?_smp_mflags}
%install
[ -e $(pwd)/mybin ] && PATH=$(pwd)/mybin:$PATH
%make_install
make install-contrib DESTDIR=%{buildroot} PERL_MM_PARAMS="INSTALLDIRS=vendor"
mkdir -p %{buildroot}%{_unitdir}
install -p -m644 etc/slurmd.service etc/slurmdbd.service etc/slurmctld.service %{buildroot}%{_unitdir}
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcslurmd
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcslurmdbd
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcslurmctld
%if 0%{?build_slurmrestd}
install -p -m644 etc/slurmrestd.service %{buildroot}%{_unitdir}
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcslurmrestd
%endif
install -d -m 0755 %{buildroot}/%{_tmpfilesdir}/
cat <<-EOF > %{buildroot}/%{_tmpfilesdir}/%{pname}.conf
# Create a directory with permissions 0700 owned by user slurm, group slurm
d %{_rundir}/slurm 0700 slurm slurm
EOF
chmod 0644 %{buildroot}/%{_tmpfilesdir}/%{pname}.conf
mkdir -p %{buildroot}%{_localstatedir}/spool/slurm
install -D -m644 etc/cgroup.conf.example %{buildroot}/%{_sysconfdir}/%{pname}/cgroup.conf
install -D -m644 etc/slurm.conf.example %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf.example
install -D -m600 etc/slurmdbd.conf.example %{buildroot}/%{_sysconfdir}/%{pname}/slurmdbd.conf
install -D -m755 contribs/sjstat %{buildroot}%{_bindir}/sjstat
install -D -m755 contribs/sgather/sgather %{buildroot}%{_bindir}/sgather
%if 0%{?have_firewalld}
install -D -m644 %{S:10} %{buildroot}/%{_prefix}/lib/firewalld/services/slurmd.xml
install -D -m644 %{S:11} %{buildroot}/%{_prefix}/lib/firewalld/services/slurmctld.xml
install -D -m644 %{S:12} %{buildroot}/%{_prefix}/lib/firewalld/services/slurmdbd.xml
%endif
cat <<EOF >%{buildroot}%{_sysconfdir}/%{pname}/plugstack.conf
include %{_sysconfdir}/%{pname}/plugstack.conf.d/*.conf
EOF
mkdir -p %{buildroot}%{_sysconfdir}/%{pname}/plugstack.conf.d
cp contribs/pam_slurm_adopt/README ../README.pam_slurm_adopt
cp contribs/pam/README ../README.pam_slurm
# remove static pam libs
rm -v %{buildroot}%{_pam_moduledir}/*la
# change slurm.conf for our needs
head -n -2 %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf.example | grep -v ReturnToService > %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
sed -i 's#\(StateSaveLocation=\).*#\1%_localstatedir/lib/slurm#' %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
sed -i 's#^\(SlurmdPidFile=\).*$#\1%{_localstatedir}/run/slurm/slurmd.pid#' %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
sed -i 's#^\(SlurmctldPidFile=\).*$#\1%{_localstatedir}/run/slurm/slurmctld.pid#' %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
sed -i 's#^\(SlurmdSpoolDir=\)/.*#\1%{_localstatedir}/spool/slurm#' %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
sed -i -e '/^ControlMachine=/i# Ordered List of Control Nodes' \
-e 's#ControlMachine=\(.*\)$#SlurmctldHost=\1(10.0.10.20)#' \
-e 's#BackupController=.*#SlurmctldHost=linux1(10.0.10.21)#' \
-e '/.*ControlAddr=.*/d' \
-e '/.*BackupAddr=.*/d' %{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf
cat >>%{buildroot}/%{_sysconfdir}/%{pname}/slurm.conf <<EOF
# Potential exploit mitigation CVE-2022-29500
# When upgrading from a version without this fix
# enable only after all daemons have been upgraded
CommunicationParameters=block_null_hash
# SUSE default configuration
PropagateResourceLimitsExcept=MEMLOCK
NodeName=linux State=UNKNOWN
PartitionName=normal Nodes=linux Default=YES MaxTime=24:00:00 State=UP
EOF
# change slurmdbd.conf for our needs
sed -i 's@LogFile=/var/log/slurm/slurmdbd.log@LogFile=/var/log/slurmdbd.log@'\
%{buildroot}/%{_sysconfdir}/%{pname}/slurmdbd.conf
sed -i -e "s@PidFile=.*@PidFile=%{_localstatedir}/run/slurm/slurmdbd.pid@" \
%{buildroot}/%{_sysconfdir}/%{pname}/slurmdbd.conf
# manage local state dir and a remote states save location
mkdir -p %{buildroot}/%_localstatedir/lib/slurm
sed -i -e "s@PIDFile=.*@PIDFile=%{_localstatedir}/run/slurm/slurmctld.pid@" \
-e "s@After=.*@After=network.target munge.service remote-fs.target@" \
%{buildroot}/%{_unitdir}/slurmctld.service
sed -i -e "s@PIDFile=.*@PIDFile=%{_localstatedir}/run/slurm/slurmd.pid@" \
%{buildroot}/%{_unitdir}/slurmd.service
sed -i -e "s@PIDFile=.*@PIDFile=%{_localstatedir}/run/slurm/slurmdbd.pid@" \
-e 's@After=\(.*\)@After=\1 mariadb.service@' \
%{buildroot}/%{_unitdir}/slurmdbd.service
htmldir=%{buildroot}/%{_datadir}/doc/slurm-%{ver}/html
sed -e '/name=\"state_save_location\"/s@value=\".*\"@value=\"%{_localstatedir}/lib/slurm\"@' \
-e '/name=\"slurmd_pid_file\"/s@value=\".*\"@value=\"%{_localstatedir}/run/slurm/slurmd.pid\"@' \
-e '/name=\"slurmctld_pid_file\"/s@value=\".*\"@value=\"%{_localstatedir}/run/slurm/slurmctld.pid\"@' \
-e '/name=\"slurmd_spool_dir\"/s@value=\".*\"@value=\"%{_localstatedir}/spool/slurm\"@' \
-i ${htmldir}/configurator.html -i ${htmldir}/configurator.easy.html
%if 0%{?have_sysuser}
[ -e /usr/bin/bash ] && BASH_BIN=/usr/bin/bash || BASH_BIN=/bin/bash
echo "u %slurm_u %{slurm_uid} \"%slurmdescr\" %{slurmdir} ${BASH_BIN}" > system-user-%{pname}.conf
%sysusers_generate_pre system-user-%{pname}.conf %{pname} system-user-%{pname}.conf
install -D -m 644 system-user-%{pname}.conf %{buildroot}%{_sysusersdir}/system-user-%{pname}.conf
%endif
# Delete static files:
rm -rf %{buildroot}/%{_libdir}/slurm/*.{a,la} \
%{buildroot}/%{_libdir}/*.la \
%{buildroot}/%_lib/security/*.la
rm %{buildroot}/%{perl_archlib}/perllocal.pod \
%{buildroot}/%{perl_vendorarch}/auto/Slurm/.packlist \
%{buildroot}/%{perl_vendorarch}/auto/Slurmdb/.packlist
# Remove Cray specific binaries
rm -f %{buildroot}/%{_sbindir}/capmc_suspend \
%{buildroot}/%{_sbindir}/capmc_resume
# Build man pages that are generated directly by the tools
%{buildroot}%{_bindir}/sjobexitmod --roff > %{buildroot}/%{_mandir}/man1/sjobexitmod.1
%{buildroot}%{_bindir}/sjstat --roff > %{buildroot}/%{_mandir}/man1/sjstat.1
# avoid conflicts with other packages, make wrapper unique
mv %{buildroot}/%{_bindir}/mpiexec %{buildroot}/%{_bindir}/mpiexec.slurm
mkdir -p %{buildroot}/etc/ld.so.conf.d
echo '%{_libdir}/slurm' > %{buildroot}/etc/ld.so.conf.d/slurm.conf
chmod 644 %{buildroot}/etc/ld.so.conf.d/slurm.conf
# Make pkg-config file
mkdir -p %{buildroot}/%{_libdir}/pkgconfig
cat > %{buildroot}/%{_libdir}/pkgconfig/slurm.pc <<EOF
includedir=%{_prefix}/include
libdir=%{_libdir}
Cflags: -I\${includedir}
Libs: -L\${libdir} -lslurm
Description: Slurm API
Name: %{pname}
Version: %{version}
EOF
# Enable rotation of log files
mkdir -p %{buildroot}/%{_sysconfdir}/logrotate.d/
for service in slurmd slurmctld slurmdbd ; do
cat <<EOF > %{buildroot}/%{_sysconfdir}/logrotate.d/${service}.conf
/var/log/${service}.log {
compress
dateext
missingok
nocreate
notifempty
maxage 365
rotate 99
copytruncate
postrotate
pgrep ${service} && killall -SIGUSR2 ${service} || exit 0
endscript
}
EOF
done
mkdir -p %{buildroot}/%{apache_sysconfdir}/conf.d
cat > %{buildroot}/%{apache_sysconfdir}/conf.d/slurm.conf <<EOF
Alias /slurm/ "%{_datadir}/doc/slurm-%{ver}/html/"
<Directory "%{_datadir}/doc/slurm-%{ver}/html/">
AllowOverride None
DirectoryIndex slurm.html
# Controls who can get stuff from this server.
<IfModule !mod_access_compat.c>
Require all granted
</IfModule>
<IfModule mod_access_compat.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
EOF
cat > %{buildroot}/%{_sysconfdir}/%{pname}/nss_slurm.conf <<EOF
## Optional config for libnss_slurm
## Specify if different from default
# SlurmdSpoolDir /var/spool/slurmd
## Specify if does not match hostname
# NodeName myname
EOF
# Install testsuite
%if 0%{?slurm_testsuite}
# bug in testsuite
ln -sf %{_libdir}/libslurm.so %{buildroot}%{_libdir}/slurm/libslurm.so
mkdir -p %{buildroot}/srv/slurm-testsuite
cd testsuite/expect
filelist="$(grep '#include' *.c | sed -ne 's/.*:#include *\"\([^\"]*\)\".*/\1/p' | sort | uniq)"
while true; do
oldfilelist=$filelist; tlist=""
for i in $filelist; do
nlist=" $(grep '#include' ../../$i | sed -ne 's/#include *\"\([^\"]*\)\".*/\1/p')"
tlist+=" $(for j in $nlist; do [ -e ../../$j ] && echo $j || true; done)"
done
filelist="$(for i in $filelist $tlist; do echo $i; done | sort | uniq)"
[ "$filelist" = "$oldfilelist" ] && break
done
filelist+=" $(grep -Ehor '\{*build_dir\}*[^ ]*\.[oa]' | sed -e "s@{*build_dir}*/@@" | sort | uniq)"
cd -
newlist=""
for i in $filelist; do
dir=$(dirname $i)
[ -d %{buildroot}/srv/slurm-testsuite/$dir ] || mkdir -p %{buildroot}/srv/slurm-testsuite/$dir
cp -a $i %{buildroot}/srv/slurm-testsuite/$dir/
done
mkdir -p %{buildroot}/srv/slurm-testsuite/testsuite/expect
cp -ax testsuite/expect %{buildroot}/srv/slurm-testsuite/testsuite/
cat > %{buildroot}/srv/slurm-testsuite/testsuite/expect/globals.local <<EOF
set slurm_dir "/usr"
set build_dir "/srv/slurm-testsuite"
set src_dir "/srv/slurm-testsuite"
if {[ catch { set mpicc [ exec which mpicc 2>/dev/null ]}]} {
set mpicc ""
}
set testsuite_user "auser"
#set testsuite_cleanup_on_failure false
EOF
mkdir -p %{buildroot}/srv/slurm-testsuite/shared
mkdir -p %{buildroot}%_localstatedir/lib/slurm/shared
cd %{buildroot}/srv/slurm-testsuite
find -type f -name "*.[ao]" -print | while read f; do
# drop non-deterministic lto bits from .o files
strip -p --discard-locals -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 $f
done
%if 0%{?suse_version} >= 1500
%define tar_sort --sort=name
%endif
tar --group=%slurm_g --owner=%slurm_u \
%{?tar_sort} --mtime="@${SOURCE_DATE_EPOCH:-`date +%%s`}" --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
-cjf /tmp/slurmtest.tar.bz2 *
cd -
rm -rf %{buildroot}/srv/slurm-testsuite
mkdir -p %{buildroot}/srv/slurm-testsuite
mkdir -p %{buildroot}/%{_datadir}/%{name}
mv /tmp/slurmtest.tar.bz2 %{buildroot}/%{_datadir}/%{name}
mkdir -p %{buildroot}/etc/sudoers.d
echo "slurm ALL=(auser) NOPASSWD:ALL" > %{buildroot}/etc/sudoers.d/slurm
chmod 0440 %{buildroot}/etc/sudoers.d/slurm
SLURMD_SERVICE=%{buildroot}%_sysconfdir/systemd/system/slurmd.service
mkdir -p `dirname $SLURMD_SERVICE`
cp %{buildroot}/%_unitdir/slurmd.service $SLURMD_SERVICE
if grep -qE "^LimitNPROC" $SLURMD_SERVICE; then
sed -i -e '/LimitNPROC/s@=.*@=infinity@' $SLURMD_SERVICE
else
sed -i -e '/LimitSTACK/aLimitNPROC=infinity' $SLURMD_SERVICE
fi
if grep -qE "^LimitNOFILE" $SLURMD_SERVICE; then
sed -i -e '/LimitNOFILE/s@=.*@=131072:infinity@' $SLURMD_SERVICE
else
sed -i -e '/LimitSTACK/aLimitNOFILE=131072:infinity' $SLURMD_SERVICE
fi
sed -i -e '/ExecStart/aExecStartPre=/bin/bash -c "for i in 0 1 2 3; do test -e /dev/nvidia$i || mknod /dev/nvidia$i c 10 $((i+2)); done"' $SLURMD_SERVICE
tar -xzf %{S:20}
mkdir -p %{buildroot}%{_pam_secconfdir}/limits.d
mv test_setup/slurm.conf.limits %{buildroot}%_pam_secconfdir/limits.d/slurm.conf
%if 0%{?sle_version} < 150200
sed -i -e '/hard[[:space:]]*nofile/s@unlimited@1048576@' %{buildroot}%_pam_secconfdir/limits.d/slurm.conf
%endif
mkdir -p %{buildroot}/root
mv test_setup/setup-testsuite.sh %{buildroot}/root
mkdir -p %{buildroot}/srv/slurm-testsuite/config/plugstack.conf.d
cp %{S:21} .
%endif
%fdupes -s %{buildroot}
# For testsuite - do after fdupes!
[ -d test_setup -a -d %{buildroot}/srv/slurm-testsuite/config ] && \
mv test_setup/* %{buildroot}/srv/slurm-testsuite/config
# Temporary - remove when build is fixed upstream.
%if !0%{?build_slurmrestd}
rm -f %{buildroot}%{_mandir}/man8/slurmrestd.*
rm -f %{buildroot}%{_libdir}/slurm/openapi_*.so
rm -f %{buildroot}%{_libdir}/slurm/rest_auth_*.so
%endif
%check
%{!?nocheck:make check}
%define fixperm() [ $1 -eq 1 -a -e %2 ] && /bin/chmod %1 %2
%if 0%{!?service_del_postun_without_restart:1}
%define service_del_postun_without_restart() %{expand:%%service_del_postun -n %{**}}
%endif
%pre
%service_add_pre slurmctld.service
%post
%service_add_post slurmctld.service
%preun
%service_del_preun slurmctld.service
%postun
%service_del_postun_without_restart slurmctld.service
%pre slurmdbd
%service_add_pre slurmdbd.service
%post slurmdbd
%{fixperm 0600 %{_sysconfdir}/%{pname}/slurmdbd.conf}
%{fixperm 0600 %{_sysconfdir}/%{pname}/slurmdbd.conf.example}
%service_add_post slurmdbd.service
%preun slurmdbd
%service_del_preun slurmdbd.service
%postun slurmdbd
%{fixperm 0600 %{_sysconfdir}/%{pname}/slurmdbd.conf}
%{fixperm 0600 %{_sysconfdir}/%{pname}/slurmdbd.conf.example}
%service_del_postun_without_restart slurmdbd.service
%pre node
%service_add_pre slurmd.service
%post node
%service_add_post slurmd.service
%preun node
%service_del_preun slurmd.service
%postun node
%service_del_postun_without_restart slurmd.service
%pre rest
%service_add_pre slurmrestd.service
%post rest
%service_add_post slurmrestd.service
%preun rest
%service_del_preun slurmrestd.service
%postun rest
%service_add_pre slurmrestd.service
%pre config %{?have_sysuser:-f %{pname}.pre}
%if 0%{!?have_sysuser:1}
getent group %slurm_g >/dev/null || groupadd -r %slurm_g
getent passwd %slurm_u >/dev/null || useradd -r -g %slurm_g -d %slurmdir -s /bin/bash -c %{slurmdescr} %slurm_u
[ -d %{_localstatedir}/spool/slurm ] && /bin/chown -h %slurm_u:%slurm_g %{_localstatedir}/spool/slurm
exit 0
%endif
%post config
%if 0%{?tmpfiles_create:1}
%tmpfiles_create slurm.conf
%else
systemd-tmpfiles --create slurm.conf
%endif
%post -n %{libslurm} -p /sbin/ldconfig
%postun -n %{libslurm} -p /sbin/ldconfig
%post -n libpmi%{pmi_so}%{?upgrade:%{_ver}} -p /sbin/ldconfig
%postun -n libpmi%{pmi_so}%{?upgrade:%{_ver}} -p /sbin/ldconfig
%post -n libnss_%{pname}%{nss_so}%{?upgrade:%{_ver}} -p /sbin/ldconfig
%postun -n libnss_%{pname}%{nss_so}%{?upgrade:%{_ver}} -p /sbin/ldconfig
%post testsuite
rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite /srv/slurm-testsuite/config.h
runuser -u %slurm_u -- tar --same-owner -C /srv/slurm-testsuite -xjf %{_datadir}/%{name}/slurmtest.tar.bz2
%preun testsuite
rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
/srv/slurm-testsuite/slurm /srv/slurm-testsuite/shared \
/srv/slurm-testsuite/config.h
%if 0%{!?_restart_on_update:1}
%define _restart_on_update() %{?nil: [ $1 -ge 1 ] && { DISABLE_RESTART_ON_UPDATE=no; \
[ -e /etc/sysconfig/services ] && . /etc/sysconfig/services || : \
case "$DISABLE_RESTART_ON_UPDATE" in \
yes|1) ;; \
*) /usr/bin/systemctl try-restart %{*} || : ;; \
esac; } \
}
%endif
%posttrans
%_restart_on_update slurmctld
%posttrans node
%_restart_on_update slurmd
%posttrans slurmdbd
%_restart_on_update slurmdbd
%posttrans rest
%_restart_on_update slurmrestd
%if 0%{?sle_version} > 120200 || 0%{?suse_version} > 1320
%define my_license %license
%else
%define my_license %doc
%endif
%files
%doc AUTHORS NEWS RELEASE_NOTES DISCLAIMER
%my_license COPYING
%{_bindir}/sacct
%{_bindir}/sacctmgr
%{_bindir}/salloc
%{_bindir}/sattach
%{_bindir}/sbatch
%{_bindir}/sbcast
%{_bindir}/scancel
%{_bindir}/scrontab
%{_bindir}/scontrol
%{_bindir}/sdiag
%{_bindir}/sgather
%{_bindir}/sinfo
%{_bindir}/sjobexitmod
%{_bindir}/sprio
%{_bindir}/squeue
%{_bindir}/sreport
%{_bindir}/sshare
%{_bindir}/sstat
%{_bindir}/strigger
%{?have_netloc:%{_bindir}/netloc_to_topology}
%{_sbindir}/sackd
%{_sbindir}/slurmctld
%{_sbindir}/slurmsmwd
%dir %{_libdir}/slurm/src
%{_unitdir}/slurmctld.service
%{_sbindir}/rcslurmctld
%{_mandir}/man1/sacct.1*
%{_mandir}/man1/sacctmgr.1*
%{_mandir}/man1/salloc.1*
%{_mandir}/man1/sattach.1*
%{_mandir}/man1/sbatch.1*
%{_mandir}/man1/sbcast.1*
%{_mandir}/man1/scancel.1*
%{_mandir}/man1/scrontab.1*
%{_mandir}/man1/scontrol.1*
%{_mandir}/man1/sdiag.1.*
%{_mandir}/man1/sgather.1.*
%{_mandir}/man1/sinfo.1*
%{_mandir}/man1/slurm.1*
%{_mandir}/man1/sprio.1*
%{_mandir}/man1/squeue.1*
%{_mandir}/man1/sreport.1*
%{_mandir}/man1/sshare.1*
%{_mandir}/man1/sstat.1*
%{_mandir}/man1/strigger.1*
%{_mandir}/man1/sjobexitmod.1.*
%{_mandir}/man1/sjstat.1.*
%{_mandir}/man8/slurmctld.*
%{_mandir}/man8/spank.*
%{_mandir}/man8/sackd.*
%files openlava
%{_bindir}/bjobs
%{_bindir}/bkill
%{_bindir}/bsub
%{_bindir}/lsid
%files seff
%{_bindir}/seff
%{_bindir}/smail
%files doc
%dir %{_datadir}/doc/%{pname}-%{version}%{?rc_v:-%rc_v}
%{_datadir}/doc/%{pname}-%{version}%{?rc_v:-%rc_v}/*
%files webdoc
%config %{apache_sysconfdir}/conf.d/slurm.conf
%files -n %{libslurm}
%{_libdir}/libslurm*.so.%{so_version}*
%files -n libpmi%{pmi_so}%{?upgrade:%{_ver}}
%{_libdir}/libpmi*.so.%{pmi_so}*
%files -n libnss_%{pname}%{nss_so}%{?upgrade:%{_ver}}
%config(noreplace) %{_sysconfdir}/%{pname}/nss_slurm.conf
%{_libdir}/libnss_slurm.so.%{nss_so}
%files devel
%{_prefix}/include/slurm
%{_libdir}/libpmi.so
%{_libdir}/libpmi2.so
%{_libdir}/libslurm.so
%{_libdir}/slurm/src/*
%{_libdir}/pkgconfig/slurm.pc
%files sview
%{_bindir}/sview
%{_mandir}/man1/sview.1*
%files auth-none
%{_libdir}/slurm/auth_none.so
%files munge
%{_libdir}/slurm/auth_munge.so
%{_libdir}/slurm/cred_munge.so
%files -n perl-%{name}
%{perl_vendorarch}/Slurm.pm
%{perl_vendorarch}/Slurm
%{perl_vendorarch}/auto/Slurm
%{perl_vendorarch}/Slurmdb.pm
%{perl_vendorarch}/auto/Slurmdb
%{_mandir}/man3/Slurm*.3pm.*
%files slurmdbd
%{_sbindir}/slurmdbd
%{_mandir}/man5/slurmdbd.*
%{_mandir}/man8/slurmdbd.*
%config(noreplace) %attr(0600,%slurm_u,%slurm_g) %{_sysconfdir}/%{pname}/slurmdbd.conf
%{_unitdir}/slurmdbd.service
%{_sbindir}/rcslurmdbd
%files sql
%dir %{_libdir}/slurm
%{_libdir}/slurm/accounting_storage_mysql.so
%{_libdir}/slurm/jobcomp_mysql.so
%files plugins
%config %{_sysconfdir}/ld.so.conf.d/slurm.conf
%config(noreplace) %{_sysconfdir}/%{pname}/plugstack.conf
%dir %{_sysconfdir}/%{pname}/plugstack.conf.d
%dir %{_libdir}/slurm
%{_libdir}/slurm/libslurmfull.so
%{_libdir}/slurm/accounting_storage_slurmdbd.so
%{_libdir}/slurm/acct_gather_energy_pm_counters.so
%{_libdir}/slurm/acct_gather_energy_gpu.so
%{_libdir}/slurm/acct_gather_energy_ibmaem.so
%{_libdir}/slurm/acct_gather_energy_rapl.so
%{_libdir}/slurm/acct_gather_interconnect_sysfs.so
%{_libdir}/slurm/acct_gather_filesystem_lustre.so
%{_libdir}/slurm/burst_buffer_lua.so
%{_libdir}/slurm/burst_buffer_datawarp.so
%{_libdir}/slurm/data_parser_v0_0_40.so
%{_libdir}/slurm/data_parser_v0_0_39.so
%{_libdir}/slurm/cgroup_v1.so
%if 0%{?suse_version} >= 1500
%{_libdir}/slurm/cgroup_v2.so
%endif
%{_libdir}/slurm/cli_filter_lua.so
%{_libdir}/slurm/cli_filter_syslog.so
%{_libdir}/slurm/cli_filter_user_defaults.so
%{_libdir}/slurm/cred_none.so
%{_libdir}/slurm/gpu_generic.so
%{_libdir}/slurm/gpu_nrt.so
%{_libdir}/slurm/gres_gpu.so
%{_libdir}/slurm/gres_mps.so
%{_libdir}/slurm/gres_nic.so
%{_libdir}/slurm/gres_shard.so
%{_libdir}/slurm/hash_k12.so
%{_libdir}/slurm/jobacct_gather_cgroup.so
%{_libdir}/slurm/jobacct_gather_linux.so
%{_libdir}/slurm/jobcomp_filetxt.so
%{_libdir}/slurm/jobcomp_lua.so
%{_libdir}/slurm/jobcomp_script.so
%{_libdir}/slurm/job_container_cncu.so
%{_libdir}/slurm/job_container_tmpfs.so
%{_libdir}/slurm/job_submit_all_partitions.so
%{_libdir}/slurm/job_submit_defaults.so
%{_libdir}/slurm/job_submit_logging.so
%{_libdir}/slurm/job_submit_partition.so
%{_libdir}/slurm/job_submit_require_timelimit.so
%{_libdir}/slurm/job_submit_throttle.so
%{_libdir}/slurm/libslurm_pmi.so
%{_libdir}/slurm/mcs_account.so
%{_libdir}/slurm/mcs_group.so
%{_libdir}/slurm/mcs_user.so
%{_libdir}/slurm/mpi_pmi2.so
%if %{with pmix}
%{_libdir}/slurm/mpi_pmix.so
%{_libdir}/slurm/mpi_pmix_v3.so
%endif
%{_libdir}/slurm/node_features_helpers.so
%{_libdir}/slurm/preempt_partition_prio.so
%{_libdir}/slurm/preempt_qos.so
%{_libdir}/slurm/prep_script.so
%{_libdir}/slurm/priority_basic.so
%{_libdir}/slurm/priority_multifactor.so
%{_libdir}/slurm/proctrack_cgroup.so
%{_libdir}/slurm/proctrack_linuxproc.so
%{_libdir}/slurm/proctrack_pgid.so
%{_libdir}/slurm/sched_backfill.so
%{_libdir}/slurm/sched_builtin.so
%{_libdir}/slurm/select_cons_tres.so
%{_libdir}/slurm/select_linear.so
%{_libdir}/slurm/serializer_json.so
%{_libdir}/slurm/serializer_url_encoded.so
%{_libdir}/slurm/serializer_yaml.so
%{_libdir}/slurm/site_factor_example.so
%{_libdir}/slurm/task_affinity.so
%{_libdir}/slurm/task_cgroup.so
%{_libdir}/slurm/topology_3d_torus.so
%{_libdir}/slurm/topology_block.so
%{_libdir}/slurm/topology_default.so
%{_libdir}/slurm/topology_tree.so
%if 0%{?suse_version} > 1310
%{_libdir}/slurm/acct_gather_interconnect_ofed.so
%endif
%if 0%{?suse_version} > 1140
%ifarch %{ix86} x86_64
%{_libdir}/slurm/acct_gather_energy_ipmi.so
%{_libdir}/slurm/acct_gather_energy_xcc.so
%endif
%endif
%{_libdir}/slurm/node_features_knl_generic.so
%{_libdir}/slurm/acct_gather_profile_influxdb.so
%{_libdir}/slurm/jobcomp_elasticsearch.so
%files plugin-ext-sensors-rrd
%{_libdir}/slurm/ext_sensors_rrd.so
%files lua
%{_libdir}/slurm/job_submit_lua.so
%files torque
%{_bindir}/pbsnodes
%{_bindir}/qalter
%{_bindir}/qdel
%{_bindir}/qhold
%{_bindir}/qrls
%{_bindir}/qrerun
%{_bindir}/qstat
%{_bindir}/qsub
%{_bindir}/mpiexec.slurm
%{_bindir}/generate_pbs_nodefile
%{_libdir}/slurm/job_submit_pbs.so
%{_libdir}/slurm/spank_pbs.so
%files sjstat
%{_bindir}/sjstat
%files pam_slurm
%doc ../README.pam_slurm ../README.pam_slurm_adopt
%{_pam_moduledir}/pam_slurm.so
%{_pam_moduledir}/pam_slurm_adopt.so
%if 0%{?build_slurmrestd}
%files rest
%{_sbindir}/slurmrestd
%{_sbindir}/rcslurmrestd
%{_unitdir}/slurmrestd.service
%{_mandir}/man8/slurmrestd.*
%{_libdir}/slurm/openapi_slurmctld.so
%{_libdir}/slurm/openapi_slurmdbd.so
%{_libdir}/slurm/openapi_dbv0_0_39.so
%{_libdir}/slurm/openapi_v0_0_39.so
%{_libdir}/slurm/openapi_dbv0_0_38.so
%{_libdir}/slurm/openapi_v0_0_38.so
%{_libdir}/slurm/rest_auth_local.so
%endif
%files node
%{_sbindir}/slurmd
%{_sbindir}/slurmstepd
# bsc#1153095
%{_bindir}/srun
%{_bindir}/scrun
%{_mandir}/man1/srun.1*
%{_mandir}/man1/scrun.1*
%{_mandir}/man8/slurmd.*
%{_mandir}/man8/slurmstepd*
%{_sbindir}/rcslurmd
%{_unitdir}/slurmd.service
%files config
%dir %{_sysconfdir}/%{pname}
%config(noreplace) %{_sysconfdir}/%{pname}/slurm.conf
%config %{_sysconfdir}/%{pname}/slurm.conf.example
%config(noreplace) %{_sysconfdir}/%{pname}/cgroup.conf
%attr(0755, %slurm_u, %slurm_g) %_localstatedir/lib/slurm
%{_tmpfilesdir}/%{pname}.conf
%{?_rundir:%ghost %{_rundir}/slurm}
%dir %attr(0755, %slurm_u, %slurm_g)%{_localstatedir}/spool/slurm
%config(noreplace) %{_sysconfdir}/logrotate.d/slurm*
%if 0%{?have_firewalld}
%{_prefix}/lib/firewalld/services/slurmd.xml
%{_prefix}/lib/firewalld/services/slurmctld.xml
%{_prefix}/lib/firewalld/services/slurmdbd.xml
%endif
%{?have_sysuser:%{_sysusersdir}/system-user-%{pname}.conf}
%files config-man
%{_mandir}/man5/acct_gather.conf.*
%{_mandir}/man5/burst_buffer.conf.*
%{_mandir}/man5/ext_sensors.conf.*
%{_mandir}/man5/slurm.*
%{_mandir}/man5/cgroup.*
%{_mandir}/man5/gres.*
%{_mandir}/man5/helpers.*
#%%{_mandir}/man5/nonstop.conf.5.*
%{_mandir}/man5/oci.conf.5.gz
%{_mandir}/man5/topology.*
%{_mandir}/man5/knl.conf.5.*
%{_mandir}/man5/job_container.conf.5.*
%{_mandir}/man5/mpi.conf.5.*
%if 0%{?have_hdf5}
%files hdf5
%{_bindir}/sh5util
%{_libdir}/slurm/acct_gather_profile_hdf5.so
%{_mandir}/man1/sh5util.1.gz
%endif
%files cray
# do not remove cray sepcific packages from SLES update
# Only for Cray
%{_libdir}/slurm/core_spec_cray_aries.so
%{_libdir}/slurm/job_submit_cray_aries.so
%{_libdir}/slurm/select_cray_aries.so
%{_libdir}/slurm/switch_cray_aries.so
%{_libdir}/slurm/task_cray_aries.so
%{_libdir}/slurm/proctrack_cray_aries.so
%{_libdir}/slurm/mpi_cray_shasta.so
%{_libdir}/slurm/node_features_knl_cray.so
%{_libdir}/slurm/power_cray_aries.so
%if 0%{?slurm_testsuite}
%files testsuite
%defattr(-, %slurm_u, %slurm_u, -)
%dir %attr(-, %slurm_u, %slurm_u) /srv/slurm-testsuite
%attr(-, root, root) %{_datadir}/%{name}
%if 0%{?sle_version} == 120200 || 0%{?suse_version} >= 1550
%dir %attr(-, root, root) %{_pam_secconfdir}/limits.d
%endif
%doc testsuite/expect/README
%doc %{basename: %{S:21}}
%config %attr( -, root, root) %{_sysconfdir}/systemd/system/slurmd.service
%config %attr(0440, root, root) %{_sysconfdir}/sudoers.d/slurm
%config %attr( -, root, root) %{_pam_secconfdir}/limits.d/slurm.conf
%{_libdir}/slurm/libslurm.so
%attr(0600, %slurm_u, %slurm_g) /srv/slurm-testsuite/config/slurmdbd.conf
/srv/slurm-testsuite/*
%dir %attr(-, %slurm_u, %slurm_g) %_localstatedir/lib/slurm/shared
%attr( -, root, root) /root/setup-testsuite.sh
%endif
%changelog