Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RESEND/PATCH] Git/Svn downloaders
@ 2010-09-02 10:09 Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 1/8] Remove the spider feature Maxime Petazzoni
                   ` (8 more replies)
  0 siblings, 9 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

Hi all,

Now that Buildroot 2010.08 is out (nice work on the release by the way!), I've
rebased my patchset for Git and Subversion downloaders on the latest HEAD.

I've also renamed SPIDER_MODE to DL_MODE, which better represents what this
variable is for (per Thomas' recommendation).

Regards,
- Maxime

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 1/8] Remove the spider feature
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 2/8] Cleanup the VCS commands configuration Maxime Petazzoni
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

In preparation for the re-work of the DOWNLOAD helper to support
multiple download methods and protocols, the spider feature used with
wget is removed for now until it is re-implemented on top of the new
download methods.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 Makefile                    |    7 +++----
 package/Makefile.package.in |   10 ----------
 package/mpfr/mpfr.mk        |    2 --
 3 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/Makefile b/Makefile
index 462d974..203e26a 100644
--- a/Makefile
+++ b/Makefile
@@ -245,7 +245,7 @@ ifeq ($(ARCH),xtensa)
 ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
 endif
 
-WGET:=$(call qstrip,$(BR2_WGET)) $(SPIDER) $(QUIET)
+WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
 SVN_CO:=$(call qstrip,$(BR2_SVN_CO)) $(QUIET)
 SVN_UP:=$(call qstrip,$(BR2_SVN_UP)) $(QUIET)
 BZR_CO:=$(call qstrip,$(BR2_BZR_CO)) $(QUIET)
@@ -438,11 +438,10 @@ endif
 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
 
 _source-check:
-	$(MAKE) $(EXTRAMAKEARGS) SPIDER=--spider source
+	@echo "TODO $@"
 
 external-deps:
-	@$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
-		$(EXTRAMAKEARGS) SPIDER=--spider source
+	@echo "TODO $@"
 
 show-targets:
 	@echo $(TARGETS)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index d76b791..ba0fd84 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -81,16 +81,11 @@ TERM_RESET := $(shell tput rmso)
 # $(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 $(call qstrip,$(BR2_PRIMARY_SITE)) $(1) $(call qstrip,$(BR2_BACKUP_SITE)); \
 	do $(WGET) -P $(DL_DIR) $$site/$(2) && exit; done
 endef
-endif
 
 # Utility programs used to build packages
 TAR ?= tar
@@ -117,19 +112,14 @@ endef
 
 # Retrieve the archive
 $(BUILD_DIR)/%/.stamp_downloaded:
-# support make source-check/external-deps
-ifeq ($(SPIDER),)
 # Only show the download message if it isn't already downloaded
 	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
 		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
 		$(call MESSAGE,"Downloading")
-endif
 	$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE))
 	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
-ifeq ($(SPIDER),)
 	$(Q)mkdir -p $(@D)
 	$(Q)touch $@
-endif
 
 # Unpack the archive
 $(BUILD_DIR)/%/.stamp_extracted:
diff --git a/package/mpfr/mpfr.mk b/package/mpfr/mpfr.mk
index a7834dd..b7b80a5 100644
--- a/package/mpfr/mpfr.mk
+++ b/package/mpfr/mpfr.mk
@@ -21,10 +21,8 @@ MPFR_PATCH_SOURCE:=$(DL_DIR)/$(MPFR_PATCH_FILE)
 
 $(MPFR_PATCH_SOURCE):
 	$(call DOWNLOAD,$(MPFR_SITE),$(MPFR_PATCH))
-ifeq ($(SPIDER),) # this breaks source-check/external-deps
 	mv $(DL_DIR)/$(MPFR_PATCH) $@
 endif
-endif
 
 $(DL_DIR)/$(MPFR_SOURCE):
 	 $(call DOWNLOAD,$(MPFR_SITE),$(MPFR_SOURCE))
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 2/8] Cleanup the VCS commands configuration
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 1/8] Remove the spider feature Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 3/8] Update defconfigs with new VCS config options Maxime Petazzoni
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

It's not really necessary to differenciate the commands for checking out
or updating a repository. Only the path to the binary and eventual
top-level flags are useful to configure.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 Config.in |   24 ++++++++----------------
 Makefile  |    6 ++----
 2 files changed, 10 insertions(+), 20 deletions(-)

diff --git a/Config.in b/Config.in
index 4d7e585..9d01b28 100644
--- a/Config.in
+++ b/Config.in
@@ -21,25 +21,17 @@ config BR2_WGET
 	string "Wget command"
 	default "wget --passive-ftp -nd"
 
-config BR2_SVN_CO
-	string "Subversion (svn) command to download source tree"
-	default "svn co"
+config BR2_SVN
+	string "Subversion (svn) command"
+	default "svn"
 
-config BR2_SVN_UP
-	string "Subversion (svn) command to update source tree"
-	default "svn up"
-
-config BR2_BZR_CO
-	string "Bazaar (bzr) command to download source tree"
-	default "bzr co"
-
-config BR2_BZR_UP
-	string "Bazaar (bzr) command to update source tree"
-	default "bzr up"
+config BR2_BZR
+	string "Bazaar (bzr) command"
+	default "bzr"
 
 config BR2_GIT
-	string "Git command to download source tree"
-	default "git clone"
+	string "Git command"
+	default "git"
 
 config BR2_ZCAT
 	string "zcat command"
diff --git a/Makefile b/Makefile
index 203e26a..0d3c6d6 100644
--- a/Makefile
+++ b/Makefile
@@ -246,10 +246,8 @@ ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
 endif
 
 WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
-SVN_CO:=$(call qstrip,$(BR2_SVN_CO)) $(QUIET)
-SVN_UP:=$(call qstrip,$(BR2_SVN_UP)) $(QUIET)
-BZR_CO:=$(call qstrip,$(BR2_BZR_CO)) $(QUIET)
-BZR_UP:=$(call qstrip,$(BR2_BZR_UP)) $(QUIET)
+SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
+BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
 GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
 ZCAT:=$(call qstrip,$(BR2_ZCAT))
 BZCAT:=$(call qstrip,$(BR2_BZCAT))
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 3/8] Update defconfigs with new VCS config options
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 1/8] Remove the spider feature Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 2/8] Cleanup the VCS commands configuration Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 4/8] Implement basic non-wget download methods Maxime Petazzoni
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 configs/arm_toolchain_defconfig           |    5 ++---
 configs/at91rm9200df_defconfig            |    5 ++---
 configs/at91rm9200df_ext_bare_defconfig   |    5 ++---
 configs/at91rm9200df_ext_defconfig        |    5 ++---
 configs/at91sam9260dfc_defconfig          |    5 ++---
 configs/at91sam9260dfc_ext_bare_defconfig |    5 ++---
 configs/at91sam9260dfc_ext_defconfig      |    5 ++---
 configs/at91sam9261ek_defconfig           |    5 ++---
 configs/at91sam9261ek_ext_bare_defconfig  |    5 ++---
 configs/at91sam9261ek_ext_defconfig       |    5 ++---
 configs/at91sam9263ek_defconfig           |    5 ++---
 configs/at91sam9263ek_ext_bare_defconfig  |    5 ++---
 configs/at91sam9263ek_ext_defconfig       |    5 ++---
 configs/at91sam9g20dfc_defconfig          |    5 ++---
 configs/at91sam9g20dfc_ext_bare_defconfig |    5 ++---
 configs/at91sam9g20dfc_ext_defconfig      |    5 ++---
 configs/atngw100-base_defconfig           |    5 ++---
 configs/atngw100_defconfig                |    5 ++---
 configs/atstk1005_defconfig               |    5 ++---
 configs/atstk100x_defconfig               |    5 ++---
 configs/i386_defconfig                    |    5 ++---
 configs/i686_defconfig                    |    5 ++---
 configs/integrator926_defconfig           |    5 ++---
 configs/integrator926_huge_defconfig      |    5 ++---
 configs/kb9202_defconfig                  |    5 ++---
 configs/v100sc2_defconfig                 |    5 ++---
 26 files changed, 52 insertions(+), 78 deletions(-)

diff --git a/configs/arm_toolchain_defconfig b/configs/arm_toolchain_defconfig
index bd6f3e2..632906b 100644
--- a/configs/arm_toolchain_defconfig
+++ b/configs/arm_toolchain_defconfig
@@ -131,9 +131,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91rm9200df_defconfig b/configs/at91rm9200df_defconfig
index 727a6ea..b7e1260 100644
--- a/configs/at91rm9200df_defconfig
+++ b/configs/at91rm9200df_defconfig
@@ -136,9 +136,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91rm9200df_ext_bare_defconfig b/configs/at91rm9200df_ext_bare_defconfig
index fec2c04..20eb6a7 100644
--- a/configs/at91rm9200df_ext_bare_defconfig
+++ b/configs/at91rm9200df_ext_bare_defconfig
@@ -131,9 +131,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91rm9200df_ext_defconfig b/configs/at91rm9200df_ext_defconfig
index c73e372..7383a53 100644
--- a/configs/at91rm9200df_ext_defconfig
+++ b/configs/at91rm9200df_ext_defconfig
@@ -142,9 +142,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9260dfc_defconfig b/configs/at91sam9260dfc_defconfig
index de002c4..715f070 100644
--- a/configs/at91sam9260dfc_defconfig
+++ b/configs/at91sam9260dfc_defconfig
@@ -149,9 +149,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9260dfc_ext_bare_defconfig b/configs/at91sam9260dfc_ext_bare_defconfig
index 540eef6..f3c17ed 100644
--- a/configs/at91sam9260dfc_ext_bare_defconfig
+++ b/configs/at91sam9260dfc_ext_bare_defconfig
@@ -131,9 +131,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9260dfc_ext_defconfig b/configs/at91sam9260dfc_ext_defconfig
index 91cdedd..6dc741a 100644
--- a/configs/at91sam9260dfc_ext_defconfig
+++ b/configs/at91sam9260dfc_ext_defconfig
@@ -150,9 +150,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9261ek_defconfig b/configs/at91sam9261ek_defconfig
index 0a1fc51..64b50c8 100644
--- a/configs/at91sam9261ek_defconfig
+++ b/configs/at91sam9261ek_defconfig
@@ -152,9 +152,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9261ek_ext_bare_defconfig b/configs/at91sam9261ek_ext_bare_defconfig
index ab8851f..b83e0a7 100644
--- a/configs/at91sam9261ek_ext_bare_defconfig
+++ b/configs/at91sam9261ek_ext_bare_defconfig
@@ -134,9 +134,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9261ek_ext_defconfig b/configs/at91sam9261ek_ext_defconfig
index 6ebe9fd..de01e49 100644
--- a/configs/at91sam9261ek_ext_defconfig
+++ b/configs/at91sam9261ek_ext_defconfig
@@ -153,9 +153,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9263ek_defconfig b/configs/at91sam9263ek_defconfig
index d293108..41795d0 100644
--- a/configs/at91sam9263ek_defconfig
+++ b/configs/at91sam9263ek_defconfig
@@ -150,9 +150,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9263ek_ext_bare_defconfig b/configs/at91sam9263ek_ext_bare_defconfig
index 2578b95..40f0fe5 100644
--- a/configs/at91sam9263ek_ext_bare_defconfig
+++ b/configs/at91sam9263ek_ext_bare_defconfig
@@ -133,9 +133,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9263ek_ext_defconfig b/configs/at91sam9263ek_ext_defconfig
index 843b0fb..f537e9f 100644
--- a/configs/at91sam9263ek_ext_defconfig
+++ b/configs/at91sam9263ek_ext_defconfig
@@ -152,9 +152,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9g20dfc_defconfig b/configs/at91sam9g20dfc_defconfig
index a9347a8..0bae9ba 100644
--- a/configs/at91sam9g20dfc_defconfig
+++ b/configs/at91sam9g20dfc_defconfig
@@ -150,9 +150,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9g20dfc_ext_bare_defconfig b/configs/at91sam9g20dfc_ext_bare_defconfig
index 49a5124..ab0b725 100644
--- a/configs/at91sam9g20dfc_ext_bare_defconfig
+++ b/configs/at91sam9g20dfc_ext_bare_defconfig
@@ -131,9 +131,8 @@ BR2_AT91_LINUXPATCH_SITE="http://maxim.org.za/AT91RM9200/2.6"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/at91sam9g20dfc_ext_defconfig b/configs/at91sam9g20dfc_ext_defconfig
index bd96723..aeb8973 100644
--- a/configs/at91sam9g20dfc_ext_defconfig
+++ b/configs/at91sam9g20dfc_ext_defconfig
@@ -150,9 +150,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-arm/kernel-patches-$(BR2_KER
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/atngw100-base_defconfig b/configs/atngw100-base_defconfig
index 116f671..0c85ea8 100644
--- a/configs/atngw100-base_defconfig
+++ b/configs/atngw100-base_defconfig
@@ -84,9 +84,8 @@ BR2_TARGET_AVR32_ATNGW100_BASE=y
 # Build options
 #
 BR2_WGET="wget --passive-ftp --retry-connrefused --waitretry=10"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="zcat"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
index 50c376b..d1c43ba 100644
--- a/configs/atngw100_defconfig
+++ b/configs/atngw100_defconfig
@@ -69,11 +69,10 @@ BR2_TARGET_AVR32_ATNGW100=y
 # Commands
 #
 BR2_WGET="wget --passive-ftp --retry-connrefused --waitretry=10"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
+BR2_SVN="svn"
 BR2_BZR_CO="bzr co"
 BR2_BZR_UP="bzr up"
-BR2_GIT="git clone"
+BR2_GIT="git"
 BR2_ZCAT="zcat"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/atstk1005_defconfig b/configs/atstk1005_defconfig
index d95b666..16af8ba 100644
--- a/configs/atstk1005_defconfig
+++ b/configs/atstk1005_defconfig
@@ -82,9 +82,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-avr32/kernel-patches-$(BR2_K
 # Build options
 #
 BR2_WGET="wget --passive-ftp --retry-connrefused --waitretry=10"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="zcat"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/atstk100x_defconfig b/configs/atstk100x_defconfig
index 3069f6a..8bb771d 100644
--- a/configs/atstk100x_defconfig
+++ b/configs/atstk100x_defconfig
@@ -83,9 +83,8 @@ BR2_KERNEL_ARCH_PATCH_DIR="target/device/Atmel/arch-avr32/kernel-patches-$(BR2_K
 # Build options
 #
 BR2_WGET="wget --passive-ftp --retry-connrefused --waitretry=10"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="zcat"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/i386_defconfig b/configs/i386_defconfig
index e30ec3f..fb03076 100644
--- a/configs/i386_defconfig
+++ b/configs/i386_defconfig
@@ -85,9 +85,8 @@ BR2_TARGET_I686=y
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/i686_defconfig b/configs/i686_defconfig
index 916454d..1a657db 100644
--- a/configs/i686_defconfig
+++ b/configs/i686_defconfig
@@ -85,9 +85,8 @@ BR2_TARGET_I686=y
 # Build options
 #
 BR2_WGET="wget --passive-ftp"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/integrator926_defconfig b/configs/integrator926_defconfig
index 3d82ba2..0b4c219 100644
--- a/configs/integrator926_defconfig
+++ b/configs/integrator926_defconfig
@@ -81,9 +81,8 @@ BR2_BOARD_PATH="target/device/ARMLTD/$(BR2_BOARD_NAME)"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/integrator926_huge_defconfig b/configs/integrator926_huge_defconfig
index ca13339..2d5c352 100644
--- a/configs/integrator926_huge_defconfig
+++ b/configs/integrator926_huge_defconfig
@@ -81,9 +81,8 @@ BR2_BOARD_PATH="target/device/ARMLTD/$(BR2_BOARD_NAME)"
 # Build options
 #
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/kb9202_defconfig b/configs/kb9202_defconfig
index 4f392ab..1e1fcc8 100644
--- a/configs/kb9202_defconfig
+++ b/configs/kb9202_defconfig
@@ -92,9 +92,8 @@ BR2_TARGET_ARM=y
 #
 BR2_PRIMARY_SITE=""
 BR2_WGET="wget --passive-ftp -nd"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="gzip -d -c"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
diff --git a/configs/v100sc2_defconfig b/configs/v100sc2_defconfig
index c82e7d7..8e9f96e 100644
--- a/configs/v100sc2_defconfig
+++ b/configs/v100sc2_defconfig
@@ -63,9 +63,8 @@ BR2_TARGET_VALKA_V100SC2=y
 #
 BR2_PRIMARY_SITE=""
 BR2_WGET="wget --passive-ftp --retry-connrefused --waitretry=10"
-BR2_SVN_CO="svn co"
-BR2_SVN_UP="svn up"
-BR2_GIT="git clone"
+BR2_SVN="svn"
+BR2_GIT="git"
 BR2_ZCAT="zcat"
 BR2_BZCAT="bzcat"
 BR2_TAR_OPTIONS=""
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 4/8] Implement basic non-wget download methods
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (2 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 3/8] Update defconfigs with new VCS config options Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 12:37   ` Michael S. Zick
  2010-09-02 10:09 ` [Buildroot] [PATCH 5/8] Use the normal download method for Tremor Maxime Petazzoni
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

Packages can now be sourced from Git and Subversion repositories. The
download method will be autodetected from the URI (git://, svn://, etc).
If the repository is accessed through http(s), you can force the
download method by setting a _SITE_METHOD variable to either 'git' or
'svn', respectively and without the quotes.

The package's _VERSION variable defines which commit, revision, tag or
branch should be checked out. For Git, it can be HEAD, a commit ID, a
tag name or branch name (anything that can be checked out with `git
checkout`). For Subversion, it must be a revision number, or HEAD.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 package/Makefile.package.in |   68 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 64 insertions(+), 4 deletions(-)

diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index ba0fd84..5444472 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -69,6 +69,35 @@ TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
 ################################################################################
+# The DOWNLOAD_{GIT,SVN} helpers are in charge of getting a working copy of
+# the source repository for their corresponding SCM, checking out the requested
+# version / commit / tag, and create an archive out of it.
+################################################################################
+
+define DOWNLOAD_GIT
+	pushd $(DL_DIR) > /dev/null && \
+	$(GIT) clone $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
+	pushd $($(PKG)_BASE_NAME) > /dev/null && \
+	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
+		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
+	popd > /dev/null && \
+	rm -rf $($(PKG)_DL_DIR) && \
+	popd > /dev/null
+endef
+
+define DOWNLOAD_SVN
+	pushd $(DL_DIR) > /dev/null && \
+	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
+	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
+	rm -rf $($(PKG)_DL_DIR) && \
+	popd > /dev/null
+endef
+
+define DOWNLOAD_WGET
+	$(WGET) -P $(DL_DIR) $(call qstrip,$(1))/$(2)
+endef
+
+################################################################################
 # DOWNLOAD -- Download helper. Will try to download source from:
 # 1) BR2_PRIMARY_SITE if enabled
 # 2) Download site
@@ -83,8 +112,20 @@ TERM_RESET := $(shell tput rmso)
 
 define DOWNLOAD
 	$(Q)test -e $(DL_DIR)/$(2) || \
-	for site in $(call qstrip,$(BR2_PRIMARY_SITE)) $(1) $(call qstrip,$(BR2_BACKUP_SITE)); \
-	do $(WGET) -P $(DL_DIR) $$site/$(2) && exit; done
+	(if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
+		$(call DOWNLOAD_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
+	fi ; \
+	if test -n "$(1)" ; then \
+		case "$($(PKG)_SITE_METHOD)" in \
+			git) $(DOWNLOAD_GIT) && exit ;; \
+			svn) $(DOWNLOAD_SVN) && exit ;; \
+			*) $(call DOWNLOAD_WGET,$(1),$(2)) && exit ;; \
+		esac ; \
+	fi ; \
+	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
+		$(call DOWNLOAD_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
+	fi ; \
+	exit 1)
 endef
 
 # Utility programs used to build packages
@@ -244,13 +285,23 @@ ifndef $(2)_VERSION
  endif
 endif
 
-$(2)_DIR			=  $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)
+# Keep the package version that may contain forward slashes in the _DL_VERSION
+# variable, then replace all forward slashes ('/') by underscores ('_') to
+# sanitize the package version that is used in paths, directory and file names.
+# Forward slashes may appear in the package's version when pointing to a
+# version control system branch or tag, for example remotes/origin/1_10_stable.
+$(2)_DL_VERSION	= $($(2)_VERSION)
+$(2)_VERSION = $(subst /,_,$($(2)_VERSION))
+
+$(2)_BASE_NAME	=  $(1)-$$($(2)_VERSION)
+$(2)_DL_DIR	=  $$(DL_DIR)/$$($(2)_BASE_NAME)
+$(2)_DIR	=  $$(BUILD_DIR)/$$($(2)_BASE_NAME)
 
 ifndef $(2)_SOURCE
  ifdef $(3)_SOURCE
   $(2)_SOURCE = $($(3)_SOURCE)
  else
-  $(2)_SOURCE			?= $(1)-$$($(2)_VERSION).tar.gz
+  $(2)_SOURCE			?= $$($(2)_BASE_NAME).tar.gz
  endif
 endif
 
@@ -269,6 +320,15 @@ ifndef $(2)_SITE
  endif
 endif
 
+ifndef $(2)_SITE_METHOD
+ ifdef $(3)_SITE_METHOD
+  $(2)_SITE_METHOD = $($(3)_SITE_METHOD)
+ else
+	# Try automatic detection using the scheme part of the URI
+	$(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call qstrip,$($(2)_SITE))))
+ endif
+endif
+
 $(2)_DEPENDENCIES		?=
 $(2)_INSTALL_STAGING		?= NO
 $(2)_INSTALL_TARGET		?= YES
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 5/8] Use the normal download method for Tremor
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (3 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 4/8] Implement basic non-wget download methods Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 6/8] Use the normal download method for libsvgtiny Maxime Petazzoni
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

Now that the generic download method supports Subversion, fall back to
the normal usage of AUTOTARGETS for Tremor.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 package/multimedia/tremor/tremor.mk |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/package/multimedia/tremor/tremor.mk b/package/multimedia/tremor/tremor.mk
index 74fd725..654a403 100644
--- a/package/multimedia/tremor/tremor.mk
+++ b/package/multimedia/tremor/tremor.mk
@@ -5,19 +5,11 @@
 ############################################################
 
 TREMOR_SITE:=http://svn.xiph.org/trunk/Tremor/
+TREMOR_SITE_METHOD:=svn
 TREMOR_VERSION:=16259
-TREMOR_SVNDIR = Tremor-svn-r$(TREMOR_VERSION)
-TREMOR_SOURCE:= $(TREMOR_SVNDIR).tar.bz2
+
 TREMOR_AUTORECONF = YES
 TREMOR_INSTALL_STAGING = YES
 TREMOR_INSTALL_TARGET = YES
 
-$(DL_DIR)/$(TREMOR_SOURCE):
-	$(SVN_CO) -r $(TREMOR_VERSION) $(TREMOR_SITE) $(BUILD_DIR)/$(TREMOR_SVNDIR)
-	tar -cv -C $(BUILD_DIR) $(TREMOR_SVNDIR) | bzip2 - -c > $@
-	rm -rf $(BUILD_DIR)/$(TREMOR_SVNDIR)
-
-# use custom download step
-TREMOR_TARGET_SOURCE := $(DL_DIR)/$(TREMOR_SOURCE)
-
 $(eval $(call AUTOTARGETS,package/multimedia,tremor))
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 6/8] Use the normal download method for libsvgtiny
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (4 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 5/8] Use the normal download method for Tremor Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

Now that the generic download method supports Subversion, fall back to
the normal usage of AUTOTARGETS for libsvgtiny.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 package/libsvgtiny/libsvgtiny.mk |   11 +----------
 1 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/package/libsvgtiny/libsvgtiny.mk b/package/libsvgtiny/libsvgtiny.mk
index b559e52..d9ac41b 100644
--- a/package/libsvgtiny/libsvgtiny.mk
+++ b/package/libsvgtiny/libsvgtiny.mk
@@ -6,20 +6,11 @@
 
 LIBSVGTINY_SITE = svn://svn.netsurf-browser.org/trunk/libsvgtiny
 LIBSVGTINY_VERSION = 9800
-LIBSVGTINY_SVNDIR = libsvgtiny-svn-r$(LIBSVGTINY_VERSION)
-LIBSVGTINY_SOURCE = $(LIBSVGTINY_SVNDIR).tar.bz2
+
 LIBSVGTINY_INSTALL_STAGING = YES
 LIBSVGTINY_INSTALL_TARGET = YES
 LIBSVGTINY_DEPENDENCIES = libxml2 host-gperf host-pkg-config
 
-$(DL_DIR)/$(LIBSVGTINY_SOURCE):
-	$(SVN_CO) -r $(LIBSVGTINY_VERSION) $(LIBSVGTINY_SITE) $(BUILD_DIR)/$(LIBSVGTINY_SVNDIR)
-	tar -cv -C $(BUILD_DIR) $(LIBSVGTINY_SVNDIR) | bzip2 - -c > $@
-	rm -rf $(BUILD_DIR)/$(LIBSVGTINY_SVNDIR)
-
-# use custom download step
-LIBSVGTINY_TARGET_SOURCE := $(DL_DIR)/$(LIBSVGTINY_SOURCE)
-
 define LIBSVGTINY_BUILD_CMDS
 	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=/usr
 endef
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (5 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 6/8] Use the normal download method for libsvgtiny Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:19   ` [Buildroot] Missed a bug Maxime Petazzoni
                     ` (2 more replies)
  2010-09-02 10:09 ` [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step" Maxime Petazzoni
  2010-09-02 12:03 ` [Buildroot] [RESEND/PATCH] Git/Svn downloaders Thomas Petazzoni
  8 siblings, 3 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

The new DL_MODE variable dispatches between the various download
implementations of each method (Git, Subversion, Wget) to deal with the
normal download (default mode, 'DOWNLOAD'), the source-check
('SOURCE_CHECK') and to show the external dependencies for external-deps
('SHOW_EXTERNAL_DEPS').

For the latter, the legacy script wget-show-external-deps.sh is no
longer required as $(WGET) isn't called directly anymore but always
through the DOWNLOAD helper.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 Makefile                             |   13 +----
 package/Makefile.package.in          |   86 ++++++++++++++++++++++++++++-----
 package/mpfr/mpfr.mk                 |    2 +
 toolchain/wget-show-external-deps.sh |    6 --
 4 files changed, 77 insertions(+), 30 deletions(-)
 delete mode 100755 toolchain/wget-show-external-deps.sh

diff --git a/Makefile b/Makefile
index 0d3c6d6..f243a4a 100644
--- a/Makefile
+++ b/Makefile
@@ -245,19 +245,10 @@ ifeq ($(ARCH),xtensa)
 ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
 endif
 
-WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
-SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
-BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
-GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
 ZCAT:=$(call qstrip,$(BR2_ZCAT))
 BZCAT:=$(call qstrip,$(BR2_BZCAT))
 TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
 
-DL_DIR=$(call qstrip,$(BR2_DL_DIR))
-ifeq ($(DL_DIR),)
-DL_DIR:=$(TOPDIR)/dl
-endif
-
 GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
 
 STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
@@ -436,10 +427,10 @@ endif
 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
 
 _source-check:
-	@echo "TODO $@"
+	$(MAKE) DL_MODE=SOURCE_CHECK source
 
 external-deps:
-	@echo "TODO $@"
+	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS source
 
 show-targets:
 	@echo $(TARGETS)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 5444472..6f584a7 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -68,35 +68,92 @@ MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESE
 TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
+# Download method commands
+WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
+SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
+BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
+GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
+
+# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
+# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
+# external-deps target.
+DL_MODE=DOWNLOAD
+
+DL_DIR=$(call qstrip,$(BR2_DL_DIR))
+ifeq ($(DL_DIR),)
+DL_DIR:=$(TOPDIR)/dl
+endif
+
 ################################################################################
 # The DOWNLOAD_{GIT,SVN} helpers are in charge of getting a working copy of
 # the source repository for their corresponding SCM, checking out the requested
-# version / commit / tag, and create an archive out of it.
+# version / commit / tag, and create an archive out of it. DOWNLOAD_WGET is the
+# normal wget-based download mechanism.
+#
+# The SOURCE_CHECK_{GIT,SVN,WGET} helpers are in charge of simply checking that
+# the source is available for download. This can be used to make sure one will
+# be able to get all the sources needed for one's build configuration.
+#
+# The SHOW_EXTERNAL_DEPS_{GIT,SVN,WGET} helpers simply output to the console
+# the names of the files that will be downloaded, or path and revision of the
+# source repositories, producing a list of all the "external dependencies" of
+# a given build configuration.
 ################################################################################
 
 define DOWNLOAD_GIT
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(GIT) clone $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
 	pushd $($(PKG)_BASE_NAME) > /dev/null && \
 	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
 		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
 	popd > /dev/null && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
+# repository
+define SOURCE_CHECK_GIT
+  $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_GIT
+  echo "$($(PKG)_SITE) [git: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_SVN
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
 	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+define SOURCE_CHECK_SVN
+  $(SVN) ls $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_SVN
+  echo "$($(PKG)_SITE) [svn: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_WGET
+	test -e $(DL_DIR)/$(2) || \
 	$(WGET) -P $(DL_DIR) $(call qstrip,$(1))/$(2)
 endef
 
+define SOURCE_CHECK_WGET
+  $(WGET) --spider $(call qstrip,$(1))/$(2)
+endef
+
+define SHOW_EXTERNAL_DEPS_WGET
+  echo $(2)
+endef
+
 ################################################################################
 # DOWNLOAD -- Download helper. Will try to download source from:
 # 1) BR2_PRIMARY_SITE if enabled
@@ -111,21 +168,20 @@ endef
 ################################################################################
 
 define DOWNLOAD
-	$(Q)test -e $(DL_DIR)/$(2) || \
-	(if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
+	$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
+		$(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
 	fi ; \
 	if test -n "$(1)" ; then \
 		case "$($(PKG)_SITE_METHOD)" in \
-			git) $(DOWNLOAD_GIT) && exit ;; \
-			svn) $(DOWNLOAD_SVN) && exit ;; \
-			*) $(call DOWNLOAD_WGET,$(1),$(2)) && exit ;; \
+			git) $($(DL_MODE)_GIT) && exit ;; \
+			svn) $($(DL_MODE)_SVN) && exit ;; \
+			*) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
 		esac ; \
 	fi ; \
 	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
+		$(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
 	fi ; \
-	exit 1)
+	exit 1
 endef
 
 # Utility programs used to build packages
@@ -153,14 +209,18 @@ endef
 
 # Retrieve the archive
 $(BUILD_DIR)/%/.stamp_downloaded:
+ifeq ($(DL_MODE),DOWNLOAD)
 # Only show the download message if it isn't already downloaded
 	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
 		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
 		$(call MESSAGE,"Downloading")
+endif
 	$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE))
 	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
+ifeq ($(DL_MODE),DOWNLOAD)
 	$(Q)mkdir -p $(@D)
 	$(Q)touch $@
+endif
 
 # Unpack the archive
 $(BUILD_DIR)/%/.stamp_extracted:
diff --git a/package/mpfr/mpfr.mk b/package/mpfr/mpfr.mk
index b7b80a5..f0d08ea 100644
--- a/package/mpfr/mpfr.mk
+++ b/package/mpfr/mpfr.mk
@@ -21,8 +21,10 @@ MPFR_PATCH_SOURCE:=$(DL_DIR)/$(MPFR_PATCH_FILE)
 
 $(MPFR_PATCH_SOURCE):
 	$(call DOWNLOAD,$(MPFR_SITE),$(MPFR_PATCH))
+ifeq ($(SPIDER_MODE),DOWNLOAD)
 	mv $(DL_DIR)/$(MPFR_PATCH) $@
 endif
+endif
 
 $(DL_DIR)/$(MPFR_SOURCE):
 	 $(call DOWNLOAD,$(MPFR_SITE),$(MPFR_SOURCE))
diff --git a/toolchain/wget-show-external-deps.sh b/toolchain/wget-show-external-deps.sh
deleted file mode 100755
index 20071c0..0000000
--- a/toolchain/wget-show-external-deps.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-#
-# replacement for wget (see BR2_WGET) which simply shows the file name to be
-# downloaded. Used by the external-deps make target.
-
-exec basename ${!#}
\ No newline at end of file
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step"
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (6 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
@ 2010-09-02 10:09 ` Maxime Petazzoni
  2010-09-02 10:51   ` Thomas Petazzoni
  2010-09-02 12:03 ` [Buildroot] [RESEND/PATCH] Git/Svn downloaders Thomas Petazzoni
  8 siblings, 1 reply; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:09 UTC (permalink / raw)
  To: buildroot

This reverts commit 48cf66f1a2e2c501abeee98b7a2268b0d6d2010d.
---
 package/Makefile.package.in |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 6f584a7..58b417b 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -402,7 +402,7 @@ $(2)_TARGET_BUILD =		$$($(2)_DIR)/.stamp_built
 $(2)_TARGET_CONFIGURE =		$$($(2)_DIR)/.stamp_configured
 $(2)_TARGET_PATCH =		$$($(2)_DIR)/.stamp_patched
 $(2)_TARGET_EXTRACT =		$$($(2)_DIR)/.stamp_extracted
-$(2)_TARGET_SOURCE ?=		$$($(2)_DIR)/.stamp_downloaded
+$(2)_TARGET_SOURCE =		$$($(2)_DIR)/.stamp_downloaded
 $(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
 $(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
 $(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] Missed a bug
  2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
@ 2010-09-02 10:19   ` Maxime Petazzoni
  2010-09-02 10:19   ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
  2010-09-02 10:24   ` Thomas Petazzoni
  2 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:19 UTC (permalink / raw)
  To: buildroot

I let a bug through in this patch, I forgot to rename SPIDER_MODE to DL_MODE in
mpfr.mk. Here's the updated 7th patch.

- Maxime

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets
  2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
  2010-09-02 10:19   ` [Buildroot] Missed a bug Maxime Petazzoni
@ 2010-09-02 10:19   ` Maxime Petazzoni
  2010-09-02 10:24   ` Thomas Petazzoni
  2 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:19 UTC (permalink / raw)
  To: buildroot

The new DL_MODE variable dispatches between the various download
implementations of each method (Git, Subversion, Wget) to deal with the
normal download (default mode, 'DOWNLOAD'), the source-check
('SOURCE_CHECK') and to show the external dependencies for external-deps
('SHOW_EXTERNAL_DEPS').

For the latter, the legacy script wget-show-external-deps.sh is no
longer required as $(WGET) isn't called directly anymore but always
through the DOWNLOAD helper.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 Makefile                             |   13 +----
 package/Makefile.package.in          |   86 ++++++++++++++++++++++++++++-----
 package/mpfr/mpfr.mk                 |    2 +
 toolchain/wget-show-external-deps.sh |    6 --
 4 files changed, 77 insertions(+), 30 deletions(-)
 delete mode 100755 toolchain/wget-show-external-deps.sh

diff --git a/Makefile b/Makefile
index 0d3c6d6..f243a4a 100644
--- a/Makefile
+++ b/Makefile
@@ -245,19 +245,10 @@ ifeq ($(ARCH),xtensa)
 ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
 endif
 
-WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
-SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
-BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
-GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
 ZCAT:=$(call qstrip,$(BR2_ZCAT))
 BZCAT:=$(call qstrip,$(BR2_BZCAT))
 TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
 
-DL_DIR=$(call qstrip,$(BR2_DL_DIR))
-ifeq ($(DL_DIR),)
-DL_DIR:=$(TOPDIR)/dl
-endif
-
 GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
 
 STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
@@ -436,10 +427,10 @@ endif
 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
 
 _source-check:
-	@echo "TODO $@"
+	$(MAKE) DL_MODE=SOURCE_CHECK source
 
 external-deps:
-	@echo "TODO $@"
+	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS source
 
 show-targets:
 	@echo $(TARGETS)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 5444472..6f584a7 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -68,35 +68,92 @@ MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESE
 TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
+# Download method commands
+WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
+SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
+BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
+GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
+
+# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
+# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
+# external-deps target.
+DL_MODE=DOWNLOAD
+
+DL_DIR=$(call qstrip,$(BR2_DL_DIR))
+ifeq ($(DL_DIR),)
+DL_DIR:=$(TOPDIR)/dl
+endif
+
 ################################################################################
 # The DOWNLOAD_{GIT,SVN} helpers are in charge of getting a working copy of
 # the source repository for their corresponding SCM, checking out the requested
-# version / commit / tag, and create an archive out of it.
+# version / commit / tag, and create an archive out of it. DOWNLOAD_WGET is the
+# normal wget-based download mechanism.
+#
+# The SOURCE_CHECK_{GIT,SVN,WGET} helpers are in charge of simply checking that
+# the source is available for download. This can be used to make sure one will
+# be able to get all the sources needed for one's build configuration.
+#
+# The SHOW_EXTERNAL_DEPS_{GIT,SVN,WGET} helpers simply output to the console
+# the names of the files that will be downloaded, or path and revision of the
+# source repositories, producing a list of all the "external dependencies" of
+# a given build configuration.
 ################################################################################
 
 define DOWNLOAD_GIT
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(GIT) clone $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
 	pushd $($(PKG)_BASE_NAME) > /dev/null && \
 	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
 		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
 	popd > /dev/null && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
+# repository
+define SOURCE_CHECK_GIT
+  $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_GIT
+  echo "$($(PKG)_SITE) [git: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_SVN
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
 	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+define SOURCE_CHECK_SVN
+  $(SVN) ls $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_SVN
+  echo "$($(PKG)_SITE) [svn: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_WGET
+	test -e $(DL_DIR)/$(2) || \
 	$(WGET) -P $(DL_DIR) $(call qstrip,$(1))/$(2)
 endef
 
+define SOURCE_CHECK_WGET
+  $(WGET) --spider $(call qstrip,$(1))/$(2)
+endef
+
+define SHOW_EXTERNAL_DEPS_WGET
+  echo $(2)
+endef
+
 ################################################################################
 # DOWNLOAD -- Download helper. Will try to download source from:
 # 1) BR2_PRIMARY_SITE if enabled
@@ -111,21 +168,20 @@ endef
 ################################################################################
 
 define DOWNLOAD
-	$(Q)test -e $(DL_DIR)/$(2) || \
-	(if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
+	$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
+		$(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
 	fi ; \
 	if test -n "$(1)" ; then \
 		case "$($(PKG)_SITE_METHOD)" in \
-			git) $(DOWNLOAD_GIT) && exit ;; \
-			svn) $(DOWNLOAD_SVN) && exit ;; \
-			*) $(call DOWNLOAD_WGET,$(1),$(2)) && exit ;; \
+			git) $($(DL_MODE)_GIT) && exit ;; \
+			svn) $($(DL_MODE)_SVN) && exit ;; \
+			*) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
 		esac ; \
 	fi ; \
 	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
+		$(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
 	fi ; \
-	exit 1)
+	exit 1
 endef
 
 # Utility programs used to build packages
@@ -153,14 +209,18 @@ endef
 
 # Retrieve the archive
 $(BUILD_DIR)/%/.stamp_downloaded:
+ifeq ($(DL_MODE),DOWNLOAD)
 # Only show the download message if it isn't already downloaded
 	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
 		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
 		$(call MESSAGE,"Downloading")
+endif
 	$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE))
 	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
+ifeq ($(DL_MODE),DOWNLOAD)
 	$(Q)mkdir -p $(@D)
 	$(Q)touch $@
+endif
 
 # Unpack the archive
 $(BUILD_DIR)/%/.stamp_extracted:
diff --git a/package/mpfr/mpfr.mk b/package/mpfr/mpfr.mk
index b7b80a5..6979a9f 100644
--- a/package/mpfr/mpfr.mk
+++ b/package/mpfr/mpfr.mk
@@ -21,8 +21,10 @@ MPFR_PATCH_SOURCE:=$(DL_DIR)/$(MPFR_PATCH_FILE)
 
 $(MPFR_PATCH_SOURCE):
 	$(call DOWNLOAD,$(MPFR_SITE),$(MPFR_PATCH))
+ifeq ($(DL_MODE),DOWNLOAD)
 	mv $(DL_DIR)/$(MPFR_PATCH) $@
 endif
+endif
 
 $(DL_DIR)/$(MPFR_SOURCE):
 	 $(call DOWNLOAD,$(MPFR_SITE),$(MPFR_SOURCE))
diff --git a/toolchain/wget-show-external-deps.sh b/toolchain/wget-show-external-deps.sh
deleted file mode 100755
index 20071c0..0000000
--- a/toolchain/wget-show-external-deps.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-#
-# replacement for wget (see BR2_WGET) which simply shows the file name to be
-# downloaded. Used by the external-deps make target.
-
-exec basename ${!#}
\ No newline at end of file
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets
  2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
  2010-09-02 10:19   ` [Buildroot] Missed a bug Maxime Petazzoni
  2010-09-02 10:19   ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
@ 2010-09-02 10:24   ` Thomas Petazzoni
  2010-09-02 10:31     ` Maxime Petazzoni
  2 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-02 10:24 UTC (permalink / raw)
  To: buildroot

Hello,

> +	$(MAKE) DL_MODE=SOURCE_CHECK source

You lost $(EXTRAMAKEARGS) here.

> +	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS source

and here.

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets
  2010-09-02 10:24   ` Thomas Petazzoni
@ 2010-09-02 10:31     ` Maxime Petazzoni
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:31 UTC (permalink / raw)
  To: buildroot

The new DL_MODE variable dispatches between the various download
implementations of each method (Git, Subversion, Wget) to deal with the
normal download (default mode, 'DOWNLOAD'), the source-check
('SOURCE_CHECK') and to show the external dependencies for external-deps
('SHOW_EXTERNAL_DEPS').

For the latter, the legacy script wget-show-external-deps.sh is no
longer required as $(WGET) isn't called directly anymore but always
through the DOWNLOAD helper.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 Makefile                             |   13 +----
 package/Makefile.package.in          |   86 ++++++++++++++++++++++++++++-----
 package/mpfr/mpfr.mk                 |    2 +
 toolchain/wget-show-external-deps.sh |    6 --
 4 files changed, 77 insertions(+), 30 deletions(-)
 delete mode 100755 toolchain/wget-show-external-deps.sh

diff --git a/Makefile b/Makefile
index 0d3c6d6..ef1057b 100644
--- a/Makefile
+++ b/Makefile
@@ -245,19 +245,10 @@ ifeq ($(ARCH),xtensa)
 ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
 endif
 
-WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
-SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
-BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
-GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
 ZCAT:=$(call qstrip,$(BR2_ZCAT))
 BZCAT:=$(call qstrip,$(BR2_BZCAT))
 TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
 
-DL_DIR=$(call qstrip,$(BR2_DL_DIR))
-ifeq ($(DL_DIR),)
-DL_DIR:=$(TOPDIR)/dl
-endif
-
 GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
 
 STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
@@ -436,10 +427,10 @@ endif
 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
 
 _source-check:
-	@echo "TODO $@"
+	$(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
 
 external-deps:
-	@echo "TODO $@"
+	@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source
 
 show-targets:
 	@echo $(TARGETS)
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 5444472..6f584a7 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -68,35 +68,92 @@ MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESE
 TERM_BOLD := $(shell tput smso)
 TERM_RESET := $(shell tput rmso)
 
+# Download method commands
+WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
+SVN:=$(call qstrip,$(BR2_SVN)) $(QUIET)
+BZR:=$(call qstrip,$(BR2_BZR)) $(QUIET)
+GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
+
+# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
+# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
+# external-deps target.
+DL_MODE=DOWNLOAD
+
+DL_DIR=$(call qstrip,$(BR2_DL_DIR))
+ifeq ($(DL_DIR),)
+DL_DIR:=$(TOPDIR)/dl
+endif
+
 ################################################################################
 # The DOWNLOAD_{GIT,SVN} helpers are in charge of getting a working copy of
 # the source repository for their corresponding SCM, checking out the requested
-# version / commit / tag, and create an archive out of it.
+# version / commit / tag, and create an archive out of it. DOWNLOAD_WGET is the
+# normal wget-based download mechanism.
+#
+# The SOURCE_CHECK_{GIT,SVN,WGET} helpers are in charge of simply checking that
+# the source is available for download. This can be used to make sure one will
+# be able to get all the sources needed for one's build configuration.
+#
+# The SHOW_EXTERNAL_DEPS_{GIT,SVN,WGET} helpers simply output to the console
+# the names of the files that will be downloaded, or path and revision of the
+# source repositories, producing a list of all the "external dependencies" of
+# a given build configuration.
 ################################################################################
 
 define DOWNLOAD_GIT
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(GIT) clone $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
 	pushd $($(PKG)_BASE_NAME) > /dev/null && \
 	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
 		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
 	popd > /dev/null && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
+# repository
+define SOURCE_CHECK_GIT
+  $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_GIT
+  echo "$($(PKG)_SITE) [git: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_SVN
-	pushd $(DL_DIR) > /dev/null && \
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
 	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
 	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
 	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null
+	popd > /dev/null)
+endef
+
+define SOURCE_CHECK_SVN
+  $(SVN) ls $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_SVN
+  echo "$($(PKG)_SITE) [svn: $($(PKG)_DL_VERSION)]"
 endef
 
+
 define DOWNLOAD_WGET
+	test -e $(DL_DIR)/$(2) || \
 	$(WGET) -P $(DL_DIR) $(call qstrip,$(1))/$(2)
 endef
 
+define SOURCE_CHECK_WGET
+  $(WGET) --spider $(call qstrip,$(1))/$(2)
+endef
+
+define SHOW_EXTERNAL_DEPS_WGET
+  echo $(2)
+endef
+
 ################################################################################
 # DOWNLOAD -- Download helper. Will try to download source from:
 # 1) BR2_PRIMARY_SITE if enabled
@@ -111,21 +168,20 @@ endef
 ################################################################################
 
 define DOWNLOAD
-	$(Q)test -e $(DL_DIR)/$(2) || \
-	(if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
+	$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
+		$(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
 	fi ; \
 	if test -n "$(1)" ; then \
 		case "$($(PKG)_SITE_METHOD)" in \
-			git) $(DOWNLOAD_GIT) && exit ;; \
-			svn) $(DOWNLOAD_SVN) && exit ;; \
-			*) $(call DOWNLOAD_WGET,$(1),$(2)) && exit ;; \
+			git) $($(DL_MODE)_GIT) && exit ;; \
+			svn) $($(DL_MODE)_SVN) && exit ;; \
+			*) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
 		esac ; \
 	fi ; \
 	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
