mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
libstore-tests: Build and run benchmarks in CI
This changes our GHA CI and nix-store-tests packaging to build and run the benchmarks. This does not affect the default packaging - the overrides apply only for the GHA CI.
This commit is contained in:
parent
b2b2f2dc53
commit
ea1f67393d
4 changed files with 38 additions and 15 deletions
|
|
@ -59,7 +59,9 @@ in
|
|||
inherit getStdenv;
|
||||
}).overrideScope
|
||||
(
|
||||
_: _: {
|
||||
final: prev: {
|
||||
nix-store-tests = prev.nix-store-tests.override { withBenchmarks = true; };
|
||||
|
||||
mesonComponentOverrides = finalAttrs: prevAttrs: {
|
||||
mesonFlags =
|
||||
(prevAttrs.mesonFlags or [ ])
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "nix/store/derivations.hh"
|
||||
#include "nix/store/store-api.hh"
|
||||
#include "nix/util/experimental-features.hh"
|
||||
#include "nix/util/environment-variables.hh"
|
||||
#include "nix/store/store-open.hh"
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
|
@ -28,5 +29,11 @@ static void BM_ParseRealDerivationFile(benchmark::State & state, const std::stri
|
|||
}
|
||||
|
||||
// Register benchmarks for actual test derivation files if they exist
|
||||
BENCHMARK_CAPTURE(BM_ParseRealDerivationFile, hello, std::string(NIX_UNIT_TEST_DATA) + "/derivation/hello.drv");
|
||||
BENCHMARK_CAPTURE(BM_ParseRealDerivationFile, firefox, std::string(NIX_UNIT_TEST_DATA) + "/derivation/firefox.drv");
|
||||
BENCHMARK_CAPTURE(
|
||||
BM_ParseRealDerivationFile,
|
||||
hello,
|
||||
getEnvNonEmpty("_NIX_TEST_UNIT_DATA").value_or(NIX_UNIT_TEST_DATA) + "/derivation/hello.drv");
|
||||
BENCHMARK_CAPTURE(
|
||||
BM_ParseRealDerivationFile,
|
||||
firefox,
|
||||
getEnvNonEmpty("_NIX_TEST_UNIT_DATA").value_or(NIX_UNIT_TEST_DATA) + "/derivation/firefox.drv");
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ if get_option('benchmarks')
|
|||
dependencies : deps_private_subproject + deps_private + deps_other + [gbenchmark],
|
||||
include_directories : include_dirs,
|
||||
link_args: linker_export_flags,
|
||||
install : false,
|
||||
install : true,
|
||||
cpp_args : ['-DNIX_UNIT_TEST_DATA="' + meson.current_source_dir() + '/data"'],
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -12,12 +12,14 @@
|
|||
|
||||
rapidcheck,
|
||||
gtest,
|
||||
gbenchmark,
|
||||
runCommand,
|
||||
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
filesetToSource,
|
||||
withBenchmarks ? false,
|
||||
}:
|
||||
|
||||
let
|
||||
|
|
@ -41,11 +43,15 @@ mkMesonExecutable (finalAttrs: {
|
|||
];
|
||||
|
||||
# Hack for sake of the dev shell
|
||||
passthru.externalBuildInputs = [
|
||||
sqlite
|
||||
rapidcheck
|
||||
gtest
|
||||
];
|
||||
passthru.externalBuildInputs =
|
||||
[
|
||||
sqlite
|
||||
rapidcheck
|
||||
gtest
|
||||
]
|
||||
++ lib.optionals withBenchmarks [
|
||||
gbenchmark
|
||||
];
|
||||
|
||||
buildInputs = finalAttrs.passthru.externalBuildInputs ++ [
|
||||
nix-store
|
||||
|
|
@ -54,6 +60,7 @@ mkMesonExecutable (finalAttrs: {
|
|||
];
|
||||
|
||||
mesonFlags = [
|
||||
(lib.mesonBool "benchmarks" withBenchmarks)
|
||||
];
|
||||
|
||||
passthru = {
|
||||
|
|
@ -75,12 +82,19 @@ mkMesonExecutable (finalAttrs: {
|
|||
meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages;
|
||||
buildInputs = [ writableTmpDirAsHomeHook ];
|
||||
}
|
||||
(''
|
||||
export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"}
|
||||
export NIX_REMOTE=$HOME/store
|
||||
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage}
|
||||
touch $out
|
||||
'');
|
||||
(
|
||||
''
|
||||
export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"}
|
||||
export NIX_REMOTE=$HOME/store
|
||||
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage}
|
||||
''
|
||||
+ lib.optionalString withBenchmarks ''
|
||||
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe' finalAttrs.finalPackage "nix-store-benchmarks"}
|
||||
''
|
||||
+ ''
|
||||
touch $out
|
||||
''
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue