diff options
author | regnat <rg@regnat.ovh> | 2021-05-17 08:45:08 +0200 |
---|---|---|
committer | regnat <rg@regnat.ovh> | 2021-05-17 08:45:08 +0200 |
commit | 21050846457f356346204dd52fb7a6d49f710688 (patch) | |
tree | b431f5168d57bef20608b6e36e11e11cc9843b34 /src/libstore/derived-path.hh | |
parent | ec613603ba324bf12f8f554d74fb1a02c6e9b472 (diff) |
Enfore the use of properly built paths in libcmd
Replace `DerivedPathWithHints` by a new `BuiltPath` type that serves as
a proof that the corresponding path has been built.
Diffstat (limited to 'src/libstore/derived-path.hh')
-rw-r--r-- | src/libstore/derived-path.hh | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/libstore/derived-path.hh b/src/libstore/derived-path.hh index 72304f4fa..9d6ace069 100644 --- a/src/libstore/derived-path.hh +++ b/src/libstore/derived-path.hh @@ -2,6 +2,7 @@ #include "util.hh" #include "path.hh" +#include "realisation.hh" #include <optional> @@ -83,7 +84,7 @@ struct DerivedPath : _DerivedPathRaw { */ struct BuiltPathBuilt { StorePath drvPath; - std::map<std::string, std::optional<StorePath>> outputs; + std::map<std::string, StorePath> outputs; nlohmann::json toJSON(ref<Store> store) const; static BuiltPathBuilt parse(const Store & store, std::string_view); @@ -95,20 +96,9 @@ using _BuiltPathRaw = std::variant< >; /** - * A derived path with hints in the form of optional concrete output paths in the built case. - * - * This type is currently just used by the CLI. The paths are filled in - * during evaluation for derivations that know what paths they will - * produce in advanced, i.e. input-addressed or fixed-output content - * addressed derivations. - * - * That isn't very good, because it puts floating content-addressed - * derivations "at a disadvantage". It would be better to never rely on - * the output path of unbuilt derivations, and exclusively use the - * realizations types to work with built derivations' concrete output - * paths. + * A built path. Similar to a `DerivedPath`, but enriched with the corresponding + * output path(s). */ -// FIXME Stop using and delete this, or if that is not possible move out of libstore to libcmd. struct BuiltPath : _BuiltPathRaw { using Raw = _BuiltPathRaw; using Raw::Raw; @@ -120,8 +110,12 @@ struct BuiltPath : _BuiltPathRaw { return static_cast<const Raw &>(*this); } + StorePathSet outPaths() const; + RealisedPath::Set toRealisedPaths(Store & store) const; + }; +typedef std::vector<DerivedPath> DerivedPaths; typedef std::vector<BuiltPath> BuiltPaths; nlohmann::json derivedPathsWithHintsToJSON(const BuiltPaths & buildables, ref<Store> store); |