summaryrefslogtreecommitdiff
path: root/bitbake/lib/bb/fetch
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2010-09-08 14:03:41 +0100
committerJoshua Lock <josh@linux.intel.com>2010-09-08 14:25:24 +0100
commit7117a4458b0bf25dbe380f01e98e236ec3856e26 (patch)
tree6d13f3e6a826eadfd159a47d7b1e8831c4c3201b /bitbake/lib/bb/fetch
parent7b580b488cb60ce4166ef2539496e83385779aa7 (diff)
downloadopenembedded-core-7117a4458b0bf25dbe380f01e98e236ec3856e26.tar.gz
openembedded-core-7117a4458b0bf25dbe380f01e98e236ec3856e26.tar.bz2
openembedded-core-7117a4458b0bf25dbe380f01e98e236ec3856e26.zip
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>
Diffstat (limited to 'bitbake/lib/bb/fetch')
-rw-r--r--bitbake/lib/bb/fetch/__init__.py16
-rw-r--r--bitbake/lib/bb/fetch/git.py6
2 files changed, 20 insertions, 2 deletions
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py
index 8d7ec8036c..2b0b288df0 100644
--- a/bitbake/lib/bb/fetch/__init__.py
+++ b/bitbake/lib/bb/fetch/__init__.py
@@ -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:
diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py
index b6126cbe91..938e0c08ba 100644
--- a/bitbake/lib/bb/fetch/git.py
+++ b/bitbake/lib/bb/fetch/git.py
@@ -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"""