summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@yahoo.com>2017-04-24 19:07:48 -0400
committerGitHub <noreply@github.com>2017-04-24 19:07:48 -0400
commit75441dd64ac0a7f87ad9ee44574d829263792fef (patch)
tree685ad2f0a2f74b0042ea279d1902b1991e62ce8a /pkgs/stdenv
parentf2d1aa05de4d925998d67b5ac9b6512a3cb67d81 (diff)
parent49c99b70cf64ccf99cd292426b3dbcaeb2e885aa (diff)
downloadnixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar.gz
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar.bz2
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar.lz
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar.xz
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.tar.zst
nixpkgs-75441dd64ac0a7f87ad9ee44574d829263792fef.zip
Merge pull request #25194 from obsidiansystems/host-target-unconfuse
stdenv.cross is a silly attribute that needs to go leaving the well-defined hostPlatform and targetPlatform. This PR doesn't remove it, but changes its definition: before it tracked the target platform which is sometimes more useful for compilers, and now it tracks the host platform which is more useful for everything else. Most usages are libraries, falling in the "everything else" category, so changing the definition makes sense to appease the majority. The few compiler (gcc in particular) uses that exist I remove to use targetPlatform --- preserving correctness and becoming more explicit in the process.

I would also update the documentation aside mentioning stdenv.cross as deprecated, but the definition given actually erroneously assumes this PR is already merged!
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/adapters.nix4
-rw-r--r--pkgs/stdenv/cross/default.nix4
-rw-r--r--pkgs/stdenv/darwin/default.nix5
-rw-r--r--pkgs/stdenv/linux/default.nix8
4 files changed, 14 insertions, 7 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 3ffe1ab15d9..65a0bf98456 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -58,6 +58,10 @@ rec {
   # builds.
   makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // {
 
+    # Overrides are surely not valid as packages built with this run on a
+    # different platform.
+    overrides = _: _: {};
+
     mkDerivation =
       { name ? "", buildInputs ? [], nativeBuildInputs ? []
       , propagatedBuildInputs ? [], propagatedNativeBuildInputs ? []
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 05910d100a8..dec4b036092 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -21,9 +21,7 @@ in bootStages ++ [
     selfBuild = false;
     # It's OK to change the built-time dependencies
     allowCustomOverrides = true;
-    stdenv = vanillaPackages.stdenv // {
-      overrides = _: _: {};
-    };
+    inherit (vanillaPackages) stdenv;
   })
 
   # Run Packages
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index e80c54e0218..8a517fddad8 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -253,7 +253,7 @@ in rec {
     inherit
       gnumake gzip gnused bzip2 gawk ed xz patch bash
       libcxxabi libcxx ncurses libffi zlib icu llvm gmp pcre gnugrep
-      coreutils findutils diffutils patchutils binutils binutils-raw;
+      coreutils findutils diffutils patchutils;
 
     llvmPackages = super.llvmPackages // {
       inherit (llvmPackages) llvm clang-unwrapped;
@@ -262,6 +262,9 @@ in rec {
     darwin = super.darwin // {
       inherit (darwin) dyld Libsystem cctools libiconv;
     };
+  } // lib.optionalAttrs (super.targetPlatform == localSystem) {
+    # Need to get rid of these when cross-compiling.
+    inherit binutils binutils-raw;
   };
 
   stdenvDarwin = prevStage: let pkgs = prevStage; in import ../generic rec {
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index fe685a1e77c..3a244675b3a 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -298,12 +298,14 @@ in
         */
 
       overrides = self: super: {
-        gcc = cc;
-
         inherit (prevStage)
-          gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
+          gzip bzip2 xz bash coreutils diffutils findutils gawk
           glibc gnumake gnused gnutar gnugrep gnupatch patchelf
           attr acl paxctl zlib pcre;
+      } // lib.optionalAttrs (super.targetPlatform == localSystem) {
+        # Need to get rid of these when cross-compiling.
+        inherit (prevStage) binutils;
+        gcc = cc;
       };
     };
   })