about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xpkgs/development/compilers/gcc/builder.sh (renamed from pkgs/development/compilers/gcc-new/builder.sh)0
-rw-r--r--pkgs/development/compilers/gcc/default.nix (renamed from pkgs/development/compilers/gcc-new/default.nix)0
-rwxr-xr-xpkgs/development/libraries/glibc/builder.sh12
-rwxr-xr-xpkgs/development/tools/misc/binutils/builder.sh20
-rw-r--r--pkgs/development/tools/misc/binutils/default.nix7
-rw-r--r--pkgs/stdenv/generic/default.nix2
-rw-r--r--pkgs/stdenv/generic/setup.sh20
-rw-r--r--pkgs/stdenv/native/default.nix5
-rw-r--r--pkgs/stdenv/native/posthook.sh0
-rw-r--r--pkgs/stdenv/nix-linux/boot.nix25
-rw-r--r--pkgs/stdenv/nix-linux/default.nix24
-rw-r--r--pkgs/stdenv/nix-linux/posthook.sh0
-rw-r--r--pkgs/stdenv/nix-linux/prehook-boot.sh17
-rw-r--r--pkgs/stdenv/nix-linux/prehook.sh17
-rw-r--r--pkgs/stdenv/nix/posthook.sh0
-rw-r--r--pkgs/system/all-packages-generic.nix4
-rw-r--r--pkgs/system/stdenvs.nix4
-rwxr-xr-xpkgs/test/simple/builder.sh4
-rw-r--r--pkgs/test/simple/default.nix8
19 files changed, 79 insertions, 90 deletions
diff --git a/pkgs/development/compilers/gcc-new/builder.sh b/pkgs/development/compilers/gcc/builder.sh
index ce772d07a78c..ce772d07a78c 100755
--- a/pkgs/development/compilers/gcc-new/builder.sh
+++ b/pkgs/development/compilers/gcc/builder.sh
diff --git a/pkgs/development/compilers/gcc-new/default.nix b/pkgs/development/compilers/gcc/default.nix
index 9e79b21cd7a6..9e79b21cd7a6 100644
--- a/pkgs/development/compilers/gcc-new/default.nix
+++ b/pkgs/development/compilers/gcc/default.nix
diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc/builder.sh
index e3842a81c1db..b671d269cbff 100755
--- a/pkgs/development/libraries/glibc/builder.sh
+++ b/pkgs/development/libraries/glibc/builder.sh
@@ -5,22 +5,22 @@ export NIX_NO_SELF_RPATH=1
 . $stdenv/setup
 
 tar xvfj $glibcSrc
-(cd glibc-* && tar xvfj $linuxthreadsSrc)
+(cd glibc-* && tar xvfj $linuxthreadsSrc) || false
 
-(cd glibc-* && patch -p1 < $vaargsPatch)
+(cd glibc-* && patch -p1 < $vaargsPatch) || false
 
 mkdir build
 cd build
-LDFLAGS=-Wl,-S ../glibc-*/configure --prefix=$out --enable-add-ons --disable-profile
+../glibc-*/configure --prefix=$out --enable-add-ons --disable-profile
 
 make
 make install
