summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtcwg_kernel-bisect.sh22
1 files changed, 14 insertions, 8 deletions
diff --git a/tcwg_kernel-bisect.sh b/tcwg_kernel-bisect.sh
index 5d7b093d..cc33ac33 100755
--- a/tcwg_kernel-bisect.sh
+++ b/tcwg_kernel-bisect.sh
@@ -276,6 +276,12 @@ if [ -f $artifacts/first-bad ]; then
fi
last_good=$(git -C $current_project rev-parse $first_bad^)
+
+ good_name="last_good"
+ good_sha1="$last_good"
+ bad_name="first_bad"
+ bad_sha1="$first_bad"
+
if ! grep -q $last_good "$artifacts/good_revs"; then
# It seems that git-bisect assumes parent commit as "good" on
# the basis of one of its children being "good". Therefore we
@@ -291,8 +297,12 @@ if [ -f $artifacts/first-bad ]; then
../bisect-run.sh &
res=0 && wait $! || res=$?
if [ x"$res" != x"0" ]; then
- echo "ERROR: build for last_good $last_good failed"
- exit 1
+ # It seems $last_good was on a path that tested good, even though
+ # it itself is bad. Not much we can do here -- fallback to $good_rev.
+ echo "WARNING: build for last_good $last_good failed"
+ last_good="$good_rev"
+ good_name="good_rev"
+ good_sha1="$good_rev"
fi
cd ..
fi
@@ -304,10 +314,6 @@ if [ -f $artifacts/first-bad ]; then
ln -s "build-$last_good-last_good" "$artifacts/build-$last_good-baseline"
fi
- good_name="last_good"
- good_sha1="$last_good"
- bad_name="first_bad"
- bad_sha1="$first_bad"
cat >> $artifacts/jenkins/mail-body.txt <<EOF
Successfully identified regression in $current_project on $target @ $toolchain-${rr[${toolchain}_version]} @ linux-${rr[linux_version]}-$linux_config between bad $bad_rev and baseline $baseline_rev .
@@ -318,8 +324,8 @@ $(git -C $current_project log -n 1 $first_bad)
EOF
else
- good_name="baseline"
- good_sha1="$baseline_rev"
+ good_name="good_rev"
+ good_sha1="$good_rev"
bad_name="bad"
bad_sha1="$bad_rev"
cat >> $artifacts/jenkins/mail-body.txt <<EOF