From 1282735c29c049fe7575c1e418257ab629a45d06 Mon Sep 17 00:00:00 2001 From: TCWG BuildSlave Date: Tue, 28 Nov 2023 21:18:28 +0000 Subject: onsuccess: #78: 1: [TCWG CI] https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/ Results : | # reset_artifacts: | -10 | # build_bmk_llvm: | -3 | # benchmark -- -O3_marm: | 1 check_regression status : 0 --- jenkins/build-name | 2 +- jenkins/notify-full.log | 3731 ++++++++++++++++++++++++++++++++++++++++++++++- jenkins/notify-init.log | 132 +- jenkins/rewrite.log | 24 +- jenkins/run-build.env | 11 +- 5 files changed, 3791 insertions(+), 109 deletions(-) (limited to 'jenkins') diff --git a/jenkins/build-name b/jenkins/build-name index 2aa83f4..8e11dc5 100644 --- a/jenkins/build-name +++ b/jenkins/build-name @@ -1 +1 @@ -#77-R1-force +#78-llvm-R1 diff --git a/jenkins/notify-full.log b/jenkins/notify-full.log index 59707a0..0f87347 100644 --- a/jenkins/notify-full.log +++ b/jenkins/notify-full.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 2 + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_3 ++ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_5 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 4 -+ opts=-p56211 ++ opts=-p38096 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56211' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=38096' + shift + local -a cmd + cmd=() @@ -58,10 +58,10 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q tcwg_bmk-build.sh -++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_3 -+ ssh -p56211 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56211 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_3 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_5 ++ ssh -p38096 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=38096 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_5 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh' -/home/tcwg-buildslave/workspace/tcwg_bmk_3/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh +/home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh + false + dryrun= @@ -70,8 +70,8 @@ + declare -a changed_components + declare print_commits_f print_result_f print_config_f print_last_icommit_f + dump_model_only=false -# setup_notify_environment + setup_notify_environment +# setup_notify_environment + echo '# setup_notify_environment' + top_artifacts=artifacts ++ get_current_manifest '{rr[ci_project]}' @@ -81,25 +81,25 @@ ++ get_current_manifest '{rr[ci_config]}' ++ get_manifest artifacts/manifest.sh '{rr[ci_config]}' ++ set +x -# Debug traces : + ci_config=llvm-arm-master-O3 +# Debug traces : + echo '# Debug traces :' ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/75/' -# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/75/ +# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/ ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/' # Using dir : base-artifacts + echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/' -# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/ +# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/ ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/' # Using dir : artifacts + + echo '# Using dir : artifacts' + echo '' - + mkdir -p artifacts/notify + '[' -f /home/tcwg-buildslave/.jipdate.yml ']' + set +x @@ -111,7 +111,7 @@ ++ get_current_manifest '{rr[update_baseline]}' ++ get_manifest artifacts/manifest.sh '{rr[update_baseline]}' ++ set +x -+ '[' force '!=' init ']' ++ '[' onsuccess '!=' init ']' + IFS=' ' + read -r -a changed_components ++ print_changed_components @@ -121,18 +121,94 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -+++ '[' xbaseline '!=' xbaseline ']' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm ++++ delim=' ' +++ echo +++ for c in $(print_updated_components) ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ '[' x45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 '!=' x0ef990d57c1f8c37c754271c34601b08ca0e463c ']' +++ echo -ne llvm +++ delim=' ' ++ echo + local c base_rev cur_rev c_commits -+ '[' 0 = 0 ']' ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=0ef990d57c1f8c37c754271c34601b08ca0e463c ++ local res ++ res=0 ++ wait 44935 ++ git -C llvm rev-parse --verify HEAD ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ git -C llvm rev-parse '45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405^@' ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' 8ee38f3b32ef6fc4854e828a682956f35a01bd52 = 0ef990d57c1f8c37c754271c34601b08ca0e463c ']' ++ return 1 ++ change_kind=single_component # Debug traces : -# change_kind=no_change : - -+ change_kind=no_change -+ changed_single_component= + echo '# Debug traces :' -+ echo '# change_kind=no_change : ' +# change_kind=single_component : llvm ++ echo '# change_kind=single_component : llvm' ++ for c in "${changed_components[@]}" +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ git -C llvm rev-list --count 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ c_commits=598 +# rev for llvm : 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 (598 commits) + ++ echo '# rev for llvm : 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 (598 commits)' + echo '' + setup_stages_to_run + '[' ignore = onregression ']' @@ -156,10 +232,10 @@ + generate_extra_details_f=bmk_generate_extra_details + post_interesting_commits init + set -euf -o pipefail -# post_interesting_commits + echo '# post_interesting_commits' +# post_interesting_commits + local stage=init -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + '[' full '!=' full ']' + bmk_generate_extra_details @@ -167,21 +243,21 @@ + local artifacts_mail_dir + artifacts_mail_dir=artifacts/notify + local res=0 -+ wait 44747 -+ /home/tcwg-buildslave/workspace/tcwg_bmk_3/jenkins-scripts/../bmk-scripts/output-bmk-results.py artifacts/results-vs-prev/compare-results-internal.csv artifacts/results-vs-prev/bmk-specific-variability.csv artifacts/notify/ sample build verbose ++ wait 44959 ++ /home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/../bmk-scripts/output-bmk-results.py artifacts/results-vs-prev/compare-results-internal.csv artifacts/results-vs-prev/bmk-specific-variability.csv artifacts/notify/ sample build verbose + assert_with_msg 'ERROR while trying to regenerate bmk-data results. Aborting..' '[' 0 = 0 ']' + set -euf -o pipefail +x + check_if_first_report + declare -g first_icommit_to_report + first_icommit_to_report=false -+ '[' xno_change '!=' xsingle_commit ']' ++ '[' xsingle_component '!=' xsingle_commit ']' + return + post_interesting_commits full + set -euf -o pipefail # post_interesting_commits + echo '# post_interesting_commits' + local stage=full -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + true + generate_jira_dir @@ -192,7 +268,7 @@ ++ set -euf -o pipefail ++ local print_arg=--entry ++ shift 1 -++ '[' xno_change '!=' xsingle_commit ']' +++ '[' xsingle_component '!=' xsingle_commit ']' ++ return 0 + icommit_entry= + '[' '' '!=' '' ']' @@ -241,26 +317,3394 @@ +++ get_current_manifest BUILD_URL +++ get_manifest artifacts/manifest.sh BUILD_URL +++ set +x -++ url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/artifact/artifacts +++ url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/artifact/artifacts ++ '[' '' '!=' '' ']' -++ echo 'https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/artifact/artifacts/notify/mail-body.txt/*view*/' -+ echo '# print all notification files' +++ echo 'https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/artifact/artifacts/notify/mail-body.txt/*view*/' # print all notification files ++ echo '# print all notification files' + true + generate_mail_files + set -euf -o pipefail + print_mail_recipients + set -euf -o pipefail -+ local c= ++ local c=llvm ++ '[' llvm = '' ']' ++ local -A emails ++ emails["tcwg-validation@linaro.org"]=bcc ++ emails["author"]=cc ++ emails["committer"]=to ++ case "$ci_project/$ci_config:$c" in ++ emails["author"]=no ++ emails["committer"]=no ++ emails["maxim.kuvyrkov@linaro.org"]=to ++ local c email base_rev cur_rev +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ read -r email +++ git -C llvm log --pretty=%ae 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ local precommit_postcommit=postcommit + '[' '' = '' ']' -+ echo bcc:tcwg-validation@linaro.org -+ return 0 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ read -r email +++ git -C llvm log --pretty=%ce 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ unset 'emails[author]' 'emails[committer]' ++ local type ++ recipients=() ++ local -a recipients ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=bcc ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$type:$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=to ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ IFS=, ++ echo bcc:tcwg-validation@linaro.org,maxim.kuvyrkov@linaro.org ++ print_commits --oneline ++ set -euf -o pipefail ++ false ++ local print_arg=--oneline -++ '[' no_change = no_change ']' -++ echo 'baseline build' +++ '[' single_component = no_change ']' +++ local more_lines +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' +++ local new_commits c base_rev cur_rev c_commits components +++ local commits_or_patches +++ '[' '' '!=' '' ']' +++ commits_or_patches=commits +++ new_commits=0 +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++++ git -C llvm rev-list --count 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ c_commits=598 +++ new_commits=598 ++++ echo llvm ++++ tr ' ' , +++ components=llvm +++ echo '598 commits in llvm' +++ '[' --oneline = --oneline ']' ++ return 0 ++ bmk_print_result --oneline ++ set -euf -o pipefail @@ -293,25 +3737,184 @@ ++ '[' -f artifacts/notify/symbol.improvement ']' ++ short_diag='No change' ++ echo 'No change' -+ echo '[Linaro-TCWG-CI]' 'baseline build: No change' +++ bmk_print_config --oneline +++ . /home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/tcwg_bmk-config.sh ++++ [[ -v rr[ci_project] ]] ++++ [[ -v rr[ci_config] ]] ++++ declare -A bmk_data ++++ bmk_data[tcwg_bmk-code_size-coremark--gnu_eabi-arm_eabi]=stm32:coremark ++++ bmk_data[tcwg_bmk-code_size-cpu2017fast--gnu-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_size-cpu2017fast--llvm-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_size-cpu2017rate--gnu-arm]=sq_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_size-cpu2017rate--llvm-arm]=sq_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_size-spec2k6--gnu-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--gnu-arm]=sq_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--llvm-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--llvm-arm]=sq_32:spec2006_nofortran ++++ bmk_data[tcwg_bmk-code_speed-coremark--gnu_eabi-arm_eabi]=stm32:coremark ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--gnu-aarch64]=tx1_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--gnu-arm]=tk1_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--llvm-aarch64]=tx1_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--llvm-arm]=tk1_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_speed-cpu2017speed--gnu-aarch64]=apm_64:spec2017_speed ++++ bmk_data[tcwg_bmk-code_speed-cpu2017speed--llvm-aarch64]=apm_64:spec2017_speed ++++ bmk_data[tcwg_bmk-qc_speed-cpu2017rate--llvm-aarch64]=qc_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--gnu-aarch64]=tx1_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--gnu-arm]=tk1_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--llvm-aarch64]=tx1_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--llvm-arm]=tk1_32:spec2006_nofortran ++++ bmk_data[tcwg_bmk-fujitsu_speed-cpu2017speed--gnu-aarch64]=fx_64:spec2017_speed ++++ bmk_data[tcwg_bmk-fujitsu_speed-cpu2017speed--llvm-aarch64]=fx_64:spec2017_speed ++++ bmk_data[tcwg_bmk-code_sve-cpu2017fast--gnu-aarch64]=fx_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017fast--gnu-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017fast--llvm-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017rate--gnu-arm]=sq_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_vect-cpu2017rate--llvm-arm]=sq_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--gnu-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--gnu-arm]=sq_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--llvm-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--llvm-arm]=sq_32:spec2006_nofortran +++ false +++ IFS=- +++ read -a ci_pjt_cfg +++ local toolchain target cflags +++ toolchain=llvm +++ target=arm +++ cflags=O3 +++ local compiler= libc= linker= version= bmk_flags= hw= ++++ echo O3 ++++ sed -e 's/_/ -/g' +++ bmk_flags=O3 +++ local print_arg=--oneline +++ case "$print_arg" in +++ case "$ci_config" in +++ echo 'arm O3' +++ return 0 ++ echo '[Linaro-TCWG-CI]' '598 commits in llvm: No change on arm O3' + print_mail_body + local bad_artifacts_url good_artifacts_url ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ bad_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/artifact/artifacts ++ bad_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/artifact/artifacts ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ good_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/75/artifact/artifacts ++ good_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/artifact/artifacts + cat +++ bmk_print_config --short +++ . /home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/tcwg_bmk-config.sh ++++ [[ -v rr[ci_project] ]] ++++ [[ -v rr[ci_config] ]] ++++ declare -A bmk_data ++++ bmk_data[tcwg_bmk-code_size-coremark--gnu_eabi-arm_eabi]=stm32:coremark ++++ bmk_data[tcwg_bmk-code_size-cpu2017fast--gnu-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_size-cpu2017fast--llvm-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_size-cpu2017rate--gnu-arm]=sq_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_size-cpu2017rate--llvm-arm]=sq_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_size-spec2k6--gnu-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--gnu-arm]=sq_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--llvm-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_size-spec2k6--llvm-arm]=sq_32:spec2006_nofortran ++++ bmk_data[tcwg_bmk-code_speed-coremark--gnu_eabi-arm_eabi]=stm32:coremark ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--gnu-aarch64]=tx1_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--gnu-arm]=tk1_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--llvm-aarch64]=tx1_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-cpu2017rate--llvm-arm]=tk1_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_speed-cpu2017speed--gnu-aarch64]=apm_64:spec2017_speed ++++ bmk_data[tcwg_bmk-code_speed-cpu2017speed--llvm-aarch64]=apm_64:spec2017_speed ++++ bmk_data[tcwg_bmk-qc_speed-cpu2017rate--llvm-aarch64]=qc_64:spec2017_rate ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--gnu-aarch64]=tx1_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--gnu-arm]=tk1_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--llvm-aarch64]=tx1_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_speed-spec2k6--llvm-arm]=tk1_32:spec2006_nofortran ++++ bmk_data[tcwg_bmk-fujitsu_speed-cpu2017speed--gnu-aarch64]=fx_64:spec2017_speed ++++ bmk_data[tcwg_bmk-fujitsu_speed-cpu2017speed--llvm-aarch64]=fx_64:spec2017_speed ++++ bmk_data[tcwg_bmk-code_sve-cpu2017fast--gnu-aarch64]=fx_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017fast--gnu-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017fast--llvm-aarch64]=sq_64:spec2017_fast ++++ bmk_data[tcwg_bmk-code_vect-cpu2017rate--gnu-arm]=sq_32:spec2017_rate ++++ bmk_data[tcwg_bmk-code_vect-cpu2017rate--llvm-arm]=sq_32:spec2017_rate_nofortran ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--gnu-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--gnu-arm]=sq_32:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--llvm-aarch64]=sq_64:spec2006_all ++++ bmk_data[tcwg_bmk-code_vect-spec2k6--llvm-arm]=sq_32:spec2006_nofortran +++ false +++ IFS=- +++ read -a ci_pjt_cfg +++ local toolchain target cflags +++ toolchain=llvm +++ target=arm +++ cflags=O3 +++ local compiler= libc= linker= version= bmk_flags= hw= ++++ echo O3 ++++ sed -e 's/_/ -/g' +++ bmk_flags=O3 +++ local print_arg=--short +++ case "$print_arg" in +++ print_config --short +++ false +++ local print_arg=--short +++ case "$print_arg" in +++ echo 'CI config tcwg_bmk-code_speed-cpu2017rate/llvm-arm-master-O3' +++ return 0 ++ print_commits --short ++ sed -e 's/^/ | /' ++ set -euf -o pipefail ++ false ++ local print_arg=--short -++ '[' no_change = no_change ']' -++ echo 'baseline build' +++ '[' single_component = no_change ']' +++ local more_lines +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' +++ local new_commits c base_rev cur_rev c_commits components +++ local commits_or_patches +++ '[' '' '!=' '' ']' +++ commits_or_patches=commits +++ new_commits=0 +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++++ git -C llvm rev-list --count 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ c_commits=598 +++ new_commits=598 ++++ echo llvm ++++ tr ' ' , +++ components=llvm +++ echo '598 commits in llvm' +++ '[' --short = --oneline ']' +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++++ git -C llvm rev-list --count 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ c_commits=598 +++ '[' '' '!=' '' ']' +++ git -C llvm log -n 5 --oneline 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ '[' 598 -gt 5 ']' +++ echo '... and 593 more commits in llvm' +++ '[' '' '!=' '' ']' ++ return 0 ++ bmk_print_result --short ++ set -euf -o pipefail @@ -342,8 +3945,8 @@ ++ '[' -f artifacts/notify/exe.improvement ']' ++ '[' -f artifacts/notify/symbol.improvement ']' ++ echo 'No change' -++ bmk_print_config -++ . /home/tcwg-buildslave/workspace/tcwg_bmk_3/jenkins-scripts/tcwg_bmk-config.sh +++ bmk_print_config --long +++ . /home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/tcwg_bmk-config.sh +++ [[ -v rr[ci_project] ]] +++ [[ -v rr[ci_config] ]] +++ declare -A bmk_data @@ -386,6 +3989,12 @@ ++ toolchain=llvm ++ target=arm ++ cflags=O3 +++ local compiler= libc= linker= version= bmk_flags= hw= ++++ echo O3 ++++ sed -e 's/_/ -/g' +++ bmk_flags=O3 +++ local print_arg=--long +++ case "$print_arg" in ++ local bmk_suite publish_save_temps ++ bmk_suite= ++ publish_save_temps=false @@ -409,16 +4018,12 @@ ++ read s_t +++ find results-1 -path 'save.*.temps/*.tar.xz' ++ '[' -d artifacts/top-artifacts/save-temps/ ']' -++ local compiler= libc= linker= version= bmk_flags= hw= ++ case "$toolchain" in ++ compiler=Clang ++ libc=Glibc ++ linker='LLVM Linker' ++ case "$ci_config" in ++ version='tip of trunk' -+++ echo O3 -+++ sed -e 's/_/ -/g' -e s/LTO/flto/g -e s/VECT/fdump-tree-vect-details/g -++ bmk_flags=O3 ++ case "$(tcwg_bmk_hw)" in +++ tcwg_bmk_hw +++ local data data_key @@ -437,27 +4042,27 @@ +++ case "$target" in +++ target=arm-linux-gnueabihf +++ echo arm-linux-gnueabihf -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return -+ echo '# generate dashboard' # generate dashboard ++ echo '# generate dashboard' + generate_dashboard_squad -# generate_dashboard_squad -... Skipping -# post_dashboard_squad -... Skipping + local results_date +# generate_dashboard_squad + echo '# generate_dashboard_squad' + false + echo '... Skipping' +... Skipping + return + post_dashboard_squad +# post_dashboard_squad + echo '# post_dashboard_squad' + false +... Skipping + echo '... Skipping' + return + generate_lnt_report -+ wait 44824 ++ wait 45104 + set -euf -o pipefail # generate_lnt_report + echo '# generate_lnt_report' @@ -469,12 +4074,12 @@ + false + post_to_jira + set -euf -o pipefail -# post_to_jira + echo '# post_to_jira' +# post_to_jira + local post_card_comment=false + local post_template_comment=false + false + false + false -+ echo 'Full stage ran successfully.' Full stage ran successfully. ++ echo 'Full stage ran successfully.' diff --git a/jenkins/notify-init.log b/jenkins/notify-init.log index cebe3bb..27af5f8 100644 --- a/jenkins/notify-init.log +++ b/jenkins/notify-init.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 2 + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_3 ++ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_5 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 4 -+ opts=-p56211 ++ opts=-p38096 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56211' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=38096' + shift + local -a cmd + cmd=() @@ -58,10 +58,10 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q tcwg_bmk-build.sh -++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_3 -+ ssh -p56211 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56211 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_3 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_5 ++ ssh -p38096 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=38096 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_5 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh' -/home/tcwg-buildslave/workspace/tcwg_bmk_3/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh +/home/tcwg-buildslave/workspace/tcwg_bmk_5/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh + false + dryrun= @@ -70,8 +70,8 @@ + declare -a changed_components + declare print_commits_f print_result_f print_config_f print_last_icommit_f + dump_model_only=false -# setup_notify_environment + setup_notify_environment +# setup_notify_environment + echo '# setup_notify_environment' + top_artifacts=artifacts ++ get_current_manifest '{rr[ci_project]}' @@ -87,15 +87,15 @@ ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/75/' -# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/75/ +# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/ ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/' # Using dir : base-artifacts + echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/' -# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/77/ +# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/ ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O3-build/78/' # Using dir : artifacts + echo '# Using dir : artifacts' @@ -111,7 +111,7 @@ ++ get_current_manifest '{rr[update_baseline]}' ++ get_manifest artifacts/manifest.sh '{rr[update_baseline]}' ++ set +x -+ '[' force '!=' init ']' ++ '[' onsuccess '!=' init ']' + IFS=' ' + read -r -a changed_components ++ print_changed_components @@ -121,19 +121,95 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -+++ '[' xbaseline '!=' xbaseline ']' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm ++++ delim=' ' +++ echo +++ for c in $(print_updated_components) ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ '[' x45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 '!=' x0ef990d57c1f8c37c754271c34601b08ca0e463c ']' +++ echo -ne llvm +++ delim=' ' ++ echo + local c base_rev cur_rev c_commits ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=0ef990d57c1f8c37c754271c34601b08ca0e463c ++ local res ++ res=0 ++ wait 44822 ++ git -C llvm rev-parse --verify HEAD ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ git -C llvm rev-parse '45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405^@' ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' 8ee38f3b32ef6fc4854e828a682956f35a01bd52 = 0ef990d57c1f8c37c754271c34601b08ca0e463c ']' ++ return 1 ++ change_kind=single_component # Debug traces : -+ '[' 0 = 0 ']' -+ change_kind=no_change -+ changed_single_component= + echo '# Debug traces :' -# change_kind=no_change : -+ echo '# change_kind=no_change : ' - +# change_kind=single_component : llvm ++ echo '# change_kind=single_component : llvm' ++ for c in "${changed_components[@]}" +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=0ef990d57c1f8c37c754271c34601b08ca0e463c +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 +++ git -C llvm rev-list --count 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 ++ c_commits=598 +# rev for llvm : 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 (598 commits) ++ echo '# rev for llvm : 0ef990d57c1f8c37c754271c34601b08ca0e463c..45636ecf2c3a4a216f26bfe5a7d1495b9f7a8405 (598 commits)' + echo '' + + setup_stages_to_run + '[' ignore = onregression ']' + '[' ignore = precommit ']' @@ -156,10 +232,10 @@ + generate_extra_details_f=bmk_generate_extra_details + post_interesting_commits init + set -euf -o pipefail -+ echo '# post_interesting_commits' # post_interesting_commits ++ echo '# post_interesting_commits' + local stage=init -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + '[' init '!=' full ']' Init stage ran successfully. diff --git a/jenkins/rewrite.log b/jenkins/rewrite.log index 621fc25..3a20fd9 100644 --- a/jenkins/rewrite.log +++ b/jenkins/rewrite.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 2 + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_3 ++ dir=/home/tcwg-buildslave/workspace/tcwg_bmk_5 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 4 -+ opts=-p56211 ++ opts=-p38096 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_3:-p56211:ssh_host=tcwg-jade-03 ssh_port=56211' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_5:-p38096:ssh_host=tcwg-snow_bmk-02 ssh_port=38096' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56211' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=38096' + shift + local -a cmd + cmd=() @@ -58,8 +58,8 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q 100 -++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_3 -+ ssh -p56211 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56211 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_3 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_5 ++ ssh -p38096 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=38096 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_5 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' + declare -g rewrite_base_artifacts_first=true + true + update_baseline diff --git a/jenkins/run-build.env b/jenkins/run-build.env index acb4e4f..354ac34 100644 --- a/jenkins/run-build.env +++ b/jenkins/run-build.env @@ -1,14 +1,15 @@ -build_name="#77" +build_name="#78" docker_opts=(--distro default --arch armhf --node -tcwg-jade-03 +tcwg-snow_bmk-02 --ssh_info true ) source build_container.sh trap "cleanup_all_containers" EXIT -build_name="#77" -branch_opt=() -build_name="#77-R1-force" +build_name="#78-llvm" +branch_opt=(==rr\[llvm_git\] +https://github.com/llvm/llvm-project.git#main ) +build_name="#78-llvm-R1" -- cgit v1.2.3