diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-11-01 11:04:17 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-11-07 14:12:12 +0000 |
commit | 0cb26e0b77d2f45ac4467096110607158a4e174d (patch) | |
tree | c6456b79a8bd35e3bd6d5ec1430de1174b8d9141 /tcwg_kernel-build.sh | |
parent | d462b724021fcc5f4725ed3fc7b8986593d5ec5c (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-x | tcwg_kernel-build.sh | 170 |
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 |