[poky] [denzil][PATCH] bitbake: fetch2: Explicitly check for mirror tarballs in mirror handling code
Khem Raj
raj.khem at gmail.com
Thu Jun 28 13:48:00 PDT 2012
ignore this was not meant to be sent
On Thu, Jun 28, 2012 at 1:42 PM, Khem Raj <raj.khem at gmail.com> wrote:
> From: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> With support for things like git:// -> git:// urls, we need to be
> more explicity about the mirrortarball check since we need to fall
> through to the following code in other cases.
>
> (From Poky rev: 28e858cd6f7509468ef3e527a86820b9e06044db)
>
> (Bitbake rev: a2459f5ca2f517964287f9a7c666a6856434e631)
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> Conflicts:
>
> bitbake/lib/bb/fetch2/__init__.py
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
> bitbake/lib/bb/fetch2/__init__.py | 55 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
> index 414cc2b..f70cb19 100644
> --- a/bitbake/lib/bb/fetch2/__init__.py
> +++ b/bitbake/lib/bb/fetch2/__init__.py
> @@ -446,6 +446,61 @@ def check_network_access(d, info = "", url = None):
> else:
> logger.debug(1, "Fetcher accessed the network with the command %s" % info)
>
> +def try_mirror_url(newuri, origud, ud, ld, check = False):
> + # Return of None or a value means we're finished
> + # False means try another url
> + try:
> + if check:
> + found = ud.method.checkstatus(newuri, ud, ld)
> + if found:
> + return found
> + return False
> +
> + os.chdir(ld.getVar("DL_DIR", True))
> +
> + if not os.path.exists(ud.donestamp) or ud.method.need_update(newuri, ud, ld):
> + ud.method.download(newuri, ud, ld)
> + if hasattr(ud.method,"build_mirror_data"):
> + ud.method.build_mirror_data(newuri, ud, ld)
> +
> + if not ud.localpath or not os.path.exists(ud.localpath):
> + return False
> +
> + if ud.localpath == origud.localpath:
> + return ud.localpath
> +
> + # We may be obtaining a mirror tarball which needs further processing by the real fetcher
> + # If that tarball is a local file:// we need to provide a symlink to it
> + dldir = ld.getVar("DL_DIR", True)
> + if origud.mirrortarball and os.path.basename(ud.localpath) == os.path.basename(origud.mirrortarball) \
> + and os.path.basename(ud.localpath) != os.path.basename(origud.localpath):
> + open(ud.donestamp, 'w').close()
> + dest = os.path.join(dldir, os.path.basename(ud.localpath))
> + if not os.path.exists(dest):
> + os.symlink(ud.localpath, dest)
> + return None
> + # Otherwise the result is a local file:// and we symlink to it
> + if not os.path.exists(origud.localpath):
> + os.symlink(ud.localpath, origud.localpath)
> + update_stamp(newuri, origud, ld)
> + return ud.localpath
> +
> + except bb.fetch2.NetworkAccess:
> + raise
> +
> + except bb.fetch2.BBFetchException as e:
> + if isinstance(e, ChecksumError):
> + logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (newuri, origud.url))
> + logger.warn(str(e))
> + else:
> + logger.debug(1, "Mirror fetch failure for url %s (original url: %s)" % (newuri, origud.url))
> + logger.debug(1, str(e))
> + try:
> + ud.method.clean(ud, ld)
> + except UnboundLocalError:
> + pass
> + return False
> +
> def try_mirrors(d, origud, mirrors, check = False):
> """
> Try to use a mirrored version of the sources.
> --
> 1.7.9.5
>
More information about the poky
mailing list