-		$(call DOWNLOAD_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
+		$(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
 	fi ; \
-	exit 1)
+	exit 1
 endef
 
 # Utility programs used to build packages
@@ -153,14 +209,18 @@ endef
 
 # Retrieve the archive
 $(BUILD_DIR)/%/.stamp_downloaded:
+ifeq ($(DL_MODE),DOWNLOAD)
 # Only show the download message if it isn't already downloaded
 	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
 		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
 		$(call MESSAGE,"Downloading")
+endif
 	$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE))
 	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
+ifeq ($(DL_MODE),DOWNLOAD)
 	$(Q)mkdir -p $(@D)
 	$(Q)touch $@
+endif
 
 # Unpack the archive
 $(BUILD_DIR)/%/.stamp_extracted:
diff --git a/package/mpfr/mpfr.mk b/package/mpfr/mpfr.mk
index b7b80a5..6979a9f 100644
--- a/package/mpfr/mpfr.mk
+++ b/package/mpfr/mpfr.mk
@@ -21,8 +21,10 @@ MPFR_PATCH_SOURCE:=$(DL_DIR)/$(MPFR_PATCH_FILE)
 
 $(MPFR_PATCH_SOURCE):
 	$(call DOWNLOAD,$(MPFR_SITE),$(MPFR_PATCH))
