commit:     8eb8dd235dfeb80df3740369343177f3cb64dfa8
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 12 00:15:05 2021 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Nov 12 00:15:05 2021 +0000
URL:        https://gitweb.gentoo.org/proj/releng.git/commit/?id=8eb8dd23

scripts/copy_buildsync: try to find dead links and textfiles

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 scripts/copy_buildsync.sh | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/scripts/copy_buildsync.sh b/scripts/copy_buildsync.sh
index 7b4dfbdc..e224f75e 100755
--- a/scripts/copy_buildsync.sh
+++ b/scripts/copy_buildsync.sh
@@ -164,10 +164,12 @@ process_arch() {
        # New variant preserve code
        find_variants=( '(' -iname '*.iso' -o -name 'netboot-*' -o 
"${EXTENSIONS[@]}" ')' )
        variants=$(find 20* "${find_variants[@]}" -printf '%f\n' 2>/dev/null | 
sed -e 's,-20[012][0-9]\{5\}.*,,g' -r | sort -u)
+       # This file specifies which variants are still in use.
        keepfile="${tmpdir}/.keep.${ARCH}.txt"
        keepfile_tmp=$(mktemp -p "${tmpdir}" -t ".keep.${ARCH}.txt.XXXXXX")
        echo -n '' >"${keepfile_tmp}"
        chmod 644 "${keepfile_tmp}"
+
        for v in $variants ; do
                # FIXME: trace the $a variable in this!
                variant_path=$(find 20* -iname "${v}-20*" "${find_variants[@]}" 
-print 2>/dev/null | sed -e "s,.*/$a/autobuilds/,,g" | sort -k1,1 -t/ | tail 
-n1 )
@@ -188,6 +190,8 @@ process_arch() {
                echo "${variant_path}" | sed -e 's,/.*,,g' -e 's,^,/,g' -e 
's,$,$,g' >>"${keepfile_tmp}"
                mv -f "${f_tmp}" "${f}"
        done
+
+       # Refresh keepfile
        mv -f "${keepfile_tmp}" "${keepfile}"
 
        # ================================================================
@@ -206,6 +210,37 @@ process_arch() {
                        $DEBUGP rm $VERBOSEP -rf "$(pwd)"/"${i}"
                done
 
+               # Preserve the keepfile for review
+               cp -lf "${keepfile}" "${outdir}"
+
+               # Find the dead links for cleanup
+               _dead="${tmpdir}"/dead-link
+               find -L $(pwd) -type l >"${_dead}"
+               if test -s "${_dead}"; then
+                       echo "copy_buildsync: dead links to verify:" 1>&2
+                       cat "${_dead}" 1>&2
+               fi
+
+               # Find the dead latest txt files
+               _dead="${tmpdir}"/dead-latest
+               for f in $(find "${outdir}" -name 'latest*txt' ) ; do
+                       d=$(dirname $f)
+                       find $d \
+                               | fgrep -f <(awk '/^#/{next} {print $1}' $f) \
+                               | sed  "s,${d}/,,g" \
+                               | sort \
+                               | comm -13 \
+                                               - \
+                                               <(sort $f |grep -v -e '^#' |awk 
'{print $1}') \
+                               | fgrep -l -f - $f \
+                               | xargs -n1 --no-ruN-if-empty readlink -f
+               done >"${_dead}"
+               if test -s "${_dead}"; then
+                               echo "copy_buildsync: dead latest*txt files to 
verify:" 1>&2
+                               cat "${_dead}" 1>&2
+               fi
+
+               # Cleanup tmpdir
                $DEBUGP rm $VERBOSEP -rf "${tmpdir}"
 
        else

Reply via email to