I enjoyed your reproducible builds talk, OP. Do you anticipate that the longest-term blocker on a fully reproducible system is the kernel itself? And do you have any hunch about how long it might be before a fully reproducible system is retained?
Thank you! It’s still weird being recognized for something :p
Depends. Fully reproducible [core] might be achievable in the near future. I fixed the issue causing filesystem to be unreproducible last weekend, and the kernel issue needs the package maintainer to sit down and do the changes. But I’m not super optimistic about fully reproducible builds being achieved in the near future. There are probably going to be a lot of hard problems once we start going to [community] packages.
What’s with having to re-install the environment twice for reproducing builds? Seems like that would slow down development if you’re trying to iteratively make a package reproducible (i.e. repro, fail, fix, repro, verify fix worked, fix something else, repro, …)
It does. The reason is that the first installation might have broken packages we need to fix up. So reinstalling all the packages completely in order fixes some of them.
However, this is all because I’m stubborn and try to downgrade the Arch bootstrap image. Clearly this isn’t working so when the filesystem issue became clear, the bootstrap image contains users and groups + systemd-sysuser/tmpfiles which a pacstrapped container does not (our build environment), I reworked everything.
This changes the root container from being something we “fork” with overlayfs to downgrade the environment, to just mounting an empty directory and pacstrap all the fetched packages into. This solves all the “reinstall everything twice” which makes the builds twice as fast, and removes a lot of the issues we have been facing with downgrading the bootstrap image. This is also what makerepropkg does so we are getting closer to the functionality essentially.
I should blog about this.
microarchitecture optimized packages (e.g. for zen1/2/3) would indeed be very cool.