summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/systems/doubles.nix2
-rw-r--r--pkgs/stdenv/booter.nix9
-rw-r--r--pkgs/stdenv/cross/default.nix8
3 files changed, 15 insertions, 4 deletions
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix
index 58cff18e6488..f07e9da33bcb 100644
--- a/lib/systems/doubles.nix
+++ b/lib/systems/doubles.nix
@@ -27,6 +27,8 @@ let
"riscv32-linux" "riscv64-linux"
"aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none"
+
+ "js-ghcjs"
];
allParsed = map parse.mkSystemFromString all;
diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix
index 1df05099fbf5..8a5746522049 100644
--- a/pkgs/stdenv/booter.nix
+++ b/pkgs/stdenv/booter.nix
@@ -121,9 +121,12 @@ stageFuns: let
postStage = buildPackages: {
__raw = true;
stdenv.cc =
- if buildPackages.stdenv.cc.isClang or false
- then buildPackages.clang
- else buildPackages.gcc;
+ if buildPackages.stdenv.hasCC
+ then
+ if buildPackages.stdenv.cc.isClang or false
+ then buildPackages.clang
+ else buildPackages.gcc
+ else buildPackages.stdenv.cc;
};
in dfold folder postStage (_: {}) withAllowCustomOverrides
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 4e5c4cc2e833..44d412e041b7 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -51,12 +51,18 @@ in lib.init bootStages ++ [
extraBuildInputs = [ ]; # Old ones run on wrong platform
allowedRequisites = null;
+ hasCC = !targetPlatform.isGhcjs;
+
cc = if crossSystem.useiOSPrebuilt or false
then buildPackages.darwin.iosSdkPkgs.clang
else if crossSystem.useAndroidPrebuilt or false
then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang
else if targetPlatform.isGhcjs
- then null
+ # Need to use `throw` so tryEval for splicing works, ugh. Using
+ # `null` or skipping the attribute would cause an eval failure
+ # `tryEval` wouldn't catch, wrecking accessing previous stages
+ # when there is a C compiler and everything should be fine.
+ then throw "no C compile provided for this platform"
else if crossSystem.useLLVM or false
then buildPackages.llvmPackages_8.lldClang
else buildPackages.gcc;