From 52464ec3d263b463b4ea352e4f4d71cd3af87ee7 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Sat, 15 May 2021 21:14:24 -0500 Subject: [PATCH] dev/checksum: paper over platform differences Replace use of sha1sum with dev/checksum in order to accommodate platform differences, i.e. coreutils sha1sum vs freebsd sha1. Signed-off-by: Rob Browning Tested-by: Rob Browning --- dev/checksum | 54 ++++++++++++++++++++++++++++++++++++++ dev/prep-for-freebsd-build | 2 +- test/ext/test-misc | 1 + test/ext/test-save-smaller | 1 + 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100755 dev/checksum diff --git a/dev/checksum b/dev/checksum new file mode 100755 index 0000000..dc6fbee --- /dev/null +++ b/dev/checksum @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -ueo pipefail + +usage() { echo "Usage: checksum -t [--] [PATH]"; } + +misuse() { usage 1>&2; exit 2; } + +kind='' +while test $# -gt 0; do + case "$1" in + --) + shift + break + ;; + -t) + shift + test $# -gt 0 || misuse + kind="$1" + case "$kind" in + sha1|sha256) ;; + *) misuse ;; + esac + shift + ;; + -*) + misuse ;; + *) + break ;; + esac +done + +test "$kind" || misuse + +src=/dev/stdin +case $# in + 0) ;; + 1) src="$1" ;; + *) misuse ;; +esac + +# Use KINDsum if available, else KIND (e.g. sha1sum or sha1). Assumes +# the former is compatible with the coreutils version, and the latter +# is compatible with the FreeBSD version. + +if command -v "$kind"sum > /dev/null; then + result=$("$kind"sum "$src") + echo "${result%% *}" +elif command -v "$kind" > /dev/null; then + "$kind" -q "$src" +else + echo "Can't find sha1sum or sha1" 1>&2 + exit 2 +fi diff --git a/dev/prep-for-freebsd-build b/dev/prep-for-freebsd-build index d944907..9631b41 100755 --- a/dev/prep-for-freebsd-build +++ b/dev/prep-for-freebsd-build @@ -16,7 +16,7 @@ pkg update # https://reviews.freebsd.org/D24816 pkg install rdiff-backup || true -pkgs='gmake git bash coreutils rsync curl par2cmdline readline duplicity' +pkgs='gmake git bash rsync curl par2cmdline readline duplicity' pkgs="$pkgs rsnapshot" case "$pyver" in diff --git a/test/ext/test-misc b/test/ext/test-misc index 7a7e4ce..34d65eb 100755 --- a/test/ext/test-misc +++ b/test/ext/test-misc @@ -10,6 +10,7 @@ tmpdir="$(WVPASS wvmktempdir)" || exit $? export BUP_DIR="$tmpdir/bup" bup() { "$top/bup" "$@"; } +sha1sum() { "$top/dev/checksum" -t sha1 "$@"; } WVPASS cd "$tmpdir" diff --git a/test/ext/test-save-smaller b/test/ext/test-save-smaller index 1f497b7..d7ebfc6 100755 --- a/test/ext/test-save-smaller +++ b/test/ext/test-save-smaller @@ -10,6 +10,7 @@ tmpdir="$(WVPASS wvmktempdir)" || exit $? export BUP_DIR="$tmpdir/bup" bup() { "$top/bup" "$@"; } +sha1sum() { "$top/dev/checksum" -t sha1 "$@"; } WVPASS cd "$tmpdir" -- 2.39.2