1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0+
3#
4# Given the results directories for previous KVM-based torture runs,
5# check the build and console output for errors.  Given a directory
6# containing results directories, this recursively checks them all.
7#
8# Usage: kvm-recheck.sh resdir ...
9#
10# Returns status reflecting the success or not of the last run specified.
11#
12# Copyright (C) IBM Corporation, 2011
13#
14# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
15
16PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
17. functions.sh
18for rd in "$@"
19do
20	firsttime=1
21	dirs=`find $rd -name Make.defconfig.out -print | sort | sed -e 's,/[^/]*$,,' | sort -u`
22	for i in $dirs
23	do
24		if test -n "$firsttime"
25		then
26			firsttime=""
27			resdir=`echo $i | sed -e 's,/$,,' -e 's,/[^/]*$,,'`
28			head -1 $resdir/log
29		fi
30		TORTURE_SUITE="`cat $i/../TORTURE_SUITE`"
31		rm -f $i/console.log.*.diags
32		kvm-recheck-${TORTURE_SUITE}.sh $i
33		if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -ne 0 && test "`cat $i/qemu-retval`" -ne 137
34		then
35			echo QEMU error, output:
36			cat $i/qemu-output
37		elif test -f "$i/console.log"
38		then
39			if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -eq 137
40			then
41				echo QEMU killed
42			fi
43			configcheck.sh $i/.config $i/ConfigFragment
44			if test -r $i/Make.oldconfig.err
45			then
46				cat $i/Make.oldconfig.err
47			fi
48			parse-build.sh $i/Make.out $configfile
49			parse-console.sh $i/console.log $configfile
50			if test -r $i/Warnings
51			then
52				cat $i/Warnings
53			fi
54		else
55			if test -f "$i/qemu-cmd"
56			then
57				print_bug qemu failed
58				echo "   $i"
59			elif test -f "$i/buildonly"
60			then
61				echo Build-only run, no boot/test
62				configcheck.sh $i/.config $i/ConfigFragment
63				parse-build.sh $i/Make.out $configfile
64			else
65				print_bug Build failed
66				echo "   $i"
67			fi
68		fi
69	done
70done
71EDITOR=echo kvm-find-errors.sh "${@: -1}" > /dev/null 2>&1
72