[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