+ifeq ($(DL_MODE),DOWNLOAD)
 	mv $(DL_DIR)/$(MPFR_PATCH) $@
 endif
+endif
 
 $(DL_DIR)/$(MPFR_SOURCE):
 	 $(call DOWNLOAD,$(MPFR_SITE),$(MPFR_SOURCE))
diff --git a/toolchain/wget-show-external-deps.sh b/toolchain/wget-show-external-deps.sh
deleted file mode 100755
index 20071c0..0000000
--- a/toolchain/wget-show-external-deps.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-#
-# replacement for wget (see BR2_WGET) which simply shows the file name to be
-# downloaded. Used by the external-deps make target.
-
-exec basename ${!#}
\ No newline at end of file
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step"
  2010-09-02 10:09 ` [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step" Maxime Petazzoni
@ 2010-09-02 10:51   ` Thomas Petazzoni
  2010-09-02 10:59     ` Maxime Petazzoni
  0 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-02 10:51 UTC (permalink / raw)
  To: buildroot

On Thu,  2 Sep 2010 12:09:51 +0200
Maxime Petazzoni <maxime.petazzoni@bulix.org> wrote:

> This reverts commit 48cf66f1a2e2c501abeee98b7a2268b0d6d2010d.

Please resend with your SoB line. Thanks!

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step"
  2010-09-02 10:51   ` Thomas Petazzoni
@ 2010-09-02 10:59     ` Maxime Petazzoni
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-02 10:59 UTC (permalink / raw)
  To: buildroot

This reverts commit 48cf66f1a2e2c501abeee98b7a2268b0d6d2010d.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
---
 package/Makefile.package.in |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 6f584a7..58b417b 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -402,7 +402,7 @@ $(2)_TARGET_BUILD =		$$($(2)_DIR)/.stamp_built
 $(2)_TARGET_CONFIGURE =		$$($(2)_DIR)/.stamp_configured
 $(2)_TARGET_PATCH =		$$($(2)_DIR)/.stamp_patched
 $(2)_TARGET_EXTRACT =		$$($(2)_DIR)/.stamp_extracted
-$(2)_TARGET_SOURCE ?=		$$($(2)_DIR)/.stamp_downloaded
+$(2)_TARGET_SOURCE =		$$($(2)_DIR)/.stamp_downloaded
 $(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
 $(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
 $(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
-- 
1.6.3.3.346.g8a41d

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Buildroot] [RESEND/PATCH] Git/Svn downloaders
  2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
                   ` (7 preceding siblings ...)
  2010-09-02 10:09 ` [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step" Maxime Petazzoni
@ 2010-09-02 12:03 ` Thomas Petazzoni
  2010-09-07 14:58   ` Maxime Petazzoni
  8 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-02 12:03 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu,  2 Sep 2010 12:09:43 +0200
Maxime Petazzoni <maxime.petazzoni@bulix.org> wrote:

> Now that Buildroot 2010.08 is out (nice work on the release by the
> way!), I've rebased my patchset for Git and Subversion downloaders on
> the latest HEAD.
> 
> I've also renamed SPIDER_MODE to DL_MODE, which better represents
> what this variable is for (per Thomas' recommendation).

FWIW, I've pushed this patch set at:

 http://git.buildroot.net/~tpetazzoni/git/buildroot/log/?h=for-2010.11/download-rework

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 4/8] Implement basic non-wget download methods
  2010-09-02 10:09 ` [Buildroot] [PATCH 4/8] Implement basic non-wget download methods Maxime Petazzoni
@ 2010-09-02 12:37   ` Michael S. Zick
  2010-09-02 12:50     ` Thomas Petazzoni
  0 siblings, 1 reply; 30+ messages in thread
From: Michael S. Zick @ 2010-09-02 12:37 UTC (permalink / raw)
  To: buildroot

On Thu September 2 2010, Maxime Petazzoni wrote:
> Packages can now be sourced from Git and Subversion repositories. The
> download method will be autodetected from the URI (git://, svn://, etc).
> If the repository is accessed through http(s), you can force the
> download method by setting a _SITE_METHOD variable to either 'git' or
> 'svn', respectively and without the quotes.
>

For the cases where the protocol scheme does not appear in the URI that
the user would input (such as private repository access via ssl) -

Will that _SITE_METHOD variable be able to override the autodetection?

Hmm...  In case any reader hasn't encountered this private repository access method. . . .

Both git and hg (Mercurial) can use ssl/ssh to identify users with access to a repository.
I do not know about svn, never studied or used it that much.
In the case of git, the following is the _only_ way to identify private users:
(Since git does not accept a ssh:// scheme in its command parse.)

The user, in their, ~/.ssh/config file, establishes an identity shortcut, similar to:

# Service user - access to private, access controlled repositories of user hgadm
host hguser
  user hgadm
  hostname hg.minimodding.com
  port 22
  IdentitiesOnly yes
  IdentityFile ~/.ssh/hg.minimod/hgusr_id_rsa

Where the entry for IdentityFile is the path and file name to the user's private key
that matches the user's remote public key on file with the repository access control system.

As usee by a person or by a script, the "hguser" appears instead of the scheme and authority 
fields of the URI.  
Hence, there is no scheme for a script to parse and control any "autodetect" process.

The GIT add-on package, Gitolite, does private repository authentication this way;
http://progit.org/book/ch4-8.html

The Mercurial access control package I am working on myself uses a similar authentication process.
Other private repository access controls will work in a similar manner due to the structure of
operation of remote ssh.

The reader can find additional information on private hg repository access, starting at:
http://hg.minimodding.com/repos/lua/luahg.hg/
Navigate to the /doc directory;
Select the example_install.pdf file;
Click "raw" in the listing header to grab the current pdf file in your pdf viewer;
See section 2.2.6 - Client Authority Shortcuts.

Sorry for the handsprings but the project isn't yet completed and published other than as above.

Mike
> The package's _VERSION variable defines which commit, revision, tag or
> branch should be checked out. For Git, it can be HEAD, a commit ID, a
> tag name or branch name (anything that can be checked out with `git
> checkout`). For Subversion, it must be a revision number, or HEAD.
> 
> Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 4/8] Implement basic non-wget download methods
  2010-09-02 12:37   ` Michael S. Zick
@ 2010-09-02 12:50     ` Thomas Petazzoni
  2010-09-03 12:30       ` Michael S. Zick
  0 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-02 12:50 UTC (permalink / raw)
  To: buildroot

On Thu, 2 Sep 2010 07:37:43 -0500
"Michael S. Zick" <minimod@morethan.org> wrote:

> For the cases where the protocol scheme does not appear in the URI
> that the user would input (such as private repository access via ssl)
> -
> 
> Will that _SITE_METHOD variable be able to override the autodetection?

Yes :

+ifndef $(2)_SITE_METHOD
+ ifdef $(3)_SITE_METHOD
+  $(2)_SITE_METHOD = $($(3)_SITE_METHOD)
+ else
+	# Try automatic detection using the scheme part of the URI
+	$(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call
qstrip,$($(2)_SITE))))
+ endif
+endif

So, if FOOBAR_SITE_METHOD is already defined, nothing happens. What
this thing does is :

 1. Define HOST_FOOBAR_SITE_METHOD to FOOBAR_SITE_METHOD if
    FOOBAR_SITE_METHOD is defined but not HOST_FOOBAR_SITE_METHOD

 2. Define (HOST_)FOOBAR_SITE_METHOD to an autodected scheme is
    (HOST_)FOOBAR_SITE_METHOD is not defined.

So whenever FOOBAR_SITE_METHOD is defined, it will take precedence over
the autodetection.

> Both git and hg (Mercurial) can use ssl/ssh to identify users with
> access to a repository. I do not know about svn, never studied or
> used it that much. In the case of git, the following is the _only_
> way to identify private users: (Since git does not accept a ssh://
> scheme in its command parse.)

I must be missing something: I'm using
ssh://uclibc.org/home/tpetazzoni/git/buildroot.git as a Git URL to push
things to my private Buildroot repository hosted at uclibc.org.

As far as I see, Gitolite introduces per-branch or per-tag permissions,
but plain Git already allows per-repository permissions. No ?

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 4/8] Implement basic non-wget download methods
  2010-09-02 12:50     ` Thomas Petazzoni
@ 2010-09-03 12:30       ` Michael S. Zick
  2010-09-03 13:04         ` [Buildroot] About Git through SSH Thomas Petazzoni
  0 siblings, 1 reply; 30+ messages in thread
From: Michael S. Zick @ 2010-09-03 12:30 UTC (permalink / raw)
  To: buildroot

On Thu September 2 2010, Thomas Petazzoni wrote:
> On Thu, 2 Sep 2010 07:37:43 -0500
> "Michael S. Zick" <minimod@morethan.org> wrote:
> 
> > For the cases where the protocol scheme does not appear in the URI
> > that the user would input (such as private repository access via ssl)
> > -
> > 
> > Will that _SITE_METHOD variable be able to override the autodetection?
> 
> Yes :
> 
> +ifndef $(2)_SITE_METHOD
> + ifdef $(3)_SITE_METHOD
> +  $(2)_SITE_METHOD = $($(3)_SITE_METHOD)
> + else
> +	# Try automatic detection using the scheme part of the URI
> +	$(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call
> qstrip,$($(2)_SITE))))
> + endif
> +endif
> 
> So, if FOOBAR_SITE_METHOD is already defined, nothing happens. What
> this thing does is :
> 
>  1. Define HOST_FOOBAR_SITE_METHOD to FOOBAR_SITE_METHOD if
>     FOOBAR_SITE_METHOD is defined but not HOST_FOOBAR_SITE_METHOD
> 
>  2. Define (HOST_)FOOBAR_SITE_METHOD to an autodected scheme is
>     (HOST_)FOOBAR_SITE_METHOD is not defined.
> 
> So whenever FOOBAR_SITE_METHOD is defined, it will take precedence over
> the autodetection.
> 
> > Both git and hg (Mercurial) can use ssl/ssh to identify users with
> > access to a repository. I do not know about svn, never studied or
> > used it that much. In the case of git, the following is the _only_
> > way to identify private users: (Since git does not accept a ssh://
> > scheme in its command parse.)
> 
> I must be missing something: 
>

