makepkg -g: use checksums defined in the pkgbuild

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Allan: amend documentation]
Signed-off-by: Allan McRae <allan@archlinux.org>

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Xavier Chantry 2009-10-14 20:07:28 +02:00 committed by Dan McGee
parent 64c3255b0e
commit 79987c92cb
2 changed files with 31 additions and 5 deletions

View File

@ -81,10 +81,11 @@ Options
*-g, \--geninteg*::
For each source file in the source array of PKGBUILD, download the file
if required and generate integrity checks. The integrity checks
generated are determined by the value of the INTEGRITY_CHECK array in
linkman:makepkg.conf[5]. This output can be redirected into your
PKGBUILD for source validation using "`makepkg -g >> PKGBUILD`".
if required and generate integrity checks. The integrity checks generated
are determined by the checks present in the PKGBUILD, falling back to the
value of the INTEGRITY_CHECK array in makepkg.conf(5) if these are absent
This output can be redirected into your PKGBUILD for source validation
using "`makepkg -g >> PKGBUILD`".
*--skipinteg*::
Do not fail when the PKGBUILD does not contain any integrity checks, just

View File

@ -497,6 +497,24 @@ download_sources() {
popd &>/dev/null
}
get_integlist() {
local integ
local integlist=()
for integ in md5 sha1 sha256 sha384 sha512; do
local integrity_sums=($(eval echo "\${${integ}sums[@]}"))
if [[ -n "$integrity_sums" ]]; then
integlist=(${integlist[@]} $integ)
fi
done
if (( ${#integlist[@]} > 0 )); then
echo ${integlist[@]}
else
echo ${INTEGRITY_CHECK[@]}
fi
}
generate_checksums() {
msg "$(gettext "Generating checksums for source files...")"
plain ""
@ -506,8 +524,15 @@ generate_checksums() {
exit 1 # $E_MISSING_PROGRAM
fi
local integlist
if (( $# == 0 )); then
integlist=$(get_integlist)
else
integlist=$@
fi
local integ
for integ in ${INTEGRITY_CHECK[@]}; do
for integ in ${integlist[@]}; do
integ="${integ,,}"
case "$integ" in
md5|sha1|sha256|sha384|sha512) : ;;