aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/nar-info-disk-cache.hh
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-05-06 16:45:09 +0200
committerregnat <rg@regnat.ovh>2021-05-06 17:38:20 +0200
commitb66234134fadc720d6c177d62e6ce4c9f4093a89 (patch)
treec0c4a8fa838b244abe081c41b3c439ace8a35d6b /src/libstore/nar-info-disk-cache.hh
parentfe3a10a9b2c61ba19b24da4c93c4abc9e7583f3d (diff)
Add a realisations disk cache
Similar to the nar-info disk cache (and using the same db). This makes rebuilds muuch faster. - This works regardless of the ca-derivations experimental feature. I could modify the logic to not touch the db if the flag isn’t there, but given that this is a trash-able local cache, it doesn’t seem to be really worth it. - We could unify the `NARs` and `Realisation` tables to only have one generic kv table. This is left as an exercise to the reader. - I didn’t update the cache db version number as the new schema just adds a new table to the previous one, so the db will be transparently migrated and is backwards-compatible. Fix #4746
Diffstat (limited to 'src/libstore/nar-info-disk-cache.hh')
-rw-r--r--src/libstore/nar-info-disk-cache.hh10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libstore/nar-info-disk-cache.hh b/src/libstore/nar-info-disk-cache.hh
index 04de2c5eb..2dcaa76a4 100644
--- a/src/libstore/nar-info-disk-cache.hh
+++ b/src/libstore/nar-info-disk-cache.hh
@@ -2,6 +2,7 @@
#include "ref.hh"
#include "nar-info.hh"
+#include "realisation.hh"
namespace nix {
@@ -29,6 +30,15 @@ public:
virtual void upsertNarInfo(
const std::string & uri, const std::string & hashPart,
std::shared_ptr<const ValidPathInfo> info) = 0;
+
+ virtual void upsertRealisation(
+ const std::string & uri,
+ const Realisation & realisation) = 0;
+ virtual void upsertAbsentRealisation(
+ const std::string & uri,
+ const DrvOutput & id) = 0;
+ virtual std::pair<Outcome, std::shared_ptr<Realisation>> lookupRealisation(
+ const std::string & uri, const DrvOutput & id) = 0;
};
/* Return a singleton cache object that can be used concurrently by