forked from pool/slurm
Compare commits
15 Commits
Author | SHA256 | Date | |
---|---|---|---|
|
8a2be70840 | ||
247a29f2a0 | |||
3a3588a812 | |||
|
3b4d2235f3 | ||
bf43fd9d06 | |||
|
e8b6930a42 | ||
626fb47a3b | |||
|
17d576bce0 | ||
b1107f7a34 | |||
|
3133935d61 | ||
427f09ad29 | |||
|
de9dc95156 | ||
1cc2983ebe | |||
b2f6e848a1 | |||
fc209e050f |
@ -1,65 +0,0 @@
|
|||||||
From: Egbert Eich <eich@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 <eich@suse.com>
|
|
||||||
Signed-off-by: Egbert Eich <eich@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"
|
|
369
regression.py.sle12
Normal file
369
regression.py.sle12
Normal file
@ -0,0 +1,369 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
############################################################################
|
||||||
|
# Copyright (C) 2006 The Regents of the University of California.
|
||||||
|
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
|
||||||
|
# Written by Christopher J. Morrone <morrone2@llnl.gov>
|
||||||
|
# CODE-OCEC-09-009. All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is part of Slurm, a resource management program.
|
||||||
|
# For details, see <https://slurm.schedmd.com/>.
|
||||||
|
# Please also read the supplied file: DISCLAIMER.
|
||||||
|
#
|
||||||
|
# Slurm is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with Slurm; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
"""This script makes it easier to run the Slurm expect test scripts."""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import signal
|
||||||
|
from optparse import OptionParser
|
||||||
|
from optparse import OptionValueError
|
||||||
|
from subprocess import Popen
|
||||||
|
|
||||||
|
|
||||||
|
def main(argv=None):
|
||||||
|
# "tests" is a list containing tuples of length 3 of the form
|
||||||
|
# (test major number, test minor number, test filename)
|
||||||
|
tests = []
|
||||||
|
failed_tests = []
|
||||||
|
passed_tests = []
|
||||||
|
skipped_tests = []
|
||||||
|
begin = (1, 1)
|
||||||
|
abort = False
|
||||||
|
|
||||||
|
# Handle command line parameters
|
||||||
|
if argv is None:
|
||||||
|
argv = sys.argv
|
||||||
|
|
||||||
|
parser = OptionParser()
|
||||||
|
parser.add_option(
|
||||||
|
"-t",
|
||||||
|
"--time-individual",
|
||||||
|
action="store_true",
|
||||||
|
dest="time_individual",
|
||||||
|
default=False,
|
||||||
|
)
|
||||||
|
parser.add_option(
|
||||||
|
"-e",
|
||||||
|
"--exclude",
|
||||||
|
type="string",
|
||||||
|
dest="exclude_tests",
|
||||||
|
action="callback",
|
||||||
|
callback=test_parser,
|
||||||
|
help="comma or space separated string of tests to skip",
|
||||||
|
)
|
||||||
|
parser.add_option(
|
||||||
|
"-i",
|
||||||
|
"--include",
|
||||||
|
type="string",
|
||||||
|
dest="include_tests",
|
||||||
|
action="callback",
|
||||||
|
callback=test_parser,
|
||||||
|
help="comma or space separated string of tests to include",
|
||||||
|
)
|
||||||
|
parser.add_option("-k", "--keep-logs", action="store_true", default=False)
|
||||||
|
parser.add_option("-s", "--stop-on-first-fail", action="store_true", default=False)
|
||||||
|
parser.add_option(
|
||||||
|
"-b",
|
||||||
|
"--begin-from-test",
|
||||||
|
type="string",
|
||||||
|
dest="begin_from_test",
|
||||||
|
action="callback",
|
||||||
|
callback=test_parser,
|
||||||
|
)
|
||||||
|
parser.add_option(
|
||||||
|
"-f",
|
||||||
|
"--results-file",
|
||||||
|
type="string",
|
||||||
|
help="write json result to specified file name",
|
||||||
|
)
|
||||||
|
|
||||||
|
(options, args) = parser.parse_args(args=argv)
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
if not os.path.isfile("globals"):
|
||||||
|
print('ERROR: "globals" not here as needed', file=sys.stderr)
|
||||||
|
return -1
|
||||||
|
|
||||||
|
# Clear any environment variables that could break the tests.
|
||||||
|
# Cray sets some squeue format options that break tests
|
||||||
|
del os.environ["SQUEUE_ALL"]
|
||||||
|
del os.environ["SQUEUE_SORT"]
|
||||||
|
del os.environ["SQUEUE_FORMAT"]
|
||||||
|
del os.environ["SQUEUE_FORMAT2"]
|
||||||
|
|
||||||
|
# Read the current working directory and build a sorted list
|
||||||
|
# of the available tests.
|
||||||
|
test_re = re.compile(r"test(\d+)\.(\d+)$")
|
||||||
|
for filename in os.listdir("."):
|
||||||
|
match = test_re.match(filename)
|
||||||
|
if match:
|
||||||
|
major = int(match.group(1))
|
||||||
|
minor = int(match.group(2))
|
||||||
|
if not test_in_list(major, minor, options.exclude_tests) and (
|
||||||
|
not options.include_tests
|
||||||
|
or test_in_list(major, minor, options.include_tests)
|
||||||
|
):
|
||||||
|
tests.append((major, minor, filename))
|
||||||
|
if not tests:
|
||||||
|
print(
|
||||||
|
"ERROR: no test files found in current working directory", file=sys.stderr
|
||||||
|
)
|
||||||
|
return -1
|
||||||
|
# sory by major, minor
|
||||||
|
tests.sort(key=lambda t: (t[0], t[1]))
|
||||||
|
|
||||||
|
# Set begin value
|
||||||
|
if options.begin_from_test is not None:
|
||||||
|
begin = options.begin_from_test[0]
|
||||||
|
|
||||||
|
# Now run the tests
|
||||||
|
start_time = time.time()
|
||||||
|
test_env = os.environ.copy()
|
||||||
|
if options.stop_on_first_fail:
|
||||||
|
test_env["SLURM_TESTSUITE_CLEANUP_ON_FAILURE"] = "false"
|
||||||
|
else:
|
||||||
|
test_env["SLURM_TESTSUITE_CLEANUP_ON_FAILURE"] = "true"
|
||||||
|
print("Started:", time.asctime(time.localtime(start_time)), file=sys.stdout)
|
||||||
|
sys.stdout.flush()
|
||||||
|
results_list = []
|
||||||
|
for test in tests:
|
||||||
|
if begin[0] > test[0] or (begin[0] == test[0] and begin[1] > test[1]):
|
||||||
|
continue
|
||||||
|
test_id = "{0}.{1}".format(test[0],test[1])
|
||||||
|
sys.stdout.write("Running test %s " % test_id)
|
||||||
|
sys.stdout.flush()
|
||||||
|
test_dict = {}
|
||||||
|
test_dict["id"] = test_id
|
||||||
|
testlog_name = "test{test_id}.log"
|
||||||
|
try:
|
||||||
|
os.remove(testlog_name + ".failed")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
testlog = open(testlog_name, "w+")
|
||||||
|
|
||||||
|
if options.time_individual:
|
||||||
|
t1 = time.time()
|
||||||
|
test_dict["start_time"] = float("%.03f" % t1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
child = Popen(
|
||||||
|
("expect", test[2]),
|
||||||
|
shell=False,
|
||||||
|
env=test_env,
|
||||||
|
stdout=testlog,
|
||||||
|
stderr=testlog,
|
||||||
|
)
|
||||||
|
retcode = child.wait()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
child.send_signal(signal.SIGINT)
|
||||||
|
retcode = child.wait()
|
||||||
|
abort = True
|
||||||
|
|
||||||
|
if options.time_individual:
|
||||||
|
t2 = time.time()
|
||||||
|
minutes = int(int(t2 - t1) / 60)
|
||||||
|
seconds = (int(t2 - t1)) % 60
|
||||||
|
if minutes > 0:
|
||||||
|
sys.stdout.write("%d min " % (minutes))
|
||||||
|
sys.stdout.write("%.2f sec " % (seconds))
|
||||||
|
test_dict["duration"] = float("%.03f" % (t2 - t1))
|
||||||
|
|
||||||
|
if retcode == 0:
|
||||||
|
status = "pass"
|
||||||
|
elif retcode > 127:
|
||||||
|
status = "skip"
|
||||||
|
else:
|
||||||
|
status = "fail"
|
||||||
|
|
||||||
|
test_dict["status"] = status
|
||||||
|
|
||||||
|
# Determine the reason if requesting a json results file
|
||||||
|
if status != "pass" and options.results_file:
|
||||||
|
testlog.flush()
|
||||||
|
testlog.seek(0)
|
||||||
|
test_output = testlog.read()
|
||||||
|
|
||||||
|
sections = [s for s in test_output.split("=" * 78 + "\n")]
|
||||||
|
header = sections[1]
|
||||||
|
body = sections[2]
|
||||||
|
footer = "".join(sections[3:])
|
||||||
|
|
||||||
|
fatals = re.findall(
|
||||||
|
r"(?ms)\[[^\]]+\][ \[]+Fatal[ \]:]+(.*?) \(fail[^\)]+\)$", body
|
||||||
|
)
|
||||||
|
errors = re.findall(
|
||||||
|
r"(?ms)\[[^\]]+\][ \[]+Error[ \]:]+(.*?) \(subfail[^\)]+\)$", body
|
||||||
|
)
|
||||||
|
warnings = re.findall(
|
||||||
|
r"(?ms)\[[^\]]+\][ \[]+Warning[ \]:]+((?:(?!Warning).)*) \((?:sub)?skip[^\)]+\)$",
|
||||||
|
body,
|
||||||
|
)
|
||||||
|
if fatals:
|
||||||
|
test_dict["reason"] = fatals[0]
|
||||||
|
elif errors:
|
||||||
|
test_dict["reason"] = errors[0]
|
||||||
|
elif warnings:
|
||||||
|
test_dict["reason"] = warnings[0]
|
||||||
|
|
||||||
|
results_list.append(test_dict)
|
||||||
|
|
||||||
|
testlog.close()
|
||||||
|
|
||||||
|
if status == "pass":
|
||||||
|
passed_tests.append(test)
|
||||||
|
sys.stdout.write("\n")
|
||||||
|
if not options.keep_logs:
|
||||||
|
try:
|
||||||
|
os.remove(testlog_name)
|
||||||
|
except IOError as e:
|
||||||
|
print(
|
||||||
|
"ERROR failed to close %s %s" % (testlog_name, e),
|
||||||
|
file=sys.stederr,
|
||||||
|
)
|
||||||
|
elif status == "skip":
|
||||||
|
skipped_tests.append(test)
|
||||||
|
sys.stdout.write("SKIPPED\n")
|
||||||
|
if not options.keep_logs:
|
||||||
|
try:
|
||||||
|
os.remove(testlog_name)
|
||||||
|
except IOError as e:
|
||||||
|
print(
|
||||||
|
"ERROR failed to close %s %s" % (testlog_name, e),
|
||||||
|
file=sys.stederr,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
failed_tests.append(test)
|
||||||
|
os.rename(testlog_name, testlog_name + ".failed")
|
||||||
|
sys.stdout.write("FAILED!\n")
|
||||||
|
if options.stop_on_first_fail:
|
||||||
|
break
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
if abort:
|
||||||
|
sys.stdout.write("\nRegression interrupted!\n")
|
||||||
|
break
|
||||||
|
|
||||||
|
end_time = time.time()
|
||||||
|
print("Ended:", time.asctime(time.localtime(end_time)), file=sys.stdout)
|
||||||
|
print(
|
||||||
|
"\nTestsuite ran for %d minutes %d seconds"
|
||||||
|
% ((end_time - start_time) / 60, (end_time - start_time) % 60),
|
||||||
|
file=sys.stdout,
|
||||||
|
)
|
||||||
|
|
||||||
|
if options.results_file:
|
||||||
|
with open(options.results_file, "w") as results_file:
|
||||||
|
json.dump(results_list, results_file)
|
||||||
|
|
||||||
|
print("Completions :", len(passed_tests), file=sys.stdout)
|
||||||
|
print("Failures :", len(failed_tests), file=sys.stdout)
|
||||||
|
print("Skipped :", len(skipped_tests), file=sys.stdout)
|
||||||
|
if len(failed_tests) > 0:
|
||||||
|
print("Failed tests : ", file=sys.stdout)
|
||||||
|
first = True
|
||||||
|
for test in failed_tests:
|
||||||
|
if first:
|
||||||
|
first = False
|
||||||
|
else:
|
||||||
|
sys.stdout.write(",")
|
||||||
|
sys.stdout.write("%d.%d" % (test[0], test[1]))
|
||||||
|
sys.stdout.write("\n")
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
if abort:
|
||||||
|
print("INCOMPLETE", file=sys.stdout)
|
||||||
|
|
||||||
|
if len(failed_tests) > 0:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_in_list(major, minor, test_list):
|
||||||
|
"""Test for whether a test numbered major.minor is in test_list.
|
||||||
|
|
||||||
|
"major" and "minor" must be integers. "test_list" is a list of
|
||||||
|
tuples, each tuple representing one test. The tuples are of the
|
||||||
|
form:
|
||||||
|
|
||||||
|
(major, minor, filename)
|
||||||
|
|
||||||
|
Returns True if the test is in the list, and False otherwise.
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not test_list:
|
||||||
|
return False
|
||||||
|
for test in test_list:
|
||||||
|
if (test[0] == "*" or test[0] == major) and (
|
||||||
|
test[1] == "*" or test[1] == minor
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def test_parser(option, opt_str, value, parser):
|
||||||
|
"""Option callback function for the optparse.OptionParser class.
|
||||||
|
|
||||||
|
Will take a string representing one or more test names and append
|
||||||
|
a tuple representing the test into a list in the options's destination
|
||||||
|
variable.
|
||||||
|
|
||||||
|
A string representing test names must patch the regular expression
|
||||||
|
named "test_re" below. Some examples of exceptable options are:
|
||||||
|
|
||||||
|
'1.5'
|
||||||
|
'test9.8'
|
||||||
|
'2.6 test3.1 14.2'
|
||||||
|
'3.4,6.7,8.3'
|
||||||
|
'1.*'
|
||||||
|
'*.2'
|
||||||
|
'1.*,3.8,9.2'
|
||||||
|
|
||||||
|
Raises OptionValueError on error.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Initialize the option's destination array, if is does not already exist.
|
||||||
|
if not hasattr(parser.values, option.dest):
|
||||||
|
setattr(parser.values, option.dest, [])
|
||||||
|
if getattr(parser.values, option.dest) is None:
|
||||||
|
setattr(parser.values, option.dest, [])
|
||||||
|
|
||||||
|
# Get a pointer to the option's destination array.
|
||||||
|
l = getattr(parser.values, option.dest)
|
||||||
|
|
||||||
|
# Split the user's option string into a series of tuples that represent
|
||||||
|
# each test, and add each tuple to the destination array.
|
||||||
|
splitter = re.compile(r"[,\s]+")
|
||||||
|
val = splitter.split(value)
|
||||||
|
test_re = re.compile(r"(test)?((\d+)|\*)\.((\d+)|\*)$")
|
||||||
|
for v in val:
|
||||||
|
m = test_re.match(v)
|
||||||
|
if not m:
|
||||||
|
raise OptionValueError
|
||||||
|
major = m.group(2)
|
||||||
|
if major != "*":
|
||||||
|
major = int(major)
|
||||||
|
minor = m.group(4)
|
||||||
|
if minor != "*":
|
||||||
|
minor = int(minor)
|
||||||
|
l.append((major, minor))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:7a8f4b1b46d3a8ec9a95066b04635c97f9095877f6189a8ff7388e5e74daeef3
|
|
||||||
size 7365175
|
|
3
slurm-24.11.0.tar.bz2
Normal file
3
slurm-24.11.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:39ebeeeeb5d874e090b7f2629bd319bfe7c41510931ff2244f85e961bdc69056
|
||||||
|
size 7254375
|
1291
slurm.changes
1291
slurm.changes
File diff suppressed because it is too large
Load Diff
105
slurm.spec
105
slurm.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file
|
# spec file for package slurm
|
||||||
#
|
#
|
||||||
# Copyright (c) 2024 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
|
|
||||||
# Check file META in sources: update so_version to (API_CURRENT - API_AGE)
|
# Check file META in sources: update so_version to (API_CURRENT - API_AGE)
|
||||||
%define so_version 40
|
%define so_version 42
|
||||||
# Make sure to update `upgrades` as well!
|
# Make sure to update `upgrades` as well!
|
||||||
%define ver 23.11.5
|
%define ver 24.11.0
|
||||||
%define _ver _23_11
|
%define _ver _24_11
|
||||||
%define dl_ver %{ver}
|
%define dl_ver %{ver}
|
||||||
# so-version is 0 and seems to be stable
|
# so-version is 0 and seems to be stable
|
||||||
%define pmi_so 0
|
%define pmi_so 0
|
||||||
@ -59,6 +59,12 @@ ExclusiveArch: do_not_build
|
|||||||
%if 0%{?sle_version} == 150500 || 0%{?sle_version} == 150600
|
%if 0%{?sle_version} == 150500 || 0%{?sle_version} == 150600
|
||||||
%define base_ver 2302
|
%define base_ver 2302
|
||||||
%endif
|
%endif
|
||||||
|
%if 0%{?sle_version} == 150500 || 0%{?sle_version} == 150600
|
||||||
|
%define base_ver 2302
|
||||||
|
%endif
|
||||||
|
%if 0%{?sle_version} == 150700
|
||||||
|
%define base_ver 2411
|
||||||
|
%endif
|
||||||
|
|
||||||
%define ver_m %{lua:x=string.gsub(rpm.expand("%ver"),"%.[^%.]*$","");print(x)}
|
%define ver_m %{lua:x=string.gsub(rpm.expand("%ver"),"%.[^%.]*$","");print(x)}
|
||||||
# Keep format_spec_file from botching the define below:
|
# Keep format_spec_file from botching the define below:
|
||||||
@ -168,10 +174,9 @@ Source12: slurmdbd.xml
|
|||||||
# create: tar --owner=nobody --group=nogroup --exclude=*~ -cvzf test_setup.tar.gz test_setup
|
# create: tar --owner=nobody --group=nogroup --exclude=*~ -cvzf test_setup.tar.gz test_setup
|
||||||
Source20: test_setup.tar.gz
|
Source20: test_setup.tar.gz
|
||||||
Source21: README_Testsuite.md
|
Source21: README_Testsuite.md
|
||||||
|
Source22: regression.py.sle12
|
||||||
Patch0: Remove-rpath-from-build.patch
|
Patch0: Remove-rpath-from-build.patch
|
||||||
Patch2: pam_slurm-Initialize-arrays-and-pass-sizes.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
|
Patch15: Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch
|
||||||
|
|
||||||
%{upgrade_dep %pname}
|
%{upgrade_dep %pname}
|
||||||
@ -406,19 +411,6 @@ Requires: %{name}-config = %{version}
|
|||||||
%description plugins
|
%description plugins
|
||||||
This package contains the SLURM plugins (loadable shared objects)
|
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
|
%package torque
|
||||||
Summary: Wrappers for transitition from Torque/PBS to SLURM
|
Summary: Wrappers for transitition from Torque/PBS to SLURM
|
||||||
Group: Productivity/Clustering/Computing
|
Group: Productivity/Clustering/Computing
|
||||||
@ -529,6 +521,7 @@ This package contains just the minmal code to run a compute node.
|
|||||||
%package config
|
%package config
|
||||||
Summary: Config files and directories for slurm services
|
Summary: Config files and directories for slurm services
|
||||||
Group: Productivity/Clustering/Computing
|
Group: Productivity/Clustering/Computing
|
||||||
|
%{?sysusers_requires}
|
||||||
Requires: logrotate
|
Requires: logrotate
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
%if 0%{?suse_version} <= 1140
|
%if 0%{?suse_version} <= 1140
|
||||||
@ -589,7 +582,9 @@ Requires: %{name}-lua = %version
|
|||||||
Requires: %{name}-munge = %version
|
Requires: %{name}-munge = %version
|
||||||
Requires: %{name}-node = %version
|
Requires: %{name}-node = %version
|
||||||
Requires: %{name}-openlava = %version
|
Requires: %{name}-openlava = %version
|
||||||
|
%if 0%{?build_slurmrestd}
|
||||||
Requires: %{name}-rest = %version
|
Requires: %{name}-rest = %version
|
||||||
|
%endif
|
||||||
Requires: %{name}-seff = %version
|
Requires: %{name}-seff = %version
|
||||||
Requires: %{name}-sjstat = %version
|
Requires: %{name}-sjstat = %version
|
||||||
Requires: %{name}-slurmdbd = %version
|
Requires: %{name}-slurmdbd = %version
|
||||||
@ -606,6 +601,7 @@ Requires: libnuma-devel
|
|||||||
Requires: pam
|
Requires: pam
|
||||||
Requires: pdsh
|
Requires: pdsh
|
||||||
Requires: perl-%{name} = %version
|
Requires: perl-%{name} = %version
|
||||||
|
Requires: readline-devel
|
||||||
Requires: sudo
|
Requires: sudo
|
||||||
Requires: tar
|
Requires: tar
|
||||||
BuildRequires: sudo
|
BuildRequires: sudo
|
||||||
@ -762,9 +758,20 @@ rm -rf %{buildroot}/%{_libdir}/slurm/*.{a,la} \
|
|||||||
%{buildroot}/%{_libdir}/*.la \
|
%{buildroot}/%{_libdir}/*.la \
|
||||||
%{buildroot}/%_lib/security/*.la
|
%{buildroot}/%_lib/security/*.la
|
||||||
|
|
||||||
rm %{buildroot}/%{perl_archlib}/perllocal.pod \
|
# Fix perl
|
||||||
%{buildroot}/%{perl_vendorarch}/auto/Slurm/.packlist \
|
rm %{buildroot}%{perl_archlib}/perllocal.pod \
|
||||||
%{buildroot}/%{perl_vendorarch}/auto/Slurmdb/.packlist
|
%{buildroot}%{perl_sitearch}/auto/Slurm/.packlist \
|
||||||
|
%{buildroot}%{perl_sitearch}/auto/Slurmdb/.packlist
|
||||||
|
|
||||||
|
# Fix shell completion bindings
|
||||||
|
for i in `find %{buildroot}/usr/share/bash-completion/completions/ -type l`; do
|
||||||
|
ln -sf $(basename $(readlink -f $i)) $i;
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{perl_vendorarch}
|
||||||
|
|
||||||
|
mv %{buildroot}%{perl_sitearch}/* \
|
||||||
|
%{buildroot}%{perl_vendorarch}
|
||||||
|
|
||||||
# Remove Cray specific binaries
|
# Remove Cray specific binaries
|
||||||
rm -f %{buildroot}/%{_sbindir}/capmc_suspend \
|
rm -f %{buildroot}/%{_sbindir}/capmc_suspend \
|
||||||
@ -849,7 +856,12 @@ filelist="$(grep '#include' *.c | sed -ne 's/.*:#include *\"\([^\"]*\)\".*/\1/p'
|
|||||||
while true; do
|
while true; do
|
||||||
oldfilelist=$filelist; tlist=""
|
oldfilelist=$filelist; tlist=""
|
||||||
for i in $filelist; do
|
for i in $filelist; do
|
||||||
nlist=" $(grep '#include' ../../$i | sed -ne 's/#include *\"\([^\"]*\)\".*/\1/p')"
|
nlist=" $(grep '#include' ../../$i | sed -ne 's@#include *\"\([^\"]*\)\".*@\1@p')"
|
||||||
|
tlist+=" $(for j in $nlist; do [ -e ../../$j ] && echo $j || true; done)"
|
||||||
|
done
|
||||||
|
# Cater for erroneous: `#include <src/[slurm_internal_header]>`
|
||||||
|
for i in $filelist; do
|
||||||
|
nlist=" $(grep '#include' ../../$i | sed -ne 's@#include *<\(src/\)\([^>]*\)>.*@\1\2@p')"
|
||||||
tlist+=" $(for j in $nlist; do [ -e ../../$j ] && echo $j || true; done)"
|
tlist+=" $(for j in $nlist; do [ -e ../../$j ] && echo $j || true; done)"
|
||||||
done
|
done
|
||||||
filelist="$(for i in $filelist $tlist; do echo $i; done | sort | uniq)"
|
filelist="$(for i in $filelist $tlist; do echo $i; done | sort | uniq)"
|
||||||
@ -882,6 +894,10 @@ find -type f -name "*.[ao]" -print | while read f; do
|
|||||||
# drop non-deterministic lto bits from .o files
|
# drop non-deterministic lto bits from .o files
|
||||||
strip -p --discard-locals -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 $f
|
strip -p --discard-locals -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 $f
|
||||||
done
|
done
|
||||||
|
# on versions < SLE15 replace regression.py with one compatible with py 3.4
|
||||||
|
%if 0%{?sle_version:1} && 0%{?sle_version} < 150000
|
||||||
|
install -m 755 %{S:22} %{buildroot}/srv/slurm-testsuite/testsuite/expect/regression.py
|
||||||
|
%endif
|
||||||
%if 0%{?suse_version} >= 1500
|
%if 0%{?suse_version} >= 1500
|
||||||
%define tar_sort --sort=name
|
%define tar_sort --sort=name
|
||||||
%endif
|
%endif
|
||||||
@ -914,6 +930,12 @@ 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
|
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}
|
tar -xzf %{S:20}
|
||||||
|
# on versions < SLE15 turn off AcctGatherProfileType and pmix
|
||||||
|
%if 0%{?sle_version:1} && 0%{?sle_version} < 150000
|
||||||
|
sed -i -e "/AcctGatherProfileType/s@^@#@" \
|
||||||
|
-e "/MpiDefault/s@pmix_v3@pmi2@" test_setup/slurm.conf
|
||||||
|
sed -i -e "/ProfileHDF5Dir/s@^@#@" test_setup/acct_gather.conf
|
||||||
|
%endif
|
||||||
mkdir -p %{buildroot}%{_pam_secconfdir}/limits.d
|
mkdir -p %{buildroot}%{_pam_secconfdir}/limits.d
|
||||||
mv test_setup/slurm.conf.limits %{buildroot}%_pam_secconfdir/limits.d/slurm.conf
|
mv test_setup/slurm.conf.limits %{buildroot}%_pam_secconfdir/limits.d/slurm.conf
|
||||||
%if 0%{?sle_version} < 150200
|
%if 0%{?sle_version} < 150200
|
||||||
@ -1086,7 +1108,7 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{?have_netloc:%{_bindir}/netloc_to_topology}
|
%{?have_netloc:%{_bindir}/netloc_to_topology}
|
||||||
%{_sbindir}/sackd
|
%{_sbindir}/sackd
|
||||||
%{_sbindir}/slurmctld
|
%{_sbindir}/slurmctld
|
||||||
%{_sbindir}/slurmsmwd
|
%{_datadir}/bash-completion/completions/
|
||||||
%dir %{_libdir}/slurm/src
|
%dir %{_libdir}/slurm/src
|
||||||
%{_unitdir}/slurmctld.service
|
%{_unitdir}/slurmctld.service
|
||||||
%{_sbindir}/rcslurmctld
|
%{_sbindir}/rcslurmctld
|
||||||
@ -1164,9 +1186,10 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%files -n perl-%{name}
|
%files -n perl-%{name}
|
||||||
%{perl_vendorarch}/Slurm.pm
|
%{perl_vendorarch}/Slurm.pm
|
||||||
%{perl_vendorarch}/Slurm
|
%{perl_vendorarch}/Slurm
|
||||||
%{perl_vendorarch}/auto/Slurm
|
|
||||||
%{perl_vendorarch}/Slurmdb.pm
|
%{perl_vendorarch}/Slurmdb.pm
|
||||||
|
%{perl_vendorarch}/auto/Slurm
|
||||||
%{perl_vendorarch}/auto/Slurmdb
|
%{perl_vendorarch}/auto/Slurmdb
|
||||||
|
%dir %{perl_vendorarch}/auto
|
||||||
%{_mandir}/man3/Slurm*.3pm.*
|
%{_mandir}/man3/Slurm*.3pm.*
|
||||||
|
|
||||||
%files slurmdbd
|
%files slurmdbd
|
||||||
@ -1189,6 +1212,7 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%dir %{_libdir}/slurm
|
%dir %{_libdir}/slurm
|
||||||
%{_libdir}/slurm/libslurmfull.so
|
%{_libdir}/slurm/libslurmfull.so
|
||||||
%{_libdir}/slurm/accounting_storage_slurmdbd.so
|
%{_libdir}/slurm/accounting_storage_slurmdbd.so
|
||||||
|
%{_libdir}/slurm/accounting_storage_ctld_relay.so
|
||||||
%{_libdir}/slurm/acct_gather_energy_pm_counters.so
|
%{_libdir}/slurm/acct_gather_energy_pm_counters.so
|
||||||
%{_libdir}/slurm/acct_gather_energy_gpu.so
|
%{_libdir}/slurm/acct_gather_energy_gpu.so
|
||||||
%{_libdir}/slurm/acct_gather_energy_ibmaem.so
|
%{_libdir}/slurm/acct_gather_energy_ibmaem.so
|
||||||
@ -1197,8 +1221,9 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{_libdir}/slurm/acct_gather_filesystem_lustre.so
|
%{_libdir}/slurm/acct_gather_filesystem_lustre.so
|
||||||
%{_libdir}/slurm/burst_buffer_lua.so
|
%{_libdir}/slurm/burst_buffer_lua.so
|
||||||
%{_libdir}/slurm/burst_buffer_datawarp.so
|
%{_libdir}/slurm/burst_buffer_datawarp.so
|
||||||
|
%{_libdir}/slurm/data_parser_v0_0_42.so
|
||||||
|
%{_libdir}/slurm/data_parser_v0_0_41.so
|
||||||
%{_libdir}/slurm/data_parser_v0_0_40.so
|
%{_libdir}/slurm/data_parser_v0_0_40.so
|
||||||
%{_libdir}/slurm/data_parser_v0_0_39.so
|
|
||||||
%{_libdir}/slurm/cgroup_v1.so
|
%{_libdir}/slurm/cgroup_v1.so
|
||||||
%if 0%{?suse_version} >= 1500
|
%if 0%{?suse_version} >= 1500
|
||||||
%{_libdir}/slurm/cgroup_v2.so
|
%{_libdir}/slurm/cgroup_v2.so
|
||||||
@ -1214,12 +1239,13 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{_libdir}/slurm/gres_nic.so
|
%{_libdir}/slurm/gres_nic.so
|
||||||
%{_libdir}/slurm/gres_shard.so
|
%{_libdir}/slurm/gres_shard.so
|
||||||
%{_libdir}/slurm/hash_k12.so
|
%{_libdir}/slurm/hash_k12.so
|
||||||
|
%{_libdir}/slurm/hash_sha3.so
|
||||||
|
%{_libdir}/slurm/tls_none.so
|
||||||
%{_libdir}/slurm/jobacct_gather_cgroup.so
|
%{_libdir}/slurm/jobacct_gather_cgroup.so
|
||||||
%{_libdir}/slurm/jobacct_gather_linux.so
|
%{_libdir}/slurm/jobacct_gather_linux.so
|
||||||
%{_libdir}/slurm/jobcomp_filetxt.so
|
%{_libdir}/slurm/jobcomp_filetxt.so
|
||||||
%{_libdir}/slurm/jobcomp_lua.so
|
%{_libdir}/slurm/jobcomp_lua.so
|
||||||
%{_libdir}/slurm/jobcomp_script.so
|
%{_libdir}/slurm/jobcomp_script.so
|
||||||
%{_libdir}/slurm/job_container_cncu.so
|
|
||||||
%{_libdir}/slurm/job_container_tmpfs.so
|
%{_libdir}/slurm/job_container_tmpfs.so
|
||||||
%{_libdir}/slurm/job_submit_all_partitions.so
|
%{_libdir}/slurm/job_submit_all_partitions.so
|
||||||
%{_libdir}/slurm/job_submit_defaults.so
|
%{_libdir}/slurm/job_submit_defaults.so
|
||||||
@ -1253,6 +1279,7 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{_libdir}/slurm/serializer_url_encoded.so
|
%{_libdir}/slurm/serializer_url_encoded.so
|
||||||
%{_libdir}/slurm/serializer_yaml.so
|
%{_libdir}/slurm/serializer_yaml.so
|
||||||
%{_libdir}/slurm/site_factor_example.so
|
%{_libdir}/slurm/site_factor_example.so
|
||||||
|
%{_libdir}/slurm/switch_nvidia_imex.so
|
||||||
%{_libdir}/slurm/task_affinity.so
|
%{_libdir}/slurm/task_affinity.so
|
||||||
%{_libdir}/slurm/task_cgroup.so
|
%{_libdir}/slurm/task_cgroup.so
|
||||||
%{_libdir}/slurm/topology_3d_torus.so
|
%{_libdir}/slurm/topology_3d_torus.so
|
||||||
@ -1271,9 +1298,9 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{_libdir}/slurm/node_features_knl_generic.so
|
%{_libdir}/slurm/node_features_knl_generic.so
|
||||||
%{_libdir}/slurm/acct_gather_profile_influxdb.so
|
%{_libdir}/slurm/acct_gather_profile_influxdb.so
|
||||||
%{_libdir}/slurm/jobcomp_elasticsearch.so
|
%{_libdir}/slurm/jobcomp_elasticsearch.so
|
||||||
|
%{_libdir}/slurm/certmgr_script.so
|
||||||
%files plugin-ext-sensors-rrd
|
%{_libdir}/slurm/gpu_nvidia.so
|
||||||
%{_libdir}/slurm/ext_sensors_rrd.so
|
%{_libdir}/slurm/mcs_label.so
|
||||||
|
|
||||||
%files lua
|
%files lua
|
||||||
%{_libdir}/slurm/job_submit_lua.so
|
%{_libdir}/slurm/job_submit_lua.so
|
||||||
@ -1308,10 +1335,6 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%{_mandir}/man8/slurmrestd.*
|
%{_mandir}/man8/slurmrestd.*
|
||||||
%{_libdir}/slurm/openapi_slurmctld.so
|
%{_libdir}/slurm/openapi_slurmctld.so
|
||||||
%{_libdir}/slurm/openapi_slurmdbd.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
|
%{_libdir}/slurm/rest_auth_local.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -1348,12 +1371,10 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%files config-man
|
%files config-man
|
||||||
%{_mandir}/man5/acct_gather.conf.*
|
%{_mandir}/man5/acct_gather.conf.*
|
||||||
%{_mandir}/man5/burst_buffer.conf.*
|
%{_mandir}/man5/burst_buffer.conf.*
|
||||||
%{_mandir}/man5/ext_sensors.conf.*
|
|
||||||
%{_mandir}/man5/slurm.*
|
%{_mandir}/man5/slurm.*
|
||||||
%{_mandir}/man5/cgroup.*
|
%{_mandir}/man5/cgroup.*
|
||||||
%{_mandir}/man5/gres.*
|
%{_mandir}/man5/gres.*
|
||||||
%{_mandir}/man5/helpers.*
|
%{_mandir}/man5/helpers.*
|
||||||
#%%{_mandir}/man5/nonstop.conf.5.*
|
|
||||||
%{_mandir}/man5/oci.conf.5.gz
|
%{_mandir}/man5/oci.conf.5.gz
|
||||||
%{_mandir}/man5/topology.*
|
%{_mandir}/man5/topology.*
|
||||||
%{_mandir}/man5/knl.conf.5.*
|
%{_mandir}/man5/knl.conf.5.*
|
||||||
@ -1368,17 +1389,7 @@ rm -rf /srv/slurm-testsuite/src /srv/slurm-testsuite/testsuite \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files cray
|
%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/mpi_cray_shasta.so
|
||||||
%{_libdir}/slurm/node_features_knl_cray.so
|
|
||||||
%{_libdir}/slurm/power_cray_aries.so
|
|
||||||
|
|
||||||
%if 0%{?slurm_testsuite}
|
%if 0%{?slurm_testsuite}
|
||||||
%files testsuite
|
%files testsuite
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:7a45706911924b06a2ec7d436d4e991d84dc459a505cbdfca244ac5fad2b9b60
|
oid sha256:3c2249601135c2d6c2e6a8d7aa7318d50d354015ecf8a56fc467b43aa0059288
|
||||||
size 3165
|
size 3201
|
||||||
|
Loading…
Reference in New Issue
Block a user