X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=config%2Fdebian%2Fdinstall;h=4544d0a0daeb256e3ba38a5f2867560cf9c731d3;hb=9b518daca5ef156c01c203843f3a4fbd2a630434;hp=28c7ad1d0a3f7375a0e1aa464f3bd4adccf886e3;hpb=f0e560f80a96a2bd79f2a107121e2b88be96926b;p=dak.git diff --git a/config/debian/dinstall b/config/debian/dinstall index 28c7ad1d..4544d0a0 100755 --- a/config/debian/dinstall +++ b/config/debian/dinstall @@ -63,8 +63,8 @@ function ts() { # Cleanup actions function cleanup() { - savelog -c ${LOGROTATE} -j "$LOGFILE" rm -f ${LOCK_DAILY} + rm -f ${LOCK_ACCEPTED} } # Setup the notice file to tell bad mirrors they used the wrong time @@ -167,10 +167,9 @@ function i18n1() { # Process the accepted queue function accepted() { log "Processing queue/accepted" - cd "$accepted" - rm -f REPORT - dak process-accepted -pa *.changes | tee REPORT | \ - mail -s "Install for $(date +"%D - %R")" ftpmaster@ftp-master.debian.org + rm -f "$accepted/REPORT" + dak process-accepted -pa -d "$accepted" > "$accepted/REPORT" + cat REPORT | mail -s "Install for $(date +"%D - %R")" ftpmaster@ftp-master.debian.org chgrp debadmin REPORT chmod 664 REPORT } @@ -385,6 +384,11 @@ function stage() { # it has to cd first! cd ${configdir} + if [ -f "${LOCK_STOP}" ]; then + log "${LOCK_STOP} exists, exiting immediately" + exit 42 + fi + if [ "${ERR}" = "false" ]; then set +e fi @@ -398,6 +402,11 @@ function stage() { touch "${stagedir}/${FUNC}" + if [ -f "${LOCK_STOP}" ]; then + log "${LOCK_STOP} exists, exiting immediately" + exit 42 + fi + if [ -n "${TIME}" ]; then ts "${TIME}" fi @@ -446,6 +455,10 @@ LOCK_ACCEPTED="$lockdir/unchecked.lock" # from our point of view LOCK_BRITNEY="$lockdir/britney.lock" +# If this file exists we exit immediately after the currently running +# function is done +LOCK_STOP="$lockdir/archive.stop" + lockfile -l 3600 "${LOCK_DAILY}" trap cleanup EXIT ERR TERM HUP INT QUIT @@ -525,7 +538,7 @@ GO=( ) stage $GO -rm -f $LOCKAC +rm -f "$LOCK_ACCEPTED" GO=( FUNC="msfl" @@ -734,6 +747,8 @@ stage $GO cat "$LOGFILE" | mail -s "Log for dinstall run of ${NOW}" cron@ftp-master.debian.org +savelog -c ${LOGROTATE} -j "$LOGFILE" + # Now, at the very (successful) end of dinstall, make sure we remove # our stage files, so the next dinstall run will do it all again. rm -f "${stagedir}/*"