From a8fa64c3daa46c3bedac0fbd012d45939e98780c Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Thu, 4 Nov 2004 12:19:32 +0000 Subject: commit some stuff svn path=/nixpkgs/branches/nixos-pkgs/; revision=1678 --- pkgs/system/stdenvs.nix | 64 +++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 26 deletions(-) (limited to 'pkgs/system/stdenvs.nix') diff --git a/pkgs/system/stdenvs.nix b/pkgs/system/stdenvs.nix index 7399767f7070b..eefead01f9d49 100644 --- a/pkgs/system/stdenvs.nix +++ b/pkgs/system/stdenvs.nix @@ -28,41 +28,42 @@ inherit genericStdenv gccWrapper; }; - stdenvNativePkgsFun = bootstrap: allPackages { + stdenvNativePkgs = allPackages { stdenv = stdenvNative; bootCurl = null; noSysDirs = false; - gccWithCC = !bootstrap; - gccWithProfiling = !bootstrap; }; - stdenvNativePkgs = stdenvNativePkgsFun false; - # The Nix build environment. - stdenvNixFun = bootstrap: (import ../stdenv/nix) { + stdenvNix = (import ../stdenv/nix) { stdenv = stdenvNative; - pkgs = stdenvNativePkgsFun bootstrap; + pkgs = stdenvNativePkgs; inherit genericStdenv gccWrapper; }; - stdenvNix = stdenvNixFun false; - - stdenvNixPkgsFun = bootstrap: allPackages { - stdenv = stdenvNixFun bootstrap; - bootCurl = (stdenvNativePkgsFun bootstrap).curl; + stdenvNixPkgs = allPackages { + stdenv = stdenvNix; + bootCurl = stdenvNativePkgs.curl; noSysDirs = false; }; - stdenvNixPkgs = stdenvNixPkgs false; - # The Linux build environment is a fully bootstrapped Nix # environment, that is, it should contain no external references. + # 0) ... + stdenvLinuxBoot0 = (import ../stdenv/nix-linux-static).stdenvBoot; + + stdenvLinuxBoot0Pkgs = allPackages { + stdenv = stdenvLinuxBoot0; + bootCurl = (import ../stdenv/nix-linux-static).curl; + noSysDirs = true; + }; + # 1) Build glibc in the Nix build environment. The result is # pure. - stdenvLinuxGlibc = (stdenvNixPkgsFun true).glibc; + stdenvLinuxGlibc = stdenvLinuxBoot0Pkgs.glibc; # 2) Construct a stdenv consisting of the Nix build environment, but # with a gcc-wrapper that causes linking against the glibc from @@ -70,11 +71,8 @@ # native system directories (e.g., `/usr/lib'), it doesn't # prevent impurity in the things it builds (e.g., through # `-lncurses'). - stdenvLinuxBoot1 = (import ../stdenv/nix-linux) { - stdenv = stdenvNative; - pkgs = stdenvNativePkgsFun true; + stdenvLinuxBoot1 = (import ../stdenv/nix-linux-static).stdenvBootFun { glibc = stdenvLinuxGlibc; - inherit genericStdenv gccWrapper; }; # 3) Now we can build packages that will link against the Nix @@ -84,10 +82,8 @@ # *doesn't* search in `/lib' etc. So these programs won't work. stdenvLinuxBoot1Pkgs = allPackages { stdenv = stdenvLinuxBoot1; - bootCurl = (stdenvNativePkgsFun true).curl; + bootCurl = (import ../stdenv/nix-linux-static).curl; noSysDirs = true; - gccWithCC = false; - gccWithProfiling = false; }; # 4) Therefore we build a new standard environment which is the same @@ -96,7 +92,7 @@ # system directories), things built by this stdenv should be pure. stdenvLinuxBoot2 = (import ../stdenv/nix-linux) { stdenv = stdenvLinuxBoot1; - pkgs = (stdenvNativePkgsFun true) // { + pkgs = stdenvLinuxBoot0Pkgs // { inherit (stdenvLinuxBoot1Pkgs) gcc binutils; }; glibc = stdenvLinuxGlibc; @@ -106,7 +102,7 @@ # 5) So these packages should be pure. stdenvLinuxBoot2Pkgs = allPackages { stdenv = stdenvLinuxBoot2; - bootCurl = (stdenvNativePkgsFun true).curl; + bootCurl = stdenvLinuxBoot0Pkgs.curl; }; # 6) Finally we can construct the Nix build environment from the @@ -148,7 +144,7 @@ # (essentially it's just the native environment). stdenvDarwin = (import ../stdenv/darwin) { stdenv = stdenvInitial; - genericStdenv = import ../stdenv/generic; + genericStdenv = import ../stdenv/generic-branch; inherit gccWrapper; }; @@ -157,5 +153,21 @@ bootCurl = null; noSysDirs = false; }; - + + + # Testing the new stdenv-linux (TODO: remove this eventually). + stdenvLinuxTest = (import ../stdenv/nix-linux) { + stdenv = stdenvLinuxBoot2; + pkgs = stdenvLinuxBoot2Pkgs; + glibc = stdenvLinuxGlibc; + genericStdenv = import ../stdenv/generic-branch; + inherit gccWrapper; + }; + + stdenvDarwinTest = (import ../stdenv/darwin) { + stdenv = stdenvInitial; + genericStdenv = import ../stdenv/generic-branch; + inherit gccWrapper; + }; + } -- cgit 1.4.1 From f9743cec5a61aae88e403aaf4ff06f00e90c50ee Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Wed, 15 Dec 2004 15:42:48 +0000 Subject: refactor stdenvs.nix to use all the right tools at the right time svn path=/nixpkgs/branches/nixos-pkgs/; revision=1870 --- pkgs/system/stdenvs.nix | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'pkgs/system/stdenvs.nix') diff --git a/pkgs/system/stdenvs.nix b/pkgs/system/stdenvs.nix index eefead01f9d49..b6f74e5d59c94 100644 --- a/pkgs/system/stdenvs.nix +++ b/pkgs/system/stdenvs.nix @@ -53,7 +53,10 @@ # environment, that is, it should contain no external references. # 0) ... - stdenvLinuxBoot0 = (import ../stdenv/nix-linux-static).stdenvBoot; + stdenvLinuxBoot0 = (import ../stdenv/nix-linux-static).stdenvBootFun { + # Use the statically linked, downloaded glibc/gcc/binutils. + inherit (import ../stdenv/nix-linux-static) glibc gcc binutils; + }; stdenvLinuxBoot0Pkgs = allPackages { stdenv = stdenvLinuxBoot0; @@ -72,7 +75,10 @@ # prevent impurity in the things it builds (e.g., through # `-lncurses'). stdenvLinuxBoot1 = (import ../stdenv/nix-linux-static).stdenvBootFun { + # Use the statically linked, downloaded gcc/binutils, but the + # glibc we just built. glibc = stdenvLinuxGlibc; + inherit (import ../stdenv/nix-linux-static) gcc binutils; }; # 3) Now we can build packages that will link against the Nix @@ -83,33 +89,31 @@ stdenvLinuxBoot1Pkgs = allPackages { stdenv = stdenvLinuxBoot1; bootCurl = (import ../stdenv/nix-linux-static).curl; - noSysDirs = true; }; # 4) Therefore we build a new standard environment which is the same # as the one in step 2, but with a gcc and binutils from step 3 # merged in. Since these are pure (they don't search native # system directories), things built by this stdenv should be pure. - stdenvLinuxBoot2 = (import ../stdenv/nix-linux) { - stdenv = stdenvLinuxBoot1; - pkgs = stdenvLinuxBoot0Pkgs // { - inherit (stdenvLinuxBoot1Pkgs) gcc binutils; - }; + stdenvLinuxBoot2 = (import ../stdenv/nix-linux-static).stdenvBootFun { + # Use the glibc/gcc/binutils we just built (but all other tools are still downloaded). glibc = stdenvLinuxGlibc; - inherit genericStdenv gccWrapper; + inherit (stdenvLinuxBoot1Pkgs) gcc binutils; }; # 5) So these packages should be pure. stdenvLinuxBoot2Pkgs = allPackages { stdenv = stdenvLinuxBoot2; - bootCurl = stdenvLinuxBoot0Pkgs.curl; + bootCurl = (import ../stdenv/nix-linux-static).curl; }; # 6) Finally we can construct the Nix build environment from the # packages from step 5. stdenvLinux = (import ../stdenv/nix-linux) { stdenv = stdenvLinuxBoot2; - pkgs = stdenvLinuxBoot2Pkgs; + pkgs = stdenvLinuxBoot2Pkgs // { + inherit (stdenvLinuxBoot1Pkgs) gcc binutils; + }; glibc = stdenvLinuxGlibc; inherit genericStdenv gccWrapper; }; -- cgit 1.4.1