forked from lix-project/lix
Move StorePathWithOutput
utilities out of store class
These are by no means part of the notion of a store, but rather are things that happen to use stores. (Or put another way, there's no way we'd make them virtual methods any time soon.) It's better to move them out of that too-big class then. Also, this helps us remove StorePathWithOutputs from the Store interface altogether next commit.
This commit is contained in:
parent
7a2b566dc8
commit
32f4454b9f
|
@ -19,7 +19,7 @@ DrvInfo::DrvInfo(EvalState & state, const string & attrPath, Bindings * attrs)
|
||||||
DrvInfo::DrvInfo(EvalState & state, ref<Store> store, const std::string & drvPathWithOutputs)
|
DrvInfo::DrvInfo(EvalState & state, ref<Store> store, const std::string & drvPathWithOutputs)
|
||||||
: state(&state), attrs(nullptr), attrPath("")
|
: state(&state), attrs(nullptr), attrPath("")
|
||||||
{
|
{
|
||||||
auto [drvPath, selectedOutputs] = store->parsePathWithOutputs(drvPathWithOutputs);
|
auto [drvPath, selectedOutputs] = parsePathWithOutputs(*store, drvPathWithOutputs);
|
||||||
|
|
||||||
this->drvPath = store->printStorePath(drvPath);
|
this->drvPath = store->printStorePath(drvPath);
|
||||||
|
|
||||||
|
|
|
@ -495,7 +495,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
|
||||||
case wopBuildPaths: {
|
case wopBuildPaths: {
|
||||||
std::vector<StorePathWithOutputs> drvs;
|
std::vector<StorePathWithOutputs> drvs;
|
||||||
for (auto & s : readStrings<Strings>(from))
|
for (auto & s : readStrings<Strings>(from))
|
||||||
drvs.push_back(store->parsePathWithOutputs(s));
|
drvs.push_back(parsePathWithOutputs(*store, s));
|
||||||
BuildMode mode = bmNormal;
|
BuildMode mode = bmNormal;
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 15) {
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 15) {
|
||||||
mode = (BuildMode) readInt(from);
|
mode = (BuildMode) readInt(from);
|
||||||
|
@ -861,7 +861,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
|
||||||
case wopQueryMissing: {
|
case wopQueryMissing: {
|
||||||
std::vector<StorePathWithOutputs> targets;
|
std::vector<StorePathWithOutputs> targets;
|
||||||
for (auto & s : readStrings<Strings>(from))
|
for (auto & s : readStrings<Strings>(from))
|
||||||
targets.push_back(store->parsePathWithOutputs(s));
|
targets.push_back(parsePathWithOutputs(*store, s));
|
||||||
logger->startWork();
|
logger->startWork();
|
||||||
StorePathSet willBuild, willSubstitute, unknown;
|
StorePathSet willBuild, willSubstitute, unknown;
|
||||||
uint64_t downloadSize, narSize;
|
uint64_t downloadSize, narSize;
|
||||||
|
|
|
@ -20,17 +20,17 @@ std::pair<std::string_view, StringSet> parsePathWithOutputs(std::string_view s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
StorePathWithOutputs Store::parsePathWithOutputs(const std::string & s)
|
StorePathWithOutputs parsePathWithOutputs(const Store & store, std::string_view pathWithOutputs)
|
||||||
{
|
{
|
||||||
auto [path, outputs] = nix::parsePathWithOutputs(s);
|
auto [path, outputs] = parsePathWithOutputs(pathWithOutputs);
|
||||||
return {parseStorePath(path), std::move(outputs)};
|
return StorePathWithOutputs { store.parseStorePath(path), std::move(outputs) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
StorePathWithOutputs Store::followLinksToStorePathWithOutputs(std::string_view path) const
|
StorePathWithOutputs followLinksToStorePathWithOutputs(const Store & store, std::string_view pathWithOutputs)
|
||||||
{
|
{
|
||||||
auto [path2, outputs] = nix::parsePathWithOutputs(path);
|
auto [path, outputs] = parsePathWithOutputs(pathWithOutputs);
|
||||||
return StorePathWithOutputs { followLinksToStorePath(path2), std::move(outputs) };
|
return StorePathWithOutputs { store.followLinksToStorePath(path), std::move(outputs) };
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,4 +14,13 @@ struct StorePathWithOutputs
|
||||||
|
|
||||||
std::pair<std::string_view, StringSet> parsePathWithOutputs(std::string_view s);
|
std::pair<std::string_view, StringSet> parsePathWithOutputs(std::string_view s);
|
||||||
|
|
||||||
|
class Store;
|
||||||
|
|
||||||
|
/* Split a string specifying a derivation and a set of outputs
|
||||||
|
(/nix/store/hash-foo!out1,out2,...) into the derivation path
|
||||||
|
and the outputs. */
|
||||||
|
StorePathWithOutputs parsePathWithOutputs(const Store & store, std::string_view pathWithOutputs);
|
||||||
|
|
||||||
|
StorePathWithOutputs followLinksToStorePathWithOutputs(const Store & store, std::string_view pathWithOutputs);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,11 +262,6 @@ public:
|
||||||
|
|
||||||
PathSet printStorePathSet(const StorePathSet & path) const;
|
PathSet printStorePathSet(const StorePathSet & path) const;
|
||||||
|
|
||||||
/* Split a string specifying a derivation and a set of outputs
|
|
||||||
(/nix/store/hash-foo!out1,out2,...) into the derivation path
|
|
||||||
and the outputs. */
|
|
||||||
StorePathWithOutputs parsePathWithOutputs(const string & s);
|
|
||||||
|
|
||||||
/* Display a set of paths in human-readable form (i.e., between quotes
|
/* Display a set of paths in human-readable form (i.e., between quotes
|
||||||
and separated by commas). */
|
and separated by commas). */
|
||||||
std::string showPaths(const StorePathSet & paths);
|
std::string showPaths(const StorePathSet & paths);
|
||||||
|
@ -290,8 +285,6 @@ public:
|
||||||
result. */
|
result. */
|
||||||
StorePath followLinksToStorePath(std::string_view path) const;
|
StorePath followLinksToStorePath(std::string_view path) const;
|
||||||
|
|
||||||
StorePathWithOutputs followLinksToStorePathWithOutputs(std::string_view path) const;
|
|
||||||
|
|
||||||
/* Constructs a unique store path name. */
|
/* Constructs a unique store path name. */
|
||||||
StorePath makeStorePath(std::string_view type,
|
StorePath makeStorePath(std::string_view type,
|
||||||
std::string_view hash, std::string_view name) const;
|
std::string_view hash, std::string_view name) const;
|
||||||
|
|
|
@ -128,7 +128,7 @@ static void opRealise(Strings opFlags, Strings opArgs)
|
||||||
|
|
||||||
std::vector<StorePathWithOutputs> paths;
|
std::vector<StorePathWithOutputs> paths;
|
||||||
for (auto & i : opArgs)
|
for (auto & i : opArgs)
|
||||||
paths.push_back(store->followLinksToStorePathWithOutputs(i));
|
paths.push_back(followLinksToStorePathWithOutputs(*store, i));
|
||||||
|
|
||||||
uint64_t downloadSize, narSize;
|
uint64_t downloadSize, narSize;
|
||||||
StorePathSet willBuild, willSubstitute, unknown;
|
StorePathSet willBuild, willSubstitute, unknown;
|
||||||
|
@ -873,7 +873,7 @@ static void opServe(Strings opFlags, Strings opArgs)
|
||||||
|
|
||||||
std::vector<StorePathWithOutputs> paths;
|
std::vector<StorePathWithOutputs> paths;
|
||||||
for (auto & s : readStrings<Strings>(in))
|
for (auto & s : readStrings<Strings>(in))
|
||||||
paths.push_back(store->parsePathWithOutputs(s));
|
paths.push_back(parsePathWithOutputs(*store, s));
|
||||||
|
|
||||||
getBuildSettings();
|
getBuildSettings();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue