[bitbake-devel] [PATCH] fetch2: Improve uri_replace to handle paths with no trailing '/'
Richard Purdie
richard.purdie at linuxfoundation.org
Thu Nov 24 16:15:18 UTC 2011
Currently if you specify a mirror like:
file://.* http://linux.freescale.net/yocto/sstate-cache
it won't work as you expect whilst:
file://.* http://linux.freescale.net/yocto/sstate-cache/
will since it has the trailing slash.
This patch handles both cases correctly. It also adds some debug to
the uri_replace function since its near impossible to debug it without
some kind of output.
[YOCTO #1578]
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index a055faa..d3c761d 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -175,6 +175,7 @@ def uri_replace(ud, uri_find, uri_replace, d):
uri_decoded = list(decodeurl(ud.url))
uri_find_decoded = list(decodeurl(uri_find))
uri_replace_decoded = list(decodeurl(uri_replace))
+ logger.debug(2, "For url %s comparing %s to %s" % (uri_decoded, uri_find_decoded, uri_replace_decoded))
result_decoded = ['', '', '', '', '', {}]
for i in uri_find_decoded:
loc = uri_find_decoded.index(i)
@@ -187,12 +188,18 @@ def uri_replace(ud, uri_find, uri_replace, d):
result_decoded[loc] = re.sub(i, uri_replace_decoded[loc], uri_decoded[loc])
if uri_find_decoded.index(i) == 2:
if ud.mirrortarball:
- result_decoded[loc] = os.path.join(os.path.dirname(result_decoded[loc]), os.path.basename(ud.mirrortarball))
+ if result_decoded[loc].endswith("/"):
+ result_decoded[loc] = os.path.dirname(result_decoded[loc])
+ result_decoded[loc] = os.path.join(result_decoded[loc], os.path.basename(ud.mirrortarball))
elif ud.localpath:
- result_decoded[loc] = os.path.join(os.path.dirname(result_decoded[loc]), os.path.basename(ud.localpath))
+ if result_decoded[loc].endswith("/"):
+ result_decoded[loc] = os.path.dirname(result_decoded[loc])
+ result_decoded[loc] = os.path.join(result_decoded[loc], os.path.basename(ud.localpath))
else:
return ud.url
- return encodeurl(result_decoded)
+ result = encodeurl(result_decoded)
+ logger.debug(2, "For url %s returning %s" % (ud.url, result))
+ return result
methods = []
urldata_cache = {}
More information about the bitbake-devel
mailing list