lix/src/nix/log.cc
Eelco Dolstra fdc9da034f
Avoid a call to derivationFromPath()
This doesn't work in read-only mode, ensuring that operations like

  nix path-info --store https://cache.nixos.org -S nixpkgs.hello

(asking for the closure size of nixpkgs.hello in cache.nixos.org) work
when nixpkgs.hello doesn't exist in the local store.
2017-07-14 18:29:10 +02:00

49 lines
1.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "command.hh"
#include "common-args.hh"
#include "shared.hh"
#include "store-api.hh"
using namespace nix;
struct CmdLog : InstallablesCommand
{
CmdLog()
{
}
std::string name() override
{
return "log";
}
std::string description() override
{
return "show the build log of the specified packages or paths";
}
void run(ref<Store> store) override
{
auto subs = getDefaultSubstituters();
subs.push_front(store);
for (auto & inst : installables) {
for (auto & b : inst->toBuildable()) {
auto path = b.second.drvPath != "" ? b.second.drvPath : b.first;
bool found = false;
for (auto & sub : subs) {
auto log = sub->getBuildLog(path);
if (!log) continue;
std::cout << *log;
found = true;
break;
}
if (!found)
throw Error("build log of path %s is not available", path);
}
}
}
};
static RegisterCommand r1(make_ref<CmdLog>());