diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index ae8cf57b..d53c39f2 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1317,47 +1317,41 @@ verify_integrity_sums() { fi } -have_sources() { - local a - - (( ${#source[*]} )) && return 0 +check_checksums() { + local integ a + declare -A correlation + (( SKIPCHECKSUMS )) && return 0 + # Initialize a map which we'll use to verify that every source array has at + # least some kind of checksum array associated with it. + (( ${#source[*]} )) && correlation['source']=1 case $1 in all) for a in "${arch[@]}"; do - array_build _ source_"$a" && return 0 + array_build _ source_"$a" && correlation["source_$a"]=1 done ;; *) - array_build _ source_"$CARCH" && return 0 + array_build _ source_"$CARCH" && correlation["source_$CARCH"]=1 ;; esac - return 1 -} - -check_checksums() { - (( SKIPCHECKSUMS )) && return 0 - have_sources "$1" || return 0 - - local correlation=0 - local integ a for integ in "${known_hash_algos[@]}"; do - verify_integrity_sums "$integ" && correlation=1 + verify_integrity_sums "$integ" && unset "correlation[source]" case $1 in all) for a in "${arch[@]}"; do - verify_integrity_sums "$integ" "$a" && correlation=1 + verify_integrity_sums "$integ" "$a" && unset "correlation[source_$a]" done ;; *) - verify_integrity_sums "$integ" "$CARCH" && correlation=1 + verify_integrity_sums "$integ" "$CARCH" && unset "correlation[source_$CARCH]" ;; esac done - if (( ! correlation )); then + if (( ${#correlation[*]} )); then error "$(gettext "Integrity checks are missing.")" exit 1 # TODO: error code fi