From 06681c35a9191656b8f3a9a343e21457a71a947d Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 21 Aug 2020 02:07:17 +0100 Subject: refactor(tvix): Replace several DiscardLogsSink() with std::cerr Introduces the actual log sink in several places where we actually want the build logs to thread through correctly. This should cover *most* build paths. Change-Id: I735dff8a79f7e35a5874eb89b4abb980f9703dc2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1827 Reviewed-by: glittershark Tested-by: BuildkiteCI --- third_party/nix/src/libexpr/primops.cc | 7 ++----- third_party/nix/src/libexpr/primops.hh | 2 +- third_party/nix/src/nix-build/nix-build.cc | 3 +-- third_party/nix/src/nix-env/nix-env.cc | 4 +--- third_party/nix/src/nix-env/user-env.cc | 7 ++++--- third_party/nix/src/nix-store/nix-store.cc | 12 ++++-------- third_party/nix/src/nix/installables.cc | 4 ++-- 7 files changed, 15 insertions(+), 24 deletions(-) (limited to 'third_party') diff --git a/third_party/nix/src/libexpr/primops.cc b/third_party/nix/src/libexpr/primops.cc index 1684c20413c5..04a44311a259 100644 --- a/third_party/nix/src/libexpr/primops.cc +++ b/third_party/nix/src/libexpr/primops.cc @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -92,11 +93,7 @@ void EvalState::realiseContext(const PathSet& context) { store->queryMissing(drvs, willBuild, willSubstitute, unknown, downloadSize, narSize); - // TODO(tazjin): Figure out where these logs are supposed to go ... - // unless we keep a per-store stream open persistently there's no - // "generic" way to send logs anywhere for cases like this (IFD). - auto discard_logs = DiscardLogsSink(); - nix::util::OkOrThrow(store->buildPaths(discard_logs, drvs)); + nix::util::OkOrThrow(store->buildPaths(std::cerr, drvs)); } /* Load and evaluate an expression from path specified by the diff --git a/third_party/nix/src/libexpr/primops.hh b/third_party/nix/src/libexpr/primops.hh index 0c9f6ccab1f7..ab5f64720273 100644 --- a/third_party/nix/src/libexpr/primops.hh +++ b/third_party/nix/src/libexpr/primops.hh @@ -6,7 +6,7 @@ namespace nix { struct RegisterPrimOp { - typedef std::vector> PrimOps; + using PrimOps = std::vector >; static PrimOps* primOps; /* You can register a constant by passing an arity of 0. fun will get called during EvalState initialization, so there diff --git a/third_party/nix/src/nix-build/nix-build.cc b/third_party/nix/src/nix-build/nix-build.cc index cc2d8bc2fbe9..6d1dd80944ed 100644 --- a/third_party/nix/src/nix-build/nix-build.cc +++ b/third_party/nix/src/nix-build/nix-build.cc @@ -359,8 +359,7 @@ static void _main(int argc, char** argv) { } if (!dryRun) { - auto discard_logs = DiscardLogsSink(); - util::OkOrThrow(store->buildPaths(discard_logs, paths, buildMode)); + util::OkOrThrow(store->buildPaths(std::cerr, paths, buildMode)); } }; diff --git a/third_party/nix/src/nix-env/nix-env.cc b/third_party/nix/src/nix-env/nix-env.cc index e42fc29c2267..9c0931e7f4ad 100644 --- a/third_party/nix/src/nix-env/nix-env.cc +++ b/third_party/nix/src/nix-env/nix-env.cc @@ -722,10 +722,8 @@ static void opSet(Globals& globals, Strings opFlags, Strings opArgs) { if (globals.dryRun) { return; } - auto discard_logs = DiscardLogsSink(); nix::util::OkOrThrow(globals.state->store->buildPaths( - discard_logs, paths, - globals.state->repair != 0u ? bmRepair : bmNormal)); + std::cerr, paths, globals.state->repair != 0u ? bmRepair : bmNormal)); } else { printMissing(globals.state->store, {drv.queryOutPath()}); if (globals.dryRun) { diff --git a/third_party/nix/src/nix-env/user-env.cc b/third_party/nix/src/nix-env/user-env.cc index e3124a60e385..bce5c44f9591 100644 --- a/third_party/nix/src/nix-env/user-env.cc +++ b/third_party/nix/src/nix-env/user-env.cc @@ -1,5 +1,7 @@ #include "nix-env/user-env.hh" +#include + #include #include "libexpr/eval-inline.hh" @@ -38,9 +40,8 @@ bool createUserEnv(EvalState& state, DrvInfos& elems, const Path& profile, } DLOG(INFO) << "building user environment dependencies"; - auto discard_logs = DiscardLogsSink(); util::OkOrThrow(state.store->buildPaths( - discard_logs, drvsToBuild, state.repair != 0u ? bmRepair : bmNormal)); + std::cerr, drvsToBuild, state.repair != 0u ? bmRepair : bmNormal)); /* Construct the whole top level derivation. */ PathSet references; @@ -140,7 +141,7 @@ bool createUserEnv(EvalState& state, DrvInfos& elems, const Path& profile, /* Realise the resulting store expression. */ DLOG(INFO) << "building user environment"; util::OkOrThrow(state.store->buildPaths( - discard_logs, {topLevelDrv}, state.repair != 0u ? bmRepair : bmNormal)); + std::cerr, {topLevelDrv}, state.repair != 0u ? bmRepair : bmNormal)); /* Switch the current user environment to the output path. */ auto store2 = state.store.dynamic_pointer_cast(); diff --git a/third_party/nix/src/nix-store/nix-store.cc b/third_party/nix/src/nix-store/nix-store.cc index 101ab01ef9e7..535903d823ed 100644 --- a/third_party/nix/src/nix-store/nix-store.cc +++ b/third_party/nix/src/nix-store/nix-store.cc @@ -69,8 +69,7 @@ static PathSet realisePath(Path path, bool build = true) { if (isDerivation(p.first)) { if (build) { - auto discard_logs = DiscardLogsSink(); - util::OkOrThrow(store->buildPaths(discard_logs, {path})); + util::OkOrThrow(store->buildPaths(std::cerr, {path})); } Derivation drv = store->derivationFromPath(p.first); rootNr++; @@ -186,9 +185,8 @@ static void opRealise(Strings opFlags, Strings opArgs) { } /* Build all paths at the same time to exploit parallelism. */ - auto discard_logs = DiscardLogsSink(); util::OkOrThrow(store->buildPaths( - discard_logs, PathSet(paths.begin(), paths.end()), buildMode)); + std::cerr, PathSet(paths.begin(), paths.end()), buildMode)); if (!ignoreUnknown) { for (auto& i : paths) { @@ -1006,8 +1004,7 @@ static void opServe(Strings opFlags, Strings opArgs) { does one path at a time. */ if (!willSubstitute.empty()) { try { - auto discard_logs = DiscardLogsSink(); - util::OkOrThrow(store->buildPaths(discard_logs, willSubstitute)); + util::OkOrThrow(store->buildPaths(std::cerr, willSubstitute)); } catch (Error& e) { LOG(WARNING) << e.msg(); } @@ -1069,8 +1066,7 @@ static void opServe(Strings opFlags, Strings opArgs) { try { MonitorFdHup monitor(in.fd); - auto discard_logs = DiscardLogsSink(); - util::OkOrThrow(store->buildPaths(discard_logs, paths)); + util::OkOrThrow(store->buildPaths(std::cerr, paths)); out << 0; } catch (Error& e) { assert(e.status); diff --git a/third_party/nix/src/nix/installables.cc b/third_party/nix/src/nix/installables.cc index b5980ce47624..7aa26b0dee8c 100644 --- a/third_party/nix/src/nix/installables.cc +++ b/third_party/nix/src/nix/installables.cc @@ -1,3 +1,4 @@ +#include #include #include @@ -274,8 +275,7 @@ Buildables build( if (mode == DryRun) { printMissing(store, pathsToBuild); } else if (mode == Build) { - auto discard_logs = DiscardLogsSink(); - util::OkOrThrow(store->buildPaths(discard_logs, pathsToBuild)); + util::OkOrThrow(store->buildPaths(std::cerr, pathsToBuild)); } return buildables; -- cgit 1.4.1