summaryrefslogtreecommitdiff
path: root/tcwg_kernel-build.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-11-01 11:04:17 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-11-07 14:12:12 +0000
commit0cb26e0b77d2f45ac4467096110607158a4e174d (patch)
treec6456b79a8bd35e3bd6d5ec1430de1174b8d9141 /tcwg_kernel-build.sh
parentd462b724021fcc5f4725ed3fc7b8986593d5ec5c (diff)
tcwg_kernel-build: New build script
This patch adds execution flow structure for tcwg_kernel-build script. The code for individual execution steps will be in separate patches for ease of review. Change-Id: I5e5adba01b6178addd3cdbae9dc18bdc0f7e7697
Diffstat (limited to 'tcwg_kernel-build.sh')
-rwxr-xr-xtcwg_kernel-build.sh170
1 files changed, 170 insertions, 0 deletions
diff --git a/tcwg_kernel-build.sh b/tcwg_kernel-build.sh
new file mode 100755
index 00000000..7932d3d8
--- /dev/null
+++ b/tcwg_kernel-build.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+
+set -ef -o pipefail
+
+scripts=$(dirname $0)
+. $scripts/jenkins-helpers.sh
+
+declare -A config
+declare -A git_repo
+declare -A git_branch
+
+convert_args_to_variables "@@gnu-default" "@@llvm-default" "@@linux-default" "$@"
+
+# Execution mode: baseline, jenkins-full, bisect.
+mode="${mode:-baseline}"
+
+# Toolchain to use: gnu or llvm
+obligatory_variables toolchain
+
+case "$mode" in
+ "jenkins-full")
+ obligatory_variables current_project current_rev
+ ;;
+esac
+
+# Set custom revision for one of the projects, and use baseline revisions
+# for all other projects.
+current_project="${current_project:-none}"
+current_rev="${current_rev:-default}"
+
+linux_config="${linux_config:-defconfig}"
+reset_baseline="${reset_baseline:-false}"
+start_at="${start_at:-default}"
+finish_at="${finish_at:-default}"
+target="${target:-native}"
+tidy="${tidy:-true}"
+top_artifacts="${top_artifacts:-$(pwd)/artifacts}"
+verbose="${verbose:-true}"
+verbose2="${verbose2:-false}"
+
+set -u
+
+if $verbose2; then set -x; fi
+
+trap "eval \"echo ERROR at \${FUNCNAME[0]}:\${BASH_LINENO[0]}\" > $top_artifacts/failures" EXIT
+
+# Directory structure for git repos
+declare -A git_dirs
+git_dirs[binutils]=binutils
+git_dirs[gcc]=gcc
+git_dirs[llvm]=llvm
+git_dirs[linux]=linux
+
+if [ x"$target" = x"native" ]; then
+ config[target]=$(uname -m)
+else
+ config[target]=$target
+fi
+
+# Baseline branch name for current configuration. These branches are
+# present in all above git repos.
+baseline="linaro-local/ci/tcwg_kernel/$toolchain-${config[$toolchain]}-${config[target]}-${config[linux]}-$linux_config"
+
+# We are not going to push any results for a one-off build.
+if [ x"$current_project" = x"none" ]; then
+ git_read_only=true
+else
+ git_read_only=false
+fi
+
+# Set start and finish steps for different modes.
+default_start_at=""
+default_finish_at=""
+case "$mode" in
+ "baseline")
+ default_finish_at="update_baseline"
+ git_read_only=true
+ ;;
+ "bisect")
+ case "$toolchain:$current_project" in
+ gnu:binutils) default_start_at="build_abe-binutils" ;;
+ gnu:gcc) default_start_at="build_abe-gcc" ;;
+ gnu:linux) default_start_at="count_linux_objs" ;;
+ llvm:llvm) default_start_at="build_llvm" ;;
+ llvm:linux) default_start_at="count_linux_objs" ;;
+ esac
+ default_finish_at="check_regression"
+ git_read_only=true
+ ;;
+ "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" "$top_artifacts" "base-artifacts" "$verbose"
+
+reset_artifacts ()
+{
+}
+
+clone_repo ()
+{
+}
+
+prepare_abe ()
+{
+}
+
+build_abe_1 ()
+{
+}
+
+build_abe ()
+{
+}
+
+build_llvm_1 ()
+{
+}
+
+build_llvm ()
+{
+}
+
+build_linux ()
+{
+}
+
+count_linux_objs ()
+{
+}
+
+no_regression_p ()
+{
+}
+
+check_regression ()
+{
+}
+
+update_baseline ()
+{
+}
+
+push_baseline ()
+{
+}
+
+run_step reset_artifacts
+case "$toolchain" in
+ gnu)
+ run_step prepare_abe
+ run_step build_abe binutils
+ run_step build_abe gcc
+ ;;
+ llvm)
+ run_step build_llvm
+ ;;
+esac
+run_step count_linux_objs
+run_step check_regression
+run_step update_baseline
+run_step push_baseline
+
+trap "" EXIT