diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2019-01-19 15:15:14 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2019-01-22 13:40:19 +0000 |
commit | c2e46ed53cb84d986979f821a0e8ea43a40866fa (patch) | |
tree | 52403171b83be92e77cdb18d1443e096b862620d | |
parent | de406775312eeb6691e999ed07c676582fe99fa9 (diff) |
tcwg_kernel-bisect.sh: Re-write linux-next workaround as a loop.
Change-Id: Ie4ff62b9b296efa745d10e4d51eebac349321cf1
-rwxr-xr-x | tcwg_kernel-bisect.sh | 62 |
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 |