]> git.decadent.org.uk Git - dak.git/blobdiff - config/debian/cron.dinstall
remove unused code
[dak.git] / config / debian / cron.dinstall
index 09e9c9b10a2844e76f8fa5fffe7ca2d3df26573b..001ab117f2f0cc89ffe0dfc70b78de0bacf4eda6 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 # No way I try to deal with a crippled sh just for POSIX foo.
 
 #!/bin/bash
 # No way I try to deal with a crippled sh just for POSIX foo.
 
-# Copyright (C) 2009-2012 Joerg Jaspert <joerg@debian.org>
+# Copyright (C) 2009-2015 Joerg Jaspert <joerg@debian.org>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
@@ -71,17 +71,17 @@ function stage() {
     ARGS='GO[@]'
     local "${!ARGS}"
 
     ARGS='GO[@]'
     local "${!ARGS}"
 
-    error=${ERR:-"true"}
+    local error=${ERR:-"true"}
 
     ARGS=${ARGS:-""}
 
     log "########## DINSTALL BEGIN: ${FUNC} ${ARGS} ##########"
 
     ARGS=${ARGS:-""}
 
     log "########## DINSTALL BEGIN: ${FUNC} ${ARGS} ##########"
-    STAGEFILE="${stagedir}/${FUNC}_${ARGS}"
+    local STAGEFILE="${stagedir}/${FUNC}_${ARGS}"
     STAGEFILE=${STAGEFILE// /_}
     if [ -f "${STAGEFILE}" ]; then
     STAGEFILE=${STAGEFILE// /_}
     if [ -f "${STAGEFILE}" ]; then
-        stamptime=$(/usr/bin/stat -c %Z "${STAGEFILE}")
-        unixtime=$(date +%s)
-        difference=$(( $unixtime - $stamptime ))
+        local stamptime=$(/usr/bin/stat -c %Z "${STAGEFILE}")
+        local unixtime=$(date +%s)
+        local difference=$(( $unixtime - $stamptime ))
         if [ ${difference} -ge 14400 ]; then
             log_error "Did already run ${FUNC}, stagefile exists, but that was ${difference} seconds ago. Please check."
         else
         if [ ${difference} -ge 14400 ]; then
             log_error "Did already run ${FUNC}, stagefile exists, but that was ${difference} seconds ago. Please check."
         else
@@ -92,13 +92,14 @@ function stage() {
 
     debug "Now calling function ${FUNC}. Arguments: ${ARGS}. Timestamp: ${TIME}"
 
 
     debug "Now calling function ${FUNC}. Arguments: ${ARGS}. Timestamp: ${TIME}"
 
-    # Make sure we are always at the same place. If a function wants to be elsewhere,
-    # it has to cd first!
+    # Make sure we are always at the same place. If a function wants
+    # to be elsewhere, it has to cd first!
     cd ${configdir}
 
     cd ${configdir}
 
-    # Now redirect the output into $STAGEFILE.log. In case it errors out somewhere our
-    # errorhandler trap can then mail the contents of $STAGEFILE.log only, instead of a whole
-    # dinstall logfile. Short error mails ftw!
+    # Now redirect the output into $STAGEFILE.log. In case it errors
+    # out somewhere our errorhandler trap can then mail the contents
+    # of $STAGEFILE.log only, instead of a whole dinstall logfile.
+    # Short error mails ftw!
     exec >> "${STAGEFILE}.log" 2>&1
 
     if [ -f "${LOCK_STOP}" ]; then
     exec >> "${STAGEFILE}.log" 2>&1
 
     if [ -f "${LOCK_STOP}" ]; then
@@ -106,18 +107,21 @@ function stage() {
         exit 42
     fi
 
         exit 42
     fi
 
+    # Do we care about trouble in the function we call?
     if [ "${error}" = "false" ]; then
         set +e
     fi
     ${FUNC} ${ARGS}
 
     if [ "${error}" = "false" ]; then
         set +e
     fi
     ${FUNC} ${ARGS}
 
-    # No matter what happened in the function, we make sure we have set -e default state back
+    # No matter what happened in the function, we make sure we have
+    # set -e default state back
     set -e
 
     # Make sure we are always at the same place.
     cd ${configdir}
 
     set -e
 
     # Make sure we are always at the same place.
     cd ${configdir}
 
-    # We always use the same umask. If a function wants to do different, fine, but we reset.
+    # We always use the same umask. If a function wants to do
+    # different, fine, but we reset.
     umask 022
 
     touch "${STAGEFILE}"
     umask 022
 
     touch "${STAGEFILE}"
@@ -129,8 +133,8 @@ function stage() {
     # And the output goes back to the normal logfile
     exec >> "$LOGFILE" 2>&1
 
     # And the output goes back to the normal logfile
     exec >> "$LOGFILE" 2>&1
 
-    # Now we should make sure that we have a usable dinstall.log, so append the $STAGEFILE.log
-    # to it.
+    # Now we should make sure that we have a usable dinstall.log, so
+    # append the $STAGEFILE.log to it.
     cat "${STAGEFILE}.log" >> "${LOGFILE}"
     rm -f "${STAGEFILE}.log"
 
     cat "${STAGEFILE}.log" >> "${LOGFILE}"
     rm -f "${STAGEFILE}.log"
 
@@ -171,9 +175,9 @@ trap remove_daily_lock EXIT TERM HUP INT QUIT
 touch "${LOCK_BRITNEY}"
 
 # This loop simply wants to be fed by a list of values (see below)
 touch "${LOCK_BRITNEY}"
 
 # This loop simply wants to be fed by a list of values (see below)
-# which consists of 5 values currently.
+# made out of 5 columns.
 # The first four are the array values for the stage function, the
 # The first four are the array values for the stage function, the
-# fifths tells us if we should background the stage call.
+# fifth 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
 #
 #  - FUNC - the function name to call
 #  - ARGS - Possible arguments to hand to the function. Can be the empty string
@@ -185,10 +189,13 @@ touch "${LOCK_BRITNEY}"
 #
 # ATTENTION: Spaces in arguments or timestamp names need to be escaped by \
 #
 #
 # 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.
+# NOTE 1: 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.
+#
+# Note 2: If you want to hand an empty value to the stage function,
+#         use the word "none" in the list below.
 while read FUNC ARGS TIME ERR BACKGROUND; do
     debug "FUNC: $FUNC ARGS: $ARGS TIME: $TIME ERR: $ERR BG: $BACKGROUND"
 
 while read FUNC ARGS TIME ERR BACKGROUND; do
     debug "FUNC: $FUNC ARGS: $ARGS TIME: $TIME ERR: $ERR BG: $BACKGROUND"
 
@@ -201,6 +208,13 @@ while read FUNC ARGS TIME ERR BACKGROUND; do
         fi
     done
 
         fi
     done
 
+    # ERR/BACKGROUND are boolean, check that they are.
+    for var in ERR BACKGROUND; do
+        if [[ ${!var} != false ]] && [[ ${!var} != true ]]; then
+            error "Illegal value ${!var} for ${var} (should be true or false), line for function ${FUNC}"
+        fi
+    done
+
     case ${FUNC} in
         STATE)
             state ${ARGS}
     case ${FUNC} in
         STATE)
             state ${ARGS}
@@ -236,7 +250,7 @@ backports_policy       none                       backports-policy           fal
 cruft                  none                       cruft                      false   false
 STATE                  indices                    none                       false   false
 dominate               none                       dominate                   false   false
 cruft                  none                       cruft                      false   false
 STATE                  indices                    none                       false   false
 dominate               none                       dominate                   false   false
-autocruft              unstable\ experimental     autocruft                  false   false
+autocruft              none                       autocruft                  false   false
 fingerprints           none                       import-keyring             false   false
 overrides              none                       overrides                  false   false
 mpfm                   none                       pkg-file-mapping           false   false
 fingerprints           none                       import-keyring             false   false
 overrides              none                       overrides                  false   false
 mpfm                   none                       pkg-file-mapping           false   false
@@ -253,9 +267,9 @@ mklslar                none                       mklslar                    fal
 mkfilesindices         none                       mkfilesindices             false   false
 mkchecksums            none                       mkchecksums                false   false
 mirror                 none                       mirror\ hardlinks          false   false
 mkfilesindices         none                       mkfilesindices             false   false
 mkchecksums            none                       mkchecksums                false   false
 mirror                 none                       mirror\ hardlinks          false   false
-ddaccess               none                       ddaccessible\ sync         false   false
 NOSTAGE                remove_locks               none                       false   false
 STATE                  postlock                   none                       false   false
 NOSTAGE                remove_locks               none                       false   false
 STATE                  postlock                   none                       false   false
+ddaccess               none                       ddaccessible\ sync         true    true
 changelogs             none                       changelogs                 false   true
 pg_timestamp           postdinstall               pg_dump2                   false   false
 expire                 none                       expire_dumps               false   true
 changelogs             none                       changelogs                 false   true
 pg_timestamp           postdinstall               pg_dump2                   false   false
 expire                 none                       expire_dumps               false   true
@@ -279,15 +293,19 @@ log "Daily cron scripts successful, all done"
 
 exec > "$logdir/afterdinstall.log" 2>&1
 
 
 exec > "$logdir/afterdinstall.log" 2>&1
 
-GO=(
-    FUNC="renamelogfile"
-    TIME=""
-    ARGS=""
-    ERR="false"
-)
-stage $GO
-state "all done"
+if [ -f "${dbdir}/dinstallstart" ]; then
+    NOW=$(cat "${dbdir}/dinstallstart")
+    mv "$LOGFILE" "$logdir/dinstall_${NOW}.log"
+    logstats "$logdir/dinstall_${NOW}.log"
+    bzip2 -9 "$logdir/dinstall_${NOW}.log"
+else
+    error "Problem, I don't know when dinstall started, unable to do log statistics."
+    NOW=`date "+%Y.%m.%d-%H:%M:%S"`
+    mv "$LOGFILE" "$logdir/dinstall_${NOW}.log"
+    bzip2 -9 "$logdir/dinstall_${NOW}.log"
+fi
 
 
+state "all done"
 
 # 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.
 
 # 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.