Yup.
Please supply git version number(s).
Any additional patches or local changes / customizations to your git client?

Mike
> I'm using 
> ssh://uclibc.org/home/tpetazzoni/git/buildroot.git as a Git URL to push
> things to my private Buildroot repository hosted at uclibc.org.
> 
> As far as I see, Gitolite introduces per-branch or per-tag permissions,
> but plain Git already allows per-repository permissions. No ?
> 
> Regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-03 12:30       ` Michael S. Zick
@ 2010-09-03 13:04         ` Thomas Petazzoni
  2010-09-03 14:37           ` Michael S. Zick
  0 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-03 13:04 UTC (permalink / raw)
  To: buildroot

Hello,

On Fri, 3 Sep 2010 07:30:54 -0500
"Michael S. Zick" <minimod@morethan.org> wrote:

> Yup.
> Please supply git version number(s).

Just the normal Git from the latest Ubuntu, i.e:

$ git --version
git version 1.7.0.4

> Any additional patches or local changes / customizations to your git
> client?

No, nothing. I think as soon as your user has write access to the remote
location through SSH, git just works.

However, as I said:

> > As far as I see, Gitolite introduces per-branch or per-tag
> > permissions, but plain Git already allows per-repository
> > permissions. No ?

Maybe that's what you're looking for and which is not supported by
standard git.

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-03 13:04         ` [Buildroot] About Git through SSH Thomas Petazzoni
@ 2010-09-03 14:37           ` Michael S. Zick
  2010-09-03 15:03             ` Thomas Petazzoni
  0 siblings, 1 reply; 30+ messages in thread
