diff options
author | Allan McRae <allan@archlinux.org> | 2016-10-11 15:04:25 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2016-10-22 12:50:55 +0200 |
commit | 577701250d645d1fc1a505cde34aedbeb3208ea5 (patch) | |
tree | 779183b41b3a84fd012a4dbb38337aed00ad0025 /scripts/makepkg.sh.in | |
parent | 603f087cd73aff0d39bf0ebfb23aaae5626cb814 (diff) | |
download | pacman-577701250d645d1fc1a505cde34aedbeb3208ea5.tar.gz pacman-577701250d645d1fc1a505cde34aedbeb3208ea5.tar.xz |
Use coreutils binaries for checking/generating checksums
If pacman is build against a crypto library other than openssl, it makes no
sense to require makepkg to use it.
The only currently considered alternative to openssl is nettle, which has no
binary for base64 encode/decode. This means that we could replace the hashing
cacluations with nettle-hash, but would require base64 from coreutils.
Given makepkg already relies heavily on coreutils, we might as well use all
the coreutils hashing binaries too.
This patch also improves the checking of required binaries for hashing
operations.
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/makepkg.sh.in')
-rw-r--r-- | scripts/makepkg.sh.in | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index fd5c2f5b..02398cf8 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -28,7 +28,7 @@ # makepkg uses quite a few external programs during its execution. You # need to have at least the following installed for makepkg to function: # awk, bsdtar (libarchive), bzip2, coreutils, fakeroot, file, find (findutils), -# gettext, gpg, grep, gzip, openssl, sed, tput (ncurses), xz +# gettext, gpg, grep, gzip, sed, tput (ncurses), xz # gettext initialization export TEXTDOMAIN='pacman-scripts' @@ -658,8 +658,8 @@ write_buildinfo() { printf "builddir = %s\n" "${BUILDDIR}" - local sum="$(openssl dgst -sha256 "${BUILDFILE}")" - sum=${sum##* } + local sum="$(sha256sum "${BUILDFILE}")" + sum=${sum%% *} printf "pkgbuild_sha256sum = %s\n" $sum @@ -1022,12 +1022,18 @@ check_software() { fi fi - # openssl - checksum operations - if (( ! SKIPCHECKSUMS )); then - if ! type -p openssl >/dev/null; then - error "$(gettext "Cannot find the %s binary required for validating source file checksums.")" "openssl" - ret=1 - fi + # checksum operations + if (( GENINTEG || ! SKIPCHECKSUMS )); then + local integlist + IFS=$'\n' read -rd '' -a integlist < <(get_integlist) + + local integ + for integ in "${integlist[@]}"; do + if ! type -p "${integ}sum" >/dev/null; then + error "$(gettext "Cannot find the %s binary required for source file checksums operations.")" "${integ}sum" + ret=1 + fi + done fi # distcc - compilation with distcc |