It is a elegant solution for current issue. I will test and update my patch to only include testcase part soon.
Thank you Yang On Sat, 2023-08-05 at 11:36 +0100, Richard Purdie wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > > On Fri, 2023-08-04 at 17:13 +0100, Richard Purdie via > lists.openembedded.org wrote: > > On Thu, 2023-07-13 at 02:16 +0000, Yang Xu via > lists.openembedded.org > > wrote: > > > From: Yang Xu <yang...@mediatek.com> > > > > > > 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 <yang...@mediatek.com> > > > --- > > > > > > 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. > > I've sent a couple of patches, one to bitbake and one to OE-Core > which > change the format of the data in runtaskdeps to be PN based rather > than > recipe filename based which then makes the above change unneeded, we > no > longer need to hardcode classes into it. > > With those changes, I did confirm that the testcase added in this > pattch does pass. > > We need to review those other changes but assuming testing shows they > work out ok could you update this patch to simply add the test case? > I'd also appreciate it if you could check those patches do resolve > the > issue you were seeing. > > Cheers, > > Richard >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#185655): https://lists.openembedded.org/g/openembedded-core/message/185655 Mute This Topic: https://lists.openembedded.org/mt/100113209/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-