diff options
author | Jürg Billeter <j@bitron.ch> | 2019-02-01 11:11:59 +0000 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-02-13 11:48:45 +0100 |
commit | 925429ea2e03576eaf8729fafd64f326f3b963a6 (patch) | |
tree | 33b1862fd30430dfe9da94e5af56cf835882f428 | |
parent | c7625cdfab71248ced7e4623b7fc1cf4ca97db52 (diff) | |
download | buildstream-925429ea2e03576eaf8729fafd64f326f3b963a6.tar.gz |
utils.py: Return all directories in list_relative_paths()
Returning only empty directories leads to inconsistencies when computing
a manifest by combining results from multiple list_relative_paths()
calls as done by the compose plugin.
I.e., the same directory may be empty in one dependency and non-empty in
another dependency. The merged file list will still contain that
directory even though it's no longer empty.
This inconsistency causes problems when calculating differences between
manifests. Returning all directories fixes these inconsistencies.
This is a change in API behavior.
-rw-r--r-- | buildstream/utils.py | 11 | ||||
-rw-r--r-- | tests/cachekey/project/elements/build1.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/build2.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/compose1.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/compose2.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/compose3.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/compose4.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/compose5.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/import1.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/import2.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/import3.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/elements/script1.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/sources/local1.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/sources/local2.expected | 2 | ||||
-rw-r--r-- | tests/cachekey/project/target.expected | 2 |
15 files changed, 17 insertions, 22 deletions
diff --git a/buildstream/utils.py b/buildstream/utils.py index b739ca658..12407ba30 100644 --- a/buildstream/utils.py +++ b/buildstream/utils.py @@ -117,9 +117,6 @@ def list_relative_paths(directory): This generator is useful for checking the full manifest of a directory. - Note that directories will be yielded only if they are - empty. - Symbolic links will not be followed, but will be included in the manifest. @@ -156,11 +153,9 @@ def list_relative_paths(directory): # `directory`, prefer to have no prefix in that case. basepath = relpath if relpath != '.' and dirpath != directory else '' - # We've decended into an empty directory, in this case we - # want to include the directory itself, but not in any other - # case. - if not filenames: - yield relpath + # First yield the walked directory itself, except for the root + if basepath != '': + yield basepath # List the filenames in the walked directory for f in filenames: diff --git a/tests/cachekey/project/elements/build1.expected b/tests/cachekey/project/elements/build1.expected index ffdaed644..c2982f939 100644 --- a/tests/cachekey/project/elements/build1.expected +++ b/tests/cachekey/project/elements/build1.expected @@ -1 +1 @@ -b9e1b6a714eb359dbb4b07a32a31c7142f94363c0806a924ca6c46fdbc2cfbea
\ No newline at end of file +298bb7caab56c60bc12f59df15db2b1107a604fdb0ce3fa5729aa23d6d37f6e4
\ No newline at end of file diff --git a/tests/cachekey/project/elements/build2.expected b/tests/cachekey/project/elements/build2.expected index 0c9eac627..bc663989f 100644 --- a/tests/cachekey/project/elements/build2.expected +++ b/tests/cachekey/project/elements/build2.expected @@ -1 +1 @@ -7260eb13fd926f3ef4cbc8bae7397f6ca0f3b37e871c14e1cf47e1d38f6fd68c
\ No newline at end of file +c745f07458a2488180ae7f5b0601a38853dcdfd2b6771c18ecbb622f1af10cf1
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected index f3fcbd143..9abf5b751 100644 --- a/tests/cachekey/project/elements/compose1.expected +++ b/tests/cachekey/project/elements/compose1.expected @@ -1 +1 @@ -89fb02d35096d307e8480d25c73845c01ffecc625576a54455c9b29c387c9f16
\ No newline at end of file +d759c8b7262c4782c12b425bfca0bc8f4c30656d91c98e309c10f11d4179b101
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected index b6067f117..4c3881b8e 100644 --- a/tests/cachekey/project/elements/compose2.expected +++ b/tests/cachekey/project/elements/compose2.expected @@ -1 +1 @@ -414bb5723b2b88f3e70445651ad5c94dfe79a5e7e868527c5d74403d2b2c45d4
\ No newline at end of file +01e22d37b82c9b35c35d3d8485e05fe6de526d3af00137bbff51a309b1fa3401
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected index 2d602052c..e66de59f5 100644 --- a/tests/cachekey/project/elements/compose3.expected +++ b/tests/cachekey/project/elements/compose3.expected @@ -1 +1 @@ -9f0f67cc3a59b0f4e6ecd80f91b6998d5091ce73aa06700b9a45de869da5dd2c
\ No newline at end of file +22b846d1928155b5a21497e8048af2945ee03a826338f91d4f00d74597cc3ef7
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected index fd7f774ee..abc56f234 100644 --- a/tests/cachekey/project/elements/compose4.expected +++ b/tests/cachekey/project/elements/compose4.expected @@ -1 +1 @@ -5b18a8748410d3a4a340ebe368bde55ce4478d28b90e4d372733c77817e18532
\ No newline at end of file +0e00f203ce9bc4163be0ed304fcf2abb6ee39aad4ee9a12d80719708a4327337
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected index dea2db25b..83345705e 100644 --- a/tests/cachekey/project/elements/compose5.expected +++ b/tests/cachekey/project/elements/compose5.expected @@ -1 +1 @@ -49cae1de4f8b8836c67ad3d06d7cd68c1feb34410dc8e27a1e872f270c86affa
\ No newline at end of file +3d8dd9fef508c27961edeb21dd469d04e7ea097c86a98e7c3bf725975548748f
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected index 02a5f7534..fd349363e 100644 --- a/tests/cachekey/project/elements/import1.expected +++ b/tests/cachekey/project/elements/import1.expected @@ -1 +1 @@ -2fb0c6421eab90746ae724e0b0b4960591443e500225b75f1b71ceeaa61db8d8
\ No newline at end of file +02f863aedaf175f4b4bb9979a538bd1fb6eabd0ef9d77a633b141c072d957df5
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected index f978f1a24..e68e2b505 100644 --- a/tests/cachekey/project/elements/import2.expected +++ b/tests/cachekey/project/elements/import2.expected @@ -1 +1 @@ -9e7f024b39334d7d01f9984848daeab8866feb7e93b3a522e8f0b16959b9d63c
\ No newline at end of file +80ee70ad27ee4640400533585d1b2313b1abdb0034f4159dad42f545310d9c24
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected index 57b409988..1cab93718 100644 --- a/tests/cachekey/project/elements/import3.expected +++ b/tests/cachekey/project/elements/import3.expected @@ -1 +1 @@ -81f00ec3f3cc436b0feb2a9f3792f542c2e57659f3e5ccc68cba49d446b5dcd0
\ No newline at end of file +b30d79b763ba3048945784d06482ee378d2642dff712ecffae737aa6f9391b9f
\ No newline at end of file diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected index 1b5bc4c03..18977ecc0 100644 --- a/tests/cachekey/project/elements/script1.expected +++ b/tests/cachekey/project/elements/script1.expected @@ -1 +1 @@ -94d5397f23f35aa8d4b5b4e42c94de8901e08e0a973a8af7a5678f056beffefd
\ No newline at end of file +fb69c9237156bdeb0f948078f735189e9d8a4c4dca3c67b6f1ed5fa314f88707
\ No newline at end of file diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected index 02a5f7534..fd349363e 100644 --- a/tests/cachekey/project/sources/local1.expected +++ b/tests/cachekey/project/sources/local1.expected @@ -1 +1 @@ -2fb0c6421eab90746ae724e0b0b4960591443e500225b75f1b71ceeaa61db8d8
\ No newline at end of file +02f863aedaf175f4b4bb9979a538bd1fb6eabd0ef9d77a633b141c072d957df5
\ No newline at end of file diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected index 1afe39f07..6aa588c9e 100644 --- a/tests/cachekey/project/sources/local2.expected +++ b/tests/cachekey/project/sources/local2.expected @@ -1 +1 @@ -102fd151a74be862cb6d72dd99b9227e8d5b136404c3d11fc7beb17c773a9c72
\ No newline at end of file +b9c5019375c715cb6a239714c78a1bd702d4acf81518f0c05da0217a74c365df
\ No newline at end of file diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected index 36166fc72..7d793fade 100644 --- a/tests/cachekey/project/target.expected +++ b/tests/cachekey/project/target.expected @@ -1 +1 @@ -bf7a3412e8fcaaf76853bf73ace41ceca8944a598c777410cdee26a6d0e643be
\ No newline at end of file +5accdddcdf28c48173381d9bd5d178dfe9b4b69b9ca456995d0a0d0908654275
\ No newline at end of file |