diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2019-02-05 16:28:16 +0530 |
---|---|---|
committer | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2019-02-05 16:28:16 +0530 |
commit | 63b4d3d5e1d892ee5e0ac84a9f7dc740239da8d3 (patch) | |
tree | 1550273705d74fd49b2b0e4a6fadac61300a4891 | |
parent | c84ce4ac662e6b1015318ac157fe47fd2303f520 (diff) |
Add tcwg_gnu-build and modify build_abe to support bootstrap.
Change-Id: I00df28006aec6f0ade815188d809dacbfe6b17f9
-rw-r--r-- | round-robin.sh | 29 | ||||
-rwxr-xr-x | tcwg_gnu-build.sh | 130 |
2 files changed, 154 insertions, 5 deletions
diff --git a/round-robin.sh b/round-robin.sh index d1f201a3..1bc1f865 100644 --- a/round-robin.sh +++ b/round-robin.sh @@ -187,7 +187,9 @@ build_abe () local component="$1" - local project stage + local project stage action + action="build" + case "$component" in stage1) project=gcc @@ -197,7 +199,19 @@ build_abe () project=gcc stage="--stage 2" ;; - *) + bootstrap) + project=gcc + stage="--enable bootstrap" + ;; + ubsan_bootstrap) + project=gcc + stage="--set buildconfig=bootstrap-ubsan" + ;; + bootstrap_O3) + project=gcc + stage="--set buildconfig=bootstrap-O3" + ;; + *) project=$component stage="" ;; @@ -221,7 +235,7 @@ build_abe () # Remove previous build directories and .stamp files. # We rely on ccache for fast rebuilds. - set +f; rm -rf builds/x86_64-unknown-linux-gnu/$gnu_target/$git_dir~master*; set -f + set +f; rm -rf builds/*/$gnu_target/$git_dir~master*; set -f export PATH=$(pwd)/bin:$PATH @@ -235,10 +249,15 @@ build_abe () fi ccache -z + local target_opt="" + if [ x"${rr[target]}" != x"native" ]; then + target_opt="--target $gnu_target" + fi + # Run "./abe.sh --build $project". ./abe.sh \ - --build $project \ - --target $gnu_target \ + --$action $project \ + $target_opt \ --extraconfigdir config/master \ --disable update \ $project=${rr[${project}_url]}~master \ diff --git a/tcwg_gnu-build.sh b/tcwg_gnu-build.sh new file mode 100755 index 00000000..c9f9e1c4 --- /dev/null +++ b/tcwg_gnu-build.sh @@ -0,0 +1,130 @@ +#!/bin/bash + +set -euf -o pipefail + +scripts=$(dirname $0) +. $scripts/jenkins-helpers.sh + +convert_args_to_variables "$@" + +obligatory_variables rr[ci_config] \ + BUILD_NUMBER + +# Execution mode: baseline, bisect, continue, jenkins-full +rr[mode]="${rr[mode]-baseline}" + +case "${rr[mode]}" in + "jenkins-full") + obligatory_variables rr[current_project] rr[current_branch] + ;; +esac + +# Set custom revision for one of the projects, and use baseline revisions +# for all other projects. +rr[ci_project]="${rr[ci_project]-tcwg_bmk}" +rr[baseline_branch]="${rr[baseline_branch]-linaro-local/ci/${rr[ci_project]}/${rr[ci_config]}}" +rr[current_branch]="${rr[current_branch]-default}" +rr[current_project]="${rr[current_project]-none}" +rr[reset_baseline]="${rr[reset_baseline]-false}" +rr[top_artifacts]="${rr[top_artifacts]-$(pwd)/artifacts}" + +# {toolchain_name}-{toolchain_ver}-{target}-{bmk}-{cflags} +IFS=- read -a ci_config <<EOF +${rr[ci_config]} +EOF +rr[toolchain_name]=${rr[toolchain_name]-${ci_config[0]}} +rr[target]="native" +bootstrap_config=${cflags-${ci_config[3]}} + +start_at="${start_at-default}" +finish_at="${finish_at-default}" +verbose="${verbose-true}" +verbose2="${verbose2-false}" + +results_id="tx1/${rr[ci_project]}/${rr[ci_config]}-$BUILD_NUMBER" + +if $verbose2; then set -x; fi + +trap "eval \"echo ERROR at \${FUNCNAME[0]}:\${BASH_LINENO[0]}\"" EXIT + +# Set start and finish steps for different modes. +default_start_at="" +default_finish_at="" +base_artifacts_opt="base-artifacts" +case "${rr[mode]}" in + "baseline") + default_finish_at="update_baseline" + ;; + "bisect") + case "${rr[toolchain]}:${rr[current_project]}" in + gnu:binutils) default_start_at="build_abe-binutils" ;; + gnu:gcc) default_start_at="build_abe-stage1" ;; + llvm:llvm) default_start_at="build_llvm" ;; + esac + default_finish_at="check_regression" + ;; + "continue") + # Developer mode. + case "${rr[toolchain]}" in + "gnu") default_start_at="prepare_abe" ;; + "llvm") default_start_at="build_llvm" ;; + esac + base_artifacts_opt="" + ;; + "jenkins-full") ;; +esac +if [ x"$start_at" = x"default" ]; then + start_at="$default_start_at" +fi +if [ x"$finish_at" = x"default" ]; then + finish_at="$default_finish_at" +fi + +run_step_init "$start_at" "$finish_at" "${rr[top_artifacts]}" "$base_artifacts_opt" "$verbose" + +. $scripts/round-robin.sh + +# Exit with code 0 if no regression compared to base-artifacts/results. +no_regression_p () +{ + ( + set -euf -o pipefail + + if ! [ -f base-artifacts/results ]; then + return 0 + fi + + local build_result_ref build_result_new + build_result_ref=$(tail -n1 base-artifacts/results) + build_result_new=$(tail -n1 ${rr[top_artifacts]}/results) + + if [ $build_result_new -lt $build_result_ref ]; then + return 1 + fi + + if ! [ -f base-artifacts/results_id ]; then + return 0 + fi + + local results_ref + results_ref=$(cat base-artifacts/results_id) + + $scripts/tcwg-benchmark-results.sh --results_ref $results_ref --results_id $results_id --top_artifacts "${rr[top_artifacts]}" --verbose $verbose + + while IFS=, read -r bmk symbol speed size; do + if [ "$size" -gt 100 ]; then + return 1 + fi + done < ${rr[top_artifacts]}/results.csv + ) +} + +run_step stop_on_fail -10 reset_artifacts +run_step stop_on_fail x prepare_abe +run_step skip_on_fail -5 build_abe ${bootstrap_config} + +run_step reset_on_fail x check_regression +run_step stop_on_fail x update_baseline +run_step stop_on_fail x push_baseline + +trap "" EXIT |