All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] DOWNLOAD: change $1=DIRECTORY_URL, $2=FILE_NAME to $1=FULL_FILE_URL, $2=FILE_NAME
Date: Thu, 16 Feb 2012 00:40:17 +0100	[thread overview]
Message-ID: <201202160040.17980.arnout@mind.be> (raw)
In-Reply-To: <1329339938-14441-1-git-send-email-arnout@mind.be>

On Wednesday 15 February 2012 22:05:38 Arnout Vandecappelle (Essensium/Mind) wrote:
> From: "Alvaro G. M" <alvaro.gamez@hazent.com>
> 
> This patch modifies the definition of DOWNLOAD to receive two arguments.
> 
> I think this is the generic solution to the problem, even though it is a
> change to the API.
> 
> However, by making the second parameter optional, it could be possible to reduce
> code. To keep the more generic way, the .mk files that needed to be changed
> to the new API are kept with both arguments to the call of the function.

 It would indeed be a good idea to make the second parameter optional.  And
in that case, I would leave out the second parameter whenever possible.


> Same thing with the, to my knowledge, unused SOURCE_CHECK_WGET and SCP functions.

 It is used for 'make source-check'.


> The difference is that now $1 stores the full URL of the file, whereas $2
> stores the name of the file as we want it to be named after download
> complets.
         ^completes


> For example, a full copy-paste from Xilinx git:
> URL='http://git.xilinx.com/?p=xldk/microblaze_v2.0_le.git;a=blob;f=microblazeel-unknown-linux-gnu.tgz;h=d7b493c5dbcc24ba9cc3be2e4c14d6d9701e6805;hb=HEAD'
> FILE='microblazeel-unknown-linux-gnu.tgz'
> 
> $(call DOWNLOAD,$(URL),$(FILE))
> 
> In case we know for sure the downloaded file is going to have the name we
> want, we can omit the second parameter:
> 
> URL=ftp://ftp.idsoftware.com/idstuff/doom/doom-$(DOOM_WAD_VERSION).wad.gz
> $(call DOWNLOAD,$(URL))

 Sounds like a great plan!



[snip]
> diff --git a/docs/buildroot.html b/docs/buildroot.html
> index ddfb20a..e0f6ad8 100644
> --- a/docs/buildroot.html
> +++ b/docs/buildroot.html
 The manually maintained buildroot.html is deprecated and should be 
removed Real Soon Now (Peter?).

> --- a/docs/manual/adding-packages-handwritten.txt
> +++ b/docs/manual/adding-packages-handwritten.txt
> @@ -22,7 +22,7 @@ existing manual makefiles and to help understand how they work.*
>  11: LIBFOO_TARGET_BINARY:=usr/bin/foo
>  12:
>  13: $(DL_DIR)/$(LIBFOO_SOURCE):
> -14: 	$(call DOWNLOAD,$(LIBFOO_SITE),$(LIBFOO_SOURCE))
> +14: 	$(call DOWNLOAD,$(LIBFOO_SITE)/$(LIBFOO_SOURCE),$(LIBFOO_SOURCE))

 Leave out the second parameter in the example here.

>  15:
>  16: $(LIBFOO_DIR)/.source: $(DL_DIR)/$(LIBFOO_SOURCE)
>  17: 	$(ZCAT) $(DL_DIR)/$(LIBFOO_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
> diff --git a/linux/linux.mk b/linux/linux.mk
> index ae236d4..d1a05a1 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -98,7 +98,7 @@ define LINUX_DOWNLOAD_PATCHES
>  	$(if $(LINUX_PATCHES),
>  		@$(call MESSAGE,"Download additional patches"))
>  	$(foreach patch,$(filter ftp://% http://%,$(LINUX_PATCHES)),\
> -		$(call DOWNLOAD,$(dir $(patch)),$(notdir $(patch)))$(sep))
> +		$(call DOWNLOAD,$(patch),$(notdir $(patch)))$(sep))

 So this could become 
	$(call DOWNLOAD,$(patch))$(sep))
