From a7bcb6b93683dd9e2bbaabd8f06d56a2301f3410 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 19 Nov 2020 17:27:27 +0900 Subject: [PATCH] darwin cross: include CoreFoundation in stdenv --- pkgs/stdenv/cross/default.nix | 4 +++- pkgs/top-level/all-packages.nix | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) 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 {