aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2022-03-08 22:03:03 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-05-18 00:20:24 -0400
commit9923403d90e4aa4b7a7a7c27840295ba9b659a97 (patch)
tree04d237c0f7aa486226e799e994222703b55662cf
parent684e9be8b9356f92b7882d74cba9d146fb71f850 (diff)
Don't use `store-api.hh` in `worker-protocol.hh`
Using abstract types like can help cut down on compilation time, both from scratch, and especially incremental builds during development. The idea is that `worker-protocol.hh` can declare all the (de)serializers, but only again abstract types; when code needs to use some (de)serializers, it can include headers just for the data types it needs to (de)serialize. `store-api.hh` in particular is a bit of a sledgehammer, and the data types we want to serialize have their own headers.
-rw-r--r--src/libstore/path-info.cc1
-rw-r--r--src/libstore/worker-protocol.hh10
2 files changed, 10 insertions, 1 deletions
diff --git a/src/libstore/path-info.cc b/src/libstore/path-info.cc
index e60d7abe0..7eeda35d1 100644
--- a/src/libstore/path-info.cc
+++ b/src/libstore/path-info.cc
@@ -1,5 +1,6 @@
#include "path-info.hh"
#include "worker-protocol.hh"
+#include "store-api.hh"
namespace nix {
diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh
index 34b2fc17b..fa7202ae6 100644
--- a/src/libstore/worker-protocol.hh
+++ b/src/libstore/worker-protocol.hh
@@ -1,7 +1,6 @@
#pragma once
///@file
-#include "store-api.hh"
#include "serialise.hh"
namespace nix {
@@ -79,6 +78,15 @@ typedef enum {
class Store;
struct Source;
+// items being serialized
+struct DerivedPath;
+struct DrvOutput;
+struct Realisation;
+struct BuildResult;
+struct KeyedBuildResult;
+enum TrustedFlag : bool;
+
+
/**
* Used to guide overloading
*