aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-06-12 12:46:33 +0200
committerEelco Dolstra <edolstra@gmail.com>2020-06-12 12:46:33 +0200
commit045b07200c77bf1fe19c0a986aafb531e7e1ba54 (patch)
treefbe2c63539049beaca11f2e1620411e38eb7663a
parent4a4c0632221d8126c9095d43919ea8ed2d260ff4 (diff)
Remove Store::queryDerivationOutputNames()
This function was used in only one place, where it could easily be replaced by readDerivation() since it's not performance-critical. (This function appears to have been modelled after queryDerivationOutputs(), which exists only to make the garbage collector faster.)
-rw-r--r--src/libexpr/primops.cc2
-rw-r--r--src/libstore/build.cc3
-rw-r--r--src/libstore/daemon.cc3
-rw-r--r--src/libstore/derivations.cc9
-rw-r--r--src/libstore/derivations.hh2
-rw-r--r--src/libstore/local-store.cc17
-rw-r--r--src/libstore/local-store.hh2
-rw-r--r--src/libstore/remote-store.cc9
-rw-r--r--src/libstore/remote-store.hh2
-rw-r--r--src/libstore/store-api.hh4
-rw-r--r--src/libstore/worker-protocol.hh2
11 files changed, 14 insertions, 41 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index d458ab272..9efb8eae5 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -688,7 +688,7 @@ static void prim_derivationStrict(EvalState & state, const Pos & pos, Value * *
for (auto & j : refs) {
drv.inputSrcs.insert(j.clone());
if (j.isDerivation())
- drv.inputDrvs[j.clone()] = state.store->queryDerivationOutputNames(j);
+ drv.inputDrvs[j.clone()] = readDerivation(*state.store, state.store->toRealPath(j)).outputNames();
}
}
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index bdf03ff94..3ab6220e3 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2723,9 +2723,6 @@ struct RestrictedStore : public LocalFSStore
StorePathSet queryDerivationOutputs(const StorePath & path) override
{ throw Error("queryDerivationOutputs"); }
- StringSet queryDerivationOutputNames(const StorePath & path) override
- { throw Error("queryDerivationOutputNames"); }
-
std::optional<StorePath> queryPathFromHashPart(const std::string & hashPart) override
{ throw Error("queryPathFromHashPart"); }
diff --git a/src/libstore/daemon.cc b/src/libstore/daemon.cc
index 5cff170dd..dc2015579 100644
--- a/src/libstore/daemon.cc
+++ b/src/libstore/daemon.cc
@@ -329,8 +329,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
case wopQueryDerivationOutputNames: {
auto path = store->parseStorePath(readString(from));
logger->startWork();
- StringSet names;
- names = store->queryDerivationOutputNames(path);
+ auto names = readDerivation(*store, store->toRealPath(path)).outputNames();
logger->stopWork();
to << names;
break;
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc
index c68e7b16b..6de91ec97 100644
--- a/src/libstore/derivations.cc
+++ b/src/libstore/derivations.cc
@@ -410,6 +410,15 @@ StorePathSet BasicDerivation::outputPaths() const
}
+StringSet BasicDerivation::outputNames() const
+{
+ StringSet names;
+ for (auto & i : outputs)
+ names.insert(i.first);
+ return names;
+}
+
+
Source & readDerivation(Source & in, const Store & store, BasicDerivation & drv)
{
drv.outputs.clear();
diff --git a/src/libstore/derivations.hh b/src/libstore/derivations.hh
index b1224b93b..88aed66bf 100644
--- a/src/libstore/derivations.hh
+++ b/src/libstore/derivations.hh
@@ -58,6 +58,8 @@ struct BasicDerivation
/* Return the output paths of a derivation. */
StorePathSet outputPaths() const;
+ /* Return the output names of a derivation. */
+ StringSet outputNames() const;
};
struct Derivation : BasicDerivation
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 1c3795eb1..e379db426 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -785,23 +785,6 @@ StorePathSet LocalStore::queryDerivationOutputs(const StorePath & path)
}
-StringSet LocalStore::queryDerivationOutputNames(const StorePath & path)
-{
- return retrySQLite<StringSet>([&]() {
- auto state(_state.lock());
-
- auto useQueryDerivationOutputs(state->stmtQueryDerivationOutputs.use()
- (queryValidPathId(*state, path)));
-
- StringSet outputNames;
- while (useQueryDerivationOutputs.next())
- outputNames.insert(useQueryDerivationOutputs.getStr(0));
-
- return outputNames;
- });
-}
-
-
std::optional<StorePath> LocalStore::queryPathFromHashPart(const std::string & hashPart)
{
if (hashPart.size() != storePathHashLen) throw Error("invalid hash part");
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index c1e75390c..e17cc45ae 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -135,8 +135,6 @@ public:
StorePathSet queryDerivationOutputs(const StorePath & path) override;
- StringSet queryDerivationOutputNames(const StorePath & path) override;
-
std::optional<StorePath> queryPathFromHashPart(const std::string & hashPart) override;
StorePathSet querySubstitutablePaths(const StorePathSet & paths) override;
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index 5c36693e6..735f59a91 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -418,15 +418,6 @@ StorePathSet RemoteStore::queryDerivationOutputs(const StorePath & path)
}
-PathSet RemoteStore::queryDerivationOutputNames(const StorePath & path)
-{
- auto conn(getConnection());
- conn->to << wopQueryDerivationOutputNames << printStorePath(path);
- conn.processStderr();
- return readStrings<PathSet>(conn->from);
-}
-
-
std::optional<StorePath> RemoteStore::queryPathFromHashPart(const std::string & hashPart)
{
auto conn(getConnection());
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh
index 3c86b4524..80c8e9f11 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -51,8 +51,6 @@ public:
StorePathSet queryDerivationOutputs(const StorePath & path) override;
- StringSet queryDerivationOutputNames(const StorePath & path) override;
-
std::optional<StorePath> queryPathFromHashPart(const std::string & hashPart) override;
StorePathSet querySubstitutablePaths(const StorePathSet & paths) override;
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index b1e25fc7d..5ba17e0bc 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -430,10 +430,6 @@ public:
virtual StorePathSet queryDerivationOutputs(const StorePath & path)
{ unsupported("queryDerivationOutputs"); }
- /* Query the output names of the derivation denoted by `path'. */
- virtual StringSet queryDerivationOutputNames(const StorePath & path)
- { unsupported("queryDerivationOutputNames"); }
-
/* Query the full store path given the hash part of a valid store
path, or empty if the path doesn't exist. */
virtual std::optional<StorePath> queryPathFromHashPart(const std::string & hashPart) = 0;
diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh
index 857d54d99..ac42457fc 100644
--- a/src/libstore/worker-protocol.hh
+++ b/src/libstore/worker-protocol.hh
@@ -36,7 +36,7 @@ typedef enum {
wopClearFailedPaths = 25,
wopQueryPathInfo = 26,
wopImportPaths = 27, // obsolete
- wopQueryDerivationOutputNames = 28,
+ wopQueryDerivationOutputNames = 28, // obsolete
wopQueryPathFromHashPart = 29,
wopQuerySubstitutablePathInfos = 30,
wopQueryValidPaths = 31,