summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2014-08-07 19:56:04 -0400
committerAllan McRae <allan@archlinux.org>2014-09-30 12:56:21 +1000
commit51353edc6156ae46cb32e7adc18c415a1732e2dc (patch)
tree99cca599ec59a969e95d45107738558740119ab9
parenta3d7230e4dd85f5d7b9bd3877ae9ad4259fa71b0 (diff)
downloadpacman-51353edc6156ae46cb32e7adc18c415a1732e2dc.tar.xz
makepkg: break out checksum generation to its own function
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 and emit nothing at all.
-rw-r--r--scripts/makepkg.sh.in73
1 files changed, 41 insertions, 32 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 2b5171e4..0402475a 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1119,6 +1119,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; ++idx )); 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 - 1) )) && echo
+ done
+
+ echo ")"
+}
+
generate_checksums() {
msg "$(gettext "Generating checksums for source files...")"
@@ -1141,38 +1181,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
}