summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2020-03-17 13:07:01 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2020-03-22 12:02:08 +0000
commitf8c64dd09a2e99af95c4a739b706e958d6f16d8a (patch)
tree99fbd184a67250f2b827c3882c5d15be25e285b0
parent8b1f705fb3f331013cc14402bb199248a17ce7c2 (diff)
round-robin.sh: Avoid changing top-level artifacts in no_regression_p predicate
The no_regression_p() predicate function is called from two steps: check_regression and update_baseline. While we want no_regression_p to output regression info during check_regression step, we don't want that during update_baseline (during update_baseline no_regression_p is called to compare current results against pre-baseline ones). To fix the above we generate regression information in artifacts directory of the current step, and copy it to the top-level only during check_regression step. Change-Id: Ib03d82f7afe60c406c7942f2fa086855df371171
-rw-r--r--round-robin.sh14
-rwxr-xr-xtcwg_bmk-build.sh23
-rwxr-xr-xtcwg_gnu-build.sh2
-rwxr-xr-xtcwg_kernel-build.sh2
4 files changed, 26 insertions, 15 deletions
diff --git a/round-robin.sh b/round-robin.sh
index 3f739df7..5301f447 100644
--- a/round-robin.sh
+++ b/round-robin.sh
@@ -486,7 +486,7 @@ no_build_regression_p ()
# - "^ERROR:" detects linker errors
# - ": undefined reference" detects missing symbols during linking
# - "] Error " detects GNU make errors
- cat > $new_artifacts/regressions.txt <<EOF
+ cat > $run_step_artifacts/regressions.txt <<EOF
First few build errors in logs:
$(cat $new_artifacts/console.log | sed -e 's/"[^"]*"//g' | grep " error:\|^ERROR:\|: undefined reference\|\] Error " | head)
EOF
@@ -531,6 +531,18 @@ check_regression ()
return
fi
+ if [ -f $run_step_artifacts/regressions.txt ]; then
+ # Add regression info generated by no_regression_p to top-level.
+ cp $run_step_artifacts/regressions.txt ${rr[top_artifacts]}/
+ fi
+
+ if [ -f $run_step_artifacts/results.regressions ]; then
+ # Add regression info generated by no_regression_p to top-level
+ # results file.
+ cat $run_step_artifacts/results.regressions \
+ >> ${rr[top_artifacts]}/results
+ fi
+
# We've got a regression. Generate trigger-* files.
local single_component=$(print_single_updated_component)
local trigger_dest
diff --git a/tcwg_bmk-build.sh b/tcwg_bmk-build.sh
index 4beb2958..3fd24129 100755
--- a/tcwg_bmk-build.sh
+++ b/tcwg_bmk-build.sh
@@ -252,7 +252,6 @@ compare_results ()
local ref_results_id="$1"
local new_results_id="$2"
local cmp_options="$3"
- local annotate_results="$4"
local results_ref results_new
results_ref=$(cat $ref_results_id)
@@ -314,9 +313,7 @@ compare_results ()
esac
if ! [ "$metric" -le "$threshold" ]; then
result=100
- if $annotate_results; then
- echo "# $bmk,$symbol regressed by $metric" >> $run_step_top_artifacts/results
- fi
+ echo "# $bmk,$symbol regressed by $metric" >> $run_step_artifacts/results.regressions
else
result=1
fi
@@ -350,7 +347,7 @@ no_regression_vs_p ()
if ! [ -f "$ref_artifacts/results_id-1" -a -f "$ref_artifacts/results_id-2" ]; then
return 0
fi
- compare_results "$ref_artifacts/results_id-1" "$ref_artifacts/results_id-2" "--num_dsos 1 --num_symbols 0" false
+ compare_results "$ref_artifacts/results_id-1" "$ref_artifacts/results_id-2" "--num_dsos 1 --num_symbols 0"
for i in $(find $run_step_artifacts/ -type f -name "results*"); do
mv $i $(dirname $i)/ref-$(basename $i)
done
@@ -359,7 +356,7 @@ no_regression_vs_p ()
if ! [ -f "$new_artifacts/results_id-1" -a -f "$new_artifacts/results_id-2" ]; then
return 1
fi
- compare_results "$new_artifacts/results_id-1" "$new_artifacts/results_id-2" "--num_dsos 1 --num_symbols 0" false
+ compare_results "$new_artifacts/results_id-1" "$new_artifacts/results_id-2" "--num_dsos 1 --num_symbols 0"
for i in $(find $run_step_artifacts/ -type f -name "results*"); do
mv $i $(dirname $i)/new-$(basename $i)
done
@@ -391,14 +388,16 @@ no_regression_vs_p ()
# a regression.
status=0
prev_bmk=""
- echo "" > $new_artifacts/regressions.txt
+ echo "" > $run_step_artifacts/regressions.txt
+ # Delete results.regressions generated by compare_results() calls above.
+ rm -f $run_step_artifacts/results.regressions
while IFS=, read -a arr; do
bmk=${arr[0]}
symbol=${arr[1]}
result=${arr[2]}
if ! [ "$result" -le "5000" ]; then
- echo "Regression in $bmk,$symbol" | tee -a $new_artifacts/regressions.txt
- echo "# $bmk,$symbol regressed" >> $new_artifacts/results
+ echo "Regression in $bmk,$symbol" | tee -a $run_step_artifacts/regressions.txt
+ echo "# $bmk,$symbol regressed" >> $run_step_artifacts/results.regressions
status=1
if [ x"$bmk" != x"$prev_bmk" ]; then
bisect_bmks+=("++benchmarks" "$bmk")
@@ -433,7 +432,7 @@ no_regression_to_base_p ()
case "${cflags[0]}" in
*"_LTO"*) compare_opts="--num_symbols 0 --entry_threshold 10" ;;
esac
- compare_results "$ref_artifacts/results_id" "$new_artifacts/results_id" "$compare_opts" true
+ compare_results "$ref_artifacts/results_id" "$new_artifacts/results_id" "$compare_opts"
local bmk symbol result status prev_bmk
local -a bisect_bmks
@@ -443,10 +442,10 @@ no_regression_to_base_p ()
# a regression.
status=0
prev_bmk=""
- echo "" > $new_artifacts/regressions.txt
+ echo "" > $run_step_artifacts/regressions.txt
while IFS=, read -r bmk symbol result; do
if ! [ "$result" -le "50" ]; then
- echo "Regression in $bmk,$symbol" | tee -a $new_artifacts/regressions.txt
+ echo "Regression in $bmk,$symbol" | tee -a $run_step_artifacts/regressions.txt
status=1
if [ x"$bmk" != x"$prev_bmk" ]; then
bisect_bmks+=("++benchmarks" "$bmk")
diff --git a/tcwg_gnu-build.sh b/tcwg_gnu-build.sh
index bb42040a..a81b2076 100755
--- a/tcwg_gnu-build.sh
+++ b/tcwg_gnu-build.sh
@@ -105,7 +105,7 @@ no_regression_p ()
# We use GCC's comparison script, so make sure we have a copy (may
# not be the case when we are just checking binutils)
clone_or_update_repo gcc master git://gcc.gnu.org/git/gcc.git
- gcc/contrib/compare_tests $sumfiles_base $sumfiles_new | tee $new_artifacts/regressions.txt &
+ gcc/contrib/compare_tests $sumfiles_base $sumfiles_new | tee $run_step_artifacts/regressions.txt &
res=0 && wait $! || res=$?
if [ $res -ne 0 ]; then
diff --git a/tcwg_kernel-build.sh b/tcwg_kernel-build.sh
index 5469c7ea..bb68a52a 100755
--- a/tcwg_kernel-build.sh
+++ b/tcwg_kernel-build.sh
@@ -229,7 +229,7 @@ no_regression_p ()
# - "^ERROR:" detects linker errors
# - ": undefined reference" detects missing symbols during linking
# - "] Error " detects GNU make errors
- cat > $new_artifacts/regressions.txt <<EOF
+ cat > $run_step_artifacts/regressions.txt <<EOF
First few build errors in logs:
$(cat $new_artifacts/console.log | sed -e 's/"[^"]*"//g' | grep " error:\|^ERROR:\|: undefined reference\|\] Error " | head)
EOF