From: Michael S. Zick @ 2010-09-03 14:37 UTC (permalink / raw)
  To: buildroot

On Fri September 3 2010, Thomas Petazzoni wrote:
> Hello,
> 
> On Fri, 3 Sep 2010 07:30:54 -0500
> "Michael S. Zick" <minimod@morethan.org> wrote:
> 
> > Yup.
> > Please supply git version number(s).
> 
> Just the normal Git from the latest Ubuntu, i.e:
> 
> $ git --version
> git version 1.7.0.4
> 

Ah, so, there is the difference - Apples and Oranges

I support users back to the oldest, commonly used, git versions -
Where I define that as the version in the current Debian stable release.

So the commentary in the gitolite release still applies to older git versions.
http://packages.debian.org/lenny/git-core

Somewhere between v1.5 and v1.7 they must have added parsing "ssh://" to the git client.

You might want to add a comment in the "Minimum Software Requirements" of Buildroot,
to go along with the addition of the user specified scheme feature for the case of
 "git xxx ssh://..."
style URIs

Might cut down on the end-user puzzlement of: "Why doesn't this work for me?"

Note: I think the change happened at v1.6 but I haven't checked to be certain.

Mike
> > Any additional patches or local changes / customizations to your git
> > client?
> 
> No, nothing. I think as soon as your user has write access to the remote
> location through SSH, git just works.
> 
> However, as I said:
> 
> > > As far as I see, Gitolite introduces per-branch or per-tag
> > > permissions, but plain Git already allows per-repository
> > > permissions. No ?
> 
> Maybe that's what you're looking for and which is not supported by
> standard git.
> 
> Regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-03 14:37           ` Michael S. Zick
@ 2010-09-03 15:03             ` Thomas Petazzoni
  2010-09-03 15:59               ` Michael S. Zick
  2010-09-04  1:25               ` Paul Jones
  0 siblings, 2 replies; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-03 15:03 UTC (permalink / raw)
  To: buildroot

