[pacman-dev] [PATCH 2/3] makepkg: break out checksum generation to its own function

Dave Reisner dreisner at archlinux.org
Thu Aug 7 20:46:17 EDT 2014


This also fixes a "bug" in which a PKGBUILD without any source array
would generate "md5sums=()". While not technically wrong, we can easily
do better.
---
 scripts/makepkg.sh.in | 73 +++++++++++++++++++++++++++++----------------------
 1 file changed, 41 insertions(+), 32 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index cb5ded9..3962005 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1054,6 +1054,46 @@ get_integlist() {
 	fi
 }
 
+generate_one_checksum() {
+	local integ=$1 numsrc=${#source[*]} indentsz idx
+
+	if (( numsrc == 0 )); then
+		return
+	fi
+
+	printf "%ssums=(%n" "$integ" indentsz
+
+	for (( idx = 0; idx < numsrc; i++ )); do
+		local netfile=${source[idx]}
+		local proto sum
+		proto="$(get_protocol "$netfile")"
+
+		case $proto in
+			bzr*|git*|hg*|svn*)
+				sum="SKIP"
+				;;
+			*)
+				if [[ ! $netfile = *.@(sig?(n)|asc) ]]; then
+					local file
+					file="$(get_filepath "$netfile")" || missing_source_file "$netfile"
+					sum="$(openssl dgst -${integ} "$file")"
+					sum=${sum##* }
+				else
+					sum="SKIP"
+				fi
+				;;
+		esac
+
+		# indent checksum on lines after the first
+		printf "%*s%s" $(( idx ? indentsz : 0 )) '' "'$sum'"
+
+		# print a newline on lines before the last
+		(( ++idx < numsrc )) && echo
+	done
+
+	echo ")"
+}
+
 generate_checksums() {
 	msg "$(gettext "Generating checksums for source files...")"
 
@@ -1076,38 +1116,7 @@ generate_checksums() {
 			exit 1 # $E_CONFIG_ERROR
 		fi
 
-		local indentsz idx numsrc=${#source[@]}
-		printf "%s%n" "${integ}sums=(" indentsz
-
-		for (( idx = 0; idx < numsrc; i++ )); do
-			local netfile=${source[idx]}
-			local proto sum
-			proto="$(get_protocol "$netfile")"
-
-			case $proto in
-				bzr*|git*|hg*|svn*)
-					sum="SKIP"
-					;;
-				*)
-					if [[ ! $netfile = *.@(sig?(n)|asc) ]]; then
-						local file
-						file="$(get_filepath "$netfile")" || missing_source_file "$netfile"
-						sum="$(openssl dgst -${integ} "$file")"
-						sum=${sum##* }
-					else
-						sum="SKIP"
-					fi
-					;;
-			esac
-
-			# indent checksum on lines after the first
-			printf "%*s%s" $(( idx ? indentsz : 0 )) '' "'$sum'"
-
-			# print a newline on lines before the last
-			(( ++idx < numsrc )) && echo
-		done
-
-		echo ")"
+		generate_one_checksum "$integ"
 	done
 }
 
-- 
2.0.4


More information about the pacman-dev mailing list