On 2022-03-13 04:37, Bruce Ashfield wrote:
On Sat, Mar 12, 2022 at 2:12 PM Jimmy Assarsson <jimmyassars...@gmail.com 
<mailto:jimmyassars...@gmail.com>> wrote:

    On 2022-03-09 16:47, Bruce Ashfield wrote:
     > On Sat, Feb 26, 2022 at 2:17 AM Jimmy Assarsson
     > <jimmyassars...@gmail.com <mailto:jimmyassars...@gmail.com>> wrote:
     >> On 2022-02-24 16:41, Bruce Ashfield wrote:
     >>> On Tue, Feb 22, 2022 at 3:42 AM Jimmy Assarsson
     >>> <jimmyassars...@gmail.com <mailto:jimmyassars...@gmail.com>> wrote:
     >>>> On 2022-02-21 05:13, Bruce Ashfield wrote:
     >>>>> on 19/02/2022 Jimmy Assarsson wrote:
     >>>>>> On 2022-02-19 20:42, Bruce Ashfield wrote:
     >>>>>>> On Sat, Feb 19, 2022 at 5:28 AM Jimmy Assarsson
     >>>>>>> <jimmyassars...@gmail.com <mailto:jimmyassars...@gmail.com>> wrote:
     >>>>>>>>
     >>>>>>>> When patching a kernel git repository, in a recipe inheriting 
kernel-yocto.bbclass,
     >>>>>>>> the resulting commit hash will become different every time the 
source is unpacked and patched.
     >>>>>>>>
     >>>>>>>> This is a problem that causes non-reproducible builds, when the 
commit hash is built
     >>>>>>>> into the kernel (CONFIG_LOCALVERSION_AUTO=y).
     >>>>>>>>
     >>>>>>>>
     >>>>>>>> Currently it is not a problem in linux-yocto, since an empty 
.scmversion is
     >>>>>>>> created in kernel_do_configure [1]. This is preventing the kernel 
build from
     >>>>>>>> generating its own .scmversion.
     >>>>>>>>
     >>>>>>>> If removing this commit, setting CONFIG_LOCALVERSION_AUTO=y and 
applying any
     >>>>>>>> patch in the linux-yocto recipe, this will result in a 
non-reproducible build.
     >>>>>>
     >>>>>> ...
     >>>>>>
     >>>>>>>> diff --git a/tools/kgit-s2q b/tools/kgit-s2q
     >>>>>>>> index 706783e..b46a138 100755
     >>>>>>>> --- a/tools/kgit-s2q
     >>>>>>>> +++ b/tools/kgit-s2q
     >>>>>>>> @@ -558,7 +558,7 @@ do
     >>>>>>>>                      echo "($APPLIED/$COUNT) `basename $i`"
     >>>>>>>>              fi
     >>>>>>>>
     >>>>>>>> -       git am --keep-non-patch $DIR/$i > /dev/null 2>&1
     >>>>>>>> +       git am --keep-non-patch --committer-date-is-author-date $DIR/$i 
> /dev/null 2>&1
     >>>>>>>>              if [ $? != 0 ];then
     >>>>>>>>                      git am --abort > /dev/null 2>&1
     >>>>>>>>                      echo "[INFO]: check of $DIR/$i with \"git am\" 
did not pass, trying reduced context."
     >>>>>>>>
     >>>>>>>>
     >>>>>>>>
     >>>>>>>> I'm not sure if this is a proper solution to fix the problem or 
what side effects it may introduce?
     >>>>>>>
     >>>>>>> There's nothing fundamentally wrong with that solution, but there 
are
     >>>>>>> modes for the kernel builds where we absolutely do not want the
     >>>>>>> reproducible build (and older dates) to be in effect (see my 
comments
     >>>>>>> on the OE core mailing list when the ability to disable 
reproducible
     >>>>>>> builds was almost removed).
     >>>>>>
     >>>>>> Thanks, now I've looked it up.
     >>>>>>
     >>>>>>> We could add an option to the patch queue management that was 
enabled
     >>>>>>> when reproducible builds are in play, so git am could operate like
     >>>>>>> that.
     >>>>>>>
     >>>>>>> Alternatively, you could bbappend the other kernel's do_configure 
and
     >>>>>>> do the same .scmversion trick to make sure that everything is
     >>>>>>> consistent.
     >>>>>>
     >>>>>> I don't follow, can you be more specific?
     >>>>>> We encountered this problem when building linux-imx (from 
meta-freescale).
     >>>>>> Preferably the .scmversion workaround in [1] should be dropped, so 
that
     >>>>>> there is no need to reinvent/mimic the output of
     >>>>>> linux/scripts/setlocalversion, in a bitbake recipe.
     >>>>>
     >>>>> I see no compelling reason to drop the .scmversion in the main 
kernel.bbclass
     >>>>> (at least not in the short term). It has been there for a 
significant amount
     >>>>> of time, and removing it now would very likely cause some ripple 
effects
     >>>>> througout the ecosystem (it is there for a few different issues).  
While not
     >>>>> elegant, it is an available and workable solution to the problem it 
is
     >>>>> solving.
     >>>>
     >>>> I agree. And obviously this is not a big issue for others.
     >>>> There have been at least two failed attempts on removing this 
[4][5][6].
     >>>>
     >>>>> I was suggesting that anyone can bbappend any kernel recipe to do 
the similar
     >>>>> .scmversion set (assuming they aren't using the core kernel bbclass
     >>>>> configure()).
     >>>>>
     >>>>> But from your next statement, that isn't going to work as the sole 
solution,
     >>>>> since yes, that will only restore where we keep the git rev out of 