On Fri, 3 Sep 2010 09:37:29 -0500
"Michael S. Zick" <minimod@morethan.org> wrote:

> I support users back to the oldest, commonly used, git versions -
> Where I define that as the version in the current Debian stable
> release.
> 
> So the commentary in the gitolite release still applies to older git
> versions. http://packages.debian.org/lenny/git-core
> 
> Somewhere between v1.5 and v1.7 they must have added parsing "ssh://"
> to the git client.
> 
> You might want to add a comment in the "Minimum Software
> Requirements" of Buildroot, to go along with the addition of the user
> specified scheme feature for the case of "git xxx ssh://..."
> style URIs
> 
> Might cut down on the end-user puzzlement of: "Why doesn't this work
> for me?"
> 
> Note: I think the change happened at v1.6 but I haven't checked to be
> certain.

In Buildroot, I think only publicly-available Git trees will be used as
the source URL for packages, and such trees usually use the git:// or
http:// schemes rather than ssh://, which is usually used for a
private, read-write access to a repo.

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-03 15:03             ` Thomas Petazzoni
@ 2010-09-03 15:59               ` Michael S. Zick
  2010-09-04  1:25               ` Paul Jones
  1 sibling, 0 replies; 30+ messages in thread
From: Michael S. Zick @ 2010-09-03 15:59 UTC (permalink / raw)
  To: buildroot

On Fri September 3 2010, Thomas Petazzoni wrote:
> On Fri, 3 Sep 2010 09:37:29 -0500
> "Michael S. Zick" <minimod@morethan.org> wrote:
> 
> > I support users back to the oldest, commonly used, git versions -
> > Where I define that as the version in the current Debian stable
> > release.
> > 
> > So the commentary in the gitolite release still applies to older git
> > versions. http://packages.debian.org/lenny/git-core
> > 
> > Somewhere between v1.5 and v1.7 they must have added parsing "ssh://"
> > to the git client.
> > 
> > You might want to add a comment in the "Minimum Software
> > Requirements" of Buildroot, to go along with the addition of the user
> > specified scheme feature for the case of "git xxx ssh://..."
> > style URIs
> > 
> > Might cut down on the end-user puzzlement of: "Why doesn't this work
> > for me?"
> > 
> > Note: I think the change happened at v1.6 but I haven't checked to be
> > certain.
> 
> In Buildroot, I think only publicly-available Git trees will be used as
> the source URL for packages, and such trees usually use the git:// or
> http:// schemes rather than ssh://, which is usually used for a
> private, read-write access to a repo.
> 

I only suggested that you add a comment to the software requirements for
using the new end-user specified repository field in the case of git.

Mike
> Regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-03 15:03             ` Thomas Petazzoni
  2010-09-03 15:59               ` Michael S. Zick
@ 2010-09-04  1:25               ` Paul Jones
  2010-09-04 16:58                 ` Thomas Petazzoni
  1 sibling, 1 reply; 30+ messages in thread
From: Paul Jones @ 2010-09-04  1:25 UTC (permalink / raw)
  To: buildroot

> -----Original Message-----
> From: buildroot-bounces at busybox.net [mailto:buildroot-
> bounces at busybox.net] On Behalf Of Thomas Petazzoni
> Sent: Saturday, 4 September 2010 1:03 AM
> To: buildroot at busybox.net
> Subject: Re: [Buildroot] About Git through SSH
> 
> >
> > Might cut down on the end-user puzzlement of: "Why doesn't this work
> > for me?"
> >
> > Note: I think the change happened at v1.6 but I haven't checked to be
> > certain.
> 
> In Buildroot, I think only publicly-available Git trees will be used as
the source
> URL for packages, and such trees usually use the git:// or http:// schemes
> rather than ssh://, which is usually used for a private, read-write access
to a
> repo.

Well I'm already using buildroot with a private git tree, but I don't use
ssh.

By the way, why does the source get converted to a tar.gz after the git tree
is cloned? It's quite annoying because to rebuild the package you have to
delete the tar.gz file as well as the build directory to force downloading
of the latest source.


Paul.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-04  1:25               ` Paul Jones
@ 2010-09-04 16:58                 ` Thomas Petazzoni
  2010-09-05  1:50                   ` Paul Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-04 16:58 UTC (permalink / raw)
  To: buildroot

