Minimal Reproducible Arch Linux (4(+2) unreproducible, January 2025 status update)
kpcyrd
kpcyrd at archlinux.org
Wed Jan 22 21:34:04 UTC 2025
On 1/22/25 5:01 PM, David A. Wheeler via rb-general wrote:
>
>> On Jan 22, 2025, at 6:50 AM, kpcyrd <kpcyrd at archlinux.org> wrote:
>>
>> Dear list,
>>
>> I rechecked my VM that I tried to build with "reproducible only" Arch Linux packages, last year there was only the Linux kernel missing, there have been some regressions that I've investigated.
>
> Kudos on these investigations!
Thanks!
> In my mind, the best long-term solution is to make testing for reproducibility *part* of the
> tests for these systems. That obviously at-least-doubles the CPU for testing, but it
> would eliminate the whack-a-mole process of fixing regressions endlessly.
> Ideally such tests would be in upstream as well.
It's very difficult to predict how things will go once a "minimal
reproducible" install is viable enough for a niche to form around it.
I could imagine some things would "self-regulate", so if some software
regresses to often, some alternative with a proper build system will
show up.
Or, since Python is likely not going to be reproducible in the
foreseeable future in Arch Linux, I could see people in that
niche-reproducible-only-community switch from Python-based tools to
Rust-based alternatives, to avoid having that dependency on their system.
For example, when I initially setup this "reproducible only" VM last
year, I explicitly picked something that wasn't grub, because it wasn't
reproducible back then.
---
About 7 years ago I did in fact add a repro-test based integration test
to one of the projects I'm upstream for, back when I had my first few
appearances in the Reproducible Builds scene:
https://github.com/kpcyrd/sniffglue/commits/main/ci/reprotest.sh
I stopped adding this to other projects though because, generally,
reproducible builds for my software "just works" without me needing to
do anything.
The projects that care enough about Reproducible Builds to add something
like this are likely already reproducible to begin with, but of course I
appreciate if projects make efforts in this direction.
Building twice on Github Actions and checking artifacts would've caught
the missing `gzip -n` in kbd (if started with a few seconds delay), but
likely wouldn't have caught the terminal-width one in curl. Many things
we consider "acceptable deviations" are only caught in the wild because
servers operated by the same org are usually still too homogenous to
catch _everything_.
Besides having a domain set, the wahrwolf operated rebuilder also
noticed that grub probes how the build system was booted if no default
is explicitly configured. The archlinux.org operated servers were both
EFI booted, but wahrwolf's server wasn't.
> Perhaps there's a way to require that, at least before accepting an update
> (and allowing exceptions if necessary)? At least for widely-used important
> packages like curl?
There's currently some Valve sponsored work rewriting how packages are
built/released in Arch Linux, maybe after that's done something like
this could be integrated.
As far as I know progress is tracked over here:
https://gitlab.archlinux.org/archlinux/buildbtw/-/milestones
cheers,
kpcyrd
More information about the rb-general
mailing list