195ce5f29SPaul E. McKenney#!/bin/sh 2fef141f6SPaul E. McKenney# SPDX-License-Identifier: GPL-2.0+ 395ce5f29SPaul E. McKenney# 495ce5f29SPaul E. McKenney# Invoke a text editor on all console.log files for all runs with diagnostics, 595ce5f29SPaul E. McKenney# that is, on all such files having a console.log.diags counterpart. 695ce5f29SPaul E. McKenney# Note that both console.log.diags and console.log are passed to the 795ce5f29SPaul E. McKenney# editor (currently defaulting to "vi"), allowing the user to get an 895ce5f29SPaul E. McKenney# idea of what to search for in the console.log file. 995ce5f29SPaul E. McKenney# 1095ce5f29SPaul E. McKenney# Usage: kvm-find-errors.sh directory 1195ce5f29SPaul E. McKenney# 1295ce5f29SPaul E. McKenney# The "directory" above should end with the date/time directory, for example, 1395ce5f29SPaul E. McKenney# "tools/testing/selftests/rcutorture/res/2018.02.25-14:27:27". 1463b29eaeSPaul E. McKenney# Returns error status reflecting the success (or not) of the specified run. 15fef141f6SPaul E. McKenney# 16fef141f6SPaul E. McKenney# Copyright (C) IBM Corporation, 2018 17fef141f6SPaul E. McKenney# 18fef141f6SPaul E. McKenney# Author: Paul E. McKenney <paulmck@linux.ibm.com> 1995ce5f29SPaul E. McKenney 2095ce5f29SPaul E. McKenneyrundir="${1}" 2195ce5f29SPaul E. McKenneyif test -z "$rundir" -o ! -d "$rundir" 2295ce5f29SPaul E. McKenneythen 23beabc806SPaul E. McKenney echo Directory "$rundir" not found. 2495ce5f29SPaul E. McKenney echo Usage: $0 directory 25beabc806SPaul E. McKenney exit 1 2695ce5f29SPaul E. McKenneyfi 2795ce5f29SPaul E. McKenneyeditor=${EDITOR-vi} 2895ce5f29SPaul E. McKenney 2995ce5f29SPaul E. McKenney# Find builds with errors 3095ce5f29SPaul E. McKenneyfiles= 3195ce5f29SPaul E. McKenneyfor i in ${rundir}/*/Make.out 3295ce5f29SPaul E. McKenneydo 33e31ccc1dSPaul E. McKenney scenariodir="`dirname $i`" 34e31ccc1dSPaul E. McKenney scenariobasedir="`echo ${scenariodir} | sed -e 's/\.[0-9]*$//'`" 35*eeb4dd9eSTiezhu Yang if grep -E -q "error:|warning:|^ld: .*undefined reference to" < $i 3695ce5f29SPaul E. McKenney then 37*eeb4dd9eSTiezhu Yang grep -E "error:|warning:|^ld: .*undefined reference to" < $i > $i.diags 38da1a1e19SPaul E. McKenney files="$files $i.diags $i" 393e4c07b9SPaul E. McKenney elif ! test -f ${scenariobasedir}/vmlinux && ! test -f ${scenariobasedir}/vmlinux.xz && ! test -f "${rundir}/re-run" 40e31ccc1dSPaul E. McKenney then 41e31ccc1dSPaul E. McKenney echo No ${scenariobasedir}/vmlinux file > $i.diags 42e31ccc1dSPaul E. McKenney files="$files $i.diags $i" 4395ce5f29SPaul E. McKenney fi 4495ce5f29SPaul E. McKenneydone 4595ce5f29SPaul E. McKenneyif test -n "$files" 4695ce5f29SPaul E. McKenneythen 4795ce5f29SPaul E. McKenney $editor $files 4823239fc0SPaul E. McKenney editorret=1 4995ce5f29SPaul E. McKenneyelse 5095ce5f29SPaul E. McKenney echo No build errors. 5195ce5f29SPaul E. McKenneyfi 52226dd39dSPaul E. McKenneyif grep -q -e "--build-\?only" < ${rundir}/log && ! test -f "${rundir}/remote-log" 5395ce5f29SPaul E. McKenneythen 5495ce5f29SPaul E. McKenney echo Build-only run, no console logs to check. 55365dc5cbSPaul E. McKenney exit $editorret 5695ce5f29SPaul E. McKenneyfi 5795ce5f29SPaul E. McKenney 5895ce5f29SPaul E. McKenney# Find console logs with errors 5995ce5f29SPaul E. McKenneyfiles= 6095ce5f29SPaul E. McKenneyfor i in ${rundir}/*/console.log 6195ce5f29SPaul E. McKenneydo 6295ce5f29SPaul E. McKenney if test -r $i.diags 6395ce5f29SPaul E. McKenney then 6495ce5f29SPaul E. McKenney files="$files $i.diags $i" 6595ce5f29SPaul E. McKenney fi 6695ce5f29SPaul E. McKenneydone 6795ce5f29SPaul E. McKenneyif test -n "$files" 6895ce5f29SPaul E. McKenneythen 6995ce5f29SPaul E. McKenney $editor $files 7063b29eaeSPaul E. McKenney exit 1 7195ce5f29SPaul E. McKenneyelse 7295ce5f29SPaul E. McKenney echo No errors in console logs. 7323239fc0SPaul E. McKenney if test -n "$editorret" 7423239fc0SPaul E. McKenney then 7523239fc0SPaul E. McKenney exit $editorret 7623239fc0SPaul E. McKenney else 7763b29eaeSPaul E. McKenney exit 0 7895ce5f29SPaul E. McKenney fi 7923239fc0SPaul E. McKenneyfi 80