On Thu, 2023-07-13 at 02:16 +0000, Yang Xu via lists.openembedded.org
wrote:
> From: Yang Xu <[email protected]>
> 
> 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.
> And add test for compare_sigfiles and find_siginfo working together.
> 
> Signed-off-by: Yang Xu <[email protected]>
> ---
> 
> Notes:
>     v1: correct handling for pn and taskname for native target in find_siginfo
>     v2: add handling for multilib target in find_siginfo
>     v3: add testcase for compare_sigfiles and find_siginfo work together.
>     v4: optimize testcase to avoid non-deterministic fail
> 
>  .../recipes-test/binutils/binutils_%.bbappend |  2 +
>  meta/lib/oe/sstatesig.py                      | 17 ++--
>  meta/lib/oeqa/selftest/cases/sstatetests.py   | 83 +++++++++++++++++++
>  3 files changed, 97 insertions(+), 5 deletions(-)
>  create mode 100644 meta-selftest/recipes-test/binutils/binutils_%.bbappend
> 
> diff --git a/meta-selftest/recipes-test/binutils/binutils_%.bbappend 
> b/meta-selftest/recipes-test/binutils/binutils_%.bbappend
> new file mode 100644
> index 0000000000..205720982c
> --- /dev/null
> +++ b/meta-selftest/recipes-test/binutils/binutils_%.bbappend
> @@ -0,0 +1,2 @@
> +# This bbappend is used to alter the recipe using the test_recipe.inc file 
> created by tests.
> +include test_recipe.inc
> 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
>  
>      hashfiles = {}
>      filedates = {}


I've stared at this patch long and hard and I'm coming to the
conclusion that whilst what you're doing improves things, there are
more corner cases remaining and we're just moving the problem to new
ones down the road. Having to hardcode in each of the class names and
special case them is a big warning sign.

I started wondering why we encode pathnames into the siginfo files. The
reason is that is how bitbake handles them within runqueue. In earlier
times when this was being built, that was fine but things have been
extended many times over since that decision was made.

The issue is that those "internal" representations don't map onto other
systems, so sstate writes files in a different format. There is no easy
way to map the original representations to the format used in the
sstate file names.

My conclusion is that we should change the siginfo files to have the
data already in "sstate" format. That does potentially break a few
things but is probably worth doing for the simplicity gains in code
like this.

Cheers,

Richard








-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#185531): 
https://lists.openembedded.org/g/openembedded-core/message/185531
Mute This Topic: https://lists.openembedded.org/mt/100113209/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to