|  | #!/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.vnet.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 $? |