diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index a9fd21534ff4..18a6e2a47372 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -48,7 +48,9 @@ in lib.init bootStages ++ [ # Prior overrides are surely not valid as packages built with this run on # a different platform, and so are disabled. overrides = _: _: {}; - extraBuildInputs = [ ]; # Old ones run on wrong platform + extraBuildInputs = [ ] # Old ones run on wrong platform + ++ lib.optionals hostPlatform.isDarwin [ buildPackages.targetPackages.darwin.apple_sdk.frameworks.CoreFoundation ] + ; allowedRequisites = null; hasCC = !targetPlatform.isGhcjs; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 99169c488027..a9da6ce07074 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30,7 +30,18 @@ in # just the plain stdenv. stdenv_32bit = lowPrio (if stdenv.hostPlatform.is32bit then stdenv else multiStdenv); - stdenvNoCC = stdenv.override { cc = null; hasCC = false; }; + stdenvNoCC = stdenv.override ( + { cc = null; hasCC = false; } + + // lib.optionalAttrs (stdenv.hostPlatform.isDarwin && (stdenv.hostPlatform != stdenv.buildPlatform)) { + # TODO: This is a hack to use stdenvNoCC to produce a CF when cross + # compiling. It's not very sound. The cross stdenv has: + # extraBuildInputs = [ targetPackages.darwin.apple_sdks.frameworks.CoreFoundation ] + # and uses stdenvNoCC. In order to make this not infinitely recursive, we need to exclude + # this extraBuildInput. + extraBuildInputs = []; + } + ); mkStdenvNoLibs = stdenv: let bintools = stdenv.cc.bintools.override {