bitbake/fetch: add try_premirror method and special case git fetcher

Add a new method, try_premirror, to the Fetch object which checks to see
whether the file needs to be fetched from a premirror.
Override this in the Git fetcher to only require a pre-mirror fetch when the
clone directory does not exist.

Fixes [BUGID 290]

Signed-off-by: Joshua Lock <josh@linux.intel.com>
This commit is contained in:
Joshua Lock
2010-09-08 14:03:41 +01:00
parent 7b580b488c
commit 7117a4458b
2 changed files with 20 additions and 2 deletions

View File

@@ -222,6 +222,18 @@ def init(urls, d, setup = True):
urldata_cache[fn] = urldata
return urldata
def try_premirror(u, ud, d):
"""
Should we try premirrors for this url, u?
We should if forcefetch is set or the localfile and md5 don't exist
"""
if ud.method.forcefetch(u, ud, d):
return True
elif os.path.exists(ud.md5) and os.path.exists(ud.localfile):
return False
else:
return True
def go(d, urls = None):
"""
Fetch all urls
@@ -235,7 +247,7 @@ def go(d, urls = None):
ud = urldata[u]
m = ud.method
if ud.localfile:
if not m.forcefetch(u, ud, d) and os.path.exists(ud.md5) and os.path.exists(ud.localfile):
if not m.try_premirror(u, ud, d):
# File already present along with md5 stamp file
# Touch md5 file to show activity
try:
@@ -245,7 +257,7 @@ def go(d, urls = None):
pass
continue
lf = bb.utils.lockfile(ud.lockfile)
if not m.forcefetch(u, ud, d) and os.path.exists(ud.md5) and os.path.exists(ud.localfile):
if not m.try_premirror(u, ud, d):
# If someone else fetched this before we got the lock,
# notice and don't try again
try:

View File

@@ -90,6 +90,12 @@ class Git(Fetch):
return True
return False
def try_premirror(self, d, ud):
if os.path.exists(ud.clonedir):
return False
return True
def go(self, loc, ud, d):
"""Fetch url"""