right?  That's a
tremendous improvement!

>  endef
>  
>  LINUX_POST_DOWNLOAD_HOOKS += LINUX_DOWNLOAD_PATCHES
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> index 33461b4..3714de0 100644
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -203,11 +203,11 @@ endef
>  # to prepend the path with a slash: scp://[user@]host:/absolutepath
>  define DOWNLOAD_SCP
>  	test -e $(DL_DIR)/$(2) || \
> -	$(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
> +	$(SCP) $(call stripurischeme,$(call qstrip,$(1))) $(DL_DIR)/$(2)

 While you're at it, maybe you can add quotes, i.e.
	$(SCP) '$(call stripurischeme,$(call qstrip,$(1)))' $(DL_DIR)/$(2)

 Note that the second parameter doesn't have to be quoted - we do this
precisely to make sure it's a safe file.

>  endef
>  
>  define SOURCE_CHECK_SCP
> -	$(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
> +	$(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1),:) > /dev/null
>  endef
>  
>  define SHOW_EXTERNAL_DEPS_SCP
> @@ -237,12 +237,16 @@ endef
>  
>  
>  define DOWNLOAD_WGET
> -	test -e $(DL_DIR)/$(2) || \
> -	$(WGET) -P $(DL_DIR) $(call qstrip,$(1))/$(2)
> +	if test -n "$(2)"; then \
> +		test -e $(DL_DIR)/$(2) || \
> +		$(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1)); \
> +	else \
> +		$(WGET) $(call qstrip,$(1)) ;\
> +	fi

 The test should be there also when defaulting $(2).  So, to make
life easier, the default should be set in the DOWNLOAD macro itself.

 Also, the call to the DOWNLOAD macro in the GENTARGETS wasn't updated.
You should replace the , with a / there.

>  endef
>  
>  define SOURCE_CHECK_WGET
> -  $(WGET) --spider $(call qstrip,$(1))/$(2)
> +  $(WGET) --spider $(call qstrip,$(1))
>  endef
>  
>  define SHOW_EXTERNAL_DEPS_WGET
> diff --git a/package/cups/cups.mk b/package/cups/cups.mk
> index 4e8db71..ed2e72c 100644
> --- a/package/cups/cups.mk
> +++ b/package/cups/cups.mk
> @@ -65,7 +65,7 @@ else
>  endif
>  
>  $(DL_DIR)/$(CUPS_SOURCE):
> -	 $(call DOWNLOAD,$(CUPS_SITE),$(CUPS_SOURCE))
> +	 $(call DOWNLOAD,$(CUPS_SITE)/$(CUPS_SOURCE),$(CUPS_SOURCE))

 As I mentioned before: use the default, remove the second $(CUPS_SOURCE).
And the same for all other packages, of course.

[snip]


 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

  reply	other threads:[~2012-02-15 23:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-15 20:31 [Buildroot] [PATCH] DOWNLOAD: change $1=DIRECTORY_URL, $2=FILE_NAME to $1=FULL_FILE_URL, $2=FILE_NAME Alvaro Gamez
2012-02-15 20:36 ` Alvaro Gamez
2012-02-15 21:05 ` Arnout Vandecappelle
2012-02-15 23:40   ` Arnout Vandecappelle [this message]
2012-02-16  8:31     ` Alvaro Gamez
2012-02-16  9:07       ` Arnout Vandecappelle
2012-02-16 18:15     ` Alvaro G. M
2012-02-16 22:38       ` Arnout Vandecappelle
2012-02-17  8:27         ` Alvaro Gamez
2012-02-17  9:14           ` Arnout Vandecappelle
2012-02-17 11:10             ` Alvaro G. M
2012-02-18 12:09               ` Arnout Vandecappelle
2012-02-18 12:11                 ` Alvaro Gamez
2012-02-18 12:15                 ` Alvaro G. M

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201202160040.17980.arnout@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.