Why is not everything reproducible yet?
Bernhard M. Wiedemann
bernhardout at lsmod.de
Wed Jan 22 07:01:30 UTC 2025
On 12/20/23 9:42 AM, Bernhard M. Wiedemann via rb-general wrote:
> Sometimes people wonder:
> Why is not everything reproducible yet?
>
> And the general reason is that there are other interests that result in
> added non-determinism.
> I collected some with examples
>
>
>
> Performance (PGO, benchmarking, -march=native, parallelism/races)
> https://build.opensuse.org/request/show/1130552
> https://github.com/bmwiedemann/theunreproduciblepackage/tree/master/pgo
>
>
> Simplicity (e.g. using random UUIDs instead of hashed inputs)
> https://github.com/ipxe/ipxe/pull/1082
>
>
> Security (Signatures):
> https://bugzilla.opensuse.org/show_bug.cgi?id=1217690
> https://bugzilla.opensuse.org/show_bug.cgi?id=1208478
> https://bugzilla.opensuse.org/show_bug.cgi?id=1081723
>
>
> Traceability of provenance (date+user+hostname):
>
> https://github.com/bmwiedemann/theunreproduciblepackage/tree/master/
> timestamp
>
>
> repeatable builds:
> https://github.com/rpm-software-management/rpm/issues/2343
>
>
> Portability:
> https://github.com/ipxe/ipxe/pull/1082#issuecomment-1862899660
> - see also the code-monster we need to support SOURCE_DATE_EPOCH with
> sh on *NIX
As a follow-up on this, when submitting
https://github.com/dunst-project/dunst/pull/1435
today, I noticed once again, that there is a trade-off to be made:
The old code was simpler, but non-deterministic.
The submitted code is less portable than the original,
but a version that works on Linux and MacOSX would be even more complex.
This applies to many of the posix-shell/Makefile changes we do.
Now compare this with past cmake patches:
https://github.com/htcondor/htcondor/pull/455/files
https://github.com/kvirc/KVIrc/pull/2361/files
https://github.com/TigerVNC/tigervnc/pull/765/files
These were much nicer to reason about: They reduced complexity, and
improved reliability + portability, while also adding determinism via
the one toolchain patch I did to cmake long ago.
Can't we have such a thing for shells as well? Maybe a 'sdedate' command
that is part of util-linux - and BSD ... and Windows? hmm... Maybe not
quite as easy.
Ciao
Bernhard M.
More information about the rb-general
mailing list