mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-19 16:45:49 +01:00
buildCrystalPackage: enableParallelBuilding
This commit is contained in:
parent
8f81fe3dc9
commit
d6d211b445
1 changed files with 17 additions and 10 deletions
|
@ -24,6 +24,7 @@
|
|||
# Specify binaries to build in the form { foo.src = "src/foo.cr"; }
|
||||
# The default `crystal build` options can be overridden with { foo.options = [ "--optionname" ]; }
|
||||
, crystalBinaries ? { }
|
||||
, enableParallelBuilding ? true
|
||||
, ...
|
||||
}@args:
|
||||
|
||||
|
@ -51,6 +52,20 @@ let
|
|||
|
||||
buildDirectly = shardsFile == null || crystalBinaries != { };
|
||||
|
||||
mkCrystalBuildArgs = bin: attrs:
|
||||
lib.concatStringsSep " " ([
|
||||
"crystal"
|
||||
"build"
|
||||
] ++ lib.optionals enableParallelBuilding [
|
||||
"--threads"
|
||||
"$NIX_BUILD_CORES"
|
||||
] ++ [
|
||||
"-o"
|
||||
bin
|
||||
(attrs.src or (throw "No source file for crystal binary ${bin} provided"))
|
||||
(lib.concatStringsSep " " (attrs.options or defaultOptions))
|
||||
]);
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (mkDerivationArgs // {
|
||||
|
||||
|
@ -72,6 +87,7 @@ stdenv.mkDerivation (mkDerivationArgs // {
|
|||
|
||||
PREFIX = placeholder "out";
|
||||
|
||||
inherit enableParallelBuilding;
|
||||
strictDeps = true;
|
||||
buildInputs = args.buildInputs or [ ] ++ [ crystal ];
|
||||
|
||||
|
@ -88,16 +104,7 @@ stdenv.mkDerivation (mkDerivationArgs // {
|
|||
"runHook preBuild"
|
||||
] ++ lib.optional (format == "make")
|
||||
"make \${buildTargets:-build} $makeFlags"
|
||||
++ lib.optionals (format == "crystal") (lib.mapAttrsToList
|
||||
(bin: attrs: ''
|
||||
crystal ${lib.escapeShellArgs ([
|
||||
"build"
|
||||
"-o"
|
||||
bin
|
||||
(attrs.src or (throw "No source file for crystal binary ${bin} provided"))
|
||||
] ++ (attrs.options or defaultOptions))}
|
||||
'')
|
||||
crystalBinaries)
|
||||
++ lib.optionals (format == "crystal") (lib.mapAttrsToList mkCrystalBuildArgs crystalBinaries)
|
||||
++ lib.optional (format == "shards")
|
||||
"shards build --local --production ${lib.concatStringsSep " " (args.options or defaultOptions)}"
|
||||
++ [ "runHook postBuild" ]));
|
||||
|
|
Loading…
Reference in a new issue