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