aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/attrsets.nix2
-rw-r--r--pkgs/stdenv/generic/default.nix22
2 files changed, 15 insertions, 9 deletions
diff --git a/lib/attrsets.nix b/lib/attrsets.nix
index f47e481c58a4..686e125f100c 100644
--- a/lib/attrsets.nix
+++ b/lib/attrsets.nix
@@ -454,6 +454,8 @@ rec {
getLib = getOutput "lib";
getDev = getOutput "dev";
+ /* Pick the outputs of packages to place in buildInputs */
+ chooseDevOutputs = drvs: builtins.map (drv: if drv.outputUnspecified or false then drv.dev or drv else drv) drvs;
/*** deprecated stuff ***/
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index cf7894fc005b..e71c2f770b9b 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -158,9 +158,13 @@ let
outputs ++
(if separateDebugInfo then assert result.isLinux; [ "debug" ] else []);
- buildInputs' = buildInputs ++
+ buildInputs' = lib.chooseDevOutputs buildInputs ++
(if separateDebugInfo then [ ../../build-support/setup-hooks/separate-debug-info.sh ] else []);
+ nativeBuildInputs' = lib.chooseDevOutputs nativeBuildInputs;
+ propagatedBuildInputs' = lib.chooseDevOutputs propagatedBuildInputs;
+ propagatedNativeBuildInputs' = lib.chooseDevOutputs propagatedNativeBuildInputs;
+
in
# Throw an error if trying to evaluate an non-valid derivation
@@ -176,13 +180,13 @@ let
"sandboxProfile" "propagatedSandboxProfile"])
// (let
computedSandboxProfile =
- lib.concatMap (input: input.__propagatedSandboxProfile or []) (extraBuildInputs ++ buildInputs ++ nativeBuildInputs);
+ lib.concatMap (input: input.__propagatedSandboxProfile or []) (extraBuildInputs ++ buildInputs' ++ nativeBuildInputs');
computedPropagatedSandboxProfile =
- lib.concatMap (input: input.__propagatedSandboxProfile or []) (propagatedBuildInputs ++ propagatedNativeBuildInputs);
+ lib.concatMap (input: input.__propagatedSandboxProfile or []) (propagatedBuildInputs' ++ propagatedNativeBuildInputs');
computedImpureHostDeps =
- lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (extraBuildInputs ++ buildInputs ++ nativeBuildInputs));
+ lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (extraBuildInputs ++ buildInputs' ++ nativeBuildInputs'));
computedPropagatedImpureHostDeps =
- lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (propagatedBuildInputs ++ propagatedNativeBuildInputs));
+ lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (propagatedBuildInputs' ++ propagatedNativeBuildInputs'));
in
{
builder = attrs.realBuilder or shell;
@@ -194,17 +198,17 @@ let
# Inputs built by the cross compiler.
buildInputs = if crossConfig != null then buildInputs' else [];
- propagatedBuildInputs = if crossConfig != null then propagatedBuildInputs else [];
+ propagatedBuildInputs = if crossConfig != null then propagatedBuildInputs' else [];
# Inputs built by the usual native compiler.
- nativeBuildInputs = nativeBuildInputs
+ nativeBuildInputs = nativeBuildInputs'
++ lib.optionals (crossConfig == null) buildInputs'
++ lib.optional
(result.isCygwin
|| (crossConfig != null && lib.hasSuffix "mingw32" crossConfig))
../../build-support/setup-hooks/win-dll-link.sh
;
- propagatedNativeBuildInputs = propagatedNativeBuildInputs ++
- (if crossConfig == null then propagatedBuildInputs else []);
+ propagatedNativeBuildInputs = propagatedNativeBuildInputs' ++
+ (if crossConfig == null then propagatedBuildInputs' else []);
} // ifDarwin {
# TODO: remove lib.unique once nix has a list canonicalization primitive
__sandboxProfile =