diff options
-rw-r--r-- | bitbake/lib/bb/fetch/__init__.py | 94 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/bzr.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/cvs.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/git.py | 9 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/hg.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/osc.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/perforce.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/svk.py | 3 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/svn.py | 5 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/wget.py | 16 |
10 files changed, 53 insertions, 99 deletions
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index ab4658bc3b..ccb60de59c 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py | |||
@@ -185,7 +185,18 @@ def go(d, urls = None): | |||
185 | pass | 185 | pass |
186 | bb.utils.unlockfile(lf) | 186 | bb.utils.unlockfile(lf) |
187 | continue | 187 | continue |
188 | m.go(u, ud, d) | 188 | |
189 | # First try fetching uri, u, from PREMIRRORS | ||
190 | mirrors = [ i.split() for i in (bb.data.getVar('PREMIRRORS', d, 1) or "").split('\n') if i ] | ||
191 | if not try_mirrors(d, u, mirrors): | ||
192 | # Next try fetching from the original uri, u | ||
193 | try: | ||
194 | m.go(u, ud, d) | ||
195 | except: | ||
196 | # Finally, try fetching uri, u, from MIRRORS | ||
197 | mirrors = [ i.split() for i in (bb.data.getVar('MIRRORS', d, 1) or "").split('\n') if i ] | ||
198 | try_mirrors (d, u, mirrors) | ||
199 | |||
189 | if ud.localfile: | 200 | if ud.localfile: |
190 | if not m.forcefetch(u, ud, d): | 201 | if not m.forcefetch(u, ud, d): |
191 | Fetch.write_md5sum(u, ud, d) | 202 | Fetch.write_md5sum(u, ud, d) |
@@ -332,6 +343,44 @@ def runfetchcmd(cmd, d, quiet = False): | |||
332 | 343 | ||
333 | return output | 344 | return output |
334 | 345 | ||
346 | def try_mirrors(d, uri, mirrors): | ||
347 | """ | ||
348 | Try to use a mirrored version of the sources. | ||
349 | This method will be automatically called before the fetchers go. | ||
350 | |||
351 | d Is a bb.data instance | ||
352 | uri is the original uri we're trying to download | ||
353 | mirrors is the list of mirrors we're going to try | ||
354 | """ | ||
355 | fpath = os.path.join(data.getVar("DL_DIR", d, 1), os.path.basename(uri)) | ||
356 | if os.access(fpath, os.R_OK): | ||
357 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % fpath) | ||
358 | return True | ||
359 | |||
360 | ld = d.createCopy() | ||
361 | for (find, replace) in mirrors: | ||
362 | newuri = uri_replace(uri, find, replace, ld) | ||
363 | if newuri != uri: | ||
364 | try: | ||
365 | ud = FetchData(newuri, ld) | ||
366 | except bb.fetch.NoMethodError: | ||
367 | bb.msg.debug(1, bb.msg.domain.Fetcher, "No method for %s" % url) | ||
368 | continue | ||
369 | |||
370 | ud.setup_localpath(ld) | ||
371 | |||
372 | try: | ||
373 | ud.method.go(newuri, ud, ld) | ||
374 | return True | ||
375 | except (bb.fetch.MissingParameterError, | ||
376 | bb.fetch.FetchError, | ||
377 | bb.fetch.MD5SumError): | ||
378 | import sys | ||
379 | (type, value, traceback) = sys.exc_info() | ||
380 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Mirror fetch failure: %s" % value) | ||
381 | return False | ||
382 | |||
383 | |||
335 | class FetchData(object): | 384 | class FetchData(object): |
336 | """ | 385 | """ |
337 | A class which represents the fetcher state for a given URI. | 386 | A class which represents the fetcher state for a given URI. |
@@ -489,49 +538,6 @@ class Fetch(object): | |||
489 | 538 | ||
490 | localcount_internal_helper = staticmethod(localcount_internal_helper) | 539 | localcount_internal_helper = staticmethod(localcount_internal_helper) |
491 | 540 | ||
492 | def try_mirror(d, tarfn): | ||
493 | """ | ||
494 | Try to use a mirrored version of the sources. We do this | ||
495 | to avoid massive loads on foreign cvs and svn servers. | ||
496 | This method will be used by the different fetcher | ||
497 | implementations. | ||
498 | |||
499 | d Is a bb.data instance | ||
500 | tarfn is the name of the tarball | ||
501 | """ | ||
502 | tarpath = os.path.join(data.getVar("DL_DIR", d, 1), tarfn) | ||
503 | if os.access(tarpath, os.R_OK): | ||
504 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % tarfn) | ||
505 | return True | ||
506 | |||
507 | pn = data.getVar('PN', d, True) | ||
508 | src_tarball_stash = None | ||
509 | if pn: | ||
510 | src_tarball_stash = (data.getVar('SRC_TARBALL_STASH_%s' % pn, d, True) or data.getVar('CVS_TARBALL_STASH_%s' % pn, d, True) or data.getVar('SRC_TARBALL_STASH', d, True) or data.getVar('CVS_TARBALL_STASH', d, True) or "").split() | ||
511 | |||
512 | ld = d.createCopy() | ||
513 | for stash in src_tarball_stash: | ||
514 | url = stash + tarfn | ||
515 | try: | ||
516 | ud = FetchData(url, ld) | ||
517 | except bb.fetch.NoMethodError: | ||
518 | bb.msg.debug(1, bb.msg.domain.Fetcher, "No method for %s" % url) | ||
519 | continue | ||
520 | |||
521 | ud.setup_localpath(ld) | ||
522 | |||
523 | try: | ||
524 | ud.method.go(url, ud, ld) | ||
525 | return True | ||
526 | except (bb.fetch.MissingParameterError, | ||
527 | bb.fetch.FetchError, | ||
528 | bb.fetch.MD5SumError): | ||
529 | import sys | ||
530 | (type, value, traceback) = sys.exc_info() | ||
531 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Tarball stash fetch failure: %s" % value) | ||
532 | return False | ||
533 | try_mirror = staticmethod(try_mirror) | ||
534 | |||
535 | def verify_md5sum(ud, got_sum): | 541 | def verify_md5sum(ud, got_sum): |
536 | """ | 542 | """ |
537 | Verify the md5sum we wanted with the one we got | 543 | Verify the md5sum we wanted with the one we got |
diff --git a/bitbake/lib/bb/fetch/bzr.py b/bitbake/lib/bb/fetch/bzr.py index b27fb63d07..c6e33c3343 100644 --- a/bitbake/lib/bb/fetch/bzr.py +++ b/bitbake/lib/bb/fetch/bzr.py | |||
@@ -91,11 +91,6 @@ class Bzr(Fetch): | |||
91 | def go(self, loc, ud, d): | 91 | def go(self, loc, ud, d): |
92 | """Fetch url""" | 92 | """Fetch url""" |
93 | 93 | ||
94 | # try to use the tarball stash | ||
95 | if Fetch.try_mirror(d, ud.localfile): | ||
96 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping bzr checkout." % ud.localpath) | ||
97 | return | ||
98 | |||
99 | if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK): | 94 | if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK): |
100 | bzrcmd = self._buildbzrcommand(ud, d, "update") | 95 | bzrcmd = self._buildbzrcommand(ud, d, "update") |
101 | bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Update %s" % loc) | 96 | bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Update %s" % loc) |
diff --git a/bitbake/lib/bb/fetch/cvs.py b/bitbake/lib/bb/fetch/cvs.py index 90a006500e..443f521317 100644 --- a/bitbake/lib/bb/fetch/cvs.py +++ b/bitbake/lib/bb/fetch/cvs.py | |||
@@ -77,11 +77,6 @@ class Cvs(Fetch): | |||
77 | 77 | ||
78 | def go(self, loc, ud, d): | 78 | def go(self, loc, ud, d): |
79 | 79 | ||
80 | # try to use the tarball stash | ||
81 | if not self.forcefetch(loc, ud, d) and Fetch.try_mirror(d, ud.localfile): | ||
82 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping cvs checkout." % ud.localpath) | ||
83 | return | ||
84 | |||
85 | method = "pserver" | 80 | method = "pserver" |
86 | if "method" in ud.parm: | 81 | if "method" in ud.parm: |
87 | method = ud.parm["method"] | 82 | method = ud.parm["method"] |
diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py index 9430582d55..10b396bb00 100644 --- a/bitbake/lib/bb/fetch/git.py +++ b/bitbake/lib/bb/fetch/git.py | |||
@@ -82,10 +82,6 @@ class Git(Fetch): | |||
82 | def go(self, loc, ud, d): | 82 | def go(self, loc, ud, d): |
83 | """Fetch url""" | 83 | """Fetch url""" |
84 | 84 | ||
85 | if Fetch.try_mirror(d, ud.localfile): | ||
86 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists (or was stashed). Skipping git checkout." % ud.localpath) | ||
87 | return | ||
88 | |||
89 | if ud.user: | 85 | if ud.user: |
90 | username = ud.user + '@' | 86 | username = ud.user + '@' |
91 | else: | 87 | else: |
@@ -97,11 +93,12 @@ class Git(Fetch): | |||
97 | codir = os.path.join(ud.clonedir, coname) | 93 | codir = os.path.join(ud.clonedir, coname) |
98 | 94 | ||
99 | if not os.path.exists(ud.clonedir): | 95 | if not os.path.exists(ud.clonedir): |
100 | if Fetch.try_mirror(d, ud.mirrortarball): | 96 | try: |
97 | Fetch.try_mirrors(ud.mirrortarball) | ||
101 | bb.mkdirhier(ud.clonedir) | 98 | bb.mkdirhier(ud.clonedir) |
102 | os.chdir(ud.clonedir) | 99 | os.chdir(ud.clonedir) |
103 | runfetchcmd("tar -xzf %s" % (repofile), d) | 100 | runfetchcmd("tar -xzf %s" % (repofile), d) |
104 | else: | 101 | except: |
105 | runfetchcmd("git clone -n %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.clonedir), d) | 102 | runfetchcmd("git clone -n %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.clonedir), d) |
106 | 103 | ||
107 | os.chdir(ud.clonedir) | 104 | os.chdir(ud.clonedir) |
diff --git a/bitbake/lib/bb/fetch/hg.py b/bitbake/lib/bb/fetch/hg.py index 08cb61fc28..d0756382f8 100644 --- a/bitbake/lib/bb/fetch/hg.py +++ b/bitbake/lib/bb/fetch/hg.py | |||
@@ -116,11 +116,6 @@ class Hg(Fetch): | |||
116 | def go(self, loc, ud, d): | 116 | def go(self, loc, ud, d): |
117 | """Fetch url""" | 117 | """Fetch url""" |
118 | 118 | ||
119 | # try to use the tarball stash | ||
120 | if Fetch.try_mirror(d, ud.localfile): | ||
121 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping hg checkout." % ud.localpath) | ||
122 | return | ||
123 | |||
124 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") | 119 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") |
125 | 120 | ||
126 | if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK): | 121 | if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK): |
diff --git a/bitbake/lib/bb/fetch/osc.py b/bitbake/lib/bb/fetch/osc.py index 2c34caf6c9..548dd9d074 100644 --- a/bitbake/lib/bb/fetch/osc.py +++ b/bitbake/lib/bb/fetch/osc.py | |||
@@ -91,11 +91,6 @@ class Osc(Fetch): | |||
91 | Fetch url | 91 | Fetch url |
92 | """ | 92 | """ |
93 | 93 | ||
94 | # Try to use the tarball stash | ||
95 | if Fetch.try_mirror(d, ud.localfile): | ||
96 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping osc checkout." % ud.localpath) | ||
97 | return | ||
98 | |||
99 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") | 94 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") |
100 | 95 | ||
101 | if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK): | 96 | if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK): |
diff --git a/bitbake/lib/bb/fetch/perforce.py b/bitbake/lib/bb/fetch/perforce.py index 394f5a2253..e2c3421089 100644 --- a/bitbake/lib/bb/fetch/perforce.py +++ b/bitbake/lib/bb/fetch/perforce.py | |||
@@ -124,11 +124,6 @@ class Perforce(Fetch): | |||
124 | Fetch urls | 124 | Fetch urls |
125 | """ | 125 | """ |
126 | 126 | ||
127 | # try to use the tarball stash | ||
128 | if Fetch.try_mirror(d, ud.localfile): | ||
129 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping perforce checkout." % ud.localpath) | ||
130 | return | ||
131 | |||
132 | (host,depot,user,pswd,parm) = Perforce.doparse(loc, d) | 127 | (host,depot,user,pswd,parm) = Perforce.doparse(loc, d) |
133 | 128 | ||
134 | if depot.find('/...') != -1: | 129 | if depot.find('/...') != -1: |
diff --git a/bitbake/lib/bb/fetch/svk.py b/bitbake/lib/bb/fetch/svk.py index 120dad9d4e..a17ac04d21 100644 --- a/bitbake/lib/bb/fetch/svk.py +++ b/bitbake/lib/bb/fetch/svk.py | |||
@@ -62,9 +62,6 @@ class Svk(Fetch): | |||
62 | def go(self, loc, ud, d): | 62 | def go(self, loc, ud, d): |
63 | """Fetch urls""" | 63 | """Fetch urls""" |
64 | 64 | ||
65 | if not self.forcefetch(loc, ud, d) and Fetch.try_mirror(d, ud.localfile): | ||
66 | return | ||
67 | |||
68 | svkroot = ud.host + ud.path | 65 | svkroot = ud.host + ud.path |
69 | 66 | ||
70 | svkcmd = "svk co -r {%s} %s/%s" % (ud.date, svkroot, ud.module) | 67 | svkcmd = "svk co -r {%s} %s/%s" % (ud.date, svkroot, ud.module) |
diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py index eef9862a84..ba9f6ab109 100644 --- a/bitbake/lib/bb/fetch/svn.py +++ b/bitbake/lib/bb/fetch/svn.py | |||
@@ -136,11 +136,6 @@ class Svn(Fetch): | |||
136 | def go(self, loc, ud, d): | 136 | def go(self, loc, ud, d): |
137 | """Fetch url""" | 137 | """Fetch url""" |
138 | 138 | ||
139 | # try to use the tarball stash | ||
140 | if Fetch.try_mirror(d, ud.localfile): | ||
141 | bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping svn checkout." % ud.localpath) | ||
142 | return | ||
143 | |||
144 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") | 139 | bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'") |
145 | 140 | ||
146 | if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK): | 141 | if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK): |
diff --git a/bitbake/lib/bb/fetch/wget.py b/bitbake/lib/bb/fetch/wget.py index fd93c7ec46..ae1c6ad136 100644 --- a/bitbake/lib/bb/fetch/wget.py +++ b/bitbake/lib/bb/fetch/wget.py | |||
@@ -30,7 +30,6 @@ import bb | |||
30 | from bb import data | 30 | from bb import data |
31 | from bb.fetch import Fetch | 31 | from bb.fetch import Fetch |
32 | from bb.fetch import FetchError | 32 | from bb.fetch import FetchError |
33 | from bb.fetch import uri_replace | ||
34 | 33 | ||
35 | class Wget(Fetch): | 34 | class Wget(Fetch): |
36 | """Class to fetch urls via 'wget'""" | 35 | """Class to fetch urls via 'wget'""" |
@@ -105,24 +104,9 @@ class Wget(Fetch): | |||
105 | data.setVar('OVERRIDES', "wget:" + data.getVar('OVERRIDES', localdata), localdata) | 104 | data.setVar('OVERRIDES', "wget:" + data.getVar('OVERRIDES', localdata), localdata) |
106 | data.update_data(localdata) | 105 | data.update_data(localdata) |
107 | 106 | ||
108 | premirrors = [ i.split() for i in (data.getVar('PREMIRRORS', localdata, 1) or "").split('\n') if i ] | ||
109 | for (find, replace) in premirrors: | ||
110 | newuri = uri_replace(uri, find, replace, d) | ||
111 | if newuri != uri: | ||
112 | if fetch_uri(newuri, ud, localdata): | ||
113 | return True | ||
114 | |||
115 | if fetch_uri(uri, ud, localdata): | 107 | if fetch_uri(uri, ud, localdata): |
116 | return True | 108 | return True |
117 | 109 | ||
118 | # try mirrors | ||
119 | mirrors = [ i.split() for i in (data.getVar('MIRRORS', localdata, 1) or "").split('\n') if i ] | ||
120 | for (find, replace) in mirrors: | ||
121 | newuri = uri_replace(uri, find, replace, d) | ||
122 | if newuri != uri: | ||
123 | if fetch_uri(newuri, ud, localdata): | ||
124 | return True | ||
125 | |||
126 | raise FetchError(uri) | 110 | raise FetchError(uri) |
127 | 111 | ||
128 | 112 | ||