aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/realisation.hh
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-07-19 14:52:35 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-07-20 15:59:52 -0400
commit6bc98c7fba9f783414692fcef41d90ed80928b6c (patch)
treec6e79f43ed32d133a62135497b35b73d6c2b1126 /src/libstore/realisation.hh
parentf62543fe1cc544a5684af327f63a1aeb1bdeba94 (diff)
Give `queryPartialDerivationOutputMap` an `evalStore` parameter
This makes it more useful. In general, the derivation will be in one store, and the realisation info is in another. This also helps us avoid duplication. See how `resolveDerivedPath` is now simpler because it uses `queryPartialDerivationOutputMap`. In #8369 we get more flavors of derived path, and need more code to resolve them all, and this problem only gets worse. The fact that we need a new method to deal with the multiple dispatch is unfortunate, but this generally relates to the fact that `Store` is a sub-par interface, too bulky/unwieldy and conflating separate concerns. Solving that is out of scope of this PR. This is part of the RFC 92 work. See tracking issue #6316
Diffstat (limited to 'src/libstore/realisation.hh')
-rw-r--r--src/libstore/realisation.hh9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstore/realisation.hh b/src/libstore/realisation.hh
index 2a093c128..0548b30c1 100644
--- a/src/libstore/realisation.hh
+++ b/src/libstore/realisation.hh
@@ -5,6 +5,7 @@
#include "hash.hh"
#include "path.hh"
+#include "derived-path.hh"
#include <nlohmann/json_fwd.hpp>
#include "comparator.hh"
#include "crypto.hh"
@@ -143,9 +144,13 @@ class MissingRealisation : public Error
{
public:
MissingRealisation(DrvOutput & outputId)
- : Error( "cannot operate on an output of the "
+ : MissingRealisation(outputId.outputName, outputId.strHash())
+ {}
+ MissingRealisation(std::string_view drv, std::string outputName)
+ : Error( "cannot operate on output '%s' of the "
"unbuilt derivation '%s'",
- outputId.to_string())
+ outputName,
+ drv)
{}
};