Re: [OE-core] [PATCH v2 0/6] Use the kernel from sstate when building fitImages

Martin Jansa
2024-07-18T13:30:11Z

On Thu, Jul 18, 2024 at 2:37 PM Adrian Freihofer
<adrian.freihofer@gmail.com> wrote:
>
> On Thu, 2024-07-18 at 10:39 +0200, Martin Jansa wrote:
> > On Thu, Jul 18, 2024 at 10:00 AM Adrian Freihofer
> > <adrian.freihofer@gmail.com> wrote:
> > >
> > > Hi Martin
> > >
> > > Thank you for looking at my patches.
> > >
> > > On Mon, 2024-07-15 at 16:32 +0200, Martin Jansa wrote:
> > > > Doesn't it still rebuild from scratch when IMAGE_VERSION_SUFFIX
> > > > changes?
> > >
> > > I wonder why this happens in WebOS. I think that this line
> > > kernel_do_deploy[vardepsexclude] = "DATETIME"
> > > prevents such unnecessary rebuilds.
> >
> > Hi Adrian,
> >
> > yes DATETIME is excluded by default, but it's useful to use different
> > suffix in IMAGE_VERSION_SUFFIX (e.g. BUILD_NUMBER from CI on jenkins
> > or release version when building release) and in such cases you don't
> > want to vardepexclude it, because it's useful to produce matching
> > version in images as well as kernel (and other artifacts you might
> > have), so your 1.2.1 release images doesn't end with 1.2.0 kernel
> > artifacts just because kernel sstate signature didn't change in 1.2.1
> > bugfix release.
> >
> > Does this make sense? I bet it would happen in your builds as well.
>
> I try to optimize everything towards binary-reproducible builds. This
> means that we remove all kinds of variables that change because the
> time changes or because the CI build ID changes or something like that.
> I see no benefit in compiling such information into the firmware.
> But the problem I see is that such ideas clash with efficient and
> binary-reproducible builds.
>
> That means that I don't see a reason for changing the
> IMAGE_VERSION_SUFFIX variable in such a way.
>
> >
> > Whole point of:
> > https://bugzilla.yoctoproject.org/show_bug.cgi?id=12937
> > is to allow "renaming" (adding more hardlinks) artifacts with
> > matching
> > IMAGE_VERSION_SUFFIX without the need of rebuilding anything (e.g.
> > version-less kernel artifacts are re-used from sstate and then only
> > quick deploy-links task is executed to add right versioned hardlinks
> > in deploy directory.)
> >
>
> Well, yes, it would. But, I am confident that it is a better strategy
> to simply not do this than to support it.
>
> If such non-reproducible information is needed anyway, it can be
> archived independently of Bitbake.

Well the changes from:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=12937
make the builds _more_ reproducible, because they move the DATETIME or
whatever IMAGE_VERSION_SUFFIX out of the artifacts in sstate and move
creating versioned names to separate task which can be disabled (by
setting IMAGE_VERSION_SUFFIX to empty if you prefer not to create
them).