make-derivation: don’t add host suffix if there is no c compiler

Some trivial builders use the name attr to choose the exec name
produced. For example nixos-install,

  nixos-install = makeProg {
    name = "nixos-install";
    src = ./nixos-install.sh;
    nix = config.nix.package.out;
    path = makeBinPath [ nixos-enter ];
  };

When cross compiling, this puts the prog in,

  /bin/nixos-install-powerpc64le-unknown-linux-gnu
This commit is contained in:
Matthew Bauer 2018-11-28 12:44:10 -06:00
parent a9b7fa7634
commit a56fe056ec

View file

@ -96,7 +96,7 @@ rec {
++ depsHostHost ++ depsHostHostPropagated
++ buildInputs ++ propagatedBuildInputs
++ depsTargetTarget ++ depsTargetTargetPropagated) == 0;
runtimeSensativeIfFixedOutput = fixedOutputDrv -> !noNonNativeDeps;
dontAddHostSuffix = attrs ? outputHash && !noNonNativeDeps || stdenv.cc == null;
supportedHardeningFlags = [ "fortify" "stackprotector" "pie" "pic" "strictoverflow" "format" "relro" "bindnow" ];
defaultHardeningFlags = if stdenv.targetPlatform.isMusl
then supportedHardeningFlags
@ -187,7 +187,7 @@ rec {
# suffix. But we have some weird ones with run-time deps that are
# just used for their side-affects. Those might as well since the
# hash can't be the same. See #32986.
(stdenv.hostPlatform != stdenv.buildPlatform && runtimeSensativeIfFixedOutput)
(stdenv.hostPlatform != stdenv.buildPlatform && !dontAddHostSuffix)
("-" + stdenv.hostPlatform.config);
builder = attrs.realBuilder or stdenv.shell;