···
# * https://nixos.org/nix/manual/#ssec-derivation
# Explanation about derivations in general
130
-
, nativeBuildInputs ? []
131
-
, propagatedBuildInputs ? []
129
+
{ nativeBuildInputs ? []
, propagatedNativeBuildInputs ? []
133
+
, propagatedBuildInputs ? []
···
, propagatedSandboxProfile ? ""
144
-
let # Rename argumemnts to avoid cycles
145
-
buildInputs__ = buildInputs;
146
-
nativeBuildInputs__ = nativeBuildInputs;
147
-
propagatedBuildInputs__ = propagatedBuildInputs;
148
-
propagatedNativeBuildInputs__ = propagatedNativeBuildInputs;
150
-
getNativeDrv = drv: drv.nativeDrv or drv;
151
-
getCrossDrv = drv: drv.crossDrv or drv;
152
-
nativeBuildInputs = map getNativeDrv nativeBuildInputs__;
153
-
buildInputs = map getCrossDrv buildInputs__;
154
-
propagatedBuildInputs = map getCrossDrv propagatedBuildInputs__;
155
-
propagatedNativeBuildInputs = map getNativeDrv propagatedNativeBuildInputs__;
148
+
(map (drv: drv.nativeDrv or drv) nativeBuildInputs)
149
+
(map (drv: drv.crossDrv or drv) buildInputs)
151
+
propagatedDependencies = [
152
+
(map (drv: drv.nativeDrv or drv) propagatedNativeBuildInputs)
153
+
(map (drv: drv.crossDrv or drv) propagatedBuildInputs)
···
(if separateDebugInfo then assert targetPlatform.isLinux; [ "debug" ] else []);
284
-
buildInputs' = lib.chooseDevOutputs buildInputs ++
285
-
(if separateDebugInfo then [ ../../build-support/setup-hooks/separate-debug-info.sh ] else []);
287
-
nativeBuildInputs' = lib.chooseDevOutputs nativeBuildInputs;
288
-
propagatedBuildInputs' = lib.chooseDevOutputs propagatedBuildInputs;
289
-
propagatedNativeBuildInputs' = lib.chooseDevOutputs propagatedNativeBuildInputs;
283
+
dependencies' = let
284
+
justMap = map lib.chooseDevOutputs dependencies;
285
+
nativeBuildInputs = lib.elemAt justMap 0
286
+
++ lib.optional targetPlatform.isWindows ../../build-support/setup-hooks/win-dll-link.sh;
287
+
buildInputs = lib.elemAt justMap 1
288
+
# TODO(@Ericson2314): Should instead also be appended to `nativeBuildInputs`.
289
+
++ lib.optional separateDebugInfo ../../build-support/setup-hooks/separate-debug-info.sh;
290
+
in [ nativeBuildInputs buildInputs ];
292
+
propagatedDependencies' = map lib.chooseDevOutputs propagatedDependencies;
# Throw an error if trying to evaluate an non-valid derivation
···
"__impureHostDeps" "__propagatedImpureHostDeps"
"sandboxProfile" "propagatedSandboxProfile"])
307
+
# TODO(@Ericson2314): Reversing of dep lists is just temporary to avoid Darwin mass rebuild.
306
-
lib.concatMap (input: input.__propagatedSandboxProfile or []) (extraBuildInputs ++ buildInputs' ++ nativeBuildInputs');
309
+
lib.concatMap (input: input.__propagatedSandboxProfile or []) (extraBuildInputs ++ lib.concatLists (lib.reverseList dependencies'));
computedPropagatedSandboxProfile =
308
-
lib.concatMap (input: input.__propagatedSandboxProfile or []) (propagatedBuildInputs' ++ propagatedNativeBuildInputs');
311
+
lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists (lib.reverseList propagatedDependencies'));
310
-
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (extraBuildInputs ++ buildInputs' ++ nativeBuildInputs'));
313
+
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (extraBuildInputs ++ lib.concatLists (lib.reverseList dependencies')));
computedPropagatedImpureHostDeps =
312
-
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (propagatedBuildInputs' ++ propagatedNativeBuildInputs'));
315
+
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists (lib.reverseList propagatedDependencies')));
builder = attrs.realBuilder or shell;
···
userHook = config.stdenv.userHook or null;
322
-
# Inputs built by the cross compiler.
323
-
buildInputs = buildInputs';
324
-
propagatedBuildInputs = propagatedBuildInputs';
325
-
# Inputs built by the usual native compiler.
326
-
nativeBuildInputs = nativeBuildInputs'
328
-
(hostPlatform.isCygwin
329
-
|| (crossConfig != null && lib.hasSuffix "mingw32" crossConfig))
330
-
../../build-support/setup-hooks/win-dll-link.sh
332
-
propagatedNativeBuildInputs = propagatedNativeBuildInputs';
325
+
nativeBuildInputs = lib.elemAt dependencies' 0;
326
+
buildInputs = lib.elemAt dependencies' 1;
328
+
propagatedNativeBuildInputs = lib.elemAt propagatedDependencies' 0;
329
+
propagatedBuildInputs = lib.elemAt propagatedDependencies' 1;
# TODO: remove lib.unique once nix has a list canonicalization primitive