From a632d08fd2e87bb4951a99d208684bd6180cf41d Mon Sep 17 00:00:00 2001
From: Jeremy Thomerson <jeremy@thomersonfamily.com>
Date: Sat, 6 Nov 2010 12:25:06 +0000
Subject: [PATCH] delete remote source files that fail the md5 checksum test

Currently, if the build server downloads a file that fails the md5sum check
for some reason (perhaps interrupted download, etc), the file is never deleted
so the build can not succeed until someone manually deletes the bad file.  This
change deletes any file that is a remote source file / package that fails the
md5sum check.  The subsequent rebuild will then be forced to download the file
again.
---
 abuild.in | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/abuild.in b/abuild.in
index ff18c6bddbd7..11811bafa17d 100755
--- a/abuild.in
+++ b/abuild.in
@@ -155,7 +155,7 @@ sanitycheck() {
 }
 
 md5check() {
-	local dummy f
+	local dummy f endreturnval originalparams origin file
 	if [ -z "$source" ]; then
 		return 0
 	fi
@@ -167,7 +167,26 @@ md5check() {
 	fi
 	fetch || return 1
 	msg "Checking md5sums..."
-	cd "$srcdir" && echo "$md5sums" | md5sum -c 
+	IFS=$'\n'
+	endreturnval=0
+	originalparams=$@
+	set -- $source
+	for src in $md5sums; do
+		origin=$1; shift
+		echo "$src" | md5sum -c
+		if [ $? -ne 0 ]; then
+			is_remote $origin || continue
+			echo "Because the remote file above failed the md5sum check it will be deleted."
+			echo "Rebuilding will cause it to re-download which in some cases may fix the problem."
+			file=`echo "$src" | sed 's/.*[ \t\n]\(.*\)/\1/'`
+			echo "Deleting: $file"
+			rm $file
+			endreturnval=1
+		fi
+	done
+	unset IFS
+	set -- $originalparams
+	return $endreturnval
 }
 
 # verify upstream sources
-- 
GitLab