summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2019-01-19 15:15:14 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2019-01-21 14:27:28 +0000
commit2c05acb7e917582a71bc6c6c0b7cad2957c43a9c (patch)
tree52403171b83be92e77cdb18d1443e096b862620d
parente7e9db0bcfbe93bb5df499be0d017f2f1cb0b2ee (diff)
tcwg_kernel-bisect.sh: Re-write linux-next workaround as a loop.
Change-Id: Ie4ff62b9b296efa745d10e4d51eebac349321cf1
-rwxr-xr-xtcwg_kernel-bisect.sh62
1 files changed, 30 insertions, 32 deletions
diff --git a/tcwg_kernel-bisect.sh b/tcwg_kernel-bisect.sh
index 5668c16c..5b913c4d 100755
--- a/tcwg_kernel-bisect.sh
+++ b/tcwg_kernel-bisect.sh
@@ -125,43 +125,41 @@ merge_base=$(git merge-base $bad_rev $baseline_rev)
origin=$(git remote get-url origin)
origin=$(basename "$origin")
if [ x"$merge_base" != x"$baseline_rev" -a x"$origin" = x"linux-next.git" ]; then
- good_rev=$merge_base
- echo "Testing merge base $good_rev (hoping for success)"
- git checkout --detach "$good_rev"
- $artifacts/test.sh &
- res=0 && wait $! || res=$?
- if [ x"$res" != x"0" ]; then
- # Check if we can use linux-next/stable as our pre-last resort.
- linux_next_stable="${linux_next_stable-$(git rev-parse refs/remotes/origin/stable)}"
- cat <<EOF | manifest_out
+ # Try to use merge_base (just like git-bisect).
+ try_revs=($merge_base)
+
+ # Check if we can use linux-next/stable as our 2nd try.
+ linux_next_stable="${linux_next_stable-$(git rev-parse refs/remotes/origin/stable)}"
+ cat <<EOF | manifest_out
declare -g linux_next_stable=$linux_next_stable
EOF
- good_rev=$linux_next_stable
- echo "Testing linux_next:stable $good_rev (hoping for success)"
- git checkout --detach $good_rev
- $artifacts/test.sh &
- res=0 && wait $! || res=$?
- if [ x"$res" != x"0" ]; then
- # Check if we can use linux-mainline/master as our last resort.
- url=git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
- git remote add mainline "$url" > /dev/null 2>&1 || true
- git remote set-url mainline "$url"
- clone_or_update_repo . refs/remotes/mainline/master "$url"
-
- mainline_master="${mainline_master-$(git merge-base $bad_rev HEAD)}"
- cat <<EOF | manifest_out
+ try_revs+=($linux_next_stable)
+
+ # Check if we can use linux-mainline/master as our last resort.
+ url=git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
+ git remote add mainline "$url" > /dev/null 2>&1 || true
+ git remote set-url mainline "$url"
+ clone_or_update_repo . refs/remotes/mainline/master "$url"
+ mainline_master="${mainline_master-$(git merge-base $bad_rev HEAD)}"
+ cat <<EOF | manifest_out
declare -g mainline_master=$mainline_rev
EOF
- good_rev=$mainline_master
- echo "Testing mainline_master $good_rev (hoping for success)"
- git checkout --detach $good_rev
- $artifacts/test.sh &
- res=0 && wait $! || res=$?
- if [ x"$res" != x"0" ]; then
- # Below bisect will fail :-(
- good_rev=$baseline_rev
- fi
+ try_revs+=($mainline_master)
+
+ for good_rev in "${try_revs[@]}"; do
+ echo "Linux-next rebase workaround: testing potential good_rev $good_rev (hoping for success)"
+ git checkout --detach "$good_rev"
+ $artifacts/test.sh &
+ res=0 && wait $! || res=$?
+ if [ x"$res" = x"0" ]; then
+ break
fi
+ done
+
+ if [ x"$res" != x"0" ]; then
+ # Below bisect will fail :-(
+ echo "Linux-next rebase workaround: could not find a good parent, below bisect will fail"
+ good_rev=$baseline_rev
fi
else
good_rev=$baseline_rev