| #!/bin/sh |
| # SPDX-License-Identifier: GPL-2.0+ |
| # |
| # Reruns the C-language litmus tests previously run that match the |
| # specified criteria, and compares the result to that of the previous |
| # runs from initlitmushist.sh and/or newlitmushist.sh. |
| # |
| # sh checklitmushist.sh |
| # |
| # Run from the Linux kernel tools/memory-model directory. |
| # See scripts/parseargs.sh for list of arguments. |
| # |
| # Copyright IBM Corporation, 2018 |
| # |
| # Author: Paul E. McKenney <paulmck@linux.ibm.com> |
| |
| . scripts/parseargs.sh |
| |
| T=/tmp/checklitmushist.sh.$$ |
| trap 'rm -rf $T' 0 |
| mkdir $T |
| |
| if test -d litmus |
| then |
| : |
| else |
| echo Run scripts/initlitmushist.sh first, need litmus repo. |
| exit 1 |
| fi |
| |
| # Create the results directory and populate it with subdirectories. |
| # The initial output is created here to avoid clobbering the output |
| # generated earlier. |
| mkdir $T/results |
| find litmus -type d -print | ( cd $T/results; sed -e 's/^/mkdir -p /' | sh ) |
| |
| # Create the list of litmus tests already run, then remove those that |
| # are excluded by this run's --procs argument. |
| ( cd $LKMM_DESTDIR; find litmus -name '*.litmus.out' -print ) | |
| sed -e 's/\.out$//' | |
| xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already |
| xargs < $T/list-C-already -r grep -L "^P${LKMM_PROCS}" > $T/list-C-short |
| |
| # Redirect output, run tests, then restore destination directory. |
| destdir="$LKMM_DESTDIR" |
| LKMM_DESTDIR=$T/results; export LKMM_DESTDIR |
| scripts/runlitmushist.sh < $T/list-C-short > $T/runlitmushist.sh.out 2>&1 |
| LKMM_DESTDIR="$destdir"; export LKMM_DESTDIR |
| |
| # Move the newly generated .litmus.out files to .litmus.out.new files |
| # in the destination directory. |
| cdir=`pwd` |
| ddir=`awk -v c="$cdir" -v d="$LKMM_DESTDIR" \ |
| 'END { if (d ~ /^\//) print d; else print c "/" d; }' < /dev/null` |
| ( cd $T/results; find litmus -type f -name '*.litmus.out' -print | |
| sed -e 's,^.*$,cp & '"$ddir"'/&.new,' | sh ) |
| |
| sed < $T/list-C-short -e 's,^,'"$LKMM_DESTDIR/"',' | |
| sh scripts/cmplitmushist.sh |
| exit $? |