the
     >>>>> localversion.
     >>>>>
     >>>>>>
     >>>>>> To be clear, we want the result of CONFIG_LOCALVERSION_AUTO=y, but
     >>>>>> with a reproducible output.
     >>>>>
     >>>>> And that's actually part of the reason the .scmversion is set, the
     >>>>> setlocalversion script was appending values in some configurations 
and
     >>>>> combinations of patching, etc, such that issues were popping up with 
version
     >>>>> matching.
     >>>>>
     >>>>> Part of getting that to work, definitely could be to apply patches 
with the
     >>>>> author date, but that has to be triggered on reproducible builds 
being
     >>>>> enabled (which is of course the default) and also preserving the use 
of the
     >>>>> .scmversion for the baseline / basic kernel configuration routines.
     >>>>>
     >>>>> .. so one config to say "don't set scmversion" and another to say 
"apply
     >>>>> patches with author date" (this one toggling based on reproducible 
builds).
     >>>>> And then both scenarios can be supported.
     >>>>
     >>>> Currently I'm only interested in fixing the "apply patches with
     >>>> author date", to get reproducible builds.
     >>>>
     >>>> So we will end up with a new config in kernel-yocto.bbclass, since 
this
     >>>> is the only location where kgit-s2q is used.
     >>>> And we will get a new option in kgit-s2q, that will result in
     >>>> "git am --committer-date-is-author-date" being used.
     >>>>
     >>>> Any name suggestions for the config and option?
     >>>> KERNEL_PATCH_WITH_AUTHOR_DATE
     >>>> KERNEL_PATCH_REPRODUCIBLE_HASH
     >>>> KERNEL_PATCH_REPRODUCIBLE_COMMIT
     >>>
     >>> It is better to abstract it behind the reproducible feature
     >>> description, since there are other kernel reproducibility components
     >>> that exist, or may appear in the future.
     >>
     >> Sure.
     >>
     >>> If you want, I can have a go at the patch, which will allow me to run
     >>> my local tests and put it in my next consolidated pull request.
     >>
     >> That would be great :)
     >> Thanks!
     >
     > It took me a bit longer than expected, but the lightly tested v1 is
     > here: 
https://git.yoctoproject.org/poky-contrib/commit/?h=zedd/kernel&id=cfbc3bf788ba1fc7d5f4de1a95c72a66243562e6
 
<https://git.yoctoproject.org/poky-contrib/commit/?h=zedd/kernel&id=cfbc3bf788ba1fc7d5f4de1a95c72a66243562e6>
     >
     > And by lightly tested, I mean I can still patch the kernel and things
     > didn't explode in flames. i haven't checked if the commit dates, etc,
     > do what you were looking for.

    Thanks Bruce!

    Now I've tested it.

    The changes in kernel-yocto.bbclass looks good to me.

    In kgit-s2q, the check of $commit_sha_type is missing square brackets:
    -       if "$commit_sha_type" == "author"; then
    +       if [ "$commit_sha_type" == "author" ]; then
    Once fixed, the commit dates are as expected and test_reproducible_builds
    passes.


oops. Yes, I had fixed that as well, but didn't push it, as I was running out 
the door for a week of vacation.


    The commit-sha option and arguments looks good.
    However the help description of the 'date' option argument, is not
    completely clear, at least not to me:

          --commit-sha type of commit sha's to create: 'author date' or 'commit 
date' (author or date)
                       default is 'commit date'

    If it wasn't for 'author date', I would have assumed 'commit date', gives
    the same result. 'applied date' or similar, makes more sense to me.


I'll clarify the help a bit when I push the final version and send it to OE 
core next week.

Thanks for the testing!

Bruce

Gentle ping :)
Have you had time to look into this?

Best regards,
jimmy


    Best regards,
    jimmy

     > I'm heading out on vacation for the next week, so I won't send this
     > for merging into OE core yet, but feel free to try it out, send
     > feedback and I'll do a v2 when I return (after March 19th).
     >
     > Bruce
     >
     >>
     >> Best regards,
     >> jimmy
     >>
     >>> Bruce
     >>>
     >>>> --patch-with-author-date
     >>>> --apply-patch-with-author-date
     >>>> --committer-date-is-author-date
     >>>>
     >>>>
     >>>> [4] https://patchwork.openembedded.org/patch/138333 
<https://patchwork.openembedded.org/patch/138333>
     >>>> [5] https://patchwork.openembedded.org/patch/171479 
<https://patchwork.openembedded.org/patch/171479>
     >>>> [6] https://patchwork.openembedded.org/patch/171513 
<https://patchwork.openembedded.org/patch/171513>
     >>>>
     >>>>
     >>>> Best regards,
     >>>> jimmy
     >>>>
     >>>>
     >>>>> Bruce
     >>>>>
     >>>>>>
     >>>>>> Best regards,
     >>>>>> jimmy
     >>>>>>
     >>>>>>
     >>>>>>> Bruce
     >>>>>>>
     >>>>>>>>
     >>>>>>>> [1] 
https://git.yoctoproject.org/poky/tree/meta/classes/kernel.bbclass?h=honister#n589 
<https://git.yoctoproject.org/poky/tree/meta/classes/kernel.bbclass?h=honister#n589>
     >>>>>>>> [2] 
https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-kernel-localversion.bbclass?h=honister 
<https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-kernel-localversion.bbclass?h=honister>
     >>>>>>>> [3] 
https://github.com/OE4T/meta-tegra/blob/honister/recipes-kernel/linux/linux-tegra_4.9.bb 
<https://github.com/OE4T/meta-tegra/blob/honister/recipes-kernel/linux/linux-tegra_4.9.bb>



--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at 
its end
- "Use the force Harry" - Gandalf, Star Trek II

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

Reply via email to