From 883de9b8d71b9cb984d8ff315b4dcc30e0ca9082 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 20 Aug 2020 01:25:19 +0100 Subject: feat(tvix): Add a no-op stream buffer for discarding build logs In some cases we don't have anywhere for the build logs to go. Until we understand those cases fully and can get rid of them, this null sink implementation can be used. Change-Id: Ib93c43caf268e2c01c43d59737a829e8c43d223e Reviewed-on: https://cl.tvl.fyi/c/depot/+/1792 Tested-by: BuildkiteCI Reviewed-by: kanepyork Reviewed-by: glittershark --- third_party/nix/src/libstore/store-api.cc | 13 +++++++++++++ third_party/nix/src/libstore/store-api.hh | 6 ++++++ 2 files changed, 19 insertions(+) (limited to 'third_party/nix') diff --git a/third_party/nix/src/libstore/store-api.cc b/third_party/nix/src/libstore/store-api.cc index fc33c7ce5711..3ada63532ca2 100644 --- a/third_party/nix/src/libstore/store-api.cc +++ b/third_party/nix/src/libstore/store-api.cc @@ -1,6 +1,8 @@ #include "libstore/store-api.hh" #include +#include +#include #include #include @@ -23,6 +25,17 @@ namespace nix { +namespace { +class NullStream : public std::streambuf { + public: + int overflow(int c) override { return c; } +}; + +static NullStream NULL_STREAM{}; +} // namespace + +std::ostream DiscardLogsSink() { return std::ostream(&NULL_STREAM); } + std::optional BuildModeFrom(nix::proto::BuildMode mode) { switch (mode) { case nix::proto::BuildMode::Normal: diff --git a/third_party/nix/src/libstore/store-api.hh b/third_party/nix/src/libstore/store-api.hh index b1c0b50de376..39769dfb3cd0 100644 --- a/third_party/nix/src/libstore/store-api.hh +++ b/third_party/nix/src/libstore/store-api.hh @@ -19,6 +19,12 @@ namespace nix { +// Create a no-op stream buffer used to discard build output in cases +// where we don't have a build log sink to thread through. +// +// TODO(tazjin): Get rid of this and do *something* with those logs. +std::ostream DiscardLogsSink(); + MakeError(SubstError, Error); MakeError(BuildError, Error); /* denotes a permanent build failure */ MakeError(InvalidPath, Error); -- cgit 1.4.1