mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
makepkg: properly correlate checksums for multiple sources
Previously, we used a single boolean value to determine correlation of sources to checksums. Since the introduction of arch-specific sources, this is no longer sufficient, as we must ensure that we have checksums for (potentially) multiple source arrays. This change inlines the logic of have_sources to build an associative array of source array names, unsetting them as we discover their checksums. The error condition then becomes a non-empty correlation array. Fixes: https://bugs.archlinux.org/task/43192 Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
c07593c64c
commit
d2d00e4543
@ -1317,47 +1317,41 @@ verify_integrity_sums() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
have_sources() {
|
check_checksums() {
|
||||||
local a
|
local integ a
|
||||||
|
declare -A correlation
|
||||||
(( ${#source[*]} )) && return 0
|
(( 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
|
case $1 in
|
||||||
all)
|
all)
|
||||||
for a in "${arch[@]}"; do
|
for a in "${arch[@]}"; do
|
||||||
array_build _ source_"$a" && return 0
|
array_build _ source_"$a" && correlation["source_$a"]=1
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
array_build _ source_"$CARCH" && return 0
|
array_build _ source_"$CARCH" && correlation["source_$CARCH"]=1
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
for integ in "${known_hash_algos[@]}"; do
|
||||||
verify_integrity_sums "$integ" && correlation=1
|
verify_integrity_sums "$integ" && unset "correlation[source]"
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
all)
|
all)
|
||||||
for a in "${arch[@]}"; do
|
for a in "${arch[@]}"; do
|
||||||
verify_integrity_sums "$integ" "$a" && correlation=1
|
verify_integrity_sums "$integ" "$a" && unset "correlation[source_$a]"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
verify_integrity_sums "$integ" "$CARCH" && correlation=1
|
verify_integrity_sums "$integ" "$CARCH" && unset "correlation[source_$CARCH]"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
if (( ! correlation )); then
|
if (( ${#correlation[*]} )); then
|
||||||
error "$(gettext "Integrity checks are missing.")"
|
error "$(gettext "Integrity checks are missing.")"
|
||||||
exit 1 # TODO: error code
|
exit 1 # TODO: error code
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user