for the same reason the eval caches should not keep them as references, only worse: installables cannot fully lose their reference member since some types of installable (flakes -sigh-) need access to caches held by their member reference. passing that around as well at all times is not feasible; passing in EvalState& all the time is quite bad enough as is. Change-Id: I05d438623b5ef10fc22e7e256b89447e61a0657d
30 lines
640 B
C++
30 lines
640 B
C++
#pragma once
|
|
///@file
|
|
|
|
#include "lix/libcmd/installables.hh"
|
|
|
|
namespace nix {
|
|
|
|
struct InstallableDerivedPath : Installable
|
|
{
|
|
ref<Store> store;
|
|
DerivedPath derivedPath;
|
|
|
|
InstallableDerivedPath(ref<Store> store, DerivedPath && derivedPath)
|
|
: store(store), derivedPath(std::move(derivedPath))
|
|
{ }
|
|
|
|
std::string what() const override;
|
|
|
|
DerivedPathsWithInfo toDerivedPaths(EvalState & state) override;
|
|
|
|
std::optional<StorePath> getStorePath() override;
|
|
|
|
static InstallableDerivedPath parse(
|
|
ref<Store> store,
|
|
std::string_view prefix,
|
|
ExtendedOutputsSpec extendedOutputsSpec);
|
|
};
|
|
|
|
}
|