diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2021-07-20 17:56:41 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2021-07-21 14:14:02 +0000 |
commit | 3922f589ab98b50295674d01287ed7fc693bbb47 (patch) | |
tree | 9e38e71ae0ec10eee1acd3441f42ff24b66f6bfe | |
parent | 8b5d081995cc6e048c5794ccd0ba2bf3c42d2e1b (diff) |
round-robin scripts: Merge <foo>_url and <foo>_branch into <foo>_git
Merge git "_url" and "_branch" specification into a single "_git"
argument that's constructed from "URL#BRANCH". This argument also
has a special value "baseline", which before was a special value
of "branch".
This rework makes handling of git references simpler and cleaner,
especially on the jenkins side.
Change-Id: I1c1c07629728c693b8350dfa1b61fe767d5b0a0b
-rwxr-xr-x | round-robin-bisect.sh | 51 | ||||
-rw-r--r-- | round-robin.sh | 26 | ||||
-rwxr-xr-x | tcwg_bmk-build.sh | 5 | ||||
-rwxr-xr-x | tcwg_gnu-build.sh | 5 | ||||
-rwxr-xr-x | tcwg_kernel-build.sh | 5 |
5 files changed, 37 insertions, 55 deletions
diff --git a/round-robin-bisect.sh b/round-robin-bisect.sh index 2328da64..8ded4ea6 100755 --- a/round-robin-bisect.sh +++ b/round-robin-bisect.sh @@ -17,8 +17,8 @@ fresh_dir $artifacts "$artifacts/manifests/*" "$artifacts/jenkins/*" convert_args_to_variables "$@" shift "$SHIFT_CONVERTED_ARGS" -obligatory_variables bad_url bad_branch build_script current_project -declare bad_url bad_branch build_script current_project +obligatory_variables bad_git build_script current_project +declare bad_git build_script current_project BUILD_URL="${BUILD_URL:-$(pwd)}" replay_log="${replay_log-}" @@ -42,6 +42,9 @@ touch $artifacts/jenkins/build-name trap print_traceback EXIT +bad_url="${bad_git%#*}" +bad_branch="${bad_git#*#}" + rebase_workaround=false rebase_workaround_opts=() @@ -51,7 +54,7 @@ case "${rr[ci_project]}/${rr[ci_config]}:$current_project" in # Search for regressions against linux-mainline:master (aka linux-next:stable). clone_or_update_repo $current_project stable $bad_url # Just in case linux-next:stable has advanced between the build and bisect jobs, - # use merge base between linux-next:stable and $bad_branch. + # use merge base between linux-next:stable and $bad_git. bad_rev="${bad_rev-$(git_rev_parse_long $current_project $bad_branch)}" linux_next_stable="${linux_next_stable-$(git -C $current_project merge-base HEAD $bad_rev)}" cat <<EOF | manifest_out @@ -59,8 +62,8 @@ declare -g linux_next_stable=$linux_next_stable EOF echo "Rebase workaround: forcing linux baseline to $linux_next_stable" rebase_workaround=true - rebase_workaround_opts+=("==rr[linux_url]" "$bad_url") - rebase_workaround_opts+=("==rr[linux_branch]" "$linux_next_stable") + rebase_workaround_opts+=("==rr[linux_git]" + "$bad_url#$linux_next_stable") ;; esac @@ -192,8 +195,7 @@ $build_script \ %% $rel_artifacts/manifests/build-\$rev.sh \ @@ $rel_artifacts/manifests/build-parameters.sh \ ==rr[mode] bisect \ - ==rr[${current_project}_url] "$bad_url" \ - ==rr[${current_project}_branch] \$rev \ + ==rr[${current_project}_git] "$bad_url#\$rev" \ ==rr[top_artifacts] $rel_artifacts/build-\$rev \ --verbose "$verbose" & res=0 && wait \$! || res=\$? @@ -243,20 +245,19 @@ if [ x"$res" = x"0" ]; then case $project_name in tcwg_kernel/llvm-*-next-*:linux) cat > $artifacts/trigger-build-rebase <<EOF -llvm_branch=baseline +llvm_git=baseline EOF ;; tcwg_kernel/gnu-*-next-*:linux) cat > $artifacts/trigger-build-rebase <<EOF -binutils_branch=baseline -gcc_branch=baseline +binutils_git=baseline +gcc_git=baseline EOF ;; *) assert_with_msg "Unknown project name: $project_name" false ;; esac cat >> $artifacts/trigger-build-rebase <<EOF -linux_url=$bad_url -linux_branch=$baseline_rev +linux_git=$bad_url#$baseline_rev update_baseline=reset EOF else @@ -268,18 +269,18 @@ EOF case "${rr[ci_project]}/${rr[ci_config]}" in tcwg_bmk*/gnu*-O[23]*) cat > $artifacts/trigger-build-reset <<EOF -binutils_branch=baseline -gcc_branch=baseline -glibc_branch=baseline +binutils_git=baseline +gcc_git=baseline +glibc_git=baseline update_baseline=reset EOF ;; tcwg_bmk*/llvm-*-O[23]*) cat > $artifacts/trigger-build-reset <<EOF -binutils_branch=baseline -gcc_branch=baseline -glibc_branch=baseline -llvm_branch=baseline +binutils_git=baseline +gcc_git=baseline +glibc_git=baseline +llvm_git=baseline update_baseline=reset EOF ;; @@ -517,8 +518,7 @@ if [ x"$first_bad" != x"" ]; then # a reduced bisection range. cat > $artifacts/trigger-bisect <<EOF current_project=$current_project -bad_url=$bad_url -bad_branch=$bad_last_good +bad_git=$bad_url#$bad_last_good EOF sed -i -e "s/\$/-retry-bisect/" $artifacts/jenkins/build-name # Don't send any emails. @@ -559,8 +559,7 @@ else if [ x"$last_good" != x"$baseline_rev" ]; then # $reset_rev=="" due to $first_bad=="" cat > $artifacts/trigger-build-1-advance <<EOF -${current_project}_url=$bad_url -${current_project}_branch=$last_good +${current_project}_git=$bad_url#$last_good EOF sed -i -e "s/\$/-advance-baseline/" $artifacts/jenkins/build-name else @@ -582,7 +581,7 @@ if ! [ -f $artifacts/build-$bad_rev/trigger-build-$current_project ]; then assert_with_msg "No bad build during this bisect" [ x"$bad_build" != x"" ] mkdir -p $artifacts/build-$bad_rev cp $bad_build $artifacts/build-$bad_rev/trigger-build-$current_project - sed -i -e "s/^${current_project}_branch=.*\$/${current_project}_branch=$bad_rev/" \ + sed -i -e "s/^\(${current_project}_git=.*\)#.*\$/\1#$bad_rev/" \ $artifacts/build-$bad_rev/trigger-build-$current_project fi @@ -593,7 +592,7 @@ if [ x"$reset_rev" != x"" ]; then \ mkdir -p $artifacts/build-$reset_rev cp $artifacts/build-$bad_rev/trigger-build-$current_project \ $artifacts/build-$reset_rev/trigger-build-$current_project - sed -i -e "s/^${current_project}_branch=$bad_rev\$/${current_project}_branch=$reset_rev/" \ + sed -i -e "s/^\(${current_project}_git=.*\)#$bad_rev\$/\1#$reset_rev/" \ $artifacts/build-$reset_rev/trigger-build-$current_project fi @@ -742,7 +741,7 @@ cat >> $artifacts/jenkins/mail-body.txt <<EOF Build top page/logs: ${BUILD_URL} Configuration details: -$(cat $artifacts/manifests/build-baseline.sh | grep '_url]\|_branch]' | grep -v '="no_') +$(cat $artifacts/manifests/build-baseline.sh | grep '_git]' | grep -v '="no_') Reproduce builds: <cut> diff --git a/round-robin.sh b/round-robin.sh index a0e7d21d..feeafae3 100644 --- a/round-robin.sh +++ b/round-robin.sh @@ -6,19 +6,13 @@ # Round-Robin associative array. declare -gA rr -# Pretty name for PROJECT's version -#rr[PROJECT_version] - -# PROJECT's git url -#rr[PROJECT_url] - -# PROJECT's git branch or SHA1 revision parsable by git rev-parse. +# PROJECT's git url#branch or url#SHA1 revision parsable by git rev-parse. # A special value "baseline" means that PROJECT is not being updated # in this build, and its baseline branch should be used. # In a successful build "update_baseline" step will update baseline # branches of all PROJECTs to the current values, thus setting # a baseline for the next build. -#rr[PROJECT_branch] +#rr[PROJECT_git] # PROJECT's git SHA1 revision. These are mostly used in manifests. #rr[PROJECT_rev] @@ -72,7 +66,7 @@ print_updated_components () local delim="" local c for c in ${rr[components]}; do - if [ x"${rr[${c}_branch]}" != x"baseline" ]; then + if [ x"${rr[${c}_git]}" != x"baseline" ]; then echo -ne "$delim$c" delim=${1- } fi @@ -156,10 +150,10 @@ clone_repo () local url branch - if [ x"${rr[${project}_branch]}" != x"baseline" ]; then + if [ x"${rr[${project}_git]}" != x"baseline" ]; then # Fetch and checkout from the specified repo. - url="${rr[${project}_url]}" - branch="${rr[${project}_branch]}" + url="${rr[${project}_git]%#*}" + branch="${rr[${project}_git]#*#}" else # Fetch and checkout from baseline repo. url=$(print_baseline_repo "$project" true) @@ -633,10 +627,9 @@ No reason to rebase base-artifacts." for c in ${rr[components]}; do if echo "${update_components[@]}" | tr ' ' '\n' | grep -q "^$c\$"; then - echo "${c}_url=${rr[${c}_url]}" - echo "${c}_branch=${rr[${c}_branch]}" + echo "${c}_git=${rr[${c}_git]}" else - echo "${c}_branch=baseline" + echo "${c}_git=baseline" fi done > $trigger_dest/trigger-build-$update_components2 done < <(${rr[breakup_updated_components]}) @@ -647,8 +640,7 @@ No reason to rebase base-artifacts." cat > $trigger_dest/trigger-bisect <<EOF current_project=$single_component -bad_url=${rr[${single_component}_url]} -bad_branch=$cur_rev +bad_git=${rr[${single_component}_git]%#*}#$cur_rev EOF if [ -f $run_step_artifacts/extra-bisect-params ]; then cat $run_step_artifacts/extra-bisect-params >> $trigger_dest/trigger-bisect diff --git a/tcwg_bmk-build.sh b/tcwg_bmk-build.sh index b58e3fc2..87263a59 100755 --- a/tcwg_bmk-build.sh +++ b/tcwg_bmk-build.sh @@ -128,10 +128,7 @@ esac # Use baseline branches by default. for c in ${rr[components]}; do - rr[${c}_branch]=${rr[${c}_branch]-baseline} - if [ x"${rr[${c}_branch]}" != x"baseline" ]; then - obligatory_variables rr[${c}_url] - fi + rr[${c}_git]=${rr[${c}_git]-baseline} done start_at="${start_at-default}" diff --git a/tcwg_gnu-build.sh b/tcwg_gnu-build.sh index 88106d0a..421f06e5 100755 --- a/tcwg_gnu-build.sh +++ b/tcwg_gnu-build.sh @@ -64,10 +64,7 @@ fi # Use baseline branches by default. for c in ${rr[components]}; do - rr[${c}_branch]=${rr[${c}_branch]-baseline} - if [ x"${rr[${c}_branch]}" != x"baseline" ]; then - obligatory_variables rr[${c}_url] - fi + rr[${c}_git]=${rr[${c}_git]-baseline} done start_at="${start_at-default}" diff --git a/tcwg_kernel-build.sh b/tcwg_kernel-build.sh index 2d5fc933..bb923767 100755 --- a/tcwg_kernel-build.sh +++ b/tcwg_kernel-build.sh @@ -51,10 +51,7 @@ esac # Use baseline branches by default. for c in ${rr[components]}; do - rr[${c}_branch]=${rr[${c}_branch]-baseline} - if [ x"${rr[${c}_branch]}" != x"baseline" ]; then - obligatory_variables rr[${c}_url] - fi + rr[${c}_git]=${rr[${c}_git]-baseline} done start_at="${start_at-default}" |