aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/derivations.cc
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-02-16 08:16:12 +0100
committerThéophane Hufschmitt <regnat@users.noreply.github.com>2021-02-19 15:48:31 +0100
commitf483b623e98a0feb2568e5be076b533c5838ba32 (patch)
treed099a0b1596cc3b8db11e0ba7c7d60815228ba07 /src/libstore/derivations.cc
parent4bc28c44f258f4f8c8a3935d1acf746f6abe3d8f (diff)
Remove the drv resolution caching mechanism
It isn't needed anymore now that don't need to eagerly resolve everything like we used to do. So we can safely get rid of it
Diffstat (limited to 'src/libstore/derivations.cc')
-rw-r--r--src/libstore/derivations.cc34
1 files changed, 1 insertions, 33 deletions
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc
index 7807089ca..6d0742b4f 100644
--- a/src/libstore/derivations.cc
+++ b/src/libstore/derivations.cc
@@ -745,7 +745,7 @@ static void rewriteDerivation(Store & store, BasicDerivation & drv, const String
}
-std::optional<BasicDerivation> Derivation::tryResolveUncached(Store & store) {
+std::optional<BasicDerivation> Derivation::tryResolve(Store & store) {
BasicDerivation resolved { *this };
// Input paths that we'll want to rewrite in the derivation
@@ -776,36 +776,4 @@ std::optional<BasicDerivation> Derivation::tryResolveUncached(Store & store) {
return resolved;
}
-std::optional<BasicDerivation> Derivation::tryResolve(Store& store)
-{
- auto drvPath = writeDerivation(store, *this, NoRepair, false);
- return Derivation::tryResolve(store, drvPath);
-}
-
-std::optional<BasicDerivation> Derivation::tryResolve(Store& store, const StorePath& drvPath)
-{
- // This is quite dirty and leaky, but will disappear once #4340 is merged
- static Sync<std::map<StorePath, std::optional<Derivation>>> resolutionsCache;
-
- debug("trying to resolve %s", store.printStorePath(drvPath));
-
- {
- auto resolutions = resolutionsCache.lock();
- auto resolvedDrvIter = resolutions->find(drvPath);
- if (resolvedDrvIter != resolutions->end()) {
- auto & [_, resolvedDrv] = *resolvedDrvIter;
- return *resolvedDrv;
- }
- }
-
- /* Try resolve drv and use that path instead. */
- auto drv = store.readDerivation(drvPath);
- auto attempt = drv.tryResolveUncached(store);
- if (!attempt)
- return std::nullopt;
- /* Store in memo table. */
- resolutionsCache.lock()->insert_or_assign(drvPath, *attempt);
- return *attempt;
-}
-
}