Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Ceresoli <luca@lucaceresoli.net>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] package: fix WGET download method
Date: Mon, 05 Mar 2012 10:55:29 +0100	[thread overview]
Message-ID: <4F548D91.1090401@lucaceresoli.net> (raw)
In-Reply-To: <da800fd2ac3ecc63622314e0b140573b05924d7a.1330939857.git.thomas.petazzoni@free-electrons.com>

Thomas Petazzoni wrote:
> In cf2486bf317e4bbf88c801fb96183ba62be78cc8, we changed from using the
> -P option of wget (to set the output *directory*) to using the -O
> option (to set the output *file*). Unfortunately, wget -O has a
> strange behaviour: it creates an empty 0-byte file even if the
> download fails (for example when there is no network connection).
>
> The problem is that then Buildroot thinks the download was successful
> and therefore goes on with extracting the tarball.
>
> The following succession of events makes Buildroot think that the
> download has been sucessful:
>
>   * Buildroot calls the DOWNLOAD_WGET macro with the URL of the
>     official site
>
>     * It tests if the file exists in the download directory, it doesn't
>       exist.
>
>     * It calls wget. wget fails to download the file and returns an
>       error code, but leaves an empty file with the correct name in the
>       downloaded directory.
>
>   * Since the previously download failed, Buildroot tries another
>     download from the Buildroot mirror (sources.buildroot.net)
>
>     * It tests if the file exists in the download directory... and it
>       exists! So this second download returns with success, and
>       Buildroot assumes the file has been downloaded properly.
>
> This scenario brings us with the following result, where the download
> fails, but Buildroot continues its execution and tries to extract the
> tarball:
>
> $ rm /opt/dl/glib-2.30.2.tar.bz2
> rm: cannot remove `/opt/dl/glib-2.30.2.tar.bz2': No such file or directory
> $ rm -rf build/host-libglib2-2.30.2/
> $ make
> make -C /home/thomas/projets/buildroot O=/opt/outputs/udisks/.
>>>> host-libglib2 2.30.2 Downloading
> --2012-03-03 12:06:25--  http://ftp.gnome.org/pub/gnome/sources/glib/2.30/glib-2.30.2.tar.bz2
> Resolving ftp.gnome.org... failed: Name or service not known.
> wget: unable to resolve host address `ftp.gnome.org'
>>>> host-libglib2 2.30.2 Extracting
> bzcat /opt/dl//glib-2.30.2.tar.bz2 | tar --strip-components=1 -C /opt/outputs/udisks/build/host-libglib2-2.30.2  -xf -
> bzcat: Compressed file ends unexpectedly;
> 	perhaps it is corrupted?  *Possible* reason follows.
> [...]
> tar: This does not look like a tar archive
> tar: Exiting with failure status due to previous errors
> make[1]: *** [/opt/outputs/udisks/build/host-libglib2-2.30.2/.stamp_extracted] Error 2
> make: *** [all] Error 2
> $ ls -l /opt/dl/glib-2.30.2.tar.bz2
> -rw-r--r-- 1 thomas thomas 0 Mar  3 12:12 /opt/dl/glib-2.30.2.tar.bz2
>
> Therefore, this commit modifies DOWNLOAD_WGET so that it removes the
> downloaded file if wget returns with an error.
>
> Signed-off-by: Thomas Petazzoni<thomas.petazzoni@free-electrons.com>
> ---
>   package/Makefile.package.in |    8 ++++++--
>   1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> index ea44c6c..cf3ff0c 100644
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -235,10 +235,14 @@ define SHOW_EXTERNAL_DEPS_HG
>     echo $($(PKG)_SOURCE)
>   endef
>
> -
> +# Download a file using wget. Only download the file if it doesn't
> +# already exist in the download directory. If the download fails,
> +# remove the file (because wget -O creates a 0-byte file even if the
> +# download fails).
>   define DOWNLOAD_WGET
>   	test -e $(DL_DIR)/$(2) || \
> -	$(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2)
> +	$(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2) || \
> +	(rm $(DL_DIR)/$(2) ; exit 1)
>   endef
>
>   define SOURCE_CHECK_WGET

Acked-by: Luca Ceresoli <luca@lucaceresoli.net>

Luca

  parent reply	other threads:[~2012-03-05  9:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-05  9:31 [Buildroot] [pull request] Pull request for branch for-2012.05/wget-download-fix Thomas Petazzoni
2012-03-05  9:31 ` [Buildroot] [PATCH 1/1] package: fix WGET download method Thomas Petazzoni
2012-03-05  9:42   ` Baruch Siach
2012-03-05 10:04     ` Thomas Petazzoni
2012-03-05  9:55   ` Luca Ceresoli [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-03-05 10:06 [Buildroot] [pull request v2] Pull request for branch for-2012.05/wget-download-fix Thomas Petazzoni
2012-03-05 10:06 ` [Buildroot] [PATCH 1/1] package: fix WGET download method Thomas Petazzoni
2012-03-05 19:57   ` Peter Korsgaard

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=4F548D91.1090401@lucaceresoli.net \
    --to=luca@lucaceresoli.net \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox