All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yu Ke <ke.yu@intel.com>
To: Yu Ke <ke.yu@intel.com>
Cc: bitbake-devel@lists.openembedded.org
Subject: Re: [PATCH 1/1] fetcher2: retry mirror if upstream checksum mismatch
Date: Fri, 08 Jul 2011 10:41:26 +0800	[thread overview]
Message-ID: <4E166E56.4040103@intel.com> (raw)
In-Reply-To: <2deaf320be6e019b2f2dad10463fb1bd77f98bbf.1309870780.git.ke.yu@intel.com>

Ping. any comment on this one?

on 2011-7-5 21:11, Yu Ke wrote:
> This patch is for [YOCTO #1085] fix.
>
> If the upstream fails a checksum, retry from the MIRROR before giving up.
> This will add more robust fetching if an upstream serves a bad file or webpage.
>
> fetching of distcc prior to the move from samba ->  googlecode is a good example
> of this.
>
> Signed-off-by: Yu Ke<ke.yu@intel.com>
> ---
>   bitbake/lib/bb/fetch2/__init__.py |   27 ++++++++++++++++-----------
>   1 files changed, 16 insertions(+), 11 deletions(-)
>
> diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
> index e9a64c5..bb9dbbe 100644
> --- a/bitbake/lib/bb/fetch2/__init__.py
> +++ b/bitbake/lib/bb/fetch2/__init__.py
> @@ -278,6 +278,15 @@ def verify_checksum(u, ud, d):
>       if BB_STRICT_CHECKSUM = "1" then return false as unmatched, otherwise return true as
>       matched
>       """
> +    # Only check the checksums if we've not seen this item before
> +    if os.path.exists(ud.donestamp):
> +        # Touch the done stamp file to show active use of the download
> +        try:
> +            os.utime(ud.donestamp, None)
> +        except:
> +            # Errors aren't fatal here
> +            pass
> +        return
>
>       if not ud.type in ["http", "https", "ftp", "ftps"]:
>           return
> @@ -300,6 +309,9 @@ def verify_checksum(u, ud, d):
>       if ud.sha256_expected != sha256data:
>           raise SHA256SumError(ud.localpath, ud.sha256_expected, sha256data, u)
>
> +    # Create the stamp to avoid duplicate checking
> +    open(ud.donestamp, 'w').close()
> +
>   def subprocess_setup():
>       import signal
>       # Python installs a SIGPIPE handler by default. This is usually not what
> @@ -932,6 +944,9 @@ class Fetch(object):
>                           if hasattr(m, "build_mirror_data"):
>                               m.build_mirror_data(u, ud, self.d)
>                           localpath = ud.localpath
> +                        # early checksum verify, so that if checksum mismatched,
> +                        # fetcher still have chance to fetch from mirror
> +                        verify_checksum(u, ud, self.d)
>
>                       except bb.fetch2.NetworkAccess:
>                           raise
> @@ -948,17 +963,7 @@ class Fetch(object):
>                   if not localpath or ((not os.path.exists(localpath)) and localpath.find("*") == -1):
>                       raise FetchError("Unable to fetch URL %s from any source." % u, u)
>
> -                if os.path.exists(ud.donestamp):
> -                    # Touch the done stamp file to show active use of the download
> -                    try:
> -                        os.utime(ud.donestamp, None)
> -                    except:
> -                        # Errors aren't fatal here
> -                        pass
> -                else:
> -                    # Only check the checksums if we've not seen this item before, then create the stamp
> -                    verify_checksum(u, ud, self.d)
> -                    open(ud.donestamp, 'w').close()
> +                verify_checksum(u, ud, self.d)
>
>               finally:
>                   bb.utils.unlockfile(lf)




  reply	other threads:[~2011-07-08  2:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 13:11 [PATCH 0/1] fetcher2: retry mirror if upstream checksum mismatch Yu Ke
2011-07-05 13:11 ` [PATCH 1/1] " Yu Ke
2011-07-08  2:41   ` Yu Ke [this message]
2011-07-12  9:41   ` Richard Purdie
2011-07-13  9:08 [PATCH 0/1] fetcher2: retry mirror if upstream checksum mismatch V2 Yu Ke
2011-07-13  9:08 ` [PATCH 1/1] fetcher2: retry mirror if upstream checksum mismatch Yu Ke
2011-07-13 11:13   ` Richard Purdie

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=4E166E56.4040103@intel.com \
    --to=ke.yu@intel.com \
    --cc=bitbake-devel@lists.openembedded.org \
    /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.