pkgs/build-support/trivial-builders: add runCommandLocal
A definition I’ve been copy-pasting everywhere so far, so it’s finally time to add it to nixpkgs. I’m using a remote builder for my regular nix builds, so trivial `runCommand`s which first try a substitution and then copy the inputs to the builder to run for 0.2s are quite noticable. If we just always build these, we gain some build time, so let’s make it easy to switch from remote to local.
This commit is contained in:
parent
03ad033f97
commit
8deaf41d60
|
@ -2,11 +2,16 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
runCommand' = stdenv: name: env: buildCommand:
|
runCommand' = runLocal: stdenv: name: env: buildCommand:
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
inherit name buildCommand;
|
inherit name buildCommand;
|
||||||
passAsFile = [ "buildCommand" ];
|
passAsFile = [ "buildCommand" ];
|
||||||
} // env);
|
}
|
||||||
|
// (lib.optionalAttrs runLocal {
|
||||||
|
preferLocalBuild = true;
|
||||||
|
allowSubstitutes = false;
|
||||||
|
})
|
||||||
|
// env);
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -21,10 +26,26 @@ rec {
|
||||||
* runCommand "name" {envVariable = true;} ''echo hello > $out''
|
* runCommand "name" {envVariable = true;} ''echo hello > $out''
|
||||||
* runCommandNoCC "name" {envVariable = true;} ''echo hello > $out'' # equivalent to prior
|
* runCommandNoCC "name" {envVariable = true;} ''echo hello > $out'' # equivalent to prior
|
||||||
* runCommandCC "name" {} ''gcc -o myfile myfile.c; cp myfile $out'';
|
* runCommandCC "name" {} ''gcc -o myfile myfile.c; cp myfile $out'';
|
||||||
|
*
|
||||||
|
* The `*Local` variants force a derivation to be built locally,
|
||||||
|
* it is not substituted.
|
||||||
|
*
|
||||||
|
* This is intended for very cheap commands (<1s execution time).
|
||||||
|
* It saves on the network roundrip and can speed up a build.
|
||||||
|
*
|
||||||
|
* It is the same as adding the special fields
|
||||||
|
* `preferLocalBuild = true;`
|
||||||
|
* `allowSubstitutes = false;`
|
||||||
|
* to a derivation’s attributes.
|
||||||
*/
|
*/
|
||||||
runCommand = runCommandNoCC;
|
runCommand = runCommandNoCC;
|
||||||
runCommandNoCC = runCommand' stdenvNoCC;
|
runCommandLocal = runCommandNoCCLocal;
|
||||||
runCommandCC = runCommand' stdenv;
|
|
||||||
|
runCommandNoCC = runCommand' false stdenvNoCC;
|
||||||
|
runCommandNoCCLocal = runCommand' true stdenvNoCC;
|
||||||
|
|
||||||
|
runCommandCC = runCommand' false stdenv;
|
||||||
|
runCommandCCLocal = runCommand' true stdenv;
|
||||||
|
|
||||||
|
|
||||||
/* Writes a text file to the nix store.
|
/* Writes a text file to the nix store.
|
||||||
|
|
Loading…
Reference in a new issue