Loading doc/hooks/cmake.section.md +18 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,21 @@ The default value is `build`. #### `dontUseCmakeConfigure` {#dont-use-cmake-configure} When set to true, don't use the predefined `cmakeConfigurePhase`. ## Controlling CTest invocation {#cmake-ctest} By default tests are run by make in [`checkPhase`](#ssec-check-phase) or by [ninja](#ninja) if `ninja` is available in `nativeBuildInputs`. Makefile and Ninja generators produce the `test` target, which invokes `ctest` under the hood. This makes passing additional arguments to `ctest` difficult, so it's possible to invoke it directly in `checkPhase` by adding `ctestCheckHook` to `nativeCheckInputs`. ### CTest Variables {#cmake-ctest-variables} #### `disabledTests` {#cmake-ctest-disabled-tests} Allows to disable running a list of tests. Note that regular expressions are not supported by `disabledTests`, but it can be combined with `--exclude-regex` option. #### `ctestFlags` {#cmake-ctest-flags} Additional options passed to `ctest` together with `checkFlags`. doc/redirects.json +12 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,18 @@ "chap-release-notes": [ "release-notes.html#chap-release-notes" ], "cmake-ctest": [ "index.html#cmake-ctest" ], "cmake-ctest-disabled-tests": [ "index.html#cmake-ctest-disabled-tests" ], "cmake-ctest-flags": [ "index.html#cmake-ctest-flags" ], "cmake-ctest-variables": [ "index.html#cmake-ctest-variables" ], "ex-build-helpers-extendMkDerivation": [ "index.html#ex-build-helpers-extendMkDerivation" ], Loading pkgs/applications/audio/zynaddsubfx/default.nix +12 −20 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ # Test dependencies cxxtest, ruby, ctestCheckHook, }: assert builtins.any (g: guiModule == g) [ Loading Loading @@ -151,28 +152,19 @@ stdenv.mkDerivation rec { nativeCheckInputs = [ cxxtest ruby ctestCheckHook ]; # TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829 checkPhase = let disabledTests = # PortChecker is non-deterministic. It's fixed in the master # branch, but backporting would require an update to rtosc, so # we'll just disable it until the next release. [ "PortChecker" ] # Tests fail on aarch64 ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "MessageTest" "UnisonTest" ]; in '' runHook preCheck ctest --output-on-failure -E '^${lib.concatStringsSep "|" disabledTests}$' runHook postCheck ''; # Use Zyn-Fusion logo for zest build # An SVG version of the logo isn't hosted anywhere we can fetch, I Loading pkgs/by-name/ct/ctestCheckHook/ctest-check-hook.sh 0 → 100644 +44 −0 Original line number Diff line number Diff line # shellcheck shell=bash disable=SC2154 ctestCheckHook() { echo "Executing ctestCheckHook" runHook preCheck local buildCores=1 if [ "${enableParallelChecking-1}" ]; then buildCores="$NIX_BUILD_CORES" fi local flagsArray=( "-j$buildCores" # This is enabled by the cmakeConfigurePhase by exporting # CTEST_OUTPUT_ON_FAILURE, but it makes sense it enable it globally here # as well. "--output-on-failure" ) local disabledTestsArray=() concatTo disabledTestsArray disabledTests if [ ${#disabledTestsArray[@]} -ne 0 ]; then local ctestExcludedTestsFile=$NIX_BUILD_TOP/.ctest-excluded-tests disabledTestsString="$(concatStringsSep "\n" disabledTestsArray)" echo -e "$disabledTestsString" >"$ctestExcludedTestsFile" flagsArray+=("--exclude-from-file" "$ctestExcludedTestsFile") fi concatTo flagsArray ctestFlags checkFlags checkFlagsArray echoCmd 'ctest flags' "${flagsArray[@]}" ctest "${flagsArray[@]}" echo "Finished ctestCheckHook" runHook postCheck } if [ -z "${dontUseCTestCheck-}" ] && [ -z "${checkPhase-}" ]; then checkPhase=ctestCheckHook fi pkgs/by-name/ct/ctestCheckHook/package.nix 0 → 100644 +9 −0 Original line number Diff line number Diff line { makeSetupHook, cmake, }: makeSetupHook { name = "ctestCheckHook"; propagatedBuildInputs = [ cmake ]; } ./ctest-check-hook.sh Loading
doc/hooks/cmake.section.md +18 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,21 @@ The default value is `build`. #### `dontUseCmakeConfigure` {#dont-use-cmake-configure} When set to true, don't use the predefined `cmakeConfigurePhase`. ## Controlling CTest invocation {#cmake-ctest} By default tests are run by make in [`checkPhase`](#ssec-check-phase) or by [ninja](#ninja) if `ninja` is available in `nativeBuildInputs`. Makefile and Ninja generators produce the `test` target, which invokes `ctest` under the hood. This makes passing additional arguments to `ctest` difficult, so it's possible to invoke it directly in `checkPhase` by adding `ctestCheckHook` to `nativeCheckInputs`. ### CTest Variables {#cmake-ctest-variables} #### `disabledTests` {#cmake-ctest-disabled-tests} Allows to disable running a list of tests. Note that regular expressions are not supported by `disabledTests`, but it can be combined with `--exclude-regex` option. #### `ctestFlags` {#cmake-ctest-flags} Additional options passed to `ctest` together with `checkFlags`.
doc/redirects.json +12 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,18 @@ "chap-release-notes": [ "release-notes.html#chap-release-notes" ], "cmake-ctest": [ "index.html#cmake-ctest" ], "cmake-ctest-disabled-tests": [ "index.html#cmake-ctest-disabled-tests" ], "cmake-ctest-flags": [ "index.html#cmake-ctest-flags" ], "cmake-ctest-variables": [ "index.html#cmake-ctest-variables" ], "ex-build-helpers-extendMkDerivation": [ "index.html#ex-build-helpers-extendMkDerivation" ], Loading
pkgs/applications/audio/zynaddsubfx/default.nix +12 −20 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ # Test dependencies cxxtest, ruby, ctestCheckHook, }: assert builtins.any (g: guiModule == g) [ Loading Loading @@ -151,28 +152,19 @@ stdenv.mkDerivation rec { nativeCheckInputs = [ cxxtest ruby ctestCheckHook ]; # TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829 checkPhase = let disabledTests = # PortChecker is non-deterministic. It's fixed in the master # branch, but backporting would require an update to rtosc, so # we'll just disable it until the next release. [ "PortChecker" ] # Tests fail on aarch64 ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "MessageTest" "UnisonTest" ]; in '' runHook preCheck ctest --output-on-failure -E '^${lib.concatStringsSep "|" disabledTests}$' runHook postCheck ''; # Use Zyn-Fusion logo for zest build # An SVG version of the logo isn't hosted anywhere we can fetch, I Loading
pkgs/by-name/ct/ctestCheckHook/ctest-check-hook.sh 0 → 100644 +44 −0 Original line number Diff line number Diff line # shellcheck shell=bash disable=SC2154 ctestCheckHook() { echo "Executing ctestCheckHook" runHook preCheck local buildCores=1 if [ "${enableParallelChecking-1}" ]; then buildCores="$NIX_BUILD_CORES" fi local flagsArray=( "-j$buildCores" # This is enabled by the cmakeConfigurePhase by exporting # CTEST_OUTPUT_ON_FAILURE, but it makes sense it enable it globally here # as well. "--output-on-failure" ) local disabledTestsArray=() concatTo disabledTestsArray disabledTests if [ ${#disabledTestsArray[@]} -ne 0 ]; then local ctestExcludedTestsFile=$NIX_BUILD_TOP/.ctest-excluded-tests disabledTestsString="$(concatStringsSep "\n" disabledTestsArray)" echo -e "$disabledTestsString" >"$ctestExcludedTestsFile" flagsArray+=("--exclude-from-file" "$ctestExcludedTestsFile") fi concatTo flagsArray ctestFlags checkFlags checkFlagsArray echoCmd 'ctest flags' "${flagsArray[@]}" ctest "${flagsArray[@]}" echo "Finished ctestCheckHook" runHook postCheck } if [ -z "${dontUseCTestCheck-}" ] && [ -z "${checkPhase-}" ]; then checkPhase=ctestCheckHook fi
pkgs/by-name/ct/ctestCheckHook/package.nix 0 → 100644 +9 −0 Original line number Diff line number Diff line { makeSetupHook, cmake, }: makeSetupHook { name = "ctestCheckHook"; propagatedBuildInputs = [ cmake ]; } ./ctest-check-hook.sh