[bitbake-devel] [PATCH 1/2] fetch2: improve handling of two classes of URL parameter mistakes
Paul Eggleton
paul.eggleton at linux.intel.com
Thu May 29 17:17:15 UTC 2014
Handle the following situations in a URL (e.g. in SRC_URI):
* Trailing semicolon in a URL - this is now ignored.
* Parameter specified with no value (no equals sign). This still
produces an error, but at least it is MalformedUrl with a proper
message rather than "ValueError: need more than 1 value to unpack".
Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
---
lib/bb/fetch2/__init__.py | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index f571fc4..dcada12 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -56,8 +56,11 @@ class BBFetchException(Exception):
class MalformedUrl(BBFetchException):
"""Exception raised when encountering an invalid url"""
- def __init__(self, url):
- msg = "The URL: '%s' is invalid and cannot be interpreted" % url
+ def __init__(self, url, message=''):
+ if message:
+ msg = message
+ else:
+ msg = "The URL: '%s' is invalid and cannot be interpreted" % url
self.url = url
BBFetchException.__init__(self, msg)
self.args = (url,)
@@ -371,8 +374,11 @@ def decodeurl(url):
p = {}
if parm:
for s in parm.split(';'):
- s1, s2 = s.split('=')
- p[s1] = s2
+ if s:
+ if not '=' in s:
+ raise MalformedUrl(url, "The URL: '%s' is invalid: parameter %s does not specify a value (missing '=')" % (url, s))
+ s1, s2 = s.split('=')
+ p[s1] = s2
return type, host, urllib.unquote(path), user, pswd, p
--
1.9.3
More information about the bitbake-devel
mailing list