From 87282b283921a58426f24fb21151db457c5bca66 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 16 Sep 2015 21:44:20 +0100 Subject: 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 --- lib/bb/cache.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'lib/bb/cache.py') 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(":") -- cgit 1.2.3-korg