summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorBen Siraphob <bensiraphob@gmail.com>2022-05-22 13:00:39 -0700
committerGitHub <noreply@github.com>2022-05-22 13:00:39 -0700
commit26d8941696afc53ce45634aa7ce7f2525b67afb0 (patch)
tree50b8250bf50c34c466acaca37338ce663b09474b /pkgs/development
parentdb2fa42b53d7dcdefc1abd0acf654e62553ec782 (diff)
parentd6d211b445caf11a88defebf8ad55809c21bf7c8 (diff)
downloadnixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar.gz
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar.bz2
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar.lz
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar.xz
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.tar.zst
nixpkgs-26d8941696afc53ce45634aa7ce7f2525b67afb0.zip
Merge pull request #108539 from jonringer/crystal-parallel
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/crystal/build-package.nix27
1 files changed, 17 insertions, 10 deletions
diff --git a/pkgs/development/compilers/crystal/build-package.nix b/pkgs/development/compilers/crystal/build-package.nix
index 215c3d37d88..4edf1ddf958 100644
--- a/pkgs/development/compilers/crystal/build-package.nix
+++ b/pkgs/development/compilers/crystal/build-package.nix
@@ -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" ]));