On Sat, 4 Sep 2010 11:25:15 +1000
"Paul Jones" <paul@pauljones.id.au> wrote:

> By the way, why does the source get converted to a tar.gz after the
> git tree is cloned? It's quite annoying because to rebuild the
> package you have to delete the tar.gz file as well as the build
> directory to force downloading of the latest source.

I agree that this is not optimal, but this is the solution that best
follows the way Buildroot works currently. If we don't do this, where
should Buildroot do the clone ? In the $(BUILD_DIR) which gets deleted
by make clean ? Or in $(DL_DIR) in a directory form and then we need to
do a "cp" to the $(BUILD_DIR) when doing the build ?

In a second step, it'd be nice to be able to tell Buildroot that for
this or that package, instead of being responsible for
downloading/extracting it, it should just grab it from a given
location. This is, IMHO, a change needed to make Buildroot more usable
during the development phase, but it needs quite a bit of reflection
and discussion.

Cheers,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-04 16:58                 ` Thomas Petazzoni
@ 2010-09-05  1:50                   ` Paul Jones
  2010-09-05  3:05                     ` James J. Dines
  0 siblings, 1 reply; 30+ messages in thread
From: Paul Jones @ 2010-09-05  1:50 UTC (permalink / raw)
  To: buildroot

> -----Original Message-----
> From: buildroot-bounces at busybox.net [mailto:buildroot-
> bounces at busybox.net] On Behalf Of Thomas Petazzoni
> Sent: Sunday, 5 September 2010 2:59 AM
> To: buildroot at busybox.net
> Subject: Re: [Buildroot] About Git through SSH
> 
> On Sat, 4 Sep 2010 11:25:15 +1000
> "Paul Jones" <paul@pauljones.id.au> wrote:
> 
> > By the way, why does the source get converted to a tar.gz after the
> > git tree is cloned? It's quite annoying because to rebuild the package
> > you have to delete the tar.gz file as well as the build directory to
> > force downloading of the latest source.
> 
> I agree that this is not optimal, but this is the solution that best
follows the
> way Buildroot works currently. If we don't do this, where should Buildroot
do
> the clone ? In the $(BUILD_DIR) which gets deleted by make clean ? Or in
> $(DL_DIR) in a directory form and then we need to do a "cp" to the
> $(BUILD_DIR) when doing the build ?

I was just thinking clone it to $(BUILD_DIR), but on further thought I can
imagine that also would be annoying if your source was rather large.
Perhaps we could put an option in the makefile to force a clone everytime
the package is rebuilt?

> In a second step, it'd be nice to be able to tell Buildroot that for this
or that
> package, instead of being responsible for downloading/extracting it, it
should
> just grab it from a given location. This is, IMHO, a change needed to make
> Buildroot more usable during the development phase, but it needs quite a
> bit of reflection and discussion.

That would be great.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-05  1:50                   ` Paul Jones
@ 2010-09-05  3:05                     ` James J. Dines
  2010-09-05  3:12                       ` James J. Dines
  0 siblings, 1 reply; 30+ messages in thread
