public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/slurm] epel10: Added patch to enable full relro builds and operation.
@ 2026-07-22 7:54 Philip Kovacs
0 siblings, 0 replies; only message in thread
From: Philip Kovacs @ 2026-07-22 7:54 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/slurm
Branch : epel10
Commit : 17562291f2c38003144db19ea1a7d82481bff3b7
Author : Philip Kovacs <pkdevel@yahoo.com>
Date : 2017-11-16T14:24:37-05:00
Stats : +451/-271 in 10 file(s)
URL : https://src.fedoraproject.org/rpms/slurm/c/17562291f2c38003144db19ea1a7d82481bff3b7?branch=epel10
Log:
Added patch to enable full relro builds and operation.
Added patch to link knl_generic plugin to libnuma if available.
Remove the following cray or bluegene-only plugins:
job_container/cncu, select/alps, select/bluegene.
Rename slurm_setuser to slurm-setuser.
Minor corrections to slurm.conf.
---
diff --git a/slurm-setuser.in b/slurm-setuser.in
new file mode 100644
index 0000000..ae7e6c2
--- /dev/null
+++ b/slurm-setuser.in
@@ -0,0 +1,229 @@
+#!/bin/bash
+#
+# Copyright (c) 2017, Philip Kovacs
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+prog=`basename $0`
+user=root
+group=root
+yesno=no
+
+red='\033[0;31m'
+green='\033[0;32m'
+nc='\033[0m'
+pass="${green}[*]${nc}"
+fail="${red}[!]${nc}"
+ask="[?]"
+
+# the rpm spec configures these directory variables
+dir_conf="%{_sysconfdir}/%{name}"
+dir_log="%{_var}/log/%{name}"
+dir_run="%{_rundir}/%{name}"
+dir_spool="%{_var}/spool/%{name}"
+dir_tmpfiles_d="%{_tmpfilesdir}"
+
+file_slurm_conf="${dir_conf}/slurm.conf"
+file_slurmdbd_conf="${dir_conf}/slurmdbd.conf"
+file_tmpfiles_d_conf="${dir_tmpfiles_d}/slurm.conf"
+
+function usage ()
+{
+ echo -e "Sets the slurm installation on this node to run as the specified user and group\n"
+ echo "Usage: $prog [-u <user>] [-g <group>] [-h] [-y]"
+ echo " -u <user> : the slurm file owner and SlurmUser ($user)"
+ echo " -g <group> : the slurm file group ($group)"
+ echo " -y : answer yes to all questions ($yesno)"
+ echo " -h : print help"
+}
+
+function answer ()
+{
+ while true
+ do
+ if [ "${yesno}" = "yes" ]; then
+ echo -e "${ask} $1 [${yesno}]"
+ __answer="yes"
+ break;
+ fi
+
+ echo -e -n "${ask} "
+ read -e -p "$1 [${yesno}] " yn
+ case $yn in
+ "") __answer=$yesno
+ break;;
+ [yY]*) __answer="yes"
+ break;;
+ [nN]*) __answer="no"
+ break;;
+ *)
+ echo "Please answer yes or no";;
+ esac
+ done
+}
+
+#
+# Parse options
+#
+while getopts "u:g:yh" opt
+do
+ case "$opt" in
+ h)
+ usage
+ exit 2;;
+ u)
+ user=$OPTARG;;
+ g)
+ group=$OPTARG;;
+ y)
+ yesno=yes;;
+ *)
+ echo ""
+ usage
+ exit 2;;
+ esac
+done
+
+#
+# Run this script only as root
+#
+if [ $UID -eq 0 ]; then
+ echo -e "${pass} running as root... good"
+else
+ echo -e "${fail} $prog must be run as root."
+ exit 1
+fi
+
+#
+# Validate the user and group
+#
+valid_user="`getent passwd $user || :`"
+if [ -n "$valid_user" ]; then
+ echo -e "${pass} found user $user... good"
+else
+ echo -e "${fail} the specified user was not found... ${user}"
+ exit 2
+fi
+valid_group="`getent group $group || :`"
+if [ -n "$valid_group" ]; then
+ echo -e "${pass} found group $group... good"
+else
+ echo -e "${fail} the specified group was not found... ${group}"
+ exit 2
+fi
+
+#
+# Slurm services must not be running
+#
+slurmctld_running_pid="`ps -e | grep slurmctld | grep -v grep | awk '{print $1}'`"
+if [ -z "$slurmctld_running_pid" ]; then
+ echo -e "${pass} slurmctld is not running... good"
+else
+ echo -e "${fail} slurmctld is running... stop it with [systemctl stop slurmctld]"
+ exit 2
+fi
+slurmd_running_pid="`ps -e | grep slurmd | grep -v grep | awk '{print $1}'`"
+if [ -z "$slurmd_running_pid" ]; then
+ echo -e "${pass} slurmd is not running... good"
+else
+ echo -e "${fail} slurmd is running... stop it with [systemctl stop slurmd]"
+ exit 2
+fi
+slurmdbd_running_pid="`ps -e | grep slurmdbd | grep -v grep | awk '{print $1}'`"
+if [ -z "$slurmdbd_running_pid" ]; then
+ echo -e "${pass} slurmdbd is not running... good"
+else
+ echo -e "${fail} slurmdbd is running... stop it with [systemctl stop slurmdbd]"
+ exit 2
+fi
+
+#
+# Update SlurmUser in the slurm configs
+#
+for file in "$file_slurm_conf" "$file_slurmdbd_conf"
+do
+ if [ -f "$file" ]; then
+ answer "update SlurmUser in $file ?"
+ if [ "$__answer" = "yes" ]; then
+ sed -i "s|^SlurmUser=.*|SlurmUser=${user}|g" $file
+ if [ $? -eq 0 ]; then
+ echo -e "${pass} $file updated successfully"
+ else
+ echo -e "${fail} error updating $file"
+ exit 1
+ fi
+ fi
+ fi
+done
+
+#
+# Update ownership of slurm directories that must be owned by the slurm user
+#
+for dir in "$dir_log" "$dir_run" "$dir_spool" "$dir_spool/ctld"
+do
+ if [ -d "$dir" ]; then
+ answer "update ownership of $dir ?"
+ if [ "$__answer" = "yes" ]; then
+ chown ${user}:${group} $dir
+ if [ $? -eq 0 ]; then
+ echo -e "${pass} $dir updated successfully"
+ else
+ echo -e "${fail} error updating $dir"
+ exit 1
+ fi
+ fi
+ fi
+done
+
+#
+# Update ownership of slurmctld spool files which are owned by the slurm user
+#
+if [ -d "${dir_spool}/ctld" ]; then
+ answer "update ownership of files in ${dir_spool}/ctld ?"
+ if [ "$__answer" = "yes" ]; then
+ if [ $? -eq 0 ]; then
+ find ${dir_spool}/ctld -mindepth 1 -exec chown ${user}:${group} {} \;
+ echo -e "${pass} ${dir_spool}/ctld files updated successfully"
+ else
+ echo -e "${fail} error updating ${dir_spool}/ctld files"
+ exit 1
+ fi
+ fi
+fi
+
+#
+# Update the tmpfiles.d config file to the new slurm user
+#
+if [ -f "$file_tmpfiles_d_conf" ]; then
+ answer "update tmpfiles.d config $file_tmpfiles_d_conf ?"
+ if [ "$__answer" = "yes" ]; then
+ sed -i "s|0755 \(.*\) -$|0755 ${user} ${group} -|g" $file_tmpfiles_d_conf
+ if [ $? -eq 0 ]; then
+ echo -e "${pass} $file_tmpfiles_d_conf updated successfully"
+ else
+ echo -e "${fail} error updating $file_tmpfiles_d_conf"
+ exit 1
+ fi
+ fi
+fi
+
+exit 0
diff --git a/slurm.conf b/slurm.conf
index cb02c0d..28bd7a8 100644
--- a/slurm.conf
+++ b/slurm.conf
@@ -23,11 +23,11 @@ CryptoType=crypto/munge
#JobCredentialPublicCertificate=
#JobFileAppend=0
#JobRequeue=1
-#JobSubmitPlugins=1
+#JobSubmitPlugins=
#KillOnBadExit=0
#LaunchType=launch/slurm
#Licenses=foo*4,bar
-#MailProg=/bin/mail
+#MailProg=/bin/true
#MaxJobCount=5000
#MaxStepCount=40000
#MaxTasksPerNode=128
diff --git a/slurm.spec b/slurm.spec
index facd9cc..017b35a 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -26,7 +26,7 @@
Name: slurm
Version: 17.02.9
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -35,18 +35,22 @@ Source1: slurm.conf
Source2: slurmdbd.conf
Source3: slurm-sview.desktop
Source4: slurm-128x128.png
-Source5: slurm_setuser.in
+Source5: slurm-setuser.in
+
+# upstream bug #2443: enable full relro operation
+Patch0: slurm_weak_symbols.patch
+
+# upstream bug #4362: link knl_generic plugin to libnuma if available
+Patch1: slurm_knl_numa.patch
# build-related patches
-Patch1: slurm_perlapi_rpaths.patch
-Patch2: slurm_html_doc_path.patch
-Patch3: slurm_doc_fix.patch
+Patch10: slurm_perlapi_rpaths.patch
+Patch11: slurm_html_doc_path.patch
+Patch12: slurm_doc_fix.patch
# Fedora-related patches
-Patch4: slurm_service_files.patch
+Patch20: slurm_service_files.patch
-BuildRequires: autoconf
-BuildRequires: automake
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: hdf5-devel
BuildRequires: pkgconfig(hwloc)
@@ -70,6 +74,8 @@ BuildRequires: libibumad-devel
BuildRequires: numactl-devel
%endif
+BuildRequires: autoconf
+BuildRequires: automake
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: perl-ExtUtils-MakeMaker
@@ -211,10 +217,12 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%prep
%setup -q -n %{name}-%{version}
+%patch0 -p1
%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch20 -p1
cp %SOURCE1 etc/slurm.conf
cp %SOURCE1 etc/slurm.conf.example
cp %SOURCE2 etc/slurmdbd.conf
@@ -224,17 +232,12 @@ mkdir -p share/icons/hicolor/128x128/apps
cp %SOURCE3 share/applications/%{name}-sview.desktop
cp %SOURCE4 share/icons/hicolor/128x128/apps/%{name}.png
mkdir -p extras
-cp %SOURCE5 extras/slurm_setuser.in
+cp %SOURCE5 extras/slurm-setuser.in
%build
%{__aclocal} -I auxdir
%{__autoconf}
%{__automake} --no-force
-# upstream bug #2443. need to force lazy linkage since plugins contain
-# undefined symbols not used in every context, i.e. slurmctld vs slurmd.
-CFLAGS="$RPM_OPT_FLAGS -Wl,-z,lazy"
-CXXFLAGS="$RPM_OPT_FLAGS -Wl,-z,lazy"
-# --enable-debug (auxdir/x_ac_debug.m4) breaks fortification (-O0)
%configure \
--prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir}/%{name} \
@@ -253,14 +256,14 @@ CXXFLAGS="$RPM_OPT_FLAGS -Wl,-z,lazy"
# patch libtool to remove rpaths
sed -i 's|^hardcode_into_libs=.*|hardcode_into_libs=no|g' libtool
-# configure the extras/slurm_setuser script
+# configure the extras/slurm-setuser script
sed -r '
s|^dir_conf=.*|dir_conf="%{_sysconfdir}/%{name}"|g;
s|^dir_log=.*|dir_log="%{_var}/log/%{name}"|g;
s|^dir_run=.*|dir_run="%{_rundir}/%{name}"|g;
s|^dir_spool=.*|dir_spool="%{_var}/spool/%{name}"|g;
s|^dir_tmpfiles_d=.*|dir_tmpfiles_d="%{_tmpfilesdir}"|g;' \
- extras/slurm_setuser.in > extras/slurm_setuser
+ extras/slurm-setuser.in > extras/slurm-setuser
# build base packages
%make_build V=1
@@ -349,9 +352,9 @@ install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/128x128/apps
install -m 0644 share/icons/hicolor/128x128/apps/%{name}.png \
%{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
-# install the extras/slurm_setuser script
-install -m 0755 extras/slurm_setuser \
- %{buildroot}%{_bindir}/slurm_setuser
+# install the extras/slurm-setuser script
+install -m 0755 extras/slurm-setuser \
+ %{buildroot}%{_bindir}/slurm-setuser
install -m 0755 contribs/sjstat %{buildroot}%{_bindir}/sjstat
@@ -382,6 +385,7 @@ rm -f %{buildroot}%{_libdir}/%{name}/job_submit_partition.so
rm -f %{buildroot}%{_libdir}/%{name}/libsched_if.so
rm -f %{buildroot}%{_libdir}/%{name}/libsched_if64.so
rm -f %{buildroot}%{_libdir}/%{name}/runjob_plugin.so
+rm -f %{buildroot}%{_libdir}/%{name}/select_bluegene.so
rm -f %{buildroot}%{_mandir}/man5/bluegene*
rm -f %{buildroot}%{_sbindir}/sfree
rm -f %{buildroot}%{_sbindir}/slurm_epilog
@@ -389,7 +393,9 @@ rm -f %{buildroot}%{_sbindir}/slurm_prolog
# remove cray files
rm -f %{buildroot}%{_libdir}/%{name}/acct_gather_energy_cray.so
rm -f %{buildroot}%{_libdir}/%{name}/core_spec_cray.so
+rm -f %{buildroot}%{_libdir}/%{name}/job_container_cncu.so
rm -f %{buildroot}%{_libdir}/%{name}/job_submit_cray.so
+rm -f %{buildroot}%{_libdir}/%{name}/select_alps.so
rm -f %{buildroot}%{_libdir}/%{name}/select_cray.so
rm -f %{buildroot}%{_libdir}/%{name}/switch_cray.so
rm -f %{buildroot}%{_libdir}/%{name}/task_cray.so
@@ -428,7 +434,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_bindir}/{sacct,sacctmgr,salloc,sattach,sbatch,sbcast}
%{_bindir}/{scancel,scontrol,sdiag,sh5util,sinfo,sprio}
%{_bindir}/{squeue,sreport,srun,sshare,sstat,strigger}
-%{_bindir}/slurm_setuser
+%{_bindir}/slurm-setuser
%{_unitdir}/slurmctld.service
%{_unitdir}/slurmd.service
%{_tmpfilesdir}/slurm.conf
@@ -527,7 +533,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_libdir}/%{name}/crypto_openssl.so
%{_libdir}/%{name}/ext_sensors_none.so
%{_libdir}/%{name}/gres_{gpu,mic,nic}.so
-%{_libdir}/%{name}/job_container_{cncu,none}.so
+%{_libdir}/%{name}/job_container_none.so
%{_libdir}/%{name}/job_submit_all_partitions.so
%{_libdir}/%{name}/job_submit_require_timelimit.so
%{_libdir}/%{name}/job_submit_throttle.so
@@ -546,7 +552,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_libdir}/%{name}/proctrack_{cgroup,linuxproc,pgid}.so
%{_libdir}/%{name}/route_{default,topology}.so
%{_libdir}/%{name}/sched_{backfill,builtin,hold}.so
-%{_libdir}/%{name}/select_{alps,bluegene,cons_res,linear,serial}.so
+%{_libdir}/%{name}/select_{cons_res,linear,serial}.so
%{_libdir}/%{name}/slurmctld_nonstop.so
%{_libdir}/%{name}/switch_{generic,none}.so
%{_libdir}/%{name}/task_{affinity,cgroup,none}.so
@@ -614,7 +620,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_sysconfdir}/%{name}/slurmdbd.conf.example
%dir %{_rundir}/%{name}
%ghost %{_rundir}/%{name}/slurmdbd.pid
-%{_bindir}/slurm_setuser
+%{_bindir}/slurm-setuser
%{_unitdir}/slurmdbd.service
%{_tmpfilesdir}/slurm.conf
%{_sbindir}/slurmdbd
@@ -746,6 +752,14 @@ fi
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Thu Nov 16 2017 Philip Kovacs <pkdevel@yahoo.com> - 17.02.9-3
+- Added patch to enable full relro builds and operation.
+- Added patch to link knl_generic plugin to libnuma if available.
+- Remove the following cray or bluegene-only plugins:
+- job_container/cncu, select/alps, select/bluegene.
+- Rename slurm_setuser to slurm-setuser.
+- Minor corrections to slurm.conf.
+
* Wed Nov 1 2017 Philip Kovacs <pkdevel@yahoo.com> - 17.02.9-2
- Correct desktop categories for rpmgrill.desktop-lint.
diff --git a/slurm_doc_fix.patch b/slurm_doc_fix.patch
index f835a53..ae4a4da 100644
--- a/slurm_doc_fix.patch
+++ b/slurm_doc_fix.patch
@@ -1,5 +1,5 @@
---- slurm-17.02.9/doc/man/man5/burst_buffer.conf.5.old 2017-08-15 23:22:24.333180212 -0400
-+++ slurm-17.02.9/doc/man/man5/burst_buffer.conf.5 2017-08-15 23:23:45.224298397 -0400
+--- a/doc/man/man5/burst_buffer.conf.5 2017-08-15 23:22:24.333180212 -0400
++++ b/doc/man/man5/burst_buffer.conf.5 2017-08-15 23:23:45.224298397 -0400
@@ -31,18 +31,18 @@
\fBAllowUsers\fR
Comma separated list of user names and/or IDs permitted to use burst buffers.
diff --git a/slurm_html_doc_path.patch b/slurm_html_doc_path.patch
index 9ea8dcc..04c1475 100644
--- a/slurm_html_doc_path.patch
+++ b/slurm_html_doc_path.patch
@@ -1,5 +1,5 @@
---- slurm-17.02.9/doc/html/Makefile.am.old 2017-10-25 15:55:38.622808585 -0400
-+++ slurm-17.02.9/doc/html/Makefile.am 2017-10-25 15:56:07.236582868 -0400
+--- a/doc/html/Makefile.am 2017-10-25 15:55:38.622808585 -0400
++++ b/doc/html/Makefile.am 2017-10-25 15:56:07.236582868 -0400
@@ -1,5 +1,5 @@
-htmldir = ${datadir}/doc/${PACKAGE}-${SLURM_VERSION_STRING}/html
diff --git a/slurm_knl_numa.patch b/slurm_knl_numa.patch
new file mode 100644
index 0000000..d13a683
--- /dev/null
+++ b/slurm_knl_numa.patch
@@ -0,0 +1,13 @@
+diff --git a/src/plugins/node_features/knl_generic/Makefile.am b/src/plugins/node_features/knl_generic/Makefile.am
+index 11da24c075..4633e2de46 100644
+--- a/src/plugins/node_features/knl_generic/Makefile.am
++++ b/src/plugins/node_features/knl_generic/Makefile.am
+@@ -8,7 +8,7 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src/common
+
+ pkglib_LTLIBRARIES = node_features_knl_generic.la
+ node_features_knl_generic_la_SOURCES = node_features_knl_generic.c
+-node_features_knl_generic_la_LDFLAGS = $(SO_LDFLAGS) $(PLUGIN_FLAGS)
++node_features_knl_generic_la_LDFLAGS = $(SO_LDFLAGS) $(NUMA_LIBS) $(PLUGIN_FLAGS)
+
+ force:
+ $(node_features_knl_generic_la_LIBADD) : force
diff --git a/slurm_perlapi_rpaths.patch b/slurm_perlapi_rpaths.patch
index 0caf61a..0da934b 100644
--- a/slurm_perlapi_rpaths.patch
+++ b/slurm_perlapi_rpaths.patch
@@ -1,5 +1,5 @@
---- slurm-17.02.9/contribs/perlapi/libslurm/perl/Makefile.PL.in.old 2016-11-08 15:11:32.000000000 -0500
-+++ slurm-17.02.9/contribs/perlapi/libslurm/perl/Makefile.PL.in 2017-08-17 03:06:27.363688978 -0400
+--- a/contribs/perlapi/libslurm/perl/Makefile.PL.in 2016-11-08 15:11:32.000000000 -0500
++++ b/contribs/perlapi/libslurm/perl/Makefile.PL.in 2017-08-17 03:06:27.363688978 -0400
@@ -77,7 +77,7 @@
# AIX has problems with not always having the correct
# flags so we have to add some :)
@@ -9,8 +9,8 @@
$other_ld_flags = " -brtl -G -bnoentry -bgcbypass:1000 -bexpfull"
if $os =~ "aix";
---- slurm-17.02.9/contribs/perlapi/libslurmdb/perl/Makefile.PL.in.orig 2017-08-17 03:37:39.689054161 -0400
-+++ slurm-17.02.9/contribs/perlapi/libslurmdb/perl/Makefile.PL.in 2017-08-17 03:38:07.305780718 -0400
+--- a/contribs/perlapi/libslurmdb/perl/Makefile.PL.in 2017-08-17 03:37:39.689054161 -0400
++++ b/contribs/perlapi/libslurmdb/perl/Makefile.PL.in 2017-08-17 03:38:07.305780718 -0400
@@ -76,7 +76,7 @@
# AIX has problems with not always having the correct
# flags so we have to add some :)
diff --git a/slurm_service_files.patch b/slurm_service_files.patch
index 61bf0ac..a164ef4 100644
--- a/slurm_service_files.patch
+++ b/slurm_service_files.patch
@@ -1,5 +1,5 @@
---- slurm-17.02.9/etc/slurmctld.service.in.old 2017-08-14 13:48:43.000000000 -0400
-+++ slurm-17.02.9/etc/slurmctld.service.in 2017-08-21 13:35:26.472209176 -0400
+--- a/etc/slurmctld.service.in 2017-08-14 13:48:43.000000000 -0400
++++ b/etc/slurmctld.service.in 2017-08-21 13:35:26.472209176 -0400
@@ -8,7 +8,7 @@
EnvironmentFile=-/etc/sysconfig/slurmctld
ExecStart=@sbindir@/slurmctld $SLURMCTLD_OPTIONS
@@ -9,8 +9,8 @@
[Install]
WantedBy=multi-user.target
---- slurm-17.02.9/etc/slurmd.service.in.old 2017-08-14 13:48:43.000000000 -0400
-+++ slurm-17.02.9/etc/slurmd.service.in 2017-08-21 14:45:23.485061312 -0400
+--- a/etc/slurmd.service.in 2017-08-14 13:48:43.000000000 -0400
++++ b/etc/slurmd.service.in 2017-08-21 14:45:23.485061312 -0400
@@ -8,7 +8,7 @@
EnvironmentFile=-/etc/sysconfig/slurmd
ExecStart=@sbindir@/slurmd $SLURMD_OPTIONS
@@ -20,8 +20,8 @@
KillMode=process
LimitNOFILE=51200
LimitMEMLOCK=infinity
---- slurm-17.02.9/etc/slurmdbd.service.in.old 2017-08-14 13:48:43.000000000 -0400
-+++ slurm-17.02.9/etc/slurmdbd.service.in 2017-08-21 14:47:56.134071820 -0400
+--- a/etc/slurmdbd.service.in 2017-08-14 13:48:43.000000000 -0400
++++ b/etc/slurmdbd.service.in 2017-08-21 14:47:56.134071820 -0400
@@ -8,7 +8,7 @@
EnvironmentFile=-/etc/sysconfig/slurmdbd
ExecStart=@sbindir@/slurmdbd $SLURMDBD_OPTIONS
diff --git a/slurm_setuser.in b/slurm_setuser.in
deleted file mode 100644
index ae7e6c2..0000000
--- a/slurm_setuser.in
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2017, Philip Kovacs
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice, this
-# list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-prog=`basename $0`
-user=root
-group=root
-yesno=no
-
-red='\033[0;31m'
-green='\033[0;32m'
-nc='\033[0m'
-pass="${green}[*]${nc}"
-fail="${red}[!]${nc}"
-ask="[?]"
-
-# the rpm spec configures these directory variables
-dir_conf="%{_sysconfdir}/%{name}"
-dir_log="%{_var}/log/%{name}"
-dir_run="%{_rundir}/%{name}"
-dir_spool="%{_var}/spool/%{name}"
-dir_tmpfiles_d="%{_tmpfilesdir}"
-
-file_slurm_conf="${dir_conf}/slurm.conf"
-file_slurmdbd_conf="${dir_conf}/slurmdbd.conf"
-file_tmpfiles_d_conf="${dir_tmpfiles_d}/slurm.conf"
-
-function usage ()
-{
- echo -e "Sets the slurm installation on this node to run as the specified user and group\n"
- echo "Usage: $prog [-u <user>] [-g <group>] [-h] [-y]"
- echo " -u <user> : the slurm file owner and SlurmUser ($user)"
- echo " -g <group> : the slurm file group ($group)"
- echo " -y : answer yes to all questions ($yesno)"
- echo " -h : print help"
-}
-
-function answer ()
-{
- while true
- do
- if [ "${yesno}" = "yes" ]; then
- echo -e "${ask} $1 [${yesno}]"
- __answer="yes"
- break;
- fi
-
- echo -e -n "${ask} "
- read -e -p "$1 [${yesno}] " yn
- case $yn in
- "") __answer=$yesno
- break;;
- [yY]*) __answer="yes"
- break;;
- [nN]*) __answer="no"
- break;;
- *)
- echo "Please answer yes or no";;
- esac
- done
-}
-
-#
-# Parse options
-#
-while getopts "u:g:yh" opt
-do
- case "$opt" in
- h)
- usage
- exit 2;;
- u)
- user=$OPTARG;;
- g)
- group=$OPTARG;;
- y)
- yesno=yes;;
- *)
- echo ""
- usage
- exit 2;;
- esac
-done
-
-#
-# Run this script only as root
-#
-if [ $UID -eq 0 ]; then
- echo -e "${pass} running as root... good"
-else
- echo -e "${fail} $prog must be run as root."
- exit 1
-fi
-
-#
-# Validate the user and group
-#
-valid_user="`getent passwd $user || :`"
-if [ -n "$valid_user" ]; then
- echo -e "${pass} found user $user... good"
-else
- echo -e "${fail} the specified user was not found... ${user}"
- exit 2
-fi
-valid_group="`getent group $group || :`"
-if [ -n "$valid_group" ]; then
- echo -e "${pass} found group $group... good"
-else
- echo -e "${fail} the specified group was not found... ${group}"
- exit 2
-fi
-
-#
-# Slurm services must not be running
-#
-slurmctld_running_pid="`ps -e | grep slurmctld | grep -v grep | awk '{print $1}'`"
-if [ -z "$slurmctld_running_pid" ]; then
- echo -e "${pass} slurmctld is not running... good"
-else
- echo -e "${fail} slurmctld is running... stop it with [systemctl stop slurmctld]"
- exit 2
-fi
-slurmd_running_pid="`ps -e | grep slurmd | grep -v grep | awk '{print $1}'`"
-if [ -z "$slurmd_running_pid" ]; then
- echo -e "${pass} slurmd is not running... good"
-else
- echo -e "${fail} slurmd is running... stop it with [systemctl stop slurmd]"
- exit 2
-fi
-slurmdbd_running_pid="`ps -e | grep slurmdbd | grep -v grep | awk '{print $1}'`"
-if [ -z "$slurmdbd_running_pid" ]; then
- echo -e "${pass} slurmdbd is not running... good"
-else
- echo -e "${fail} slurmdbd is running... stop it with [systemctl stop slurmdbd]"
- exit 2
-fi
-
-#
-# Update SlurmUser in the slurm configs
-#
-for file in "$file_slurm_conf" "$file_slurmdbd_conf"
-do
- if [ -f "$file" ]; then
- answer "update SlurmUser in $file ?"
- if [ "$__answer" = "yes" ]; then
- sed -i "s|^SlurmUser=.*|SlurmUser=${user}|g" $file
- if [ $? -eq 0 ]; then
- echo -e "${pass} $file updated successfully"
- else
- echo -e "${fail} error updating $file"
- exit 1
- fi
- fi
- fi
-done
-
-#
-# Update ownership of slurm directories that must be owned by the slurm user
-#
-for dir in "$dir_log" "$dir_run" "$dir_spool" "$dir_spool/ctld"
-do
- if [ -d "$dir" ]; then
- answer "update ownership of $dir ?"
- if [ "$__answer" = "yes" ]; then
- chown ${user}:${group} $dir
- if [ $? -eq 0 ]; then
- echo -e "${pass} $dir updated successfully"
- else
- echo -e "${fail} error updating $dir"
- exit 1
- fi
- fi
- fi
-done
-
-#
-# Update ownership of slurmctld spool files which are owned by the slurm user
-#
-if [ -d "${dir_spool}/ctld" ]; then
- answer "update ownership of files in ${dir_spool}/ctld ?"
- if [ "$__answer" = "yes" ]; then
- if [ $? -eq 0 ]; then
- find ${dir_spool}/ctld -mindepth 1 -exec chown ${user}:${group} {} \;
- echo -e "${pass} ${dir_spool}/ctld files updated successfully"
- else
- echo -e "${fail} error updating ${dir_spool}/ctld files"
- exit 1
- fi
- fi
-fi
-
-#
-# Update the tmpfiles.d config file to the new slurm user
-#
-if [ -f "$file_tmpfiles_d_conf" ]; then
- answer "update tmpfiles.d config $file_tmpfiles_d_conf ?"
- if [ "$__answer" = "yes" ]; then
- sed -i "s|0755 \(.*\) -$|0755 ${user} ${group} -|g" $file_tmpfiles_d_conf
- if [ $? -eq 0 ]; then
- echo -e "${pass} $file_tmpfiles_d_conf updated successfully"
- else
- echo -e "${fail} error updating $file_tmpfiles_d_conf"
- exit 1
- fi
- fi
-fi
-
-exit 0
diff --git a/slurm_weak_symbols.patch b/slurm_weak_symbols.patch
new file mode 100644
index 0000000..02507e2
--- /dev/null
+++ b/slurm_weak_symbols.patch
@@ -0,0 +1,153 @@
+diff --git a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
+index ca0341c1eb..08d7baaa61 100644
+--- a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
++++ b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
+@@ -60,6 +60,15 @@
+
+ #define BUFFER_SIZE 4096
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: sacct vs slurmctld */
++void build_array_str(struct job_record *job_ptr) __attribute__((weak));
++struct job_record *find_job_record(uint32_t job_id) __attribute__((weak));
++void lock_slurmctld (slurmctld_lock_t lock_levels) __attribute__((weak));
++void unlock_slurmctld (slurmctld_lock_t lock_levels) __attribute__((weak));
++#endif
++
+ /* These are defined here so when we link with something other than
+ * the slurmctld we will have these symbols defined. They will get
+ * overwritten when linking with the slurmctld.
+diff --git a/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.h b/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.h
+index 33f9bcb05e..7bbd99f93d 100644
+--- a/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.h
++++ b/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.h
+@@ -39,6 +39,9 @@
+ * Copyright (C) 2002 The Regents of the University of California.
+ \*****************************************************************************/
+
++#ifndef __JOBACCT_GATHER_CGROUP_H__
++#define __JOBACCT_GATHER_CGROUP_H__
++
+ #include "src/common/slurm_jobacct_gather.h"
+ #include "src/common/xcgroup_read_config.h"
+ #include "src/slurmd/common/xcgroup.h"
+@@ -76,3 +79,31 @@ extern int jobacct_gather_cgroup_memory_attach_task(
+ /* pid_t pid, jobacct_id_t *jobacct_id); */
+
+ extern char* jobacct_cgroup_create_slurm_cg (xcgroup_ns_t* ns);
++
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmctld vs slurmd */
++int xcgroup_add_pids(xcgroup_t* cg, pid_t* pids, int npids)
++ __attribute__((weak));
++int xcgroup_create(xcgroup_ns_t* cgns, xcgroup_t* cg,
++ char* uri, uid_t uid, gid_t gid) __attribute__((weak));
++int xcgroup_delete(xcgroup_t* cg) __attribute__((weak));
++void xcgroup_destroy(xcgroup_t* cg) __attribute__((weak));
++int xcgroup_get_param(xcgroup_t* cg, char* param, char **content,
++ size_t *csize) __attribute__((weak));
++int xcgroup_ns_create(slurm_cgroup_conf_t *conf,
++ xcgroup_ns_t* cgns, char* mnt_args, char* subsys)
++ __attribute__((weak));
++int xcgroup_instantiate(xcgroup_t* cg) __attribute__((weak));
++int xcgroup_lock(xcgroup_t* cg) __attribute__((weak));
++void xcgroup_ns_destroy(xcgroup_ns_t* cgns) __attribute__((weak));
++int xcgroup_set_param(xcgroup_t* cg, char* parameter, char* content)
++ __attribute__((weak));
++int xcgroup_set_uint32_param(xcgroup_t* cg, char* parameter, uint32_t value)
++ __attribute__((weak));
++int xcgroup_unlock(xcgroup_t* cg) __attribute__((weak));
++int xcpuinfo_fini(void) __attribute__((weak));
++int xcpuinfo_init(void) __attribute__((weak));
++#endif
++
++#endif /* __JOBACCT_GATHER_CGROUP_H__ */
+diff --git a/src/plugins/jobacct_gather/common/common_jag.h b/src/plugins/jobacct_gather/common/common_jag.h
+index eff761638e..6a28a40af2 100644
+--- a/src/plugins/jobacct_gather/common/common_jag.h
++++ b/src/plugins/jobacct_gather/common/common_jag.h
+@@ -74,4 +74,11 @@ extern void jag_common_poll_data(
+ List task_list, bool pgid_plugin, uint64_t cont_id,
+ jag_callbacks_t *callbacks, bool profile);
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmctld vs slurmd */
++int proctrack_g_get_pids(uint64_t cont_id, pid_t **pids, int *npids)
++ __attribute__((weak));
++#endif
++
+ #endif
+diff --git a/src/plugins/node_features/knl_generic/node_features_knl_generic.c b/src/plugins/node_features/knl_generic/node_features_knl_generic.c
+index f87a685bfc..fb6b879896 100644
+--- a/src/plugins/node_features/knl_generic/node_features_knl_generic.c
++++ b/src/plugins/node_features/knl_generic/node_features_knl_generic.c
+@@ -113,6 +113,12 @@
+ #define DEFAULT_MCDRAM_SIZE ((uint64_t) 16 * 1024 * 1024 * 1024)
+ #endif
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmctld vs slurmd */
++int ume_notify(void) __attribute__((weak));
++#endif
++
+ /* These are defined here so when we link with something other than
+ * the slurmctld we will have these symbols defined. They will get
+ * overwritten when linking with the slurmctld.
+diff --git a/src/plugins/select/cons_res/select_cons_res.h b/src/plugins/select/cons_res/select_cons_res.h
+index 0038d1c075..356a17950c 100644
+--- a/src/plugins/select/cons_res/select_cons_res.h
++++ b/src/plugins/select/cons_res/select_cons_res.h
+@@ -122,4 +122,15 @@ extern void cr_sort_part_rows(struct part_res_record *p_ptr);
+ extern uint32_t cr_get_coremap_offset(uint32_t node_index);
+ extern int cr_cpus_per_core(struct job_details *details, int node_inx);
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmd vs srun */
++int drain_nodes(char *nodes, char *reason, uint32_t reason_uid)
++ __attribute__((weak));
++uint32_t powercap_get_cluster_current_cap(void) __attribute__((weak));
++uint16_t slurm_job_preempt_mode(struct job_record *job_ptr)
++ __attribute__((weak));
++int which_power_layout(void) __attribute__((weak));
++#endif
++
+ #endif /* !_CONS_RES_H */
+diff --git a/src/plugins/select/linear/select_linear.h b/src/plugins/select/linear/select_linear.h
+index a9b3bd2bf3..f06f580ccc 100644
+--- a/src/plugins/select/linear/select_linear.h
++++ b/src/plugins/select/linear/select_linear.h
+@@ -83,4 +83,11 @@ struct cr_record {
+ uint16_t tot_job_len; /* length of tot_job_ids array */
+ };
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmd vs srun */
++uint16_t slurm_job_preempt_mode(struct job_record *job_ptr)
++ __attribute__((weak));
++#endif
++
+ #endif /* !_SELECT_LINEAR_H */
+diff --git a/src/plugins/select/serial/select_serial.h b/src/plugins/select/serial/select_serial.h
+index e88c49850b..7bea876bd1 100644
+--- a/src/plugins/select/serial/select_serial.h
++++ b/src/plugins/select/serial/select_serial.h
+@@ -111,4 +111,13 @@ extern struct node_use_record *select_node_usage;
+ extern void cr_sort_part_rows(struct part_res_record *p_ptr);
+ extern uint32_t cr_get_coremap_offset(uint32_t node_index);
+
++/* Declare these functions as weak in order to support full relro builds. */
++#if defined(__GNUC__) && defined(__ELF__)
++/* TEST_CASE: slurmd vs srun */
++int drain_nodes(char *nodes, char *reason, uint32_t reason_uid)
++ __attribute__((weak));
++uint16_t slurm_job_preempt_mode(struct job_record *job_ptr)
++ __attribute__((weak));
++#endif
++
+ #endif /* !_SELECT_SERIAL_H */
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-22 7:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-22 7:54 [rpms/slurm] epel10: Added patch to enable full relro builds and operation Philip Kovacs
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox