Chris Marusich <cmmarus...@gmail.com> skribis:

> Ricardo Wurmus <rek...@elephly.net> writes:
>
>> Since the GCC build procedure is performed at least two
>> times (once with the bootstrap compiler, and then again with the GCC
>> variant this produces), the resulting GCC binaries should be identical.
>>
>> Except that they are not.  One of the reasons is that the binaries
>> that Guix produces embed the target output directories.  This means
>> that the two compiler binaries that result from diverse double
>> compilation will *always* differ in at least the embedded paths, such
>> as paths to itself (e.g. to binaries in the libexec directory) and
>> paths to.
>
> What ever happened to the intensional model (i.e., a content-addressed
> store)?  If derivation outputs were content-addressed, this would not be
> a problem, right?

Indeed.

> Dolstra's thesis presented some ideas for how to rewrite self-references
> in derivation outputs under the intensional model.  I've casually looked
> into what happened with the intensional model since his thesis was
> written, but I don't really know why it hasn't been implemented.  All I
> know is that Dolstra and the Nix devs seem to have moved away from that
> idea; I never really learned the reason(s) why.

One problem is that it requires 100% reproducible builds; if something
doesn’t build reproducibly, you cannot get substitutes.

Another problem is… migration.  :-)

Now, fixed-output derivations are one way to retrofit bits of the
intensional model in the extensional model.  Perhaps we could do more in
that direction?

Ludo’.


Reply via email to