From: James J. Dines @ 2010-09-05  3:05 UTC (permalink / raw)
  To: buildroot

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 09/04/2010 09:50 PM, Paul Jones wrote:
>> -----Original Message-----
>> From: buildroot-bounces at busybox.net [mailto:buildroot-
>> bounces at busybox.net] On Behalf Of Thomas Petazzoni
>> Sent: Sunday, 5 September 2010 2:59 AM
>> To: buildroot at busybox.net
>> Subject: Re: [Buildroot] About Git through SSH
>>
>> On Sat, 4 Sep 2010 11:25:15 +1000
>> "Paul Jones" <paul@pauljones.id.au> wrote:
>>
>>> By the way, why does the source get converted to a tar.gz after the
>>> git tree is cloned? It's quite annoying because to rebuild the package
>>> you have to delete the tar.gz file as well as the build directory to
>>> force downloading of the latest source.
>>
>> I agree that this is not optimal, but this is the solution that best
> follows the
>> way Buildroot works currently. If we don't do this, where should Buildroot
> do
>> the clone ? In the $(BUILD_DIR) which gets deleted by make clean ? Or in
>> $(DL_DIR) in a directory form and then we need to do a "cp" to the
>> $(BUILD_DIR) when doing the build ?

I believe git should clone into the DL_DIR once, and only once (unless
of course you delete it from DL_DIR.)  I say this because it is source
regardless of the particular tool used to keep track of it.  Then, just
soft link to it's location in the DL_DIR from the build dir. (see also
below)
> 
> I was just thinking clone it to $(BUILD_DIR), but on further thought I can
> imagine that also would be annoying if your source was rather large.
> Perhaps we could put an option in the makefile to force a clone everytime
> the package is rebuilt?

Why would you want to do that?  You wouldn't keep downloading a tarball
once it is downloaded. Once you've cloned a repository you don't need to
do it again unless you really screw things up.  What would be nice in my
opinion is if there was an option for which commit to use with one
option being "latest" which would 'git pull' first to build the latest
version.
> 
>> In a second step, it'd be nice to be able to tell Buildroot that for this
> or that
>> package, instead of being responsible for downloading/extracting it, it
> should
>> just grab it from a given location. This is, IMHO, a change needed to make
>> Buildroot more usable during the development phase, but it needs quite a
>> bit of reflection and discussion.
> 
> That would be great.
> 
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iQEcBAEBAgAGBQJMgwjaAAoJECSpOhdQESq6xEUH+waOsX/nWQcTTAZZZ94PPSaq
EfLvodE0O+JCSAZ1rsXsjZmOBfgtGk6eE/peK+z9+5ZmG3QHGJ4yWq5nD3jFwPAG
Kasrz/8qTefXDYe2RbpgwX9yBOoUWnB4ZKMaXvRHyf+VCbXS3dUj0W8XTSmEuEcf
HEiSJ80MjUusO60uZ+0ojf9pZquWAWf5qi/qgdfmqT7T56BRDWabnoIpdFpUJXBl
J9mDSBNmHklYYU5P85QCMrPEHeuQ5wo9z0D08U0w998icg54rIX/gDPOUh5KmEYA
ZgPqhpmFh/K5QvDeIvN8tIN+jvIzEUSa9rzO4O8neI/CLV4+rgDVOehkPRLeuTE=
=g/uI
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] About Git through SSH
  2010-09-05  3:05                     ` James J. Dines
@ 2010-09-05  3:12                       ` James J. Dines
  0 siblings, 0 replies; 30+ messages in thread
From: James J. Dines @ 2010-09-05  3:12 UTC (permalink / raw)
  To: buildroot

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 09/04/2010 11:05 PM, James J. Dines wrote:
<snip>
> 
> I believe git should clone into the DL_DIR once, and only once (unless
> of course you delete it from DL_DIR.)  I say this because it is source
> regardless of the particular tool used to keep track of it.  Then, just
> soft link to it's location in the DL_DIR from the build dir. (see also
> below)
> 
Sorry for the reply to my own post. I forgot to mention that if
buildroot does softlink to the git repository the clean needs to be
careful not to delete it.  If that is too much trouble then a cp of the
tree in its current state to build dir could be done.  In order to avoid
copying the whole repository and wasting space the .git dir in the
cloned tree should not be copied of course :-)

Anyway, I'm just brainstorming here.  Hopefully it helps, but apologies
if not!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iQEcBAEBAgAGBQJMgwp/AAoJECSpOhdQESq6oIYH/iB/V6BvG0zf3P5vW5KHP1u1
MhX1rf5KvT3c5IoVEZxjaAfZo46mDHtmmrxCO2zwufYXhpCXZLeCNuhRfrpBRmqf
my1RC0kj5voSVj9le99UXty8/epCN30T8s4engBlu837mYZb+BkcqkTBUpgoSaJk
dHs3jM0hq9JmIanKgAFK4WBzawLmHPxRhtBz8amUsqotgRNLslF12Sda9cdPrXgE
mLWEX3+lEbVATSu1MpH0I3+KzQVy0ZsGg1Q7hPH590+T56Gjxy6e8vr+u6AAKlTQ
eDjLcsgMupqCZEQ3VZ2/9338o0rAUOWKz0t79jZ3Z3tHZps56RE7anjOe2CvObc=
=ZpuI
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [RESEND/PATCH] Git/Svn downloaders
  2010-09-02 12:03 ` [Buildroot] [RESEND/PATCH] Git/Svn downloaders Thomas Petazzoni
@ 2010-09-07 14:58   ` Maxime Petazzoni
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Petazzoni @ 2010-09-07 14:58 UTC (permalink / raw)
  To: buildroot

* Thomas Petazzoni <thomas.petazzoni@free-electrons.com> [2010-09-02 14:03:40]:

> FWIW, I've pushed this patch set at:
> 
>  http://git.buildroot.net/~tpetazzoni/git/buildroot/log/?h=for-2010.11/download-rework

Thanks!

- Maxime
-- 
Maxime Petazzoni <http://www.bulix.org>
 ``One by one, the penguins took away my sanity.''
Linux kernel and software developer at MontaVista Software
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20100907/4ed0ccff/attachment.pgp>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step"
  2010-09-13  6:50 [Buildroot] [pull request] Pull request for branch for-2010.11/download-rework Thomas Petazzoni
@ 2010-09-13  6:50 ` Thomas Petazzoni
  0 siblings, 0 replies; 30+ messages in thread
From: Thomas Petazzoni @ 2010-09-13  6:50 UTC (permalink / raw)
  To: buildroot

From: Maxime Petazzoni <maxime.petazzoni@bulix.org>

This reverts commit 48cf66f1a2e2c501abeee98b7a2268b0d6d2010d.

Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.package.in |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/package/Makefile.package.in b/package/Makefile.package.in
index 6f584a7..58b417b 100644
--- a/package/Makefile.package.in
+++ b/package/Makefile.package.in
@@ -402,7 +402,7 @@ $(2)_TARGET_BUILD =		$$($(2)_DIR)/.stamp_built
 $(2)_TARGET_CONFIGURE =		$$($(2)_DIR)/.stamp_configured
 $(2)_TARGET_PATCH =		$$($(2)_DIR)/.stamp_patched
 $(2)_TARGET_EXTRACT =		$$($(2)_DIR)/.stamp_extracted
-$(2)_TARGET_SOURCE ?=		$$($(2)_DIR)/.stamp_downloaded
+$(2)_TARGET_SOURCE =		$$($(2)_DIR)/.stamp_downloaded
 $(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
 $(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
 $(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2010-09-13  6:50 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-02 10:09 [Buildroot] [RESEND/PATCH] Git/Svn downloaders Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 1/8] Remove the spider feature Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 2/8] Cleanup the VCS commands configuration Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 3/8] Update defconfigs with new VCS config options Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 4/8] Implement basic non-wget download methods Maxime Petazzoni
2010-09-02 12:37   ` Michael S. Zick
2010-09-02 12:50     ` Thomas Petazzoni
2010-09-03 12:30       ` Michael S. Zick
2010-09-03 13:04         ` [Buildroot] About Git through SSH Thomas Petazzoni
2010-09-03 14:37           ` Michael S. Zick
2010-09-03 15:03             ` Thomas Petazzoni
2010-09-03 15:59               ` Michael S. Zick
2010-09-04  1:25               ` Paul Jones
2010-09-04 16:58                 ` Thomas Petazzoni
2010-09-05  1:50                   ` Paul Jones
2010-09-05  3:05                     ` James J. Dines
2010-09-05  3:12                       ` James J. Dines
2010-09-02 10:09 ` [Buildroot] [PATCH 5/8] Use the normal download method for Tremor Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 6/8] Use the normal download method for libsvgtiny Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
2010-09-02 10:19   ` [Buildroot] Missed a bug Maxime Petazzoni
2010-09-02 10:19   ` [Buildroot] [PATCH 7/8] Re-implement the source-check and external-deps targets Maxime Petazzoni
2010-09-02 10:24   ` Thomas Petazzoni
2010-09-02 10:31     ` Maxime Petazzoni
2010-09-02 10:09 ` [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step" Maxime Petazzoni
2010-09-02 10:51   ` Thomas Petazzoni
2010-09-02 10:59     ` Maxime Petazzoni
2010-09-02 12:03 ` [Buildroot] [RESEND/PATCH] Git/Svn downloaders Thomas Petazzoni
2010-09-07 14:58   ` Maxime Petazzoni
  -- strict thread matches above, loose matches on Subject: below --
2010-09-13  6:50 [Buildroot] [pull request] Pull request for branch for-2010.11/download-rework Thomas Petazzoni
2010-09-13  6:50 ` [Buildroot] [PATCH 8/8] Revert "Makefile.package.in: allow packages to override download step" Thomas Petazzoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox