mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	This commit simplifies life a bit by making all of the scripts in tools/memory-model/scripts be executable. Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
# SPDX-License-Identifier: GPL-2.0+
 | 
						|
#
 | 
						|
# Runs the C-language litmus tests having a maximum number of processes
 | 
						|
# to run, defaults to 6.
 | 
						|
#
 | 
						|
# sh checkghlitmus.sh
 | 
						|
#
 | 
						|
# Run from the Linux kernel tools/memory-model directory.  See the
 | 
						|
# parseargs.sh scripts for arguments.
 | 
						|
 | 
						|
. scripts/parseargs.sh
 | 
						|
 | 
						|
T=/tmp/checkghlitmus.sh.$$
 | 
						|
trap 'rm -rf $T' 0
 | 
						|
mkdir $T
 | 
						|
 | 
						|
# Clone the repository if it is not already present.
 | 
						|
if test -d litmus
 | 
						|
then
 | 
						|
	:
 | 
						|
else
 | 
						|
	git clone https://github.com/paulmckrcu/litmus
 | 
						|
	( cd litmus; git checkout origin/master )
 | 
						|
fi
 | 
						|
 | 
						|
# Create any new directories that have appeared in the github litmus
 | 
						|
# repo since the last run.
 | 
						|
if test "$LKMM_DESTDIR" != "."
 | 
						|
then
 | 
						|
	find litmus -type d -print |
 | 
						|
	( cd "$LKMM_DESTDIR"; sed -e 's/^/mkdir -p /' | sh )
 | 
						|
fi
 | 
						|
 | 
						|
# Create a list of the C-language litmus tests previously run.
 | 
						|
( cd $LKMM_DESTDIR; find litmus -name '*.litmus.out' -print ) |
 | 
						|
	sed -e 's/\.out$//' |
 | 
						|
	xargs -r egrep -l '^ \* Result: (Never|Sometimes|Always|DEADLOCK)' |
 | 
						|
	xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already
 | 
						|
 | 
						|
# Create a list of C-language litmus tests with "Result:" commands and
 | 
						|
# no more than the specified number of processes.
 | 
						|
find litmus -name '*.litmus' -exec grep -l -m 1 "^C " {} \; > $T/list-C
 | 
						|
xargs < $T/list-C -r egrep -l '^ \* Result: (Never|Sometimes|Always|DEADLOCK)' > $T/list-C-result
 | 
						|
xargs < $T/list-C-result -r grep -L "^P${LKMM_PROCS}" > $T/list-C-result-short
 | 
						|
 | 
						|
# Form list of tests without corresponding .litmus.out files
 | 
						|
sort $T/list-C-already $T/list-C-result-short | uniq -u > $T/list-C-needed
 | 
						|
 | 
						|
# Run any needed tests.
 | 
						|
if scripts/runlitmushist.sh < $T/list-C-needed > $T/run.stdout 2> $T/run.stderr
 | 
						|
then
 | 
						|
	errs=
 | 
						|
else
 | 
						|
	errs=1
 | 
						|
fi
 | 
						|
 | 
						|
sed < $T/list-C-result-short -e 's,^,scripts/judgelitmus.sh ,' |
 | 
						|
	sh > $T/judge.stdout 2> $T/judge.stderr
 | 
						|
 | 
						|
if test -n "$errs"
 | 
						|
then
 | 
						|
	cat $T/run.stderr 1>&2
 | 
						|
fi
 | 
						|
grep '!!!' $T/judge.stdout
 |