<div dir="ltr">Don't Nix builds all happen in a randomly generated temporary directory by default? Then you just copy to $out in installPhase. Perhaps stabilizing the build directory would help alleviate some of the immediate problems, if what Joachim is describing affects us too.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 10:13 PM, Mateusz Kowalczyk <span dir="ltr"><<a href="mailto:fuuzetsu@fuuzetsu.co.uk" target="_blank">fuuzetsu@fuuzetsu.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 05/14/2015 05:43 PM, Joachim Breitner wrote:<br>
> Hi,<br>
><br>
> Am Sonntag, den 10.05.2015, 19:39 +0100 schrieb Mateusz Kowalczyk:<br>
</span><span class="">>> I'd like to bring some attention to ticket #4012 about non-determinism.<br>
>> As many of you may know, the nix package manager distributes binaries<br>
>> throughout its binary caches. The binaries are shared as long as the<br>
>> hash of some of their inputs matches: this means that we can end up with<br>
>> two of the same hashes of inputs but thanks to #4012 means that the<br>
>> actual contents can differ. You end up with machines with some packages<br>
>> built locally and some elsewhere and due to non-determinism, the GHC<br>
>> package IDs don't line up and everything is broken.<br>
><br>
</span><span class="">> is NixOS sensitive to changes in the build directory. Debian is, and<br>
> since 7.8 the build path creeps into the interface files and affects the<br>
> hash: <a href="https://bugs.debian.org/785282" target="_blank">https://bugs.debian.org/785282</a><br>
><br>
> But you probably are not, otherwise you’d have complained when 7.8 was<br>
> out, and not now :-)<br>
><br>
> Greetings,<br>
> Joachim<br>
><br>
<br>
</span>Not a problem for nix, the paths are are calculated based on the<br>
derivation inputs. I don't want to go into details but if same<br>
expression goes in, same path comes out. If the path that comes out is<br>
different, you simply don't get to use it. More or less nix does<br>
‘calculate the store path from this expression, check if it exists in<br>
binary caches and fetch it if it does, build if it does not’.<br>
<br>
So for us the store paths in the interface files would always be the<br>
same for the same inputs hence no problem there.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Mateusz K.<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</div></div></blockquote></div><br></div>