summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2019-01-15 10:55:03 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2019-01-15 10:55:03 +0000
commit6c5849c4b8dbe233b5ed120f553458be789c2d90 (patch)
tree3c6abffebd6dfedf19c488561796036bedd6eea6
parentabf4d3217a50d4432efb74d78f29cac64f185f55 (diff)
jenkins-helpers.sh: Implement stack logic for __manifest_file
In tcwg_kernel-bisect.sh we use manifest handling to put options for tcwg_kernel-build.sh script into build-parameters.sh file. This overwrites __manifest_file variable of bisect job, so we end up forwarding half of bisect manifest into build-parameters.sh. Fix this by adding push/pop logic for __manifest_file variable. Change-Id: I22adc9f0533024063398b5d7cb1a416cad2aa2d1
-rw-r--r--jenkins-helpers.sh34
-rwxr-xr-xtcwg_kernel-bisect.sh1
2 files changed, 26 insertions, 9 deletions
diff --git a/jenkins-helpers.sh b/jenkins-helpers.sh
index cab20f21..33f253c8 100644
--- a/jenkins-helpers.sh
+++ b/jenkins-helpers.sh
@@ -678,7 +678,29 @@ test_array()
# Manifest filename for manifest_out and convert_args_to_variables to write to.
# This is set using "%%" directive to convert_args_to_variables.
-__manifest_filename="/dev/null"
+# This is a stack maintained by manifest_push and manifest_pop.
+__manifest_filename=("/dev/null")
+
+# Set new file name for manifest
+# $1: File name
+manifest_push ()
+{
+ local filename="$1"
+
+ # Resolve absolute path to manifest.
+ local dir=$(dirname "$filename")
+ mkdir -p "$dir"
+ dir=$(cd "$dir"; pwd)
+
+ __manifest_filename=("$dir/$(basename "$filename")" "${__manifest_filename[@]}")
+ rm -f "${__manifest_filename[0]}"
+}
+
+# Return to previous manifest filename
+manifest_pop ()
+{
+ __manifest_filename=("${__manifest_filename[@]:1}")
+}
# Output stdout to the manifest file. Most common case would be
# cat << EOF | manifest_out
@@ -687,7 +709,7 @@ __manifest_filename="/dev/null"
# EOF
manifest_out ()
{
- cat >> "$__manifest_filename"
+ cat >> "${__manifest_filename[0]}"
}
# Process "--var value" and "++arr elem" arguments and define corresponding
@@ -762,13 +784,7 @@ EOF
num=2
;;
"%%")
- __manifest_filename="$2"
- # Resolve absolute path to manifest.
- local dir=$(dirname "$__manifest_filename")
- mkdir -p "$dir"
- dir=$(cd "$dir"; pwd)
- __manifest_filename="$dir/$(basename "$__manifest_filename")"
- rm -f "$__manifest_filename"
+ manifest_push "$2"
cat <<EOF | manifest_out
# Start option processing
jenkins_scripts_rev=$(git_rev_parse $(dirname "$0") HEAD)
diff --git a/tcwg_kernel-bisect.sh b/tcwg_kernel-bisect.sh
index 5b60aca8..234b99c0 100755
--- a/tcwg_kernel-bisect.sh
+++ b/tcwg_kernel-bisect.sh
@@ -21,6 +21,7 @@ reproduce_bisect="${reproduce_bisect:-false}"
# Process build args and record them in build-parameters.sh
convert_args_to_variables %% $artifacts/build-parameters.sh "$@"
+manifest_pop
obligatory_variables current_project toolchain