Subject: Re: bug#70943: linux-libre is not reproducible (regression)

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 26 May 2024 14:15:59 -0400

Hi,

Maxim Cournoyer <[email-masked]> writes:

> Hello,
>
> I've investigated non-determinism in our linux-libre package, which
> sadly appears to have regressed in that regard since I last looked into
> it 3 years ago (see commit 01ea70a29c5c1ded31c37ce8c43192bc1956b2ca
> ("gnu: linux-libre: Make build reproducible.")).
>
> I'm currently seeing these differing files:
>
> $ diff -ql /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9{,-check}
> Files /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9/bzImage and /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9-check/bzImage differ
> Common subdirectories: /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9/lib and /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9-check/lib
> Common subdirectories: /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9/share and /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9-check/share
> Files /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9/System.map and /gnu/store/6vx6vkranmggv690ggm79zhdhwvmbji9-linux-libre-6.8.9-check/System.map differ
>
> I'll take a look at what Yocto does differently, if anything.

I didn't see anything special, although some BPF switches got turned on
in the kernel by default in newer 6.X releases, and BPF appears to
introduce non-determinism, accordingy to the Reproducible Builds website
which says this [0]:

   Several distributions noticed recent versions of the Linux Kernel are
   no longer reproducible because the BPF Type Format (BTF) metadata is
   not generated in a deterministic way. This was discussed on the
   #reproducible-builds IRC channel, but no solution appears to be in
   sight for now.

[0]  https://reproducible-builds.org/reports/2023-04/

So it seems there'll need to be some reproducibility work for that
feature in the kernel before it can be resolved (we could also disable
all BPF features, but that seems counter-current at this point in time).

-- 
Thanks,
Maxim