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 <rikingcoding@gmail.com>
Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2020-08-20 01:25:19 +01:00 committed by tazjin
parent dfc351b463
commit 883de9b8d7
2 changed files with 19 additions and 0 deletions

View file

@ -1,6 +1,8 @@
#include "libstore/store-api.hh"
#include <future>
#include <ostream>
#include <streambuf>
#include <utility>
#include <absl/status/status.h>
@ -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<BuildMode> BuildModeFrom(nix::proto::BuildMode mode) {
switch (mode) {
case nix::proto::BuildMode::Normal:

View file

@ -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);