[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: diverse double compilation: using $ORIGIN?
From: |
Ludovic Courtès |
Subject: |
Re: diverse double compilation: using $ORIGIN? |
Date: |
Sat, 11 Nov 2017 22:56:13 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Chris Marusich <address@hidden> skribis:
> Ricardo Wurmus <address@hidden> 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’.