61 lines
1.9 KiB
Bash
61 lines
1.9 KiB
Bash
|
#!/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 $?
|