[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: