pkg-infra: move the wget download helper to a script
authorYann E. MORIN <yann.morin.1998@free.fr>
Wed, 2 Jul 2014 21:11:23 +0000 (23:11 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Wed, 2 Jul 2014 22:00:15 +0000 (00:00 +0200)
Maintaining the download helpers in the Makefile has proved to be a bit
complex, so move it to a shell script.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/pkg-download.mk
support/download/wget [new file with mode: 0755]

index 3290b6ba71dcc1505fc7343691f8f6c56a352e73..75545820ad163e56dd20c82c937d63d6fd9c1a14 100644 (file)
@@ -8,7 +8,7 @@
 ################################################################################
 
 # Download method commands
-WGET := $(call qstrip,$(BR2_WGET)) $(QUIET)
+export WGET := $(call qstrip,$(BR2_WGET)) $(QUIET)
 export SVN := $(call qstrip,$(BR2_SVN))
 export CVS := $(call qstrip,$(BR2_CVS))
 BZR := $(call qstrip,$(BR2_BZR))
@@ -175,17 +175,10 @@ define SHOW_EXTERNAL_DEPS_HG
   echo $($(PKG)_SOURCE)
 endef
 
-# Download a file using wget. Only download the file if it doesn't
-# already exist in the download directory. If the download fails,
-# remove the file (because wget -O creates a 0-byte file even if the
-# download fails).  To handle an interrupted download as well, download
-# to a temporary file first.  The temporary file will be overwritten
-# the next time the download is tried.
+
 define DOWNLOAD_WGET
        test -e $(DL_DIR)/$(2) || \
-       ($(WGET) -O $(DL_DIR)/$(2).tmp '$(call qstrip,$(1))' && \
-        mv $(DL_DIR)/$(2).tmp $(DL_DIR)/$(2)) || \
-       (rm -f $(DL_DIR)/$(2).tmp ; exit 1)
+       $(EXTRA_ENV) support/download/wget '$(call qstrip,$(1))' $(DL_DIR)/$(2)
 endef
 
 define SOURCE_CHECK_WGET
diff --git a/support/download/wget b/support/download/wget
new file mode 100755 (executable)
index 0000000..91ffd10
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# We want to catch any command failure, and exit immediately
+set -e
+
+# Download helper for wget
+# Call it with:
+#   $1: URL
+#   $2: output file
+# And this environment:
+#   WGET      : the wget command to call
+
+url="${1}"
+output="${2}"
+
+if ${WGET} -O "${output}.tmp" "${url}"; then
+    mv "${output}.tmp" "${output}"
+else
+    rm -f "${output}.tmp"
+    exit 1
+fi