On Wed, 2022-04-27 at 08:26 -0500, Joshua Watt wrote:
> On Wed, Apr 27, 2022 at 6:04 AM Richard Purdie
> <richard.pur...@linuxfoundation.org> wrote:
> > 
> > On Wed, 2022-04-27 at 12:39 +0200, Jacob Kroon wrote:
> > > On 4/27/22 12:12, Richard Purdie wrote:
> > > > On Wed, 2022-04-27 at 11:06 +0200, Jacob Kroon wrote:
> > > > > Hi Richard and Joshua,
> > > > > 
> > > > > When using hash equivalency, since commits
> > > > > 
> > > > > https://git.openembedded.org/openembedded-core/commit/?id=d6c7b9f4f0e
> > > > > https://git.openembedded.org/openembedded-core/commit/?id=1cf62882bba
> > > > > 
> > > > > scrambling a header in one of the gcc patches causes all target 
> > > > > packages
> > > > > to rebuild.
> > > > 
> > > > That is probably unfortunately inevitable. If the output has changed 
> > > > (i.e. the
> > > > headers are different), it shouldn't be matching a previous build as we 
> > > > can't
> > > > know what has changed.
> > > > 
> > > 
> > > I don't think I was being clear enough. With "scrambling a header in a
> > > gcc patch" I mean that I change something in the section before the
> > > "---" line in a .patch file, like modifying the "Upstream-Status" line.
> > > To me, hash equivalence should be able to optimize that scenario, since
> > > the output from building gcc-cross is not changed.
> > 
> > That definitely wasn't clear! I now understand better what you mean and yes,
> > we're supposed to be optimising that scenario.
> > 
> > > 
> > > > >  This is because the depsig.do_populate_sysroot in "libgcc"
> > > > > changes:
> > > > > 
> > > > > > [jkroon@fedora work]$ diff -u 
> > > > > > i686-oe-linux/libgcc/11.3.0-r0/temp/depsig.do_populate_sysroot.1*
> > > > > > --- 
> > > > > > i686-oe-linux/libgcc/11.3.0-r0/temp/depsig.do_populate_sysroot.1589812
> > > > > >       2022-04-27 10:14:22.403251775 +0200
> > > > > > +++ 
> > > > > > i686-oe-linux/libgcc/11.3.0-r0/temp/depsig.do_populate_sysroot.1674014
> > > > > >       2022-04-27 10:26:45.329365448 +0200
> > > > > > @@ -1,7 +1,7 @@
> > > > > >  OEOuthashBasic
> > > > > >  12
> > > > > >  glibc: 
> > > > > > 8feab297dd38b103daa4f26eeabb5690a74b8b5700d16e4eca7b56e6fd667a5e
> > > > > > -libgcc: 
> > > > > > dfd38409a4cc5320b781edc14de2af8321180c3f194a58b798870ad7ff6a9226
> > > > > > +libgcc: 
> > > > > > 195f6a155dac8e450e72a7432ab91959a8e095e057d5b79e3adba41721dc7ea5
> > > > > >  linux-libc-headers: 
> > > > > > 12a5aaf8aec9554ac3c778cdc6c65df4db52fc573e84b7110572d459a15c9d6a
> > > > > >  SSTATE_PKGSPEC=sstate:libgcc:i686-oe-linux:11.3.0:r0:i686:8:
> > > > > >  task=populate_sysroot
> > > > > 
> > > > > Is it the case that it is the dependent task hashes that are added
> > > > > above, and that the checksum of patches are included in the those task
> > > > > hashes ?
> > > > 
> > > > The dependent resolved hashes are used, as resolved by hashequiv which 
> > > > is a key
> > > > difference.
> > > > 
> > > 
> > > So it is the outhashes that are listed above?
> > 
> > No, they are hash equiv resolved hashes which would have a one to one 
> > mapping
> > with an outhash.
> > 
> > >  Then I don't understand
> > > the diff above. libgcc depends on itself ? But apparently no files in
> > > the sysroot changed, since the above is the only diff I get.
> > 
> > To be honest, I don't remember/understand offhand either. I'd need to go and
> > spend time trying to page in all the information.
> > 
> > We have too few people with the knowledge in these areas and I'm rapidly 
> > burning
> > out. I don't like this reply but I just don't have the time to dive into it 
> > and
> > debug it right now and I can't really give much more of a helpful 
> > comment/reply
> > without doing so.
> > 
> > I agree there is some issue here which does need investigation. At least do 
> > file
> > a bug so it doesn't get forgotten but we don't have many people taking on 
> > bugs
> > either. This one would get triaged to me or Joshua.
> > 
> > I'd also add that gcc is pretty horrific in that it bundles up a lot of it's
> > build tree into the sysroot. It is possible those bundled files are varying
> > somehow reproducibility wise causing some instability. I've worried about 
> > this
> > kind of issue for a while but I don't scale and there are a load of other 
> > issues
> > going on too :(.
> 
> It looks like this could possibly be a bug in the code in
> meta/classes/staging.bbclass that injects the dependencies into
> do_populate_sysroot & do_package.
> 
> It doesn't explicitly filter out ${PN} from BB_TASKDEPDATA, although
> it perhaps should? I'm not sure if the bug is that
> libgcc:do_populate_sysroot is in BB_TASKDEPDATA to begin with, or that
> the code isn't filtering it out. If we do need to filter it out,
> that's a pretty easy change to make.

The current task has to be in BB_TASKDEPDATA so I think you're right, we should
filter out "ourselves". I'll send a patch.

Cheers,

Richard

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

Reply via email to