diff --git a/scripts/libmakepkg/source/bzr.sh.in b/scripts/libmakepkg/source/bzr.sh.in index a7f24e4a..2b57e802 100644 --- a/scripts/libmakepkg/source/bzr.sh.in +++ b/scripts/libmakepkg/source/bzr.sh.in @@ -109,3 +109,29 @@ extract_bzr() { popd &>/dev/null } + +calc_checksum_bzr() { + local netfile=$1 integ=$2 ret=0 shellopts dir url fragment fragval sum + + # this function requires pipefail - save current status to restore later + shellopts=$(shopt -p -o pipefail) + shopt -s -o pipefail + + dir=$(get_filepath "$netfile") + url=$(get_url "$netfile") + fragment=$(get_uri_fragment "$url") + + case ${fragment%%=*} in + revision) + fragval=${fragment##*=} + sum=$(bzr export --directory "$dir" --format tar --revision "$fragval" - | "${integ}sum" 2>&1) || ret=1 + sum="${sum%% *}" + ;; + *) + sum="SKIP" + esac + + eval "$shellopts" + printf '%s' "$sum" + return $ret +}