diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-11-24 16:11:26 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-11-24 22:02:17 +0000 |
commit | a0246bf09c93bb657eaf6ba61d090b247ed33640 (patch) | |
tree | a87d8542d32e43dbc9061662987deb0651ba72c2 | |
parent | a34ff490a46577a64345365fa1ac39c48d0861cd (diff) | |
download | openembedded-core-contrib-a0246bf09c93bb657eaf6ba61d090b247ed33640.tar.gz |
fetch2: Improve uri_replace to handle paths with no trailing '/'
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@linuxfoundation.org>
-rw-r--r-- | lib/bb/fetch2/__init__.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index a055faaf19..d3c761d00d 100644 --- a/lib/bb/fetch2/__init__.py +++ b/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 = {} |