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’.