bitbake: siggen: clean_basepath: remove recipe full path when virtual:xyz present

Before this fix, this example basepath (a):
virtual:native:/full/path/to/recipes-example/helloworld/helloworld_1.2.3.bb:do_compile
would get incorrectly "cleaned" into:
helloworld/helloworld_1.2.3.bb:do_compile:virtual:native:/full/path/to/recipes-example/helloworld/helloworld_1.2.3.bb

When searching backwards in `a` trying to isolate the 'virtual:xyz' to add
it to the end of the string, we need to consider `a` still has the recipe
path and taskname. So stoping the rsplit after only 1 split is not enough.
We want to reach the second ':' from the end.

This way, we obtain:
helloworld/helloworld_1.2.3.bb:do_compile:virtual:native

reviewed-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
(Bitbake rev: befc11acd25a9d9a2d44c20a0e33ada740407af7)

Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d193d93422a0ad62aa35b5d4ca5da8d422f72180)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jean-Francois Dagenais
2020-08-20 17:50:00 -04:00
committed by Richard Purdie
parent f2ae38a055
commit 2acfd66c9c

View File

@@ -706,7 +706,7 @@ def clean_basepath(a):
_, mc, a = a.split(":", 2)
b = a.rsplit("/", 2)[1] + '/' + a.rsplit("/", 2)[2]
if a.startswith("virtual:"):
b = b + ":" + a.rsplit(":", 1)[0]
b = b + ":" + a.rsplit(":", 2)[0]
if mc:
b = b + ":mc:" + mc
return b