When I investiage some package tasks cache missing problem by bitbake-diffsigs, 
I found that 'find_siginfo' called by bitbake-diffsigs is unable to construct 
the correct package name(pn) when dealing with virtual targets.

Patch v2 introduces handling for 'lib64-' and 'lib32-' case besides '-native' 
case.

And for test case, I'm currently not familiar with oe-selftest.However, I will 
learn how to add test case to oe-selftest and will attempt to write a test case 
for this.

Thank you.

Yang

On Tue, 2023-07-04 at 11:19 +0000, Ross Burton wrote:

> The `bb.siggen.compare_sigfiles` method transforms the key format from

> `[mc:<mc_name>:][virtual:][native:]<recipe path>:<taskname>` to

> `<recipe dir>/<recipe name>:<taskname>[:virtual][:native][:mc:<mc_name>]`

> by `clean_basepaths`. However, `find_siginfo` uses the original format

> to get the package name (pn) and task name.

>

> This commit corrects the method for deriving the pn and task name in

> `find_siginfo` and adds handling for multilib name.

>

> Signed-off-by: Yang Xu <yang...@mediatek.com>

> ---

> meta/lib/oe/sstatesig.py | 17 ++++++++++++-----

> 1 file changed, 12 insertions(+), 5 deletions(-)

>

> diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py

> index f943df181e..f041a0c430 100644

> --- a/meta/lib/oe/sstatesig.py

> +++ b/meta/lib/oe/sstatesig.py

> @@ -321,11 +321,18 @@ def find_siginfo(pn, taskname, taskhashlist, d):

>     if not taskname:

>         # We have to derive pn and taskname

>         key = pn

> -        splitit = key.split('.bb:')

> -        taskname = splitit[1]

> -        pn = os.path.basename(splitit[0]).split('_')[0]

> -        if key.startswith('virtual:native:'):

> -            pn = pn + '-native'

> +        if key.count(':') >= 2:

> +            splitit, taskname, affix = key.split(':', 2)

> +        else:

> +            splitit, taskname = key.split(':', 1)

> +            affix = ''

> +        pn = os.path.splitext(os.path.basename(splitit))[0].split('_')[0]

> +        affixitems = affix.split(':')

> +        if affixitems[0] == 'virtual':

> +            if affixitems[1] == 'native':

> +                pn = pn + '-native'

> +            if affixitems[1] == 'multilib':

> +                pn = affixitems[2] + '-' + pn


How did you notice this problem, what’s the actual change between this and v1, 
and more importantly can we add a test case for this obviously complex code?


Ross

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#183832): 
https://lists.openembedded.org/g/openembedded-core/message/183832
Mute This Topic: https://lists.openembedded.org/mt/99940440/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to