diff --git a/docs/buildroot.html b/docs/buildroot.html index 0862b1beb1..b282a19a68 100644 --- a/docs/buildroot.html +++ b/docs/buildroot.html @@ -994,7 +994,7 @@ endif 11 FOO_TARGET_BINARY:=usr/bin/foo 12 13 $(DL_DIR)/$(FOO_SOURCE): - 14 $(WGET) -P $(DL_DIR) $(FOO_SITE)/$(FOO_SOURCE) + 14 $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE)) 15 16 $(FOO_DIR)/.source: $(DL_DIR)/$(FOO_SOURCE) 17 $(ZCAT) $(DL_DIR)/$(FOO_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in index 6ed9c31fe9..bd8bed4bb7 100644 --- a/package/Makefile.autotools.in +++ b/package/Makefile.autotools.in @@ -119,6 +119,30 @@ MESSAGE = @echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RES TERM_BOLD := $(shell tput smso) TERM_RESET := $(shell tput rmso) +################################################################################ +# DOWNLOAD -- Download helper. Will try to download source from: +# 1) BR2_PRIMARY_SITE if enabled +# 2) Download site +# 3) BR2_BACKUP_SITE if enabled +# +# Argument 1 is the source location +# Argument 2 is the source filename +# +# E.G. use like this: +# $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE)) +################################################################################ + +# support make source-check/external-deps +ifneq ($(SPIDER),) +DOWNLOAD:=$(WGET) -P $(DL_DIR) $(1)/$(2) +else +define DOWNLOAD + $(Q)test -e $(DL_DIR)/$(2) || \ + for site in $(strip $(subst ",,$(BR2_PRIMARY_SITE))) $(1) $(strip $(subst ",,$(BR2_BACKUP_SITE))); \ + do $(WGET) -P $(DL_DIR) $$site/$(2) && exit; done +endef +endif + # Utility programs used to build packages TAR ?= tar #ACLOCAL_STAGING_DIR ?= $(STAGING_DIR)/usr/share/aclocal @@ -136,17 +160,12 @@ TAR_STRIP_COMPONENTS := $(shell $(TAR) --help | grep strip-path > /dev/null ; if # Retrieve and unpack the archive $(BUILD_DIR)/%/.stamp_downloaded: # support make source-check/external-deps -ifneq ($(SPIDER),) - $(WGET) -P $(DL_DIR) $($(PKG)_SITE)/$($(PKG)_SOURCE) - $(if $($(PKG)_PATCH),$(WGET) -P $(DL_DIR) $($(PKG)_SITE)/$($(PKG)_PATCH)) -else +ifeq ($(SPIDER),) $(call MESSAGE,"Downloading") -ifneq ($(strip $(subst ",,$(BR2_PRIMARY_SITE))),) -#")) - -$(Q)test -e $(DL_DIR)/$($(PKG)_SOURCE) || $(WGET) -P $(DL_DIR) $(BR2_PRIMARY_SITE)/$($(PKG)_SOURCE) endif - $(Q)test -e $(DL_DIR)/$($(PKG)_SOURCE) || $(WGET) -P $(DL_DIR) $($(PKG)_SITE)/$($(PKG)_SOURCE) - $(if $($(PKG)_PATCH),$(Q)test -e $(DL_DIR)/$($(PKG)_PATCH) || $(WGET) -P $(DL_DIR) $($(PKG)_SITE)/$($(PKG)_PATCH)) + $(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)) + $(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH))) +ifeq ($(SPIDER),) $(Q)mkdir -p $(@D) $(Q)touch $@ endif diff --git a/target/device/Config.in.mirrors b/target/device/Config.in.mirrors index 455bee1080..d561b8bcef 100644 --- a/target/device/Config.in.mirrors +++ b/target/device/Config.in.mirrors @@ -9,6 +9,14 @@ config BR2_PRIMARY_SITE default if the file is not found. NOTE: This only works for packages using the Makefile.autotools.in +config BR2_BACKUP_SITE + string "Backup download site" + default "http://buildroot.uclibc.org/downloads/sources/" + help + Backup site to download from. If this option is set then buildroot + will fall back to download package sources from here if the + normal location fails. + config BR2_SOURCEFORGE_MIRROR string "Sourceforge mirror site" default "easynews"