-#make localedata/install-locales
+make localedata/install-locales
 strip -S $out/lib/*.a $out/lib/*.so $out/lib/gconv/*.so || true
 strip -s $out/bin/* $out/sbin/* $out/libexec/* || true
 
-ln -sf /etc/ld.so.cache $out/etc/ld.so.cache
+rm $out/etc/ld.so.cache
 
-(cd $out/include && ln -s $kernelHeaders/include/* .)
+(cd $out/include && ln -s $kernelHeaders/include/* .) || false
 
 exit 0
diff --git a/pkgs/development/tools/misc/binutils/builder.sh b/pkgs/development/tools/misc/binutils/builder.sh
index 7782ea089889..f76eb534c558 100755
--- a/pkgs/development/tools/misc/binutils/builder.sh
+++ b/pkgs/development/tools/misc/binutils/builder.sh
@@ -1,17 +1,17 @@
-#! /bin/sh
+#! /bin/sh -e
 
-. $stdenv/setup || exit 1
+. $stdenv/setup
 
-tar xvfj $src || exit 1
-cd binutils-* || exit 1
+tar xvfj $src
+cd binutils-*
 
 # Clear the default library search path.
-if test "$noSysDirs" == "1"; then
-    echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt || exit 1
+if test "$enforcePurity" = "1"; then
+    echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt
 fi
 
-./configure --prefix=$out || exit 1
-make || exit 1
-make install || exit 1
+./configure --prefix=$out
+make
+make install
 
-strip -S $out/lib/*.a || exit 1
+strip -S $out/lib/*.a
diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix
index 07d6b416a54a..3f027d90fcc6 100644
--- a/pkgs/development/tools/misc/binutils/default.nix
+++ b/pkgs/development/tools/misc/binutils/default.nix
@@ -1,4 +1,6 @@
-{stdenv, fetchurl}: derivation {
+{stdenv, fetchurl, enforcePurity ? true}:
+
+derivation {
   name = "binutils-2.14";
   system = stdenv.system;
   builder = ./builder.sh;
@@ -6,6 +8,5 @@
     url = ftp://ftp.nluug.nl/pub/gnu/binutils/binutils-2.14.tar.bz2;
     md5 = "2da8def15d28af3ec6af0982709ae90a";
   };
-  stdenv = stdenv;
-  noSysDirs = stdenv.noSysDirs;
+  inherit stdenv enforcePurity;
 }
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index c816e5888080..9c877252e2be 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, name, preHook, postHook, initialPath, gcc
+{ stdenv, name, preHook ? null, postHook ? null, initialPath, gcc
 , param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? ""
 }:
 
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index c1b2ef99236b..259417afaa3b 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -1,9 +1,11 @@
 set -e
 
+test -z $NIX_GCC && NIX_GCC=@gcc@
+
 
 # Set up the initial path.
 PATH=
-for i in @gcc@ @initialPath@; do
+for i in $NIX_GCC @initialPath@; do
     PATH=$PATH${PATH:+:}$i/bin
 done
 
@@ -18,12 +20,18 @@ param2=@param2@
 param3=@param3@
 param4=@param4@
 param5=@param5@
-. @preHook@
+if test -n "@preHook@"; then
+    . @preHook@
+fi
+
+
+# Check that the pre-hook initialised SHELL.
+if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi
 
 
 # Hack: run gcc's setup hook.
-if test -f @gcc@/nix-support/setup-hook; then
-    . @gcc@/nix-support/setup-hook
+if test -f $NIX_GCC/nix-support/setup-hook; then
+    . $NIX_GCC/nix-support/setup-hook
 fi
 
     
@@ -93,7 +101,9 @@ export TZ=UTC
 
 
 # Execute the post-hook.
-. @postHook@
+if test -n "@postHook@"; then
+    . @postHook@
+fi
 
 PATH=$_PATH${_PATH:+:}$PATH
 if test "$NIX_DEBUG" = "1"; then
diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix
index cf5a1da19878..2fd6b670c399 100644
--- a/pkgs/stdenv/native/default.nix
+++ b/pkgs/stdenv/native/default.nix
@@ -3,15 +3,14 @@
 (import ../generic) {
   name = "stdenv-native";
   preHook = ./prehook.sh;
-  postHook = ./posthook.sh;
   initialPath = "/usr/local /usr /";
 
   inherit stdenv;
 
   gcc = (import ../../build-support/gcc-wrapper) {
-    inherit stdenv;
     name = "gcc-native";
     isNative = true;
-    gcc = "/usr";
+    nativePrefix = "/usr";
+    inherit stdenv;
   };
 }
diff --git a/pkgs/stdenv/native/posthook.sh b/pkgs/stdenv/native/posthook.sh
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/pkgs/stdenv/native/posthook.sh
+++ /dev/null
diff --git a/pkgs/stdenv/nix-linux/boot.nix b/pkgs/stdenv/nix-linux/boot.nix
index c42b3f33302a..cc5ab2122e87 100644
--- a/pkgs/stdenv/nix-linux/boot.nix
+++ b/pkgs/stdenv/nix-linux/boot.nix
@@ -1,13 +1,16 @@
-{system, glibc}: (import ../generic) {
-  name = "stdenv-linux-boot";
-  system = system;
-  prehook = ./prehook-boot.sh;
-  posthook = ./posthook.sh;
+{stdenv, glibc}:
+
+(import ../generic) {
+  name = "stdenv-nix-linux-boot";
+  preHook = ./prehook-boot.sh;
   initialPath = "/usr/local /usr /";
-  param1 = "";
-  param2 = "";
-  param3 = "";
-  param4 = glibc;
-  param5 = "";
-  noSysDirs = true;
+
+  inherit stdenv;
+
+  gcc = (import ../../build-support/gcc-wrapper) {
+    name = "gcc-native";
+    isNative = true;
+    nativePrefix = "/usr";
+    inherit stdenv glibc;
+  };
 }
diff --git a/pkgs/stdenv/nix-linux/default.nix b/pkgs/stdenv/nix-linux/default.nix
index b0898826b5d7..518939757488 100644
--- a/pkgs/stdenv/nix-linux/default.nix
+++ b/pkgs/stdenv/nix-linux/default.nix
@@ -1,13 +1,19 @@
-{bootStdenv, pkgs, glibc}: (import ../generic) {
+{stdenv, glibc, pkgs}:
+
+(import ../generic) {
   name = "stdenv-nix-linux";
-  system = bootStdenv.system;
-  prehook = ./prehook.sh;
-  posthook = ./posthook.sh;
+  preHook = ./prehook.sh;
   initialPath = (import ../nix/path.nix) {pkgs = pkgs;};
+
+  inherit stdenv;
+
+  gcc = (import ../../build-support/gcc-wrapper) {
+    name = "gcc-native";
+    isNative = false;
+    gcc = pkgs.gcc;
+    binutils = pkgs.binutils;
+    inherit stdenv glibc;
+  };
+
   param1 = pkgs.bash;
-  param2 = pkgs.gcc;
-  param3 = pkgs.binutils;
-  param4 = glibc;
-  param5 = "";
-  noSysDirs = true;
 }
diff --git a/pkgs/stdenv/nix-linux/posthook.sh b/pkgs/stdenv/nix-linux/posthook.sh
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/pkgs/stdenv/nix-linux/posthook.sh
+++ /dev/null
diff --git a/pkgs/stdenv/nix-linux/prehook-boot.sh b/pkgs/stdenv/nix-linux/prehook-boot.sh
index 193f232c3374..af1ba16ccbeb 100644
--- a/pkgs/stdenv/nix-linux/prehook-boot.sh
+++ b/pkgs/stdenv/nix-linux/prehook-boot.sh
@@ -1,18 +1 @@
 export SHELL=/bin/sh
-
-export NIX_CC=/usr/bin/gcc
-export NIX_CXX=/usr/bin/g++
-export NIX_LD=/usr/bin/ld
-
-# The "-B$param4/lib" is a quick hack to force gcc to link against the
-# crt1.o from our own glibc, rather than the one in /usr/lib.  The
-# real solution is of course to prevent those paths from being used by
-# gcc in the first place.
-# !!! -B should really be in NIX_CFLAGS_LINK, but ld-wrapper also uses
-# that one (incorrectly?).
-export NIX_CFLAGS_COMPILE="-B$param4/lib -isystem $param4/include $NIX_CFLAGS_COMPILE"
-export NIX_CFLAGS_LINK="-L$param4/lib $NIX_CFLAGS_LINK"
-export NIX_LDFLAGS="-dynamic-linker $param4/lib/ld-linux.so.2 -rpath $param4/lib $NIX_LDFLAGS"
-
-export NIX_LIBC_INCLUDES="$param4/include"
-export NIX_LIBC_LIBS="$param4/lib"
diff --git a/pkgs/stdenv/nix-linux/prehook.sh b/pkgs/stdenv/nix-linux/prehook.sh
index 087b245401cb..0e0bada4fcb2 100644
--- a/pkgs/stdenv/nix-linux/prehook.sh
+++ b/pkgs/stdenv/nix-linux/prehook.sh
@@ -1,18 +1,3 @@
 export SHELL=$param1
 
-export NIX_CC=$param2/bin/gcc
-export NIX_CXX=$param2/bin/g++
-export NIX_LD=$param3/bin/ld
-
-# The "-B$param4/lib" is a quick hack to force gcc to link against the
-# crt1.o from our own glibc, rather than the one in /usr/lib.  The
-# real solution is of course to prevent those paths from being used by
-# gcc in the first place.
-# !!! -B should really be in NIX_CFLAGS_LINK, but ld-wrapper also uses
-# that one (incorrectly?).
-export NIX_CFLAGS_COMPILE="-B$param4/lib -isystem $param4/include $NIX_CFLAGS_COMPILE"
-export NIX_CFLAGS_LINK="-L$param4/lib -L$param2/lib $NIX_CFLAGS_LINK"
-export NIX_LDFLAGS="-dynamic-linker $param4/lib/ld-linux.so.2 -rpath $param4/lib -rpath $param2/lib $NIX_LDFLAGS"
-
-export NIX_LIBC_INCLUDES="$param4/include"
-export NIX_LIBC_LIBS="$param4/lib"
+export NIX_ENFORCE_PURITY=1
diff --git a/pkgs/stdenv/nix/posthook.sh b/pkgs/stdenv/nix/posthook.sh
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/pkgs/stdenv/nix/posthook.sh
+++ /dev/null
diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix
index 4de6e4ca502a..d656845994e7 100644
--- a/pkgs/system/all-packages-generic.nix
+++ b/pkgs/system/all-packages-generic.nix
@@ -198,12 +198,12 @@
   };
 
   gcc = (import ../development/compilers/gcc) {
-    inherit fetchurl stdenv binutils;
+    inherit fetchurl stdenv;
   };
 
   g77 = (import ../build-support/gcc-wrapper) {
     inherit stdenv;
-    gcc = (import ../development/compilers/gcc-new) {
+    gcc = (import ../development/compilers/gcc) {
       inherit fetchurl stdenv;
       langF77 = true;
       langCC = false;
diff --git a/pkgs/system/stdenvs.nix b/pkgs/system/stdenvs.nix
index 06a9fc50fedf..d770d6874992 100644
--- a/pkgs/system/stdenvs.nix
+++ b/pkgs/system/stdenvs.nix
@@ -44,7 +44,7 @@
   # 2) Construct a stdenv consisting of the native build environment,
   #    plus the pure glibc.
   stdenvLinuxBoot1 = (import ../stdenv/nix-linux/boot.nix) {
-    system = system;
+    stdenv = stdenvInitial;
     glibc = stdenvLinuxGlibc;
   };
 
@@ -56,7 +56,7 @@
   #    might end up linking against /lib/libncurses).  So repeat, but
   #    now use the Nix-built tools from step 2/3.
   stdenvLinuxBoot2 = (import ../stdenv/nix-linux) {
-    bootStdenv = stdenvLinuxBoot1;
+    stdenv = stdenvLinuxBoot1;
     pkgs = stdenvLinuxBoot1Pkgs;
     glibc = stdenvLinuxGlibc;
   };
diff --git a/pkgs/test/simple/builder.sh b/pkgs/test/simple/builder.sh
index 282fc520bd1f..58bf16c43b34 100755
--- a/pkgs/test/simple/builder.sh
+++ b/pkgs/test/simple/builder.sh
@@ -4,7 +4,7 @@ export NIX_DEBUG=1
 
 . $stdenv/setup
 
-#export NIX_CFLAGS_COMPILE="-v $NIX_CFLAGS_COMPILE"
+export NIX_ENFORCE_PURITY=1
 
 mkdir $out
 mkdir $out/bin
@@ -24,6 +24,8 @@ gcc -L /nix/store/abcd/lib -isystem /usr/lib hello.c -o $out/bin/hello
 
 $out/bin/hello
 
+exit 0
+
 cat > hello2.cc <<EOF
 #include <iostream>
 
diff --git a/pkgs/test/simple/default.nix b/pkgs/test/simple/default.nix
index 2d582f03a511..9374a6ede281 100644
--- a/pkgs/test/simple/default.nix
+++ b/pkgs/test/simple/default.nix
@@ -1,12 +1,12 @@
 let {
   system = "i686-linux";
 
-  stdenvInitial = (import ../../stdenv/initial) {
-    name = "stdenv-initial";
-    inherit system;
+  stdenvs = (import ../../system/stdenvs.nix) {
+    system = "i686-linux";
+    allPackages = import ../../system/all-packages-generic.nix;
   };
 
-  stdenv = (import ../../stdenv/native) {stdenv = stdenvInitial;};
+  stdenv = stdenvs.stdenvLinuxBoot1;
 
   test = derivation {
     name = "simple-test";