bitbake: Revert "fetch2: Adapt encode/decode url to use URI class"

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>
This commit is contained in:
Richard Purdie 2013-02-19 23:05:11 -08:00
parent 6bf55c6e67
commit 7d22ef28e6
1 changed files with 49 additions and 17 deletions

View File

@ -322,9 +322,40 @@ def decodeurl(url):
user, password, parameters).
"""
urlo = URI(url)
return (urlo.scheme, urlo.hostport, urlo.path,
urlo.username, urlo.password, urlo.params)
m = re.compile('(?P<type>[^:]*)://((?P<user>.+)@)?(?P<location>[^;]+)(;(?P<parm>.*))?').match(url)
if not m:
raise MalformedUrl(url)
type = m.group('type')
location = m.group('location')
if not location:
raise MalformedUrl(url)
user = m.group('user')
parm = m.group('parm')
locidx = location.find('/')
if locidx != -1 and type.lower() != 'file':
host = location[:locidx]
path = location[locidx:]
else:
host = ""
path = location
if user:
m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user)
if m:
user = m.group('user')
pswd = m.group('pswd')
else:
user = ''
pswd = ''
p = {}
if parm:
for s in parm.split(';'):
s1, s2 = s.split('=')
p[s1] = s2
return type, host, urllib.unquote(path), user, pswd, p
def encodeurl(decoded):
"""Encodes a URL from tokens (scheme, network location, path,
@ -333,26 +364,27 @@ def encodeurl(decoded):
type, host, path, user, pswd, p = decoded
urlo = URI()
if not path:
raise MissingParameterError('path', "encoded from the data %s" % str(decoded))
if not type:
raise MissingParameterError('type', "encoded from the data %s" % str(decoded))
urlo.scheme = type
urlo.path = path
if host:
urlo.hostname = host
if user:
urlo.username = user
if pswd:
urlo.password = pswd
url = '%s://' % type
if user and type != "file":
url += "%s" % user
if pswd:
url += ":%s" % pswd
url += "@"
if host and type != "file":
url += "%s" % host
# Standardise path to ensure comparisons work
while '//' in path:
path = path.replace("//", "/")
url += "%s" % urllib.quote(path)
if p:
urlo.params = p
for parm in p:
url += ";%s=%s" % (parm, p[parm])
return str(urlo)
return url
def uri_replace(ud, uri_find, uri_replace, replacements, d):
if not ud.url or not uri_find or not uri_replace: