David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 1 | #!/bin/sh |
| 2 | # SPDX-License-Identifier: GPL-2.0+ |
| 3 | # |
| 4 | # Reruns the C-language litmus tests previously run that match the |
| 5 | # specified criteria, and compares the result to that of the previous |
| 6 | # runs from initlitmushist.sh and/or newlitmushist.sh. |
| 7 | # |
| 8 | # sh checklitmushist.sh |
| 9 | # |
| 10 | # Run from the Linux kernel tools/memory-model directory. |
| 11 | # See scripts/parseargs.sh for list of arguments. |
| 12 | # |
| 13 | # Copyright IBM Corporation, 2018 |
| 14 | # |
| 15 | # Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> |
| 16 | |
| 17 | . scripts/parseargs.sh |
| 18 | |
| 19 | T=/tmp/checklitmushist.sh.$$ |
| 20 | trap 'rm -rf $T' 0 |
| 21 | mkdir $T |
| 22 | |
| 23 | if test -d litmus |
| 24 | then |
| 25 | : |
| 26 | else |
| 27 | echo Run scripts/initlitmushist.sh first, need litmus repo. |
| 28 | exit 1 |
| 29 | fi |
| 30 | |
| 31 | # Create the results directory and populate it with subdirectories. |
| 32 | # The initial output is created here to avoid clobbering the output |
| 33 | # generated earlier. |
| 34 | mkdir $T/results |
| 35 | find litmus -type d -print | ( cd $T/results; sed -e 's/^/mkdir -p /' | sh ) |
| 36 | |
| 37 | # Create the list of litmus tests already run, then remove those that |
| 38 | # are excluded by this run's --procs argument. |
| 39 | ( cd $LKMM_DESTDIR; find litmus -name '*.litmus.out' -print ) | |
| 40 | sed -e 's/\.out$//' | |
| 41 | xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already |
| 42 | xargs < $T/list-C-already -r grep -L "^P${LKMM_PROCS}" > $T/list-C-short |
| 43 | |
| 44 | # Redirect output, run tests, then restore destination directory. |
| 45 | destdir="$LKMM_DESTDIR" |
| 46 | LKMM_DESTDIR=$T/results; export LKMM_DESTDIR |
| 47 | scripts/runlitmushist.sh < $T/list-C-short > $T/runlitmushist.sh.out 2>&1 |
| 48 | LKMM_DESTDIR="$destdir"; export LKMM_DESTDIR |
| 49 | |
| 50 | # Move the newly generated .litmus.out files to .litmus.out.new files |
| 51 | # in the destination directory. |
| 52 | cdir=`pwd` |
| 53 | ddir=`awk -v c="$cdir" -v d="$LKMM_DESTDIR" \ |
| 54 | 'END { if (d ~ /^\//) print d; else print c "/" d; }' < /dev/null` |
| 55 | ( cd $T/results; find litmus -type f -name '*.litmus.out' -print | |
| 56 | sed -e 's,^.*$,cp & '"$ddir"'/&.new,' | sh ) |
| 57 | |
| 58 | sed < $T/list-C-short -e 's,^,'"$LKMM_DESTDIR/"',' | |
| 59 | sh scripts/cmplitmushist.sh |
| 60 | exit $? |