From: Joerg Jaspert Date: Sat, 2 Jan 2016 13:34:47 +0000 (+0100) Subject: Merge remote-tracking branch 'DktrKranz/fixes' X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=09f7332ebb3ffd99a8758160c62eeb4f969d24b1;hp=d7b8a9f21f1e4bc324fe113dc0a295eeb1dda729;p=dak.git Merge remote-tracking branch 'DktrKranz/fixes' * DktrKranz/fixes: Removal dep check only considers latest sources (Closes: #792578) Allow closing bugs if more than one source version is available. Signed-off-by: Joerg Jaspert --- diff --git a/config/debian/common b/config/debian/common index bc3248c7..0754159e 100644 --- a/config/debian/common +++ b/config/debian/common @@ -4,7 +4,7 @@ # Set $PROGRAM to a string to have it added to the output. function log () { local prefix=${PROGRAM:-} - echo "$(date +"%b %d %H:%M:%S") $(hostname -s) ${prefix}[$$]: $@" + echo "$(date +"%b %d %H:%M:%S") ${HOSTNAME} ${prefix}[$$]: $@" } # log the message using log() but then also send a mail @@ -12,7 +12,7 @@ function log () { function log_error () { log "$@" if [ -z "${MAILTO}" ]; then - echo "$@" | mail -a "X-Debian: DAK" -e -s "[$PROGRAM@$(hostname -s)] ERROR [$$]" -a "From: Debian FTP Masters " ${MAILTO} + echo "$@" | mail -a "X-Debian: DAK" -e -s "[$PROGRAM@${HOSTNAME}] ERROR [$$]" -a "From: Debian FTP Masters " ${MAILTO} fi } @@ -347,7 +347,7 @@ function stage() { # Now we should make sure that we have a usable ${PROGRAM}.log, so # append the $STAGEFILE.log to it. - cat "${STAGEFILE}.log" >> "${LOGFILE}" + /usr/bin/ts "%b %d %H:%M:%S ${HOSTNAME} ${PROGRAM}[$$]: ${FUNC} " < "${STAGEFILE}.log" rm -f "${STAGEFILE}.log" log "########## ${PROGRAM} END: ${FUNC} ##########" diff --git a/config/debian/cron.reboot b/config/debian/cron.reboot index 78c0e9ba..dc802dc2 100755 --- a/config/debian/cron.reboot +++ b/config/debian/cron.reboot @@ -45,7 +45,7 @@ DEBUG=0 PROGRAM="dinstall_reboot" # where do we want mails to go? For example log entries made with error() -if [ "x$(hostname -s)x" != "xfranckx" ]; then +if [[ ${HOSTNAME} != franck ]]; then # Not our ftpmaster host MAILTO=${MAILTO:-"root"} else diff --git a/config/debian/cronscript b/config/debian/cronscript index 2418d79a..595c6b6a 100755 --- a/config/debian/cronscript +++ b/config/debian/cronscript @@ -1,7 +1,7 @@ #!/bin/bash # No way I try to deal with a crippled sh just for POSIX foo. -# Copyright (C) 2009-2015 Joerg Jaspert +# Copyright (C) 2009-2016 Joerg Jaspert # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -38,9 +38,9 @@ set -u # the important part here) set -E -# The extglob shell option is enabled using the shopt builtin, several -# extended pattern matching operators are recognized. We use it for -# the POSSIBLEARGS and the first case ${ARGS} matching +# If the extglob shell option is enabled using the shopt builtin, +# several extended pattern matching operators are recognized. We use +# it for the POSSIBLEARGS and the first case ${ARGS} matching. shopt -s extglob # And use one locale, no matter what the caller has set @@ -61,9 +61,6 @@ declare -lr ARG=${1:-"meh"} # program name is the (lower cased) first argument. PROGRAM="${ARG}" -# And the following types of cronscripts exists -declare -lr POSSIBLEARGS='+(unchecked|dinstall|hourly|daily|weekly|monthly|yearly)' - # set DEBUG if you want to see a little more logs (needs to be used more) DEBUG=${DEBUG:-0} @@ -78,14 +75,13 @@ case ${ARG} in ;; *) cat - < /dev/null; then - # log "aborting cron.unchecked because $LOCK_UNCHECKED has already been locked" - exit 0 - fi - TMPFILES="${TMPFILES} ${LOCK_UNCHECKED}" - ;; - dinstall) - ;; - hourly) - ;; - daily) - ;; - weekly) - ;; - monthly) - ;; - yearly) - ;; - *) - error "Unknown arg ${ARG}" - exit 42 - ;; - esac + # If there is a precronscript function, we run it. + prefunc=$(type -t precronscript || echo "") + if [[ -n ${prefunc} ]] && [[ ${prefunc} = function ]]; then + precronscript + fi # An easy access by name for the current log ln -sf ${LOGFILE} ${logdir}/${PROGRAM} @@ -236,32 +207,17 @@ esac # we need to wait for the background processes before the end of the cron script wait - # Common to all cron scripts log "Cron script successful, all done" # Redirect output to another file, as we want to compress our logfile # and ensure its no longer used exec > "$logdir/after${PROGRAM}.log" 2>&1 - case ${ARG} in - unchecked) - ;; - dinstall) - logstats ${LOGFILE} - state "all done" - touch "${DINSTALLEND}" - ;; - hourly) - ;; - daily) - ;; - weekly) - ;; - monthly) - ;; - yearly) - ;; - esac + # If there is a postcronscript function, we run it. + postfunc=$(type -t postcronscript || echo "") + if [[ -n ${postfunc} ]] && [[ ${postfunc} = function ]]; then + postcronscript + fi # Now, at the very (successful) end of this run, make sure we remove # our stage files, so the next dinstall run will do it all again. diff --git a/config/debian/dinstall.functions b/config/debian/dinstall.functions index acfbee4d..2ee713c9 100644 --- a/config/debian/dinstall.functions +++ b/config/debian/dinstall.functions @@ -716,3 +716,9 @@ function startup() { touch "${LOCK_BRITNEY}" TMPFILES="${TMPFILES} ${LOCK_DAILY} ${LOCK_BRITNEY}" } + +function postcronscript() { + logstats ${LOGFILE} + state "all done" + touch "${DINSTALLEND}" +} \ No newline at end of file diff --git a/config/debian/dinstall.variables b/config/debian/dinstall.variables index 09258819..2587b2a8 100644 --- a/config/debian/dinstall.variables +++ b/config/debian/dinstall.variables @@ -3,7 +3,7 @@ DEBUG=0 # where do we want mails to go? For example log entries made with error() -if [ "x$(hostname -s)x" != "xfranckx" ]; then +if [[ ${HOSTNAME} != franck ]]; then # Not our ftpmaster host MAILTO=${MAILTO:-"root"} else diff --git a/config/debian/hourly.functions b/config/debian/hourly.functions index 6c1b093c..5ba90853 100644 --- a/config/debian/hourly.functions +++ b/config/debian/hourly.functions @@ -67,7 +67,7 @@ function builddautosigning() { exec >>/dev/null 2>&1 DATE=$(date -Is) - cat "${BUILDDFUN}" | mail -a "X-Debian: DAK" -e -s "[$(hostname -s)] Buildd key changes ${DATE}" -a "From: Debian FTP Masters " buildd-keys@ftp-master.debian.org + cat "${BUILDDFUN}" | mail -a "X-Debian: DAK" -e -s "[${HOSTNAME}] Buildd key changes ${DATE}" -a "From: Debian FTP Masters " buildd-keys@ftp-master.debian.org rm -f "${BUILDDFUN}" } diff --git a/config/debian/unchecked.functions b/config/debian/unchecked.functions new file mode 100644 index 00000000..87fbda0a --- /dev/null +++ b/config/debian/unchecked.functions @@ -0,0 +1,14 @@ +# -*- mode:sh -*- + +function precronscript() { + # Do not run during dinstall + if [[ -e ${LOCK_DAILY} ]]; then + exit 0; + fi + # only run one cron.unchecked and also lock against hourly (newoverview) + if ! lockfile -r8 ${LOCK_UNCHECKED} 2> /dev/null; then + # log "aborting cron.unchecked because $LOCK_UNCHECKED has already been locked" + exit 0 + fi + TMPFILES="${TMPFILES} ${LOCK_UNCHECKED}" +} \ No newline at end of file diff --git a/config/debian/vars b/config/debian/vars index a2bc5bd8..d134d9c4 100644 --- a/config/debian/vars +++ b/config/debian/vars @@ -44,6 +44,10 @@ LOCK_DAILY="${lockdir}/daily.lock" LOCK_UNCHECKED="${lockdir}/unchecked.lock" LOCK_STOP="${lockdir}/archive.stop" +# And the following types of cronscripts exists +declare -lr POSSIBLEARGS='+(unchecked|dinstall|hourly|daily|weekly|monthly|yearly)' +declare -r HOSTNAME=$(hostname -s) + archs=$(dak admin a list | tr '\n' ' ') # Set the database variables