diff --git a/package/pkg-download.mk b/package/pkg-download.mk index b7f1d43920..7ed95f2b2c 100644 --- a/package/pkg-download.mk +++ b/package/pkg-download.mk @@ -97,6 +97,7 @@ define DOWNLOAD $(EXTRA_ENV) $(FLOCK) $(DL_WRAPPER) \ -c '$($(PKG)_DL_VERSION)' \ -d '$($(PKG)_DL_DIR)' \ + -D '$(DL_DIR)' \ -f '$(notdir $(1))' \ -H '$(PKGDIR)/$($(PKG)_RAWNAME).hash' \ -n '$($(PKG)_BASENAME_RAW)' \ diff --git a/support/download/dl-wrapper b/support/download/dl-wrapper index af2950ac3b..ce44752df0 100755 --- a/support/download/dl-wrapper +++ b/support/download/dl-wrapper @@ -27,11 +27,12 @@ main() { local -a uris # Parse our options; anything after '--' is for the backend - while getopts ":hc:d:o:n:N:H:rf:u:q" OPT; do + while getopts ":hc:d:D:o:n:N:H:rf:u:q" OPT; do case "${OPT}" in h) help; exit 0;; c) cset="${OPTARG}";; d) dl_dir="${OPTARG}";; + D) old_dl_dir="${OPTARG}";; o) output="${OPTARG}";; n) raw_base_name="${OPTARG}";; N) base_name="${OPTARG}";; @@ -52,6 +53,13 @@ main() { error "no output specified, use -o\n" fi + # Legacy handling: check if the file already exists in the global + # download directory. If it does, hard-link it. If it turns out it + # was an incorrect download, we'd still check it below anyway. + if [ ! -e "${output}" -a -e "${old_dl_dir}/${filename}" ]; then + ln "${old_dl_dir}/${filename}" "${output}" + fi + # If the output file already exists and: # - there's no .hash file: do not download it again and exit promptly # - matches all its hashes: do not download it again and exit promptly