<div dir="ltr">Hi,<br><br>I've run into a strange problem on master. I have a recipe:<br><br><a href="http://test-bug.bb">test-bug.bb</a><br>===========<br>LICENSE = "CLOSED"<br><br>SRC_URI = "\<br> file://a \<br>
file://dir/* \<br>"<br>============<br><br>The accompaning test-bug/ folder looks like:<br>test-bug/a<br>test-bug/b<br>test-bug/dir<br>test-bug/dir/c<br><br>Note the extra file "b", which is not specified in the SRC_URI.<br>
<br>Adding debug prints according to the patch at the bottom of the mail gives me the following output:<br><br>WARNING: #1 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/a /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/.<br>
WARNING: #2 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/a<br>WARNING: #5 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/a<br>WARNING: #2 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/.<br>
WARNING: #4 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/./a<br>WARNING: #4 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/./b<br>WARNING: #4 /home/jkroon/Projects/oe-devel/meta-monkey/recipes/test-bug/./dir/c<br>
<br>and running bitbake-diffsigs on the resulting test-bug:do_fetch signature gives me:<br><br>This task depends on the checksums of files: [<br>('a', 'b026324c6904b2a9cb4b88d6d61c81d1'),<br>('a', 'b026324c6904b2a9cb4b88d6d61c81d1'),<br>
('b', '26ab0db90d72e28ad0ba1e22ee510510'),<br>('c', '6d7fce9fee471194aa8b5b6e47267f03')<br>]<br><br>'a' is duplicated, and 'b' is included although I assume it shouldn't be.<br>
<br>The debug prints I've added are:<br><br>diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py<br>index 8e5342f..15f4081 100644<br>--- a/lib/bb/fetch2/__init__.py<br>+++ b/lib/bb/fetch2/__init__.py<br>
@@ -961,13 +961,16 @@ def get_file_checksums(filelist, pn):<br> return checksum<br> <br> checksums = []<br>+ bb.warn("#1 " + filelist)<br> for pth in filelist.split():<br> checksum = None<br>
+ bb.warn("#2 " + pth)<br> if '*' in pth:<br> # Handle globs<br> for f in glob.glob(pth):<br> checksum = checksum_file(f)<br> if checksum:<br>
+ bb.warn("#3 " + f)<br> checksums.append((f, checksum))<br> continue<br> elif os.path.isdir(pth):<br>@@ -977,12 +980,14 @@ def get_file_checksums(filelist, pn):<br>
fullpth = os.path.join(root, name)<br> checksum = checksum_file(fullpth)<br> if checksum:<br>+ bb.warn("#4 " + fullpth)<br> checksums.append((fullpth, checksum))<br>
continue<br> else:<br> checksum = checksum_file(pth)<br> <br> if checksum:<br>+ bb.warn("#5 " + pth)<br> checksums.append((pth, checksum))<br> <br>
checksums.sort(key=operator.itemgetter(1))<br><br>I've tried tracing backwards trying to understand why the '*' gets replaced with a '.', but I get lost in the cache code.<br><br>-- Jacob<br><br></div>