From 327ed0bfceb993c914a7fe03f3cab2351b835de6 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Tue, 8 Apr 2014 15:03:10 +0100 Subject: bitbake: fetch2: fix traceback when a wildcard matches a directory If there is a directory matching a wildcard in SRC_URI when getting file checksums, we should recurse into that instead of producing an error. (Bitbake rev: ae87b7eb414e3d5eefd2effec7b30c22d2186b02) Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- bitbake/lib/bb/fetch2/__init__.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index a9ab75ee41..5a03a0e46e 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -962,24 +962,32 @@ def get_file_checksums(filelist, pn): return None return checksum + def checksum_dir(pth): + # Handle directories recursively + dirchecksums = [] + for root, dirs, files in os.walk(pth): + for name in files: + fullpth = os.path.join(root, name) + checksum = checksum_file(fullpth) + if checksum: + dirchecksums.append((fullpth, checksum)) + return dirchecksums + checksums = [] for pth in filelist.split(): checksum = None if '*' in pth: # Handle globs for f in glob.glob(pth): - checksum = checksum_file(f) - if checksum: - checksums.append((f, checksum)) + if os.path.isdir(f): + checksums.extend(checksum_dir(f)) + else: + checksum = checksum_file(f) + if checksum: + checksums.append((f, checksum)) continue elif os.path.isdir(pth): - # Handle directories - for root, dirs, files in os.walk(pth): - for name in files: - fullpth = os.path.join(root, name) - checksum = checksum_file(fullpth) - if checksum: - checksums.append((fullpth, checksum)) + checksums.extend(checksum_dir(pth)) continue else: checksum = checksum_file(pth) -- cgit v1.2.3-54-g00ecf