|  | #!/bin/sh | 
|  | # SPDX-License-Identifier: GPL-2.0+ | 
|  | # | 
|  | # Run herd7 tests on all .litmus files in the litmus-tests directory | 
|  | # and check each file's result against a "Result:" comment within that | 
|  | # litmus test.  If the verification result does not match that specified | 
|  | # in the litmus test, this script prints an error message prefixed with | 
|  | # "^^^".  It also outputs verification results to a file whose name is | 
|  | # that of the specified litmus test, but with ".out" appended. | 
|  | # | 
|  | # Usage: | 
|  | #	checkalllitmus.sh | 
|  | # | 
|  | # Run this in the directory containing the memory model. | 
|  | # | 
|  | # This script makes no attempt to run the litmus tests concurrently. | 
|  | # | 
|  | # Copyright IBM Corporation, 2018 | 
|  | # | 
|  | # Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 
|  |  | 
|  | . scripts/parseargs.sh | 
|  |  | 
|  | litmusdir=litmus-tests | 
|  | if test -d "$litmusdir" -a -r "$litmusdir" -a -x "$litmusdir" | 
|  | then | 
|  | : | 
|  | else | 
|  | echo ' --- ' error: $litmusdir is not an accessible directory | 
|  | exit 255 | 
|  | fi | 
|  |  | 
|  | # Create any new directories that have appeared in the github litmus | 
|  | # repo since the last run. | 
|  | if test "$LKMM_DESTDIR" != "." | 
|  | then | 
|  | find $litmusdir -type d -print | | 
|  | ( cd "$LKMM_DESTDIR"; sed -e 's/^/mkdir -p /' | sh ) | 
|  | fi | 
|  |  | 
|  | # Find the checklitmus script.  If it is not where we expect it, then | 
|  | # assume that the caller has the PATH environment variable set | 
|  | # appropriately. | 
|  | if test -x scripts/checklitmus.sh | 
|  | then | 
|  | clscript=scripts/checklitmus.sh | 
|  | else | 
|  | clscript=checklitmus.sh | 
|  | fi | 
|  |  | 
|  | # Run the script on all the litmus tests in the specified directory | 
|  | ret=0 | 
|  | for i in $litmusdir/*.litmus | 
|  | do | 
|  | if ! $clscript $i | 
|  | then | 
|  | ret=1 | 
|  | fi | 
|  | done | 
|  | if test "$ret" -ne 0 | 
|  | then | 
|  | echo " ^^^ VERIFICATION MISMATCHES" 1>&2 | 
|  | else | 
|  | echo All litmus tests verified as was expected. 1>&2 | 
|  | fi | 
|  | exit $ret |