mirror of
https://github.com/NixOS/nix.git
synced 2024-11-22 06:42:28 +00:00
Merge pull request #8893 from 9999years/fix-8882
Log what `nix flake check` does
This commit is contained in:
commit
775d59f1fa
33
doc/manual/rl-next/nix-flake-check-logs-actions.md
Normal file
33
doc/manual/rl-next/nix-flake-check-logs-actions.md
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
synopsis: Some stack overflow segfaults are fixed
|
||||
issues: 8882
|
||||
prs: 8893
|
||||
---
|
||||
|
||||
`nix flake check` now logs the checks it runs and the derivations it evaluates:
|
||||
|
||||
```
|
||||
$ nix flake check -v
|
||||
evaluating flake...
|
||||
checking flake output 'checks'...
|
||||
checking derivation 'checks.aarch64-darwin.ghciwatch-tests'...
|
||||
derivation evaluated to /nix/store/nh7dlvsrhds4cxl91mvgj4h5cbq6skmq-ghciwatch-test-0.3.0.drv
|
||||
checking derivation 'checks.aarch64-darwin.ghciwatch-clippy'...
|
||||
derivation evaluated to /nix/store/9cb5a6wmp6kf6hidqw9wphidvb8bshym-ghciwatch-clippy-0.3.0.drv
|
||||
checking derivation 'checks.aarch64-darwin.ghciwatch-doc'...
|
||||
derivation evaluated to /nix/store/8brdd3jbawfszpbs7vdpsrhy80as1il8-ghciwatch-doc-0.3.0.drv
|
||||
checking derivation 'checks.aarch64-darwin.ghciwatch-fmt'...
|
||||
derivation evaluated to /nix/store/wjhs0l1njl5pyji53xlmfjrlya0wmz8p-ghciwatch-fmt-0.3.0.drv
|
||||
checking derivation 'checks.aarch64-darwin.ghciwatch-audit'...
|
||||
derivation evaluated to /nix/store/z0mps8dyj2ds7c0fn0819y5h5611033z-ghciwatch-audit-0.3.0.drv
|
||||
checking flake output 'packages'...
|
||||
checking derivation 'packages.aarch64-darwin.default'...
|
||||
derivation evaluated to /nix/store/41abbdyglw5x9vcsvd89xan3ydjf8d7r-ghciwatch-0.3.0.drv
|
||||
checking flake output 'apps'...
|
||||
checking flake output 'devShells'...
|
||||
checking derivation 'devShells.aarch64-darwin.default'...
|
||||
derivation evaluated to /nix/store/bc935gz7dylzmcpdb5cczr8gngv8pmdb-nix-shell.drv
|
||||
running 5 flake checks...
|
||||
warning: The check omitted these incompatible systems: aarch64-linux, x86_64-darwin, x86_64-linux
|
||||
Use '--all-systems' to check all.
|
||||
```
|
@ -395,11 +395,21 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkDerivation = [&](const std::string & attrPath, Value & v, const PosIdx pos) -> std::optional<StorePath> {
|
||||
try {
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking derivation %s", attrPath));
|
||||
auto packageInfo = getDerivation(*state, v, false);
|
||||
if (!packageInfo)
|
||||
throw Error("flake attribute '%s' is not a derivation", attrPath);
|
||||
// FIXME: check meta attributes
|
||||
return packageInfo->queryDrvPath();
|
||||
else {
|
||||
// FIXME: check meta attributes
|
||||
auto storePath = packageInfo->queryDrvPath();
|
||||
if (storePath) {
|
||||
logger->log(lvlInfo,
|
||||
fmt("derivation evaluated to %s",
|
||||
store->printStorePath(storePath.value())));
|
||||
}
|
||||
return storePath;
|
||||
}
|
||||
} catch (Error & e) {
|
||||
e.addTrace(resolve(pos), hintfmt("while checking the derivation '%s'", attrPath));
|
||||
reportError(e);
|
||||
@ -427,6 +437,8 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkOverlay = [&](const std::string & attrPath, Value & v, const PosIdx pos) {
|
||||
try {
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking overlay '%s'", attrPath));
|
||||
state->forceValue(v, pos);
|
||||
if (!v.isLambda()) {
|
||||
throw Error("overlay is not a function, but %s instead", showType(v));
|
||||
@ -449,6 +461,8 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkModule = [&](const std::string & attrPath, Value & v, const PosIdx pos) {
|
||||
try {
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking NixOS module '%s'", attrPath));
|
||||
state->forceValue(v, pos);
|
||||
} catch (Error & e) {
|
||||
e.addTrace(resolve(pos), hintfmt("while checking the NixOS module '%s'", attrPath));
|
||||
@ -469,7 +483,7 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
state->forceAttrs(*attr.value, attr.pos, "");
|
||||
auto attrPath2 = concatStrings(attrPath, ".", state->symbols[attr.name]);
|
||||
if (state->isDerivation(*attr.value)) {
|
||||
Activity act(*logger, lvlChatty, actUnknown,
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking Hydra job '%s'", attrPath2));
|
||||
checkDerivation(attrPath2, *attr.value, attr.pos);
|
||||
} else
|
||||
@ -484,7 +498,7 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkNixOSConfiguration = [&](const std::string & attrPath, Value & v, const PosIdx pos) {
|
||||
try {
|
||||
Activity act(*logger, lvlChatty, actUnknown,
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking NixOS configuration '%s'", attrPath));
|
||||
Bindings & bindings(*state->allocBindings(0));
|
||||
auto vToplevel = findAlongAttrPath(*state, "config.system.build.toplevel", bindings, v).first;
|
||||
@ -499,7 +513,7 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkTemplate = [&](const std::string & attrPath, Value & v, const PosIdx pos) {
|
||||
try {
|
||||
Activity act(*logger, lvlChatty, actUnknown,
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking template '%s'", attrPath));
|
||||
|
||||
state->forceAttrs(v, pos, "");
|
||||
@ -533,6 +547,8 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
|
||||
auto checkBundler = [&](const std::string & attrPath, Value & v, const PosIdx pos) {
|
||||
try {
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking bundler '%s'", attrPath));
|
||||
state->forceValue(v, pos);
|
||||
if (!v.isLambda())
|
||||
throw Error("bundler must be a function");
|
||||
@ -552,7 +568,7 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
enumerateOutputs(*state,
|
||||
*vFlake,
|
||||
[&](const std::string & name, Value & vOutput, const PosIdx pos) {
|
||||
Activity act(*logger, lvlChatty, actUnknown,
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("checking flake output '%s'", name));
|
||||
|
||||
try {
|
||||
@ -765,7 +781,8 @@ struct CmdFlakeCheck : FlakeCommand
|
||||
}
|
||||
|
||||
if (build && !drvPaths.empty()) {
|
||||
Activity act(*logger, lvlInfo, actUnknown, "running flake checks");
|
||||
Activity act(*logger, lvlInfo, actUnknown,
|
||||
fmt("running %d flake checks", drvPaths.size()));
|
||||
store->buildPaths(drvPaths);
|
||||
}
|
||||
if (hasErrors)
|
||||
|
Loading…
Reference in New Issue
Block a user