-# Needs to be rebuilt, as files have moved. Due to unaccepts, we need to
-# update this before wanna-build is updated.
-echo "Regenerating wanna-build/buildd information"
-psql projectb -A -t -q -c "SELECT filename FROM queue_build WHERE suite = 5 AND queue = 0 AND in_queue = true AND filename ~ 'd(sc|eb)$'" > $dbdir/dists/unstable_accepted.list
-symlinks -d /srv/incoming.debian.org/buildd > /dev/null
-apt-ftparchive generate apt.conf.buildd
-
-ts
-
-echo "Running various scripts from $scriptsdir"
-cd $scriptsdir
-./mkmaintainers
-./copyoverrides
-./mklslar
-./mkfilesindices
-./mkchecksums
-
-ts
-
-echo "Trigger daily wanna-build run"
-ssh -o BatchMode=yes -o SetupTimeOut=90 -o ConnectTimeout=90 buildd@buildd /org/wanna-build/trigger.daily || echo "W-B trigger.daily failed" | mail -s "W-B Daily trigger failed" ftpmaster@ftp-master.debian.org
-
-rm -f $NOTICE
-rm -f $LOCKCU
-echo Archive maintenance finished at $(date +%H:%M:%S)
-
-################################################################################
-
-echo "Creating post-daily-cron-job backup of projectb database..."
-POSTDUMP=$base/backup/dump_$(date +%Y.%m.%d-%H:%M:%S)
-pg_dump projectb > $POSTDUMP
-(cd $base/backup; ln -sf $POSTDUMP current)
-
-################################################################################
-
-ts
-
-echo "Expiring old database dumps..."
-(cd $base/backup; $scriptsdir/expire_dumps -d . -p -f "dump_*")
-
-################################################################################
-
-ts
-
-# Send a report on NEW/BYHAND packages
-echo "Nagging ftpteam about NEW/BYHAND packages"
-dak queue-report | mail -e -s "NEW and BYHAND on $(date +%D)" ftpmaster@ftp-master.debian.org
-# and one on crufty packages
-echo "Sending information about crufty packages"
-dak cruft-report > $webdir/cruft-report-daily.txt
-dak cruft-report -s experimental >> $webdir/cruft-report-daily.txt
-cat $webdir/cruft-report-daily.txt | mail -e -s "Debian archive cruft report for $(date +%D)" ftpmaster@ftp-master.debian.org
-
-ts
-
-echo "Updating DM html page"
-$scriptsdir/dm-monitor >$webdir/dm-uploaders.html
-
-################################################################################
-
-# Push katie@merkel so it syncs the projectb there. Returns immediately, the sync runs detached
-echo "Trigger merkels projectb sync"
-ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_merkel_projectb katie@merkel.debian.org sleep 1 || true
-
-################################################################################
-
-ts
-
-ulimit -m 90000 -d 90000 -s 10000 -v 200000
-
-echo "Using run-parts to run scripts in $base/scripts/distmnt"
-run-parts --report $base/scripts/distmnt
-
-echo "Daily cron scripts successful."
-
-ts
-
-# Stats pr0n
-echo "Updating stats data"
-cd $configdir
-$scriptsdir/update-ftpstats $base/log/* > $base/misc/ftpstats.data
-R --slave --vanilla < $base/misc/ftpstats.R
+# This loop simply wants to be fed by a list of values (see below)
+# which consists of 5 values currently.
+# The first four are the array values for the stage function, the
+# fifths tells us if we should background the stage call.
+#
+# - FUNC - the function name to call
+# - ARGS - Possible arguments to hand to the function. Can be the empty string
+# - TIME - The timestamp name. Can be the empty string
+# - ERR - if this is the string false, then the call will be surrounded by
+# set +e ... set -e calls, so errors in the function do not exit
+# dinstall. Can be the empty string, meaning true.
+# - BG - Background the function stage?
+#
+# ATTENTION: Spaces in arguments or timestamp names need to be escaped by \
+#
+# ATTENTION: There are two special values for the first column (FUNC).
+# STATE - do not call stage function, call the state
+# function to update the public statefile "where is dinstall"
+# NOSTAGE - do not call stage function, call the command directly.
+while read FUNC ARGS TIME ERR BACKGROUND; do
+ debug "FUNC: $FUNC ARGS: $ARGS TIME: $TIME ERR: $ERR BG: $BACKGROUND"
+
+ # Empty values in the value list are the string "none" (or the
+ # while read loop won't work). Here we ensure that variables that
+ # can be empty, are empty if the string none is set for them.
+ for var in ARGS TIME; do
+ if [[ ${!var} == none ]]; then
+ typeset ${var}=''
+ fi
+ done
+
+ case ${FUNC} in
+ STATE)
+ state ${ARGS}
+ ;;
+ NOSTAGE)
+ ${ARGS}
+ ;;
+ *)
+ GO=(
+ FUNC=${FUNC}
+ TIME=${TIME}
+ ARGS=${ARGS}
+ ERR=${ERR}
+ )
+ if [[ ${BACKGROUND} == true ]]; then
+ stage $GO &
+ else
+ stage $GO
+ fi
+ ;;
+ esac
+done < <(cat - <<EOF
+savetimestamp none none false false
+qa1 init none false true
+pg_timestamp pg_dump1 predinstall false false
+updates External\ Updates none false false
+i18n1 i18n\ 1 none false false
+dep11 dep11\ 1 none false false
+NOSTAGE lockaccepted none false false
+punew p-u-new stable-new false false
+opunew o-p-u-new oldstable-new false false
+backports_policy backports-policy none false false
+cruft cruft none false false
+STATE indices none false false
+dominate dominate none false false
+autocruft autocruft unstable\ experimental false false
+fingerprints import-keyring none false false
+overrides overrides none false false
+mpfm pkg-file-mapping none false false
+STATE packages/contents none false false
+packages apt-ftparchive none false false
+STATE dists/ none false false
+pdiff pdiff none false false
+release release\ files none false false
+dakcleanup cleanup none false false
+STATE scripts none false false
+mkmaintainers mkmaintainers none false false
+copyoverrides copyoverrides none false false
+mklslar mklslar none false false
+mkfilesindices mkfilesindices none false false
+mkchecksums mkchecksums none false false
+mirror mirror\ hardlinks none false false
+ddaccess ddaccessible\ sync none false false
+NOSTAGE remove_locks none false false
+STATE postlock none false false
+changelogs changelogs none false true
+pg_timestamp pg_dump2 postdinstall false false
+expire expire_dumps none false true
+transitionsclean transitionsclean none false true
+dm none none false true
+bts none none false true
+mirrorpush mirrorpush none false true
+mirrorpush-backports mirrorpush-backports none false true
+i18n2 i18n\ 2 none false true
+stats stats none false true
+testingsourcelist none none false true
+NOSTAGE rm\ -f\ "\${LOCK_BRITNEY}" none false false
+cleantransactions none none false false
+EOF
+ )