]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
checksum: In FileChecksumCache don't follow directory symlinks
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 29 Mar 2016 13:04:19 +0000 (16:04 +0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 29 Mar 2016 22:21:28 +0000 (23:21 +0100)
Before this patch, directory symlinks mathcing filename pattern (either
a file name or a glob pattern) were followed. However, directory
symlinks deeper in the search chain were omitted by os.walk(). Now
directory traversal behaves consistently, ignoring syminks on all
levels.

One reason for choosing not to "walk into" directory symlinks is that
dir symlinks in externalsrc.bbclass in oe-core are causing problems in
source tree checksumming.

[YOCTO #8853]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/checksum.py

index 7fb46d8db573a4a52ffbde37a329f809f632bc36..2ec964d73b93f510eabc2de668684feb6dd470c3 100644 (file)
@@ -123,12 +123,14 @@ class FileChecksumCache(MultiProcessCache):
                 # Handle globs
                 for f in glob.glob(pth):
                     if os.path.isdir(f):
-                        checksums.extend(checksum_dir(f))
+                        if not os.path.islink(f):
+                            checksums.extend(checksum_dir(f))
                     else:
                         checksum = checksum_file(f)
                         checksums.append((f, checksum))
             elif os.path.isdir(pth):
-                checksums.extend(checksum_dir(pth))
+                if not os.path.islink(pth):
+                    checksums.extend(checksum_dir(pth))
             else:
                 checksum = checksum_file(pth)
                 checksums.append((pth, checksum))