aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gentoo.org>2018-11-20 22:43:38 -0800
committerMatt Turner <mattst88@gentoo.org>2018-11-21 11:07:26 -0800
commitc9ad265f80178b8786974e0d1e250daa42e6a742 (patch)
treef6a8d3515941a618b134a93f0d15e8b5f54b2e2f
parenttools-uclibc: moved FEATURES=-multilib-strict to tree (diff)
downloadreleng-c9ad265f80178b8786974e0d1e250daa42e6a742.tar.gz
releng-c9ad265f80178b8786974e0d1e250daa42e6a742.tar.bz2
releng-c9ad265f80178b8786974e0d1e250daa42e6a742.zip
scripts/copy_buildsync: try to exclude rsync tempfile
In-progress uploads are named .<filename>.<rsynctemp> and were mistakenly recognized by copy_buildsync.sh as targets to sweep to the mirrors. When it did, it deleted the file causing the in-progress upload to fail. Since the script is run by cron every 15 minutes, this would lead to a large portion of the generated installation media to fail to upload, and worse there is no pattern to it -- it just happens whenever an upload spans the 15 minute boundary. The fix is to ignore hidden files and to tell rsync (via the filter rules) to exclude them from its sweep to the mirrors. Closes: https://bugs.gentoo.org/670458 Signed-off-by: Matt Turner <mattst88@gentoo.org> Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rwxr-xr-xscripts/copy_buildsync.sh6
1 files changed, 3 insertions, 3 deletions
diff --git a/scripts/copy_buildsync.sh b/scripts/copy_buildsync.sh
index d67cf6ee..6c6085ff 100755
--- a/scripts/copy_buildsync.sh
+++ b/scripts/copy_buildsync.sh
@@ -70,14 +70,14 @@ copy_arch_to_outgoing() {
fi
# Copying
- for i in $(find ${indir} -type f | egrep -- '-20[0123][0-9]{5}(([0-9]{6})|(T[0-9]{6}Z))?' | sed -e 's:^.*-\(20[^.]\+\).*$:\1:' | sort -ur); do
+ for i in $(find ${indir} -not -path '*/\.*' -type f | egrep -- '-20[0123][0-9]{5}(([0-9]{6})|(T[0-9]{6}Z))?' | sed -e 's:^.*-\(20[^.]\+\).*$:\1:' | sort -ur); do
#echo "Doing $i"
t="${outdir}/${i}"
mkdir -p ${t} 2>/dev/null
- rsync "${RSYNC_OPTS[@]}" --temp-dir=${tmpdir} --partial-dir=${tmpdir} ${indir}/ --filter "S *${i}*" --filter 'S **/' --filter 'H *' ${t}
+ rsync "${RSYNC_OPTS[@]}" --temp-dir=${tmpdir} --partial-dir=${tmpdir} ${indir}/ --filter '- **/.*' --filter "S *${i}*" --filter 'S **/' --filter 'H *' ${t}
rc=$?
if [ $rc -eq 0 ]; then
- find ${indir} -type f -name "*${i}*" -print0 | xargs -0 --no-run-if-empty $DEBUGP rm $VERBOSEP -f
+ find ${indir} -not -path '*/\.*' -type f -name "*${i}*" -print0 | xargs -0 --no-run-if-empty $DEBUGP rm $VERBOSEP -f
else
echo "Not deleting ${indir}/*${i}*, rsync failed!" 1>&2
fail=1