diff options
Diffstat (limited to 'src/nix/log.cc')
-rw-r--r-- | src/nix/log.cc | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/nix/log.cc b/src/nix/log.cc index ba5e71c10a08..15ae61d08ccb 100644 --- a/src/nix/log.cc +++ b/src/nix/log.cc @@ -24,23 +24,25 @@ struct CmdLog : InstallableCommand void run(ref<Store> store) override { + settings.readOnlyMode = true; + auto subs = getDefaultSubstituters(); subs.push_front(store); - for (auto & b : installable->toBuildable(true)) { - - for (auto & sub : subs) { - auto log = b.second.drvPath != "" ? sub->getBuildLog(b.second.drvPath) : nullptr; - if (!log) { - log = sub->getBuildLog(b.first); - if (!log) continue; - } - stopProgressBar(); - printInfo("got build log for '%s' from '%s'", b.first, sub->getUri()); - std::cout << *log; - return; + auto b = installable->toBuildable(); + + for (auto & sub : subs) { + auto log = b.drvPath != "" ? sub->getBuildLog(b.drvPath) : nullptr; + for (auto & output : b.outputs) { + if (log) break; + log = sub->getBuildLog(output.second); } + if (!log) continue; + stopProgressBar(); + printInfo("got build log for '%s' from '%s'", installable->what(), sub->getUri()); + std::cout << *log; + return; } throw Error("build log of '%s' is not available", installable->what()); |