Commit | Line | Data |
---|---|---|
b02eb5b0 PM |
1 | #!/bin/sh |
2 | # SPDX-License-Identifier: GPL-2.0+ | |
3 | # | |
4 | # Runs the C-language litmus tests having a maximum number of processes | |
5 | # to run, defaults to 6. | |
6 | # | |
7 | # sh checkghlitmus.sh | |
8 | # | |
9 | # Run from the Linux kernel tools/memory-model directory. See the | |
10 | # parseargs.sh scripts for arguments. | |
11 | ||
12 | . scripts/parseargs.sh | |
69d476c5 | 13 | . scripts/hwfnseg.sh |
b02eb5b0 PM |
14 | |
15 | T=/tmp/checkghlitmus.sh.$$ | |
16 | trap 'rm -rf $T' 0 | |
17 | mkdir $T | |
18 | ||
19 | # Clone the repository if it is not already present. | |
20 | if test -d litmus | |
21 | then | |
22 | : | |
23 | else | |
24 | git clone https://github.com/paulmckrcu/litmus | |
25 | ( cd litmus; git checkout origin/master ) | |
26 | fi | |
27 | ||
28 | # Create any new directories that have appeared in the github litmus | |
29 | # repo since the last run. | |
30 | if test "$LKMM_DESTDIR" != "." | |
31 | then | |
32 | find litmus -type d -print | | |
33 | ( cd "$LKMM_DESTDIR"; sed -e 's/^/mkdir -p /' | sh ) | |
34 | fi | |
35 | ||
69d476c5 PM |
36 | # Create a list of the specified litmus tests previously run. |
37 | ( cd $LKMM_DESTDIR; find litmus -name "*.litmus${hwfnseg}.out" -print ) | | |
38 | sed -e "s/${hwfnseg}"'\.out$//' | | |
2a8ec611 | 39 | xargs -r grep -E -l '^ \* Result: (Never|Sometimes|Always|DEADLOCK)' | |
b02eb5b0 PM |
40 | xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already |
41 | ||
42 | # Create a list of C-language litmus tests with "Result:" commands and | |
43 | # no more than the specified number of processes. | |
2ac8cbee | 44 | find litmus -name '*.litmus' -print | mselect7 -arch C > $T/list-C |
2a8ec611 | 45 | xargs < $T/list-C -r grep -E -l '^ \* Result: (Never|Sometimes|Always|DEADLOCK)' > $T/list-C-result |
b02eb5b0 PM |
46 | xargs < $T/list-C-result -r grep -L "^P${LKMM_PROCS}" > $T/list-C-result-short |
47 | ||
69d476c5 | 48 | # Form list of tests without corresponding .out files |
b02eb5b0 PM |
49 | sort $T/list-C-already $T/list-C-result-short | uniq -u > $T/list-C-needed |
50 | ||
51 | # Run any needed tests. | |
52 | if scripts/runlitmushist.sh < $T/list-C-needed > $T/run.stdout 2> $T/run.stderr | |
53 | then | |
54 | errs= | |
55 | else | |
56 | errs=1 | |
57 | fi | |
58 | ||
59 | sed < $T/list-C-result-short -e 's,^,scripts/judgelitmus.sh ,' | | |
60 | sh > $T/judge.stdout 2> $T/judge.stderr | |
61 | ||
62 | if test -n "$errs" | |
63 | then | |
64 | cat $T/run.stderr 1>&2 | |
65 | fi | |
66 | grep '!!!' $T/judge.stdout |