diff options
author | Ben Siraphob <bensiraphob@gmail.com> | 2022-05-22 13:00:39 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-22 13:00:39 -0700 |
commit | 26d8941696afc53ce45634aa7ce7f2525b67afb0 (patch) | |
tree | 50b8250bf50c34c466acaca37338ce663b09474b /pkgs/development | |
parent | db2fa42b53d7dcdefc1abd0acf654e62553ec782 (diff) | |
parent | d6d211b445caf11a88defebf8ad55809c21bf7c8 (diff) | |
download | nixpkgs-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.nix | 27 |
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" ])); |