From 9923403d90e4aa4b7a7a7c27840295ba9b659a97 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Tue, 8 Mar 2022 22:03:03 +0000 Subject: [PATCH] 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. --- src/libstore/path-info.cc | 1 + src/libstore/worker-protocol.hh | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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 *