#!/bin/sh # should be called periodically on the build-master from the slaves to # - report any update on the build process # - show that the build is still running # - get notified by the build master if the build is not necessary anymore # shellcheck disable=SC2119,SC2120 # shellcheck source=../lib/load-configuration . "${0%/*}/../lib/load-configuration" status=$( # shellcheck disable=SC2016,SC2154 { printf 'SELECT' printf ' IF(`build_slaves`.`currently_building` IS NULL,0,1),' printf 'IF(`build_slaves`.`is_sane`,1,0)' printf ' FROM `build_slaves`' printf ' WHERE `build_slaves`.`name`=from_base64("%s");\n' \ "$(printf '%s' "${slave}" | base64 -w0)" } | \ mysql_run_query 'unimportant' | \ tr '\t' ' ' ) # mysql errors are uncritical for us if [ -z "${status}" ]; then exit fi if [ "${status% *}" != '1' ]; then # during upload and report of failure, the job might already have been # deleted from the database if [ 'uploading' != "$1" ] && \ [ 'failure' != "$1" ]; then >&2 echo 'You do not build anything currently - abort whatever you are doing.' if [ "${status#* }" = '1' ]; then # shellcheck disable=SC2016 { printf 'UPDATE `build_slaves`' printf ' SET `build_slaves`.`is_sane`=0' printf ' WHERE `build_slaves`.`name`=from_base64("%s");\n' \ "$(printf '%s' "${slave}" | base64 -w0)" } | \ mysql_run_query printf 'Your buildslave "%s" builds some outdated package.\n' \ "${slave}" | \ irc_say "${operator}" fi fi exit 2 fi log_lines=$(cat) # shellcheck disable=SC2016 { printf 'UPDATE `build_slaves`' printf ' SET' printf ' `build_slaves`.`last_action`=from_base64("%s")' \ "$( printf '%s' "$1" | \ base64 -w0 )" printf ', `build_slaves`.`logged_lines`=' if [ -n "${log_lines}" ]; then printf 'from_base64("%s")' \ "$( printf '%s' "$(( $( printf '%s' "${log_lines}" | \ cut -d' ' -f1 | \ tr '\n' '+' )0))" | \ base64 -w0 )" else printf 'NULL' fi printf ', `build_slaves`.`trials`=' if [ -n "${log_lines}" ]; then printf 'from_base64("%s")' \ "$( printf '%s\n' "${log_lines}" | \ wc -l | \ tr -d '\n' | \ base64 -w0 )" else printf 'NULL' fi printf ' WHERE `build_slaves`.`id`=from_base64("%s");\n' \ "$( # shellcheck disable=SC2154 printf '%s' "${slave_id}" | \ base64 -w0 )" } | \ mysql_run_query 'unimportant'