#!/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 grep -E -q "error:|warning:|^ld: .*undefined reference to" < $i then grep -E "error:|warning:|^ld: .*undefined reference to" < $i > $i.diags files="$files $i.diags $i" elif ! test -f ${scenariobasedir}/vmlinux && ! test -f ${scenariobasedir}/vmlinux.xz && ! 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