80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# SPDX-License-Identifier: GPL-2.0+
 | 
						|
#
 | 
						|
# Invoke a text editor on all console.log files for all runs with diagnostics,
 | 
						|
# that is, on all such files having a console.log.diags counterpart.
 | 
						|
# Note that both console.log.diags and console.log are passed to the
 | 
						|
# editor (currently defaulting to "vi"), allowing the user to get an
 | 
						|
# idea of what to search for in the console.log file.
 | 
						|
#
 | 
						|
# Usage: kvm-find-errors.sh directory
 | 
						|
#
 | 
						|
# The "directory" above should end with the date/time directory, for example,
 | 
						|
# "tools/testing/selftests/rcutorture/res/2018.02.25-14:27:27".
 | 
						|
# Returns error status reflecting the success (or not) of the specified run.
 | 
						|
#
 | 
						|
# Copyright (C) IBM Corporation, 2018
 | 
						|
#
 | 
						|
# Author: Paul E. McKenney <paulmck@linux.ibm.com>
 | 
						|
 | 
						|
rundir="${1}"
 | 
						|
if test -z "$rundir" -o ! -d "$rundir"
 | 
						|
then
 | 
						|
	echo Directory "$rundir" not found.
 | 
						|
	echo Usage: $0 directory
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
editor=${EDITOR-vi}
 | 
						|
 | 
						|
# Find builds with errors
 | 
						|
files=
 | 
						|
for i in ${rundir}/*/Make.out
 | 
						|
do
 | 
						|
	scenariodir="`dirname $i`"
 | 
						|
	scenariobasedir="`echo ${scenariodir} | sed -e 's/\.[0-9]*$//'`"
 | 
						|
	if egrep -q "error:|warning:|^ld: .*undefined reference to" < $i
 | 
						|
	then
 | 
						|
		egrep "error:|warning:|^ld: .*undefined reference to" < $i > $i.diags
 | 
						|
		files="$files $i.diags $i"
 | 
						|
	elif ! test -f ${scenariobasedir}/vmlinux && ! test -f "${rundir}/re-run"
 | 
						|
	then
 | 
						|
		echo No ${scenariobasedir}/vmlinux file > $i.diags
 | 
						|
		files="$files $i.diags $i"
 | 
						|
	fi
 | 
						|
done
 | 
						|
if test -n "$files"
 | 
						|
then
 | 
						|
	$editor $files
 | 
						|
	editorret=1
 | 
						|
else
 | 
						|
	echo No build errors.
 | 
						|
fi
 | 
						|
if grep -q -e "--build-\?only" < ${rundir}/log && ! test -f "${rundir}/remote-log"
 | 
						|
then
 | 
						|
	echo Build-only run, no console logs to check.
 | 
						|
	exit $editorret
 | 
						|
fi
 | 
						|
 | 
						|
# Find console logs with errors
 | 
						|
files=
 | 
						|
for i in ${rundir}/*/console.log
 | 
						|
do
 | 
						|
	if test -r $i.diags
 | 
						|
	then
 | 
						|
		files="$files $i.diags $i"
 | 
						|
	fi
 | 
						|
done
 | 
						|
if test -n "$files"
 | 
						|
then
 | 
						|
	$editor $files
 | 
						|
	exit 1
 | 
						|
else
 | 
						|
	echo No errors in console logs.
 | 
						|
	if test -n "$editorret"
 | 
						|
	then
 | 
						|
		exit $editorret
 | 
						|
	else
 | 
						|
		exit 0
 | 
						|
	fi
 | 
						|
fi
 |