about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2020-02-25 21:21:04 +0100
committerMaximilian Bosch <maximilian@mbosch.me>2020-05-06 23:47:31 +0200
commit04248f606f4ebfe298bfbfed3680a2fd5dacf796 (patch)
tree27fc7eb1e5fb4cd84efc32b20e3851448fd3f692 /pkgs/build-support
parenta0c2484d0e650fc8597f3ca7be4bc49192426b3a (diff)
downloadnixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar.gz
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar.bz2
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar.lz
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar.xz
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.tar.zst
nixlib-04248f606f4ebfe298bfbfed3680a2fd5dacf796.zip
rustPlatform: increase build-speed of `checkPhase` for rust-packages
When running `cargo test --release`, the artifacts from `buildPhase`
will be reused here. Previously, most of the stuff had to be recompiled
without optimizations.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/rust/default.nix24
1 files changed, 13 insertions, 11 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 93770d71a10d..6cece0048333 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -162,22 +162,17 @@ stdenv.mkDerivation (args // {
         --frozen ${concatStringsSep " " cargoBuildFlags}
     )
 
-    # rename the output dir to a architecture independent one
-    mapfile -t targets < <(find "$NIX_BUILD_TOP" -type d | grep '${releaseDir}$')
-    for target in "''${targets[@]}"; do
-      rm -rf "$target/../../${buildType}"
-      ln -srf "$target" "$target/../../"
-    done
-
     runHook postBuild
   '';
 
-  checkPhase = args.checkPhase or ''
+  checkPhase = args.checkPhase or (let
+    argstr = "${stdenv.lib.optionalString (buildType == "release") "--release"} --target ${rustTarget} --frozen";
+  in ''
     runHook preCheck
-    echo "Running cargo cargo test -- ''${checkFlags} ''${checkFlagsArray+''${checkFlagsArray[@]}}"
-    cargo test -- ''${checkFlags} ''${checkFlagsArray+"''${checkFlagsArray[@]}"}
+    echo "Running cargo cargo test ${argstr} -- ''${checkFlags} ''${checkFlagsArray+''${checkFlagsArray[@]}}"
+    cargo test ${argstr} -- ''${checkFlags} ''${checkFlagsArray+"''${checkFlagsArray[@]}"}
     runHook postCheck
-  '';
+  '');
 
   doCheck = args.doCheck or true;
 
@@ -187,6 +182,13 @@ stdenv.mkDerivation (args // {
 
   installPhase = args.installPhase or ''
     runHook preInstall
+
+    # rename the output dir to a architecture independent one
+    mapfile -t targets < <(find "$NIX_BUILD_TOP" -type d | grep '${releaseDir}$')
+    for target in "''${targets[@]}"; do
+      rm -rf "$target/../../${buildType}"
+      ln -srf "$target" "$target/../../"
+    done
     mkdir -p $out/bin $out/lib
 
     find $releaseDir \