From e826a6a24774045b7d7d4e9814d8356278b84568 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Wed, 12 Jul 2017 19:00:19 -0400 Subject: [PATCH] stdenv: Move some logic from cross adapter to stdenv proper Eventually the adapter will be removed. Moved is - Name suffix from hostPlatform - configurePlatforms To not cause more breakage, the default is currently [], but eventually it will be [ "build" "host" ], as the cross adapter makes it today. --- pkgs/stdenv/adapters.nix | 19 +------------------ pkgs/stdenv/generic/make-derivation.nix | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 5848ee87b1b0..ac382927b1b9 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -73,15 +73,8 @@ rec { }; in stdenv // { mkDerivation = - { name ? "", buildInputs ? [], nativeBuildInputs ? [] + { buildInputs ? [], nativeBuildInputs ? [] , propagatedBuildInputs ? [], propagatedNativeBuildInputs ? [] - , # Disabling the tests by default when cross compiling, as usually the - # tests rely on being able to run produced binaries. - doCheck ? false - , configureFlags ? [] - , # Target is not included by default because most programs don't care. - # Including it then would cause needless massive rebuilds. - configurePlatforms ? args.crossAttrs.configurePlatforms or [ "build" "host" ] , selfNativeBuildInput ? args.crossAttrs.selfNativeBuildInput or false , ... } @ args: @@ -106,7 +99,6 @@ rec { nativeInputsFromBuildInputs = stdenv.lib.filter hostAsNativeDrv buildInputsNotNull; in stdenv.mkDerivation (args // { - name = name + "-" + hostPlatform.config; nativeBuildInputs = nativeBuildInputs ++ nativeInputsFromBuildInputs ++ stdenv.lib.optional selfNativeBuildInput nativeDrv @@ -116,15 +108,6 @@ rec { ++ stdenv.lib.optional (hostPlatform.config == "aarch64-linux-gnu") pkgs.updateAutotoolsGnuConfigScriptsHook ; - inherit doCheck; - - # This parameter is sometimes a string and sometimes a list, yuck - configureFlags = let inherit (stdenv.lib) optional elem; in - (if stdenv.lib.isString configureFlags then [configureFlags] else configureFlags) - ++ optional (elem "build" configurePlatforms) "--build=${buildPlatform.config}" - ++ optional (elem "host" configurePlatforms) "--host=${hostPlatform.config}" - ++ optional (elem "target" configurePlatforms) "--target=${targetPlatform.config}"; - # Cross-linking dynamic libraries, every buildInput should # be propagated because ld needs the -rpath-link to find # any library needed to link the program dynamically at diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 05221e2f3c10..1486b11f7016 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -12,12 +12,22 @@ rec { # * https://nixos.org/nix/manual/#ssec-derivation # Explanation about derivations in general mkDerivation = - { nativeBuildInputs ? [] + { name ? "" + + , nativeBuildInputs ? [] , buildInputs ? [] , propagatedNativeBuildInputs ? [] , propagatedBuildInputs ? [] + , configureFlags ? [] + , # Target is not included by default because most programs don't care. + # Including it then would cause needless mass rebuilds. + # + # TODO(@Ericson2314): Make [ "build" "host" ] always the default. + configurePlatforms ? lib.optionals + (stdenv.hostPlatform != stdenv.buildPlatform) + [ "build" "host" ] , crossConfig ? null , meta ? {} , passthru ? {} @@ -72,6 +82,9 @@ rec { lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists propagatedDependencies')); in { + name = name + lib.optionalString + (stdenv.hostPlatform != stdenv.buildPlatform) + stdenv.hostPlatform.config; builder = attrs.realBuilder or stdenv.shell; args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)]; inherit stdenv; @@ -84,6 +97,14 @@ rec { propagatedNativeBuildInputs = lib.elemAt propagatedDependencies' 0; propagatedBuildInputs = lib.elemAt propagatedDependencies' 1; + + # This parameter is sometimes a string and sometimes a list, yuck + configureFlags = let inherit (lib) optional elem; in + (if lib.isString configureFlags then [configureFlags] else configureFlags) + ++ optional (elem "build" configurePlatforms) "--build=${stdenv.buildPlatform.config}" + ++ optional (elem "host" configurePlatforms) "--host=${stdenv.hostPlatform.config}" + ++ optional (elem "target" configurePlatforms) "--target=${stdenv.targetPlatform.config}"; + } // lib.optionalAttrs (stdenv.buildPlatform.isDarwin) { # TODO: remove lib.unique once nix has a list canonicalization primitive __sandboxProfile =