If a file is modified and renamed it will show up in both iter_change_type('M') and iter_change_type('R'), however naturally the file that will exist will be the b path and not the a one, so we should be looking at the b path or we will get errors.
FYI you can reproduce this with OE-Core (in a scratch database) using the following procedure: 1) (in the OE-Core layer directory): git checkout 59285b324f6d9ed270b0bef209ef5da22a620a83 2) update.py -l openembedded-core -b master -x --nofetch -r --fullreload 3) (in the OE-Core layer directory): git checkout 086308aa2a5e332de6f00ed397c4a55d132f158f 4) update.py -l openembedded-core -b master -x --nofetch Without this change you'll see the following error: ERROR: Unable to read /opt/layerindex/layers/git___git_openembedded_org_openembedded-core/meta/recipes-devtools/python-numpy/python-numpy_1.13.1.bb: Traceback (most recent call last): File "/opt/layerindex/layers/bitbake/lib/bb/command.py", line 84, in runCommand result = command_method(self, commandline) File "/opt/layerindex/layers/bitbake/lib/bb/command.py", line 568, in parseRecipeFile envdata = bb.cache.parse_recipe(config_data, fn, appendfiles)[''] File "/opt/layerindex/layers/bitbake/lib/bb/cache.py", line 315, in parse_recipe bb_data = bb.parse.handle(bbfile, bb_data) File "/opt/layerindex/layers/bitbake/lib/bb/parse/__init__.py", line 117, in handle return h['handle'](fn, data, include) File "/opt/layerindex/layers/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 132, in handle abs_fn = resolve_file(fn, d) File "/opt/layerindex/layers/bitbake/lib/bb/parse/__init__.py", line 141, in resolve_file raise IOError(errno.ENOENT, "file %s not found" % fn) FileNotFoundError: [Errno 2] file /opt/layerindex/layers/git___git_openembedded_org_openembedded-core/meta/recipes-devtools/python-numpy/python-numpy_1.13.1.bb not found Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com> --- TODO | 1 - layerindex/update_layer.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/TODO b/TODO index 96d4feb8..7d522f84 100644 --- a/TODO +++ b/TODO @@ -10,7 +10,6 @@ TODO: Bugs * Duplication of first maintainer when editing to add a second? -* GitPython sometimes reports renamed files as type M but we don't handle that properly e.g. OE-Core 59285b324f6d9ed270b0bef209ef5da22a620a83 086308aa2a5e332de6f00ed397c4a55d132f158f Other * Full-text search on layer contents diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 018d7bcd..272fe51a 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -636,7 +636,7 @@ def main(): bbclass.save() for diffitem in diff.iter_change_type('M'): - path = diffitem.a_blob.path + path = diffitem.b_blob.path if path.startswith(subdir_start): skip = False for removedir in removedirs: -- 2.17.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto