efe7f684a6
Similarly to what has previously been done for the Hg download backend, instruct bzr to generate the archive on stdout, so that we can generate reproducible archives. When instructing bzr to generate the output file by itself, it uses a temporary file that is then fed to gzip, which in turn stores the timestamp of that file in the generated archive, whereas when the output is generated on stdout, there is no timestamp, so the archive is then reproducible. Bizarely enough, we can tell 'bazaar' not to generate a bazaar in the archive. Cool, uh? ;-] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
38 lines
820 B
Bash
Executable File
38 lines
820 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# We want to catch any unexpected failure, and exit immediately
|
|
set -e
|
|
|
|
# Download helper for bzr, to be called from the download wrapper script
|
|
#
|
|
# Call it as:
|
|
# .../bzr [-q] OUT_FILE REPO_URL REV BASENAME
|
|
#
|
|
# Environment:
|
|
# BZR : the bzr command to call
|
|
|
|
|
|
verbose=
|
|
while getopts :q OPT; do
|
|
case "${OPT}" in
|
|
q) verbose=-q;;
|
|
\?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
output="${1}"
|
|
repo="${2}"
|
|
rev="${3}"
|
|
basename="${4}"
|
|
|
|
# Caller needs to single-quote its arguments to prevent them from
|
|
# being expanded a second time (in case there are spaces in them)
|
|
_bzr() {
|
|
eval ${BZR} "${@}"
|
|
}
|
|
|
|
_bzr export ${verbose} --root="'${basename}/'" --format=tgz \
|
|
--per-file-timestamps - "'${repo}'" -r "'${rev}'" \
|
|
>"${output}"
|