tb/tb | 6 +-- tb/tb_internals.sh | 90 ++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 71 insertions(+), 25 deletions(-)
New commits: commit 128dd21f840f4250ff67c94bd6b55e45ac6651d3 Author: Norbert Thiebaud <nthieb...@gmail.com> Date: Fri Jan 25 16:42:38 2013 -0600 tb: try to intercept Ctrl-C in subshell to avoid reporting 'fail' diff --git a/tb/tb_internals.sh b/tb/tb_internals.sh index 658a4f6..3cdb5c7 100644 --- a/tb/tb_internals.sh +++ b/tb/tb_internals.sh @@ -504,6 +504,7 @@ determine_make() die() { echo "[$(print_date) ${P}:${B}] Error:" "$@" | tee -a ${tb_LOGFILE?} + R=-1 exit -1; } @@ -584,6 +585,24 @@ get_committers() get_commits_since_last_good people | sort | uniq | tr '\n' ',' } +interupted_build() +{ + mgs_log "Interrupted by Signal" + if [ "$tb_BUILD_TYPE" = "gerrit" ] ; then + if [ -n "${GERRIT_TASK_TICKET}" ] ;then + # repport a cancellation if we already acquired the ticket + R=2 + report_gerrit + fi + elif [ "$tb_BUILD_TYPE" = "tb" ] ; then + if [ -n "${tb_LAST_CHECKOUT_DATE?}" ] ; then + # repport a cancellation if we already notified a start + report_to_tinderbox "${tb_LAST_CHECKOUT_DATE?}" "fold" "no" + fi + fi + exit 4 +} + load_config() { tb_CONFIG_DIR="$HOME/.tb" @@ -921,7 +940,7 @@ EOF report_gerrit() { local log_type="$1" -local status="failed" +local status= local gzlog= [ $V ] && echo "report to gerrit retval=${R} log_type=${log_type}" @@ -956,14 +975,14 @@ local gzlog= if [ "${R?}" = "0" ] ; then log_msgs "Report Success for gerrit ref ${GERRIT_TASK_TICKET?}" status="success" - elif [ "${R?}" = "2" ] ; then + elif [ "${R?}" = "1" ] ; then + log_msgs "Report Failure for gerrit ref ${GERRIT_TASK_TICKET?}" + status="failed" + else log_msgs "Report Cancellation for gerrit ref ${GERRIT_TASK_TICKET?}" status="canceled" - else - log_msgs "Report Failure for gerrit ref ${GERRIT_TASK_TICKET?}" fi cat "${gzlog}" | ssh ${TB_GERRIT_HOST?} buildbot put --id ${TB_ID?} --ticket "${GERRIT_TASK_TICKET?}" --status $status --log - - } @@ -1114,6 +1133,8 @@ run_one_gerrit() { R=0 ( + trap 'interupted_build' SIGINT SIGQUIT + log_msgs "Starting tb build gerrit ref:${GERRIT_TASK_TICKET?}" # source branch-level configuration source_branch_level_config "${B?}" "gerrit" @@ -1140,9 +1161,14 @@ run_one_gerrit() report_gerrit popd > /dev/null - exit $R + exit ${R?} ) R="$?" + + # check we we intercepted a signal, if so bail + if [ "${R?}" = "4" ] ; then + exit -1 + fi } # @@ -1154,6 +1180,8 @@ run_one_tb() { R=0 ( + trap 'interupted_build' SIGINT SIGQUIT + log_msgs "Starting tb build for sha:$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-head.log")" source_branch_level_config "${B?}" "${tb_BUILD_TYPE?}" if [ -z "$TB_BUILD_DIR" ] ; then @@ -1166,12 +1194,12 @@ run_one_tb() prepare_git_repo_for_tb fi - local last_checkout_date="$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-timestamp.log")" + tb_LAST_CHECKOUT_DATE="$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-timestamp.log")" local phase_list local retry_count=3 - report_to_tinderbox "${last_checkout_date?}" "building" "no" - + report_to_tinderbox "${tb_LAST_CHECKOUT_DATE?}" "building" "no" + tb_TB_BUILD_REPORTED=1 if [ "$TB_INCREMENTAL" = "1" ] ; then phase_list="autogen make test push" @@ -1186,13 +1214,10 @@ run_one_tb() do_build ${phase_list?} if [ "$R" = "0" ] ; then - report_to_tinderbox "$last_checkout_date" "success" "yes" + report_to_tinderbox "${tb_LAST_CHECKOUT_DATE?}" "success" "yes" phase_list= log_msgs "Successful tb build for sha:$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-head.log")" elif [ "$R" = "2" ] ; then - if [ "${tb_ONE_SHOT?}" != "1" ] ; then - report_to_tinderbox "${last_checkout_date?}" "fold" "no" - fi log_msgs "False negative build, skip reporting" # false negative does not need a full clean build, let's just redo make and after retry_count=$((retry_count - 1)) @@ -1200,6 +1225,9 @@ run_one_tb() log_msgs "False Negative Failed tb build for sha:$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-head.log")" phase_list="" R=2 + if [ "${tb_ONE_SHOT?}" != "1" ] ; then + report_to_tinderbox "${tb_LAST_CHECKOUT_DATE?}" "fold" "no" + fi else log_msgs "False Negative Retry tb build for sha:$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-head.log")" phase_list="make test push" @@ -1213,18 +1241,23 @@ run_one_tb() else cat ${tb_REPORT_LOG?} >> report_error.log fi - report_error committer "$last_checkout_date" report_error.log - report_to_tinderbox "${last_checkout_date?}" "build_failed" "yes" + report_error committer "${tb_LAST_CHECKOUT_DATE?}" report_error.log + report_to_tinderbox "${tb_LAST_CHECKOUT_DATE?}" "build_failed" "yes" phase_list="" log_msgs "Failed tb build for sha:$(cat "${TB_METADATA_DIR?}/${P}_${B?}_current-git-head.log")" fi done + tb_LAST_CHECKOUT_DATE= rotate_logs popd > /dev/null exit $R ) R="$?" + # check we we intercepted a signal, if so bail + if [ "${R?}" = "4" ] ; then + exit -1 + fi } # commit 6f59268812a63da308a33d0ef704413c99c82d5f Author: Norbert Thiebaud <nthieb...@gmail.com> Date: Fri Jan 25 16:42:05 2013 -0600 tb: fix tb_Mode/Priority handling diff --git a/tb/tb b/tb/tb index 90708c8..f03183a 100755 --- a/tb/tb +++ b/tb/tb @@ -323,14 +323,14 @@ while [ "${1}" != "" ]; do case "$arg" in fair) tb_MODE="dual" - TB_DUAL_PRIORITY="fair" + tb_DUAL_PRIORITY="fair" ;; gerrit) tb_MODE="gerrit" ;; gerrit-tb) tb_MODE="dual" - TB_DUAL_PRIORITY="gerrit" + tb_DUAL_PRIORITY="gerrit" ;; prime) tb_MODE="tb" @@ -341,7 +341,7 @@ while [ "${1}" != "" ]; do ;; tb-gerrit) tb_MODE="dual" - TB_DUAL_PRIORITY="tb" + tb_DUAL_PRIORITY="tb" ;; *) die "Unsupported mode of operation : $arg" diff --git a/tb/tb_internals.sh b/tb/tb_internals.sh index f121de5..658a4f6 100644 --- a/tb/tb_internals.sh +++ b/tb/tb_internals.sh @@ -659,7 +659,7 @@ prepare_git_repo_for_gerrit() [ $V ] && echo "fetching gerrit path from ssh://${TB_GERRIT_HOST?}/core ${GERRIT_TASK_REF}" ( - git clean -fd && git fetch -q ssh://${GERRIT_HOST?}/core ${GERRIT_TASK_REF} + git clean -fd && git fetch -q ssh://${TB_GERRIT_HOST?}/core ${GERRIT_TASK_REF} if [ "$?" = "0" ] ; then git checkout -q FETCH_HEAD git submodule -q update @@ -667,12 +667,13 @@ prepare_git_repo_for_gerrit() exit -1 fi ) 2>&1 > ${TB_BUILD_DIR}/error_log.log - popd > /dev/null if [ "$?" != "0" ] ; then + popd > /dev/null report_error owner "$(print_date)" error_log.log die "Cannot reposition repo ${TB_GIT_DIR} to the proper branch" fi + popd > /dev/null } @@ -713,6 +714,7 @@ prepare_git_repo_for_tb() ) 2>&1 > ${TB_BUILD_DIR}/error_log.log if [ "$?" != "0" ] ; then + popd > /dev/null report_error owner "$(print_date)" error_log.log die "Cannot reposition repo ${TB_GIT_DIR} to the proper branch" fi @@ -1309,7 +1311,7 @@ select_next_task() # if we use a 'fair' priority # switch the order in which we try to get stuff - if [ "${tb_PRIORITY?}" = "fair" ] ; then + if [ "${tb_MODE?}" = "fair" ] ; then if [ "${tb_BUILD_TYPE?}" = "tb" ] ; then tb_NEXT_PRIORITY="gerrit" elif [ "${tb_BUILD_TYPE?}" = "gerrit" ] ; then @@ -1452,6 +1454,10 @@ setup_profile_defaults() tb_MODE="${TB_DEFAULT_MODE:-tb}" fi + if [ -z "${tb_DUAL_PRIORITY}" ] ; then + tb_DUAL_PRIORITY="${TB_DUAL_PRIORITY:-fair}" + fi + if [ -z "${tb_BRANCHES}" ] ; then tb_BRANCHES="${TB_BRANCHES}" if [ -z "${tb_BRANCHES}" ] ; then @@ -1490,9 +1496,14 @@ local rc if [ -z "$tb_GERRIT_PLATFORM" ] ; then die "tb_GERRIT_PLATFORM is required for mode involving gerrit" fi - if [ -z "TB_DUAL_PRIORITY" ] ; then - TB_DUAL_PRIORITY="fair" - fi + case "${tb_DUAL_PRIORITY?}" in + fair|gerrit|tb) + ;; + *) + log_msgs "TB_DUAL_PRIORITY:${tb_DUAL_PRIORITY?} is not a valid value, defaulting to 'fair'" + tb_DUAL_PRIORITY="fair" + ;; + esac ;; gerrit) if [ -z "$tb_GERRIT_PLATFORM" ] ; then @@ -1514,9 +1525,11 @@ local rc fi ;; *) + die "Invalid mode $tb_MODE" ;; esac + if [ -z "${tb_SEND_MAIL}" ] ; then tb_SEND_MAIL="${TB_SEND_MAIL}" fi @@ -1536,7 +1549,7 @@ local rc none) ;; *) - die "Invalid -m argument:${tb_SEND_MAIL}" + die "Invalid -m/TB_SEND_MAIL argument:${tb_SEND_MAIL}" ;; esac _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits