summaryrefslogtreecommitdiffstats
path: root/lib/bb/cache.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-16 21:44:20 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-16 22:02:09 +0100
commit87282b283921a58426f24fb21151db457c5bca66 (patch)
treea78b6b2cae7bc2b8d2d69186ee5bbf1011ffa732 /lib/bb/cache.py
parent60f6c2818f38c4d9c2d9aaa42acf3071636f4a3b (diff)
downloadbitbake-contrib-87282b283921a58426f24fb21151db457c5bca66.tar.gz
cache: Handle spaces and colons in directory names for file-checksums
If there is a space in a directory name containing a file in file-checksums (e.g. from a file:// url), you currently get tracebacks from bitbake. This improves the code to handle colons and spaces in the file-checksums names since it possible to figure out the correct names. [YOCTO #8267] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/cache.py')
-rw-r--r--lib/bb/cache.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index ef4d660e8..ab09b08b5 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -528,7 +528,20 @@ class Cache(object):
if hasattr(info_array[0], 'file_checksums'):
for _, fl in info_array[0].file_checksums.items():
- for f in fl.split():
+ fl = fl.strip()
+ while fl:
+ # A .split() would be simpler but means spaces or colons in filenames would break
+ a = fl.find(":True")
+ b = fl.find(":False")
+ if ((a < 0) and b) or ((b > 0) and (b < a)):
+ f = fl[:b+6]
+ fl = fl[b+7:]
+ elif ((b < 0) and a) or ((a > 0) and (a < b)):
+ f = fl[:a+5]
+ fl = fl[a+6:]
+ else:
+ break
+ fl = fl.strip()
if "*" in f:
continue
f, exist = f.split(":")