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 <grfn@gws.fyi> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									262af89f81
								
							
						
					
					
						commit
						06681c35a9
					
				
					 7 changed files with 15 additions and 24 deletions
				
			
		
							
								
								
									
										7
									
								
								third_party/nix/src/libexpr/primops.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								third_party/nix/src/libexpr/primops.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| #include <algorithm> | ||||
| #include <cstring> | ||||
| #include <iostream> | ||||
| #include <regex> | ||||
| 
 | ||||
| #include <absl/strings/str_split.h> | ||||
|  | @ -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
 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								third_party/nix/src/libexpr/primops.hh
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								third_party/nix/src/libexpr/primops.hh
									
										
									
									
										vendored
									
									
								
							|  | @ -6,7 +6,7 @@ | |||
| namespace nix { | ||||
| 
 | ||||
| struct RegisterPrimOp { | ||||
|   typedef std::vector<std::tuple<std::string, size_t, PrimOpFun>> PrimOps; | ||||
|   using PrimOps = std::vector<std::tuple<std::string, size_t, PrimOpFun> >; | ||||
|   static PrimOps* primOps; | ||||
|   /* You can register a constant by passing an arity of 0. fun
 | ||||
|      will get called during EvalState initialization, so there | ||||
|  |  | |||
							
								
								
									
										3
									
								
								third_party/nix/src/nix-build/nix-build.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								third_party/nix/src/nix-build/nix-build.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -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)); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										4
									
								
								third_party/nix/src/nix-env/nix-env.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								third_party/nix/src/nix-env/nix-env.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -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) { | ||||
|  |  | |||
							
								
								
									
										7
									
								
								third_party/nix/src/nix-env/user-env.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								third_party/nix/src/nix-env/user-env.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -1,5 +1,7 @@ | |||
| #include "nix-env/user-env.hh" | ||||
| 
 | ||||
| #include <iostream> | ||||
| 
 | ||||
| #include <glog/logging.h> | ||||
| 
 | ||||
| #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<LocalFSStore>(); | ||||
|  |  | |||
							
								
								
									
										12
									
								
								third_party/nix/src/nix-store/nix-store.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								third_party/nix/src/nix-store/nix-store.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -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); | ||||
|  |  | |||
							
								
								
									
										4
									
								
								third_party/nix/src/nix/installables.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								third_party/nix/src/nix/installables.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | |||
| #include <iostream> | ||||
| #include <regex> | ||||
| #include <utility> | ||||
| 
 | ||||
|  | @ -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; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue