From 5eaea6cee01e9172ae65ccb6356861786a0f85cc Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 26 Dec 2016 14:32:14 -0800 Subject: cross stdenv: let build package's build deps resolve to native packages This fixes the "sliding window" principle: 0. Run packages: build = native; host = foreign; target = foreign; 1. Build packages: build = native; host = native; target = foreign; 2. Vanilla packages: build = native; host = native; target = native; 3. Vanilla packages: build = native; host = native; target = native; n+3. ... Each stage's build dependencies are resolved against the previous stage, and the "foreigns" are shifted accordingly. Vanilla packages alone are built against themsevles, since there are no more "foreign"s to shift away. Before, build packages' build dependencies were resolved against themselves: 0. Run packages: build = native; host = foreign; target = foreign; 1. Build packages: build = native; host = native; target = foreign; 2. Build packages: build = native; host = native; target = foreign; n+2. ... This is wrong because that principle is violated by the target platform staying foreign. This will change the hashes of many build packages and run packages, but that is OK. This is an unavoidable cost of fixing cross compiling. The cross compilation docs have been updated to reflect this fix. --- pkgs/stdenv/cross/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'pkgs/stdenv') diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index 37f403acee9e..e322d4655201 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -18,8 +18,7 @@ in bootStages ++ [ hostPlatform = localSystem; targetPlatform = crossSystem; inherit config overlays; - # Should be false, but we're trying to preserve hashes for now - selfBuild = true; + selfBuild = false; # It's OK to change the built-time dependencies allowCustomOverrides = true; stdenv = vanillaPackages.stdenv // { -- cgit 1.4.1