Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package slurm for openSUSE:Factory checked 
in at 2022-07-13 13:45:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/slurm (Old)
 and      /work/SRC/openSUSE:Factory/.slurm.new.1523 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "slurm"

Wed Jul 13 13:45:23 2022 rev:74 rq:988733 version:22.05.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/slurm/slurm.changes      2022-05-31 
16:04:53.608653468 +0200
+++ /work/SRC/openSUSE:Factory/.slurm.new.1523/slurm.changes    2022-07-13 
13:45:44.846062405 +0200
@@ -1,0 +2,28 @@
+Mon Jun 20 09:23:17 UTC 2022 - Christian Goll <cg...@suse.com>
+
+- update to 22.05.2 with following fixes:
+  * Fix regression which allowed the oversubscription of licenses.
+  * Fix a segfault in slurmctld when requesting gres in job arrays.
+
+-------------------------------------------------------------------
+Wed Jun  8 13:15:24 UTC 2022 - Egbert Eich <e...@suse.com>
+
+- Package the Slurm testsuite for QA purposes.
+  NOTE: This package is not meant to be used for testing by the
+  user but rather for testing by the maintainers to ensure the
+  package is working properly.
+  DO NOT report test suite failures unless you are able to confirm
+  that the failure is really a bug.
+  * Fixes for test suite:
+    Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch
+    Fix-test-21.41.patch
+    Fix-test-38.11.patch
+    Fix-test-32.8.patch
+    Fix-test-3.13.patch
+    Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch
+  * Add documentation:
+    README_Testsuite.md
+- Allow log in as user 'slurm'. This allows admins to run certain
+  priviledged commands more easily without becoming root.
+
+-------------------------------------------------------------------

Old:
----
  slurm-22.05.0.tar.bz2

New:
----
  Fix-test-21.41.patch
  Fix-test-3.13.patch
  Fix-test-32.8.patch
  Fix-test-38.11.patch
  Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch
  Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch
  README_Testsuite.md
  slurm-22.05.2.tar.bz2
  test_setup.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ slurm.spec ++++++
--- /var/tmp/diff_new_pack.rrRvTg/_old  2022-07-13 13:45:45.442063251 +0200
+++ /var/tmp/diff_new_pack.rrRvTg/_new  2022-07-13 13:45:45.450063262 +0200
@@ -18,7 +18,7 @@
 
 # Check file META in sources: update so_version to (API_CURRENT - API_AGE)
 %define so_version 38
-%define ver 22.05.0
+%define ver 22.05.2
 %define _ver _22_05
 %define dl_ver %{ver}
 # so-version is 0 and seems to be stable
@@ -29,6 +29,8 @@
 
 %define pname slurm
 
+%define slurm_testsuite 1
+
 %ifarch i586 %arm s390
 ExclusiveArch:  do_not_build
 %endif
@@ -49,7 +51,7 @@
 %if 0%{?sle_version} == 150200
 %define base_ver 2002
 %endif
-%if 0%{?sle_version} == 150300
+%if 0%{?sle_version} == 150300 || 0%{?sle_version} == 150400
 %define base_ver 2011
 %endif
 
@@ -87,6 +89,7 @@
 %define have_http_parser 1
 %endif
 
+# it seems as disabling slurmrestd has no effect on 22.05
 %if 0%{?have_http_parser} && 0%{?have_json_c}
 %define build_slurmrestd 1
 %endif
@@ -124,7 +127,7 @@
  %define slurm_g root
 %endif
 %define slurm_uid 120
-%define slurmdir %{_sysconfdir}/slurm
+%define slurmdir %{_rundir}/slurm
 %define slurmdescr "SLURM workload manager"
 
 %define libslurm libslurm%{so_version}
@@ -133,6 +136,9 @@
 %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}
@@ -146,8 +152,17 @@
 Source10:       
https://raw.githubusercontent.com/openSUSE/hpc/10c105e/files/slurm/slurmd.xml
 Source11:       
https://raw.githubusercontent.com/openSUSE/hpc/10c105e/files/slurm/slurmctld.xml
 Source12:       
https://raw.githubusercontent.com/openSUSE/hpc/10c105e/files/slurm/slurmdbd.xml
+# create: tar --owner=nobody --group=nogroup -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
+Patch11:        Fix-test-38.11.patch
+Patch12:        Fix-test-32.8.patch
+Patch13:        Fix-test-3.13.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:Provides: %{pname} = %{version}}
 %{?upgrade:Conflicts: %{pname}}
@@ -229,12 +244,14 @@
 %package doc
 Summary:        Documentation for SLURM
 Group:          Documentation/HTML
+BuildArch:      noarch
 %{?upgrade:Provides: %{pname}-doc = %{version}}
 %{?upgrade:Conflicts: %{pname}-doc}
 
 %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
@@ -500,6 +517,7 @@
 %else
 Recommends:     %{name}-munge = %version
 %endif
+%{?with_pmix:Recommends:     pmix-devel}
 %if 0%{?with_systemd}
 %{?systemd_ordering}
 %else
@@ -515,6 +533,7 @@
 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
@@ -533,6 +552,7 @@
 %package config-man
 Summary:        Config files and directories for slurm services
 Group:          Documentation/Man
+BuildArch:      noarch
 %{?upgrade:Provides: %{pname}-config-man = %{version}}
 %{?upgrade:Conflicts: %{pname}-config-man}
 
@@ -556,12 +576,61 @@
 Plugins for specific cray hardware, includes power and knl node management.
 Contains also cray specific documentation.
 
+%package testsuite
+Summary:        Regression tests from Slurm sources
+Group:          Productivity/Clustering/Computing
+Requires:       %{name} = %version
+Requires:       %{name}-auth-none = %version
+Requires:       %{name}-cray = %version
+Requires:       %{name}-devel = %version
+Requires:       %{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:       bzip2
+Requires:       expect
+Requires:       gcc-c++
+Requires:       libnuma-devel
+Requires:       openmpi4-gnu-hpc-devel
+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}
 %patch0 -p1
 #%%patch1 -p1
 %patch2 -p1
 #%%patch3 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -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
@@ -579,9 +648,9 @@
            --without-datawarp \
            --with-shared-libslurm \
            --with-pam_dir=%_pam_moduledir \
-           %{?with_pmix:--with-pmix=/usr/} \
-%if 0%{?build_slurmrestd}
-           --enable-slurmrestd \
+           %{?with_pmix:--with-pmix=%_prefix/} \
+%if 0%{!?build_slurmrestd:1}
+           --disable-slurmrestd \
 %endif
           --with-yaml \
 %{!?have_netloc:--without-netloc} \
@@ -620,7 +689,6 @@
 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 -m600 etc/slurmdbd.conf.example 
%{buildroot}%{_sysconfdir}/%{pname}/slurmdbd.conf.example
 install -D -m755 contribs/sjstat %{buildroot}%{_bindir}/sjstat
 install -D -m755 contribs/sgather/sgather %{buildroot}%{_bindir}/sgather
 %if 0%{?have_firewalld}
@@ -677,7 +745,8 @@
        -e 's@After=\(.*\)@After=\1 mariadb.service@' \
  %{buildroot}/%{_unitdir}/slurmdbd.service
 %if 0%{?have_sysuser}
-echo "u %slurm_u %{slurm_uid} \"%slurmdescr\" %{slurmdir}\n" > 
system-user-%{pname}.conf
+[ -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
@@ -763,10 +832,84 @@
 ## Specify if does not match hostname
 # NodeName myname
 EOF
+
+# Install testsuite
+%if 0%{?slurm_testsuite}
+# bug in testsuite
+ln -sf /usr/lib64/libslurm.so %{buildroot}/usr/lib64/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 -r "build_dir.*\.[oa]" | sed -e 's@.*[^ 
]*{build_dir}/\([^\]*\.o\).*@\1@' | 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"
+set mpicc   [ exec which 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
+tar --group=%slurm_g --owner=%slurm_u -cjf /tmp/slurmtest.tar.bz2 *
+cd -
+rm -rf %{buildroot}/srv/slurm-testsuite
+mkdir -p %{buildroot}/srv/slurm-testsuite
+mv /tmp/slurmtest.tar.bz2 %{buildroot}/srv/slurm-testsuite
+
+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
+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
+
+mkdir -p %{buildroot}/root
+mv test_setup/setup-testsuite.sh %{buildroot}/root
+
+mkdir -p %{buildroot}/srv/slurm-testsuite/config/plugstack.conf.d
+mv test_setup/* %{buildroot}/srv/slurm-testsuite/config
+cp %{S:21} .
+%endif
+
 %fdupes -s %{buildroot}
+
 # Temporary - remove when build is fixed upstream.
 %if !0%{?build_slurmrestd}
-rm -f %{buildroot}/%{_mandir}/man8/slurmrestd.*
+rm -f %{buildroot}%{_mandir}/man8/slurmrestd.*
+rm -f %{buildroot}%{_libdir}/slurm/openapi_*.so
+rm -f %{buildroot}%{_libdir}/slurm/rest_auth_*.so
 %endif
 
 %check
@@ -861,7 +1004,7 @@
 %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/false -c %{slurmdescr} %slurm_u
+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
@@ -884,6 +1027,13 @@
 %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
+tar --same-owner -C /srv/slurm-testsuite -xjf 
/srv/slurm-testsuite/slurmtest.tar.bz2
+
+%preun testsuite
+rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite 
/srv/slurm-testsuite/config.h
+
 %{!?nil:
 # On update the %%postun code of the old package restarts the
 # service. This breaks in case the ABI between slurm and its
@@ -1015,7 +1165,7 @@
 
 %files webdoc
 %{?comp_at}
-%{apache_sysconfdir}/conf.d/slurm.conf
+%config %{apache_sysconfdir}/conf.d/slurm.conf
 
 %files -n %{libslurm}
 %{?comp_at}
@@ -1069,7 +1219,6 @@
 %{_mandir}/man5/slurmdbd.*
 %{_mandir}/man8/slurmdbd.*
 %config(noreplace) %attr(0600,%slurm_u,%slurm_g) 
%{_sysconfdir}/%{pname}/slurmdbd.conf
-%attr(0600,%slurm_u,%slurm_g) %{_sysconfdir}/%{pname}/slurmdbd.conf.example
 %if 0%{?with_systemd}
 %{_unitdir}/slurmdbd.service
 %else
@@ -1105,7 +1254,9 @@
 %{_libdir}/slurm/burst_buffer_lua.so
 %{?have_json_c:%{_libdir}/slurm/burst_buffer_datawarp.so}
 %{_libdir}/slurm/cgroup_v1.so
+%if 0%{?suse_version} >= 1500
 %{_libdir}/slurm/cgroup_v2.so
+%endif
 %{_libdir}/slurm/core_spec_none.so
 %{_libdir}/slurm/cli_filter_none.so
 %{_libdir}/slurm/cli_filter_lua.so
@@ -1310,4 +1461,23 @@
 %{_libdir}/slurm/power_cray_aries.so
 %endif
 
+%if 0%{?slurm_testsuite}
+%files testsuite
+%defattr(-, %slurm_u, %slurm_u, -)
+%dir %attr(-, %slurm_u, %slurm_u) /srv/slurm-testsuite
+%if 0%{?sle_version} == 120200
+%dir %{_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

++++++ Fix-test-21.41.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Wed Jun 22 14:39:10 2022 +0200
Subject: Fix test 21.41
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 21619ffa15d1d656ee11a477ebb8215a06387fdd
References: 

Since expect is not line oriented, the output is not matched line by line.
Thus the order in which results are returned by sacctmgr actually matters:
If the first test case matches what is returned first, this part will be
consumed. If the 2nd test case will then match what is left over, the
test will actually succeed.
If this is not the case, ie if the first test matches a part that is
actually sent later, the earlier parts will actually be forgotten and
won't match at all.
To make the test resilient to different order of results, the test has
been rewritten to only contain a single match line.

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/test21.41 | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/testsuite/expect/test21.41 b/testsuite/expect/test21.41
index c0961522db..1fd921a48f 100755
--- a/testsuite/expect/test21.41
+++ b/testsuite/expect/test21.41
@@ -372,21 +372,21 @@ expect {
        -re "There was a problem" {
                fail "There was a problem with the sacctmgr command"
        }
-       -re "$user1.$wckey1.($number)." {
-               set user1wckey1 $expect_out(1,string)
-               exp_continue
-       }
-       -re "$user2.$wckey1.($number)." {
-               set user2wckey1 $expect_out(1,string)
-               exp_continue
-       }
-       -re "$user1.$wckey2.($number)." {
-               set user1wckey2 $expect_out(1,string)
-               exp_continue
-       }
-       -re "$user2.$wckey2.($number)." {
-               set user2wckey2 $expect_out(1,string)
-               exp_continue
+       -re "($user1|$user2).($wckey1|$wckey2).($number)." {
+           if { $expect_out(1,string) eq $user1 } {
+               if { $expect_out(2,string) eq $wckey1 } {
+                   set user1wckey1 $expect_out(3,string)
+               } elseif { $expect_out(2,string) eq $wckey2 } {
+                   set user1wckey2 $expect_out(3,string)
+               }
+           } elseif { $expect_out(1,string) eq $user2 } {
+               if { $expect_out(2,string) eq $wckey1 } {
+                   set user2wckey1 $expect_out(3,string)
+               } elseif { $expect_out(2,string) eq $wckey2 } {
+                   set user2wckey2 $expect_out(3,string)
+               }
+           }
+           exp_continue
        }
        timeout {
                fail "sacctmgr wckeys not responding"

++++++ Fix-test-3.13.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Wed Jun 15 08:40:50 2022 +0200
Subject: - Fix test 3.13
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: cc82d21d77ccd4753ed56f80e14cfa13acd3643d
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/test3.13 | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/testsuite/expect/test3.13 b/testsuite/expect/test3.13
index bcce201215..9781ffcff9 100755
--- a/testsuite/expect/test3.13
+++ b/testsuite/expect/test3.13
@@ -109,7 +109,7 @@ log_info "Test 1"
 set no_jobs 0
 spawn $scontrol update JobName=$script_name UserID=1 Priority=$new_prio
 expect {
-       -re "No jobs with" {
+       -re "Invalid UserID" {
                set no_jobs 1
                exp_continue
        }
@@ -130,7 +130,7 @@ set no_jobs 0
 set my_uid  [get_my_uid]
 spawn $scontrol update JobName=$script_name UserID=$my_uid Priority=$new_prio
 expect {
-       -re "No jobs with" {
+       -re "Invalid UserID" {
                set no_jobs 1
                exp_continue
        }

++++++ Fix-test-32.8.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Wed Jun 15 08:41:16 2022 +0200
Subject: Fix test 32.8
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 6641a03b1d1dfcb937617067f50c8069a04ec9b0
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/test32.8 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testsuite/expect/test32.8 b/testsuite/expect/test32.8
index 76f65c3ccc..61dba8759b 100755
--- a/testsuite/expect/test32.8
+++ b/testsuite/expect/test32.8
@@ -86,7 +86,7 @@ if {$job_id == 0} {
 }
 
 wait_for_job -fail $job_id "DONE"
-wai_for_file -fail $file_out
+wait_for_file -fail $file_out
 
 set number_1 -1
 set number_2 -1

++++++ Fix-test-38.11.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Wed Jun 15 08:41:45 2022 +0200
Subject: Fix test 38.11
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 235768790cb2e9cf011e6d08116a468ebec71582
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/test38.11 | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/testsuite/expect/test38.11 b/testsuite/expect/test38.11
index d2c07d60c7..bf5d10ecc9 100755
--- a/testsuite/expect/test38.11
+++ b/testsuite/expect/test38.11
@@ -99,9 +99,9 @@ make_bash_script $script "
 $srun -N1 -n1 --het-group=0 mkdir -p $tmp_dir/$node1
 $srun -N1 -n1 --het-group=1 mkdir -p $tmp_dir/$node2
 
-$sbcast -f -j$het_job_id $srun $tmp_dir/file
-$sbcast -f -j${het_job_id}+0 $srun $tmp_dir/$node1/file_comp0
-$sbcast -f -j${het_job_id}+1 $srun $tmp_dir/$node2/file_comp1
+$sbcast -f -j\$SLURM_JOBID $srun $tmp_dir/file
+$sbcast -f -j\$SLURM_JOBID $srun $tmp_dir/$node1/file_comp0
+$sbcast -f -j\$((SLURM_JOBID+1)) $srun $tmp_dir/$node2/file_comp1
 
 echo -n \"\nChecking node 1: \"
 $srun -Q -N1 -n1 --het-group=1 ls $tmp_dir/file

++++++ Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Sat Jul 2 11:25:11 2022 +0200
Subject: Fix test7.2 to find libpmix under lib64 as well
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 4771b96995f90a64a828aac16a10bd56db61a711
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/test7.2 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testsuite/expect/test7.2 b/testsuite/expect/test7.2
index 9d1f1a2dee..f63ecd643e 100755
--- a/testsuite/expect/test7.2
+++ b/testsuite/expect/test7.2
@@ -42,7 +42,7 @@ if {[get_config_param "SwitchType"] eq "switch/cray"} {
        skip "This test is incompatible with Cray systems"
 }
 
-if { [file exists ${slurm_dir}/lib/libpmi.so] == 0 } {
+if { ![file exists ${slurm_dir}/lib/libpmi.so] && ![file exists 
${slurm_dir}/lib64/libpmi.so]} {
     skip "PMI library not compiled, can't perform pmi testing"
 }
 

++++++ Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch 
++++++
From: Egbert Eich <e...@suse.com>
Date: Wed Jun 22 16:32:35 2022 +0200
Subject: Keep logs of skipped test when running test cases sequentially.
Patch-mainline: Not yet
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 457a53ca97b50530bb2fafda72d465507c434960
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 testsuite/expect/regression.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/testsuite/expect/regression.py b/testsuite/expect/regression.py
index bcccaadbf5..b39af0c4e2 100755
--- a/testsuite/expect/regression.py
+++ b/testsuite/expect/regression.py
@@ -199,7 +199,8 @@ def main(argv=None):
             sys.stdout.write('SKIPPED\n')
             if not options.keep_logs:
                 try:
-                    os.remove(testlog_name)
+#                    os.remove(testlog_name)
+                     os.rename(testlog_name, testlog_name+'.skipped')
                 except IOError as e:
                     print('ERROR failed to close %s %s' % (testlog_name, e),
                             file=sys.stederr);

++++++ README_Testsuite.md ++++++
# Running the Slurm 'expect' Testsuite

The ```slurm-testsuite``` package contains the Slurm expect test suite.
This package is meant to be installed on a test setup only, it should
NEVER BE INSTALLED ON A REGULAR OR EVEN PRODUCTION SYSTEM.
SUSE uses this package to determine regressions and for quality assurance.
The results are monitored and evaluated regularly in house.
A specific configuration is required to run this test suite, this document
attempts to describe the steps needed.
A small subset of tests is currently failing. The reasons are yet to be
determined.

Please do not file bug reports based on test results!

The testsuite is preconfigured to work with 4 nodes: ```node01```,...,
```node04```. ```node01``` serves as control and compute node. The slurm
configuration, home, and the test suite are shared across the nodes.
The test suite should be mounted under /home (to make ```sgather``` work
correctly).

For tests involving MPI this test suite currently uses OpenMPI version 4.

## Install and set up the Base System

1. Prepare image with a minimal minimal text mode installation.
2. Add NFS kernel server support:
   ```
    # zypper install nfs-kernel-server
        ```
3. Install, enable and start sshd and make sure root is able to log in
   without password across all nodes.
    ```
         # zypper install openssh-server openssh-clients
         # systemctl enable --now sshd
         # ssh-keygen -t rsa -f .ssh/id_rsa -N
         # cat .ssh/id_rsa.pub >> .ssh/authorized_keys
        ```
4. Create a test user 'auser' allow ssh from/to root:
   ```
     # useradd -m auser
         # cp -r /root/.ssh /home/auser
   ```
5. Set up a persistent network if to obtain the network address and
   hostname thru DHCP:
   ```
    # echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", '\
          'ATTR{address}=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1",'\
          ' KERNEL=="?*", NAME="lan0"
    # cat > root/etc/sysconfig/network/ifcfg-lan0 <<EOF
        BOOTPROTO='dhcp'
        MTU=''
        REMOTE_IPADDR=''
        STARTMODE='onboot'
        EOF
        # sed -i 's/DHCLIENT_SET_HOSTNAME="no"/DHCLIENT_SET_HOSTNAME="yes"/' \
          /etc/sysconfig/network/dhcp
   ```

## Install and set up the Slurm specific Environment

1. Install package slurm-testsuite.
2. Set up, enable mariadb, add slurm accounting database:
   ```
    # sed -i -e "/^bind-address/s@\(^.*$\)@# \1@" /etc/my.cnf
    # systemctl start maridb
        # mysql -uroot -e "create user 'slurm'@'node01' identified by 'linux';"
        # mysql -uroot -e "create database slurm_acct_db;"
        # mysql -uroot -e "grant all on slurm_acct_db.* TO 'slurm'@'node01';"
        ```
3. Set up shared home, testsuite and slurm config directories, enable
   NFS server:
   ```
   # mkdir -p /srv/home
   # mv /home/auser /srv/home
   # mkdir /home/slurm-testsuite
   # chown slurm:slurm /home/slurm-testsuite
   # cat >> /etc/exports <<EOF
     /srv/home *(rw,no_subtree_check,sync,no_root_squash)
     /srv/slurm-testsuite *(rw,no_subtree_check,sync,no_root_squash)
     /srv/slurm-testsuite/shared *(rw,no_subtree_check,sync,no_root_squash)
     /srv/slurm-testsuite/config *(rw,no_subtree_check,sync,no_root_squash)
     EOF
   # cat >> /etc/fstab <<EOF
     node01:/srv/home /home nfs sync,hard,rw 0 0
     node01:/srv/slurm-testsuite/config /etc/slurm nfs sync,hard,rw 0 0
     node01:/srv/slurm-testsuite/shared /var/lib/slurm/shared nfs sync,hard,rw 
0 0
     node01:/srv/slurm-testsuite /home/slurm-testsuite nfs sync,hard,rw 0 0
   # systemctl enable nfs-server

   ```
# Clone Nodes and bring up Test System

1. Now halt the system and duplicate it 3 times.

2. Set up the dhcp server and make sure the nodes receive the hostnames
   ``node01```,..., ```node04```.

3. Enable munge and slurmd:
    ```
        # systemctl enable munge
        # systemctl enable slurmd
        ```

4. Boot all 4 nodes (start with ```node01```).
5. On ```node01```, log in as ```root``` and run ```setup-testsuite.sh```:
   ```
   # ./setup-testsuite.sh
   ```
6. Load the environment and run the tests as user 'slurm':
   ```
   # sudo -s -u slurm
   $ module load gnu openmpi
   $ cd /home/test/home/slurm-testsuite/testsuite/expect
   $ ./regression.py
   ```

There are a number of tests which require a different configuration
and thus will be skipped.
For a number of these, the alternatives are documented in the config
file shipped with this package.
A small number of tests fail for yet unknown reasons.
Also, when run sequentially, some tests may fail intermittendly as the
test suite is not race free. Often the reason for this is that tests
try to determine the availability of resources and may behave incorrectly
if an insufficient number is marked 'idle'. This problem may be less
pronounced when more resources (nodes) are available. Usually, these
issues will not show when tests are run manually. Therefore, it is important
the re-check failed tests manually.

++++++ slurm-22.05.0.tar.bz2 -> slurm-22.05.2.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/slurm/slurm-22.05.0.tar.bz2 
/work/SRC/openSUSE:Factory/.slurm.new.1523/slurm-22.05.2.tar.bz2 differ: char 
11, line 1

++++++ slurm-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.rrRvTg/_old  2022-07-13 13:45:45.598063472 +0200
+++ /var/tmp/diff_new_pack.rrRvTg/_new  2022-07-13 13:45:45.598063472 +0200
@@ -2,18 +2,50 @@
 addFilter(".*obsolete-not-provided slurmdb-direct.*")
 
 # libslurm provides an ABI and a wire protocol. The wire protocol may change
-# with any SLURM version in an incompatible way. Therefore, multiple versions
-# of libslurm should not be installed on the same system.
-# Thus, libraries depending on libslurm need to match the installed SLURM
+# with any Slurm version in an incompatible way. The wire protocol is
+# implemented in the library libslurm.
+# Therefore, multiple versions of libslurm should not be installed on the
+# same system.
+# Thus, libraries depending on libslurm need to match the installed Slurm
 # version - independent of their major versions.
-# To host multiple SLURM versions in the same repository we add the version
+# To host multiple Slurm versions in the same repository we add the version
 # string to package names for none-base versions - even to library packages.
 # This mainly applies to upgrade packages for Leap and SLE in the maintenance
 # channel.
-addFilter("libnss_slurm\d_\d{2}_\d{2}.*: .* shlib-policy-name-error.*")
+addFilter("libnss_slurm\d_\d{2}_\d{2}.*: E: shlib-policy-name-error.*")
 
-# slurms uses shared libraries for its plugins, so these plugins can have 
+# slurms uses shared libraries for its plugins, so these plugins can have
 # no dependency information
 
 addFilter(".*shared-library-without-dependency-information 
/usr/lib64/slurm/.*so")
+# Our logrotate file names are derived from the service name.
+addFilter(".* E: incoherent-logrotate-file /etc/logrotate.d/slurm.*\.conf")
+
+# ? Why should we package the log dir?
+addFilter(".*: E: logrotate-log-dir-not-packaged /var/log")
+# these packages contain %service_del_postun_without_restart -
+# which we define if it is not defined. This needs to be kept
+# as long as we need to support the HPC module for SLE-12.
+addFilter("slurm(|-node|-slurmdbd)\..*: 
systemd-service-without-service_del_postun .*")
+
+# Testsuite is not meant to be installed on a user system.
+# The idea is to place the test suite into a package mostly unaltered
+# to place it to a test rig without requiring to install the full Slurm
+# sources.
+# ... and in the same vein
+addFilter("slurm(|_.*)-testsuite.*: E: filelist-forbidden-opt /opt/slurmtest")
+# This is by intention - the test suite requires a test suite specific
+# systemd unit file.
+addFilter("slurm(|_.*)-testsuite.*: E: filelist-forbidden-systemd-userdirs")
+# It is not a devel package but a test suite. The test suite is designed to
+# build test binaries when it is executed.
+addFilter("slurm(|_.*)-testsuite.*: E: devel-file-in-non-devel-package")
+# We want to give root a script to set up the test system
+addFilter("slurm(|_.*)-testsuite.*: E: filelist-forbidden-fhs23 /root")
+# Testsuite needs this as it builds test binaries.
+addFilter("slurm(|_.*)-testsuite.*: devel-dependency libnuma-devel")
+addFilter("slurm(|_.*)-testsuite.*: E: explicit-lib-dependency libnuma-devel")
+# To reduce the amount of preparation, the test suite supplies all required
+# settings.
+addFilter("slurm(|_.*)-testsuite.*: sudoers-file-unauthorized .*")
 

Reply via email to