From: Yann E. MORIN Date: Wed, 4 Apr 2018 16:22:39 +0000 (+0200) Subject: core/download fix local backend X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=585c5dc35a0354452b7836c5449fa43715a5d0cc;p=buildroot.git core/download fix local backend Since c8ef0c03b0b (download: put most of the infra in dl-wrapper), the backend for local files is now named after the scheme, which is 'file' for a local file. >From the same commit on, the directory part and the basename are now passed separately, to let the backend reconstruct the full path when it needs to do so, which is the case for the 'file' backend too. Finaly, ff559846fdc1 (support/download: Add support to pass options directly to downloaders) introduced a nasty error, as it made use of "${@}" when calling its internal function. Revert that mess now... Signed-off-by: "Yann E. MORIN" Cc: Maxime Hadjinlian Cc: Peter Korsgaard Cc: Thomas Petazzoni Cc: Arnout Vandecappelle Signed-off-by: Peter Korsgaard --- diff --git a/support/download/cp b/support/download/cp deleted file mode 100755 index 52fe2de83d..0000000000 --- a/support/download/cp +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -# We want to catch any unexpected failure, and exit immediately -set -e - -# Download helper for cp, to be called from the download wrapper script -# -# Options: -# -q Be quiet. -# -o FILE Copy to file FILE. -# -u FILE Copy from file FILE. -# -# Environment: -# LOCALFILES: the cp command to call - -# 'cp' usually does not print anything on its stdout, whereas the -# other download backends, even if not verbose, at least print some -# progress information. -# Make 'cp' verbose by default, so it behaves a bit like the others. -verbose=-v - -while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do - case "${OPT}" in - q) verbose=;; - o) output="${OPTARG}";; - u) source="${OPTARG}";; - :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; - \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; - esac -done - -shift $((OPTIND-1)) # Get rid of our options - -# Caller needs to single-quote its arguments to prevent them from -# being expanded a second time (in case there are spaces in them) -_localfiles() { - eval ${LOCALFILES} "${@}" -} - -_localfiles ${verbose} "${@}""'${source}'" "'${output}'" diff --git a/support/download/file b/support/download/file new file mode 100755 index 0000000000..fefd6d271c --- /dev/null +++ b/support/download/file @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e +set -x + +# Download helper for cp, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Copy to file FILE. +# -f FILE Copy from basename file FILE. +# -u DIR Copy from FILE in DIR. +# +# Environment: +# LOCALFILES: the cp command to call + +# 'cp' usually does not print anything on its stdout, whereas the +# other download backends, even if not verbose, at least print some +# progress information. +# Make 'cp' verbose by default, so it behaves a bit like the others. +verbose=-v + +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) verbose=;; + o) output="${OPTARG}";; + f) file="${OPTARG}";; + u) dir="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_localfiles() { + eval ${LOCALFILES} "${@}" +} + +_localfiles ${verbose} "'${dir}${file}'" "'${output}'"