[rb-general] Source code timestamps
infinity0 at debian.org
Tue Dec 6 01:28:00 CET 2016
> On 16-12-05 08:09pm, Ximin Luo wrote:
>>> FYC: nix sets the timestamps of all files in the store to 1-1-1970, 1:00.
>>> Also, it has a special archiving format, .nar, which is similar to
>>> tar, minus nondeterminism (in ordering, I think).
>>> You can find more in-depth information in Eelco Dolstra’s PhD thesis
>>> (https://nixos.org/~eelco/pubs/phd-thesis.pdf), section 5.2.
>> The thing is 281 pages long. On page 112 it says they set all timestamps to 0
>> but I can't find an explanation of the rationale. "X does Y" is not an
>> argument in favour of anything, and it doesn't convince people who want to
>> take the time to think about a problem. Do you know what the rationale is?
> The rationale is in section 5.2(.1), as I wrote, end of page 91f.
> A build process is basically a pure function f from Set of Things
> to Bytes.
> The „Set of Things“ consists of stuff like locale, current time,
> configuration flags, environment and a file tree of sources.
> Now, since it’s a function the same input will always produce the
> same output and outputs for different inputs may be the same or different.
> The function may also decide whether to use inputs.
> Reproducible builds are the art of minimizing the amount of factors
> that influence the output of build functions.
This is not a proper rationale, and indicates you're missing the point of the discussions in this current thread.
Having a build process that produces a single empty file would be always reproducible. So this simple example should indicate to you, that something is missing from your argument.
More information about the rb-general