trivial-builders: merge passAsFile with env in runCommand'

Previously it was awkward to use the runCommand-variants with
passAsFile as a double definition of passAsFile would potentially
break runCommand: passAsFile would overwrite the previous definition,
defeating the purpose of setting it in runCommand in the first place.
This is now fixed by concatenating the [ "buildCommand" ] list with
one the one from env, if present.

Adjust buildEnv where passAsFile = null; was passed in some cases,
breaking evaluation since it'd evaluate to [ "buildCommand" ] ++ null.
This commit is contained in:
sternenseemann 2021-03-10 19:43:17 +01:00 committed by Profpatsch
parent 9a48ca8027
commit b398d00903
2 changed files with 4 additions and 3 deletions

View file

@ -74,7 +74,7 @@ runCommand name
preferLocalBuild = true;
allowSubstitutes = false;
# XXX: The size is somewhat arbitrary
passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else null;
passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else [ ];
}
''
${buildPackages.perl}/bin/perl -w ${builder}

View file

@ -6,13 +6,14 @@ let
stdenv.mkDerivation ({
name = lib.strings.sanitizeDerivationName name;
inherit buildCommand;
passAsFile = [ "buildCommand" ];
passAsFile = [ "buildCommand" ]
++ (env.passAsFile or []);
}
// (lib.optionalAttrs runLocal {
preferLocalBuild = true;
allowSubstitutes = false;
})
// env);
// builtins.removeAttrs env [ "passAsFile" ]);
in