summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/changelog2
-rwxr-xr-xdebootstrap2
-rw-r--r--functions16
3 files changed, 17 insertions, 3 deletions
diff --git a/debian/changelog b/debian/changelog
index 72ca0a8..05bda1a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,8 @@ debootstrap (1.0.36) UNRELEASED; urgency=low
chroot or jail.
* Clarify "target" in usage message.
* Search PATH for programs, rather than checking hardcoded locations.
+ * Support using md5 and shaN programs, as found on FreeBSD, in addition
+ to md5sum and shaNsum.
-- Joey Hess <joeyh@debian.org> Mon, 15 Aug 2011 14:14:29 -0400
diff --git a/debootstrap b/debootstrap
index 278ed64..ca4c026 100755
--- a/debootstrap
+++ b/debootstrap
@@ -447,7 +447,7 @@ fi
if [ -z "$SHA_SIZE" ]; then
SHA_SIZE=256
fi
-if ! in_path "sha${SHA_SIZE}sum"; then
+if ! in_path "sha${SHA_SIZE}sum" && ! in_path "sha${SHA_SIZE}"; then
SHA_SIZE=1
fi
DEBOOTSTRAP_CHECKSUM_FIELD="SHA$SHA_SIZE"
diff --git a/functions b/functions
index 80844de..e07ca69 100644
--- a/functions
+++ b/functions
@@ -249,9 +249,21 @@ verify_checksum () {
local expchecksum="$2"
local expsize="$3"
if [ "$DEBOOTSTRAP_CHECKSUM_FIELD" = "MD5SUM" ]; then
- relchecksum=`md5sum < "$1" | sed 's/ .*$//'`
+ if in_path md5sum; then
+ relchecksum=`md5sum < "$1" | sed 's/ .*$//'`
+ elif in_path md5; then
+ relchecksum=`md5 < "$1"`
+ else
+ error 1 SIGCHECK "Cannot check md5sum"
+ fi
else
- relchecksum=`sha${SHA_SIZE}sum < "$1" | sed 's/ .*$//'`
+ if in_path "sha${SHA_SIZE}sum"; then
+ relchecksum=`sha${SHA_SIZE}sum < "$1" | sed 's/ .*$//'`
+ elif in_path "sha${SHA_SIZE}"; then
+ relchecksum=`sha${SHA_SIZE} < "$1"`
+ else
+ error 1 SIGCHECK "Cannot check sha${SHA_SIZE}sum"
+ fi
fi
relsize=`wc -c < "$1"`
if [ "$expsize" -ne "$relsize" ] || [ "$expchecksum" != "$relchecksum" ]; then