From 6c5849c4b8dbe233b5ed120f553458be789c2d90 Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Tue, 15 Jan 2019 10:55:03 +0000 Subject: 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 --- jenkins-helpers.sh | 34 +++++++++++++++++++++++++--------- tcwg_kernel-bisect.sh | 1 + 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 <