Hi, Ludovic Courtès wrote:
>> You are right, nix isn't totally pure. >> Eg a lot of package do contain optimizations for different processors. >> These settings are set to [autodetect] by the configure script at many >> packages. > > Speaking of this, how does Nix ensure that `configure' scripts won't > discover things (programs, libraries, C include files, etc.) outside the > Nix store? Nix itself doesn't do anything to prevent this (it can't --- not without tricks like doing the build in a chroot, which would be nice to have but are less portable). However, in Nixpkgs there a bunch of tricks to prevent "impurities". For instance, GCC and ld are patched to not search in standard locations like /usr/include, and the gcc-wrapper script barfs if you pass it a path outside of the Nix store or the build's temporary directory. And of course the environment is cleared to prevent search paths like $PATH from affecting the builder. But we can't stop a configure script from finding (say) /usr/bin/perl and calling it. This is in fact one of the reasons why we made NixOS --- there is no /usr/bin/perl, so configure can't find it ;-) (The build farm that produces our releases runs on NixOS, so if channel packages have hidden dependencies on files outside /nix/store, the build farm will reveal this.) -- Eelco Dolstra | http://www.cs.uu.nl/~eelco _______________________________________________ nix-dev mailing list nix-dev@cs.uu.nl https://mail.cs.uu.nl/mailman/listinfo/nix-dev