buildRustPackage: factor out check phase to cargoCheckHook

API change:

`cargoParallelTestThreads` suggests that this attribute sets the
number of threads used during tests, while it is actually a boolean
option (use 1 thread or NIX_BUILD_CORES threads). In the hook, this
is replaced by a more canonical name `dontUseCargoParallelTests`.
This commit is contained in:
Daniël de Kok
2021-02-16 08:09:15 +01:00
parent 9757c7101a
commit 05e40e79a8
7 changed files with 66 additions and 21 deletions
@@ -0,0 +1,37 @@
cargoCheckHook() {
echo "Executing cargoCheckHook"
runHook preCheck
if [[ -n "${buildAndTestSubdir-}" ]]; then
pushd "${buildAndTestSubdir}"
fi
if [[ -z ${dontUseCargoParallelTests-} ]]; then
threads=$NIX_BUILD_CORES
else
threads=1
fi
argstr="--${cargoBuildType} --target @rustTargetPlatformSpec@ --frozen";
(
set -x
cargo test \
-j $NIX_BUILD_CORES \
${argstr} -- \
--test-threads=${threads} \
${checkFlags} \
${checkFlagsArray+"${checkFlagsArray[@]}"}
)
if [[ -n "${buildAndTestSubdir-}" ]]; then
popd
fi
echo "Finished cargoCheckHook"
runHook postCheck
}
checkPhase=cargoCheckHook
@@ -36,6 +36,15 @@ in {
};
} ./cargo-build-hook.sh) {};
cargoCheckHook = callPackage ({ }:
makeSetupHook {
name = "cargo-check-hook.sh";
deps = [ cargo ];
substitutions = {
inherit rustTargetPlatformSpec;
};
} ./cargo-check-hook.sh) {};
cargoInstallHook = callPackage ({ }:
makeSetupHook {
name = "cargo-install-hook.sh";