aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/bb/fetch2/__init__.py16
-rw-r--r--lib/bb/tests/fetch.py18
2 files changed, 23 insertions, 11 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index d9d193ab1..05999607b 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -208,6 +208,10 @@ class URI(object):
if not uri:
return
+ # We hijack the URL parameters, since the way bitbake uses
+ # them are not quite RFC compliant.
+ uri, param_str = (uri.split(";", 1) + [None])[:2]
+
urlp = urlparse.urlparse(uri)
self.scheme = urlp.scheme
@@ -242,17 +246,7 @@ class URI(object):
if urlp.password:
self.userinfo += ':%s' % urlp.password
- # Do support params even for URI schemes that Python's
- # urlparse doesn't support params for.
- path = ''
- param_str = ''
- if not urlp.params:
- path, param_str = (list(urlp.path.split(";", 1)) + [None])[:2]
- else:
- path = urlp.path
- param_str = urlp.params
-
- self.path = urllib.unquote(path)
+ self.path = urllib.unquote(urlp.path)
if param_str:
self.params = self._param_str_split(param_str, ";")
diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
index 15fe0ab2f..4fb217859 100644
--- a/lib/bb/tests/fetch.py
+++ b/lib/bb/tests/fetch.py
@@ -74,6 +74,24 @@ class URITest(unittest.TestCase):
},
'relative': False
},
+ "http://www.example.org/index.html?qparam1=qvalue1;param2=value2" : {
+ 'uri': 'http://www.example.org/index.html?qparam1=qvalue1;param2=value2',
+ 'scheme': 'http',
+ 'hostname': 'www.example.org',
+ 'port': None,
+ 'hostport': 'www.example.org',
+ 'path': '/index.html',
+ 'userinfo': '',
+ 'username': '',
+ 'password': '',
+ 'params': {
+ 'param2': 'value2'
+ },
+ 'query': {
+ 'qparam1': 'qvalue1'
+ },
+ 'relative': False
+ },
"http://www.example.com:8080/index.html" : {
'uri': 'http://www.example.com:8080/index.html',
'scheme': 'http',