diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-02-19 23:05:11 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-02-19 23:07:23 -0800 |
| commit | 7d22ef28e64de06b6238d0ef9b664c0bee6efa46 (patch) | |
| tree | 3bbd32be336c32cc0cf2973c5e0d1bea268d5387 | |
| parent | 6bf55c6e67b371c0467ae1be4d7f713d6a3dcf3b (diff) | |
| download | poky-1.4_M4.tar.gz | |
bitbake: Revert "fetch2: Adapt encode/decode url to use URI class"1.4_M4.rc11.4_M4.final1.4_M41.4_M4
This reverts commit 21fe2683aefde10e847e66c11c26d4f4c1e07cfd
since bitbake-selftest doesn't pass when this is applied and
we're seeing multiple build failures from this change.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 66 |
1 files changed, 49 insertions, 17 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index 8118fc2510..4cfe08957d 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
| @@ -322,9 +322,40 @@ def decodeurl(url): | |||
| 322 | user, password, parameters). | 322 | user, password, parameters). |
| 323 | """ | 323 | """ |
| 324 | 324 | ||
| 325 | urlo = URI(url) | 325 | m = re.compile('(?P<type>[^:]*)://((?P<user>.+)@)?(?P<location>[^;]+)(;(?P<parm>.*))?').match(url) |
| 326 | return (urlo.scheme, urlo.hostport, urlo.path, | 326 | if not m: |
| 327 | urlo.username, urlo.password, urlo.params) | 327 | raise MalformedUrl(url) |
| 328 | |||
| 329 | type = m.group('type') | ||
| 330 | location = m.group('location') | ||
| 331 | if not location: | ||
| 332 | raise MalformedUrl(url) | ||
| 333 | user = m.group('user') | ||
| 334 | parm = m.group('parm') | ||
| 335 | |||
| 336 | locidx = location.find('/') | ||
| 337 | if locidx != -1 and type.lower() != 'file': | ||
| 338 | host = location[:locidx] | ||
| 339 | path = location[locidx:] | ||
| 340 | else: | ||
| 341 | host = "" | ||
| 342 | path = location | ||
| 343 | if user: | ||
| 344 | m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user) | ||
| 345 | if m: | ||
| 346 | user = m.group('user') | ||
| 347 | pswd = m.group('pswd') | ||
| 348 | else: | ||
| 349 | user = '' | ||
| 350 | pswd = '' | ||
| 351 | |||
| 352 | p = {} | ||
| 353 | if parm: | ||
| 354 | for s in parm.split(';'): | ||
| 355 | s1, s2 = s.split('=') | ||
| 356 | p[s1] = s2 | ||
| 357 | |||
| 358 | return type, host, urllib.unquote(path), user, pswd, p | ||
| 328 | 359 | ||
| 329 | def encodeurl(decoded): | 360 | def encodeurl(decoded): |
| 330 | """Encodes a URL from tokens (scheme, network location, path, | 361 | """Encodes a URL from tokens (scheme, network location, path, |
| @@ -333,26 +364,27 @@ def encodeurl(decoded): | |||
| 333 | 364 | ||
| 334 | type, host, path, user, pswd, p = decoded | 365 | type, host, path, user, pswd, p = decoded |
| 335 | 366 | ||
| 336 | urlo = URI() | ||
| 337 | |||
| 338 | if not path: | 367 | if not path: |
| 339 | raise MissingParameterError('path', "encoded from the data %s" % str(decoded)) | 368 | raise MissingParameterError('path', "encoded from the data %s" % str(decoded)) |
| 340 | if not type: | 369 | if not type: |
| 341 | raise MissingParameterError('type', "encoded from the data %s" % str(decoded)) | 370 | raise MissingParameterError('type', "encoded from the data %s" % str(decoded)) |
| 342 | 371 | url = '%s://' % type | |
| 343 | urlo.scheme = type | 372 | if user and type != "file": |
| 344 | urlo.path = path | 373 | url += "%s" % user |
| 345 | 374 | if pswd: | |
| 346 | if host: | 375 | url += ":%s" % pswd |
| 347 | urlo.hostname = host | 376 | url += "@" |
| 348 | if user: | 377 | if host and type != "file": |
| 349 | urlo.username = user | 378 | url += "%s" % host |
| 350 | if pswd: | 379 | # Standardise path to ensure comparisons work |
| 351 | urlo.password = pswd | 380 | while '//' in path: |
| 381 | path = path.replace("//", "/") | ||
| 382 | url += "%s" % urllib.quote(path) | ||
| 352 | if p: | 383 | if p: |
| 353 | urlo.params = p | 384 | for parm in p: |
| 385 | url += ";%s=%s" % (parm, p[parm]) | ||
| 354 | 386 | ||
| 355 | return str(urlo) | 387 | return url |
| 356 | 388 | ||
| 357 | def uri_replace(ud, uri_find, uri_replace, replacements, d): | 389 | def uri_replace(ud, uri_find, uri_replace, replacements, d): |
| 358 | if not ud.url or not uri_find or not uri_replace: | 390 | if not ud.url or not uri_find or not uri_replace: |
