summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>2019-02-05 16:28:16 +0530
committerPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>2019-02-05 16:28:16 +0530
commit63b4d3d5e1d892ee5e0ac84a9f7dc740239da8d3 (patch)
tree1550273705d74fd49b2b0e4a6fadac61300a4891
parentc84ce4ac662e6b1015318ac157fe47fd2303f520 (diff)
Add tcwg_gnu-build and modify build_abe to support bootstrap.
Change-Id: I00df28006aec6f0ade815188d809dacbfe6b17f9
-rw-r--r--round-robin.sh29
-rwxr-xr-xtcwg_gnu-build.sh130
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