[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] factor out writing project/trace/*



Note that this changes behavior slightly in case of failure as all
trace files are only written at the end.
---
 config/debian/common             | 52 ++++++++++++++++++++++++++++++++++++++++
 config/debian/dinstall.functions | 41 +++++--------------------------
 2 files changed, 58 insertions(+), 35 deletions(-)

diff --git a/config/debian/common b/config/debian/common
index f2e6989..92715e6 100755
--- a/config/debian/common
+++ b/config/debian/common
@@ -273,7 +273,59 @@ function ddaccess() {
     ${scriptsdir}/sync-dd dd-sync dd-sync1 dd-sync2 sync
 }
 
+# Write ${path}/project/trace for given path
+#   Note: use `write_project_trace` which sets version and date variables
+function write_project_trace1() {
+    local path="${1}"
+
+    local tracedir="${path}/project/trace}"
+    local TRACEFILE="${tracedir}/${functionname}"
+    local TRACEFILE_MASTER="${tracedir}/master}"
+    local HIERFILE="${tracedir}/_hierarchy"
+
+    mkdir -p -- "${tracedir}"
+
+    local DATE_SERIAL=$(date +"%Y%m%d01")
+    local FILESOAPLUS1=$(awk '/serial/ { print $3+1 }' ${TRACEFILE} || echo ${DATE_SERIAL} )
+    local SERIAL
+    if [[ ${DATE_SERIAL} -gt ${FILESOAPLUS1}  ]]; then
+        SERIAL="${DATE_SERIAL}"
+    else
+        SERIAL="${FILESOAPLUS1}"
+    fi
 
+    cat <<EOF > ${TRACEFILE}
+${DATE}
+Creator: dak ${CREATOR_VERSION}
+Running on host: ${HOST}
+Archive serial: ${SERIAL}
+Date: ${RFC822DATE}
+Architectures: ${archs%* } source
+EOF
+
+    cat <<EOF > ${HIERFILE}
+${functionname} ${functionname} ${HOST} ${HOST}
+EOF
+    cp ${HIERFILE} ${HIERFILE}.mirror
+
+    # Now make it accessible via one name, no matter on which host we run
+    ln -sf $(basename ${TRACEFILE}) ${TRACEFILE_MASTER}
+}
+
+# Write ${path}/project/trace for given paths
+function write_project_trace() {
+    cd ${configdir}
+
+    local CREATOR_VERSION="g$(git rev-parse --short HEAD)"
+    local DATE=$(LC_ALL=POSIX LANG=POSIX date -u)
+    local RFC822DATE=$(LC_ALL=POSIX LANG=POSIX date -u -R)
+    local HOST=$(hostname -f)
+
+    local path
+    for path in "${@}"; do
+        write_project_trace1 "${path}"
+    done
+}
 
 ########################################################################
 ########################################################################
diff --git a/config/debian/dinstall.functions b/config/debian/dinstall.functions
index fbeaf72..79695c7 100755
--- a/config/debian/dinstall.functions
+++ b/config/debian/dinstall.functions
@@ -456,21 +456,14 @@ function mkchecksums() {
 }
 
 function mirror() {
-    local archiveroot targetpath TRACEFILE
-
-    CREATOR_VERSION="g$(git rev-parse --short HEAD)"
-    DATE=$(LC_ALL=POSIX LANG=POSIX date -u)
-    RFC822DATE=$(LC_ALL=POSIX LANG=POSIX date -u -R)
-    HOST=$(hostname -f)
+    local archiveroot targetpath
+    local -a tracepaths
 
     for archive in "${public_archives[@]}"; do
         archiveroot="$(get_archiveroot "${archive}")"
         targetpath="${mirrordir}/${archive}"
-        TRACEFILE="${targetpath}/project/trace/${functionname}"
-        TRACEFILE_MASTER="${targetpath}/project/trace/master"
-        HIERFILE="${targetpath}/project/trace/_hierarchy"
 
-        mkdir -p "${targetpath}/project/trace/"
+        log "Regenerating \"public\" mirror/${archive} hardlink fun"
         rsync -aH --link-dest ${archiveroot} \
             --delete --delete-after --delete-excluded \
             --exclude "Packages.*.new" --exclude "Sources.*.new" \
@@ -481,32 +474,10 @@ function mirror() {
             --ignore-errors \
             ${archiveroot}/. ${targetpath}/.
 
-        log "Regenerating \"public\" mirror/${archive} hardlink fun"
-        DATE_SERIAL=$(date +"%Y%m%d01")
-        FILESOAPLUS1=$(awk '/serial/ { print $3+1 }' ${TRACEFILE} || echo ${DATE_SERIAL} )
-        if [[ ${DATE_SERIAL} -gt ${FILESOAPLUS1}  ]]; then
-            SERIAL="${DATE_SERIAL}"
-        else
-            SERIAL="${FILESOAPLUS1}"
-        fi
-
-        cat <<EOF > ${TRACEFILE}
-${DATE}
-Creator: dak ${CREATOR_VERSION}
-Running on host: ${HOST}
-Archive serial: ${SERIAL}
-Date: ${RFC822DATE}
-Architectures: ${archs%* } source
-EOF
-
-        cat <<EOF > ${HIERFILE}
-${functionname} ${functionname} ${HOST} ${HOST}
-EOF
-        cp ${HIERFILE} ${HIERFILE}.mirror
-
-        # Now make it accessible via one name, no matter on which host we run
-        ln -sf $(basename ${TRACEFILE}) ${TRACEFILE_MASTER}
+        tracepaths+=("${targetpath}")
     done
+
+    write_project_trace "${tracepaths[@]}"
 }
 
 function expire() {
-- 
2.1.4



Reply to: