1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-02 21:51:50 +02:00

Add priority setting to stores

This allows overriding the priority of substituters, e.g.

  $ nix-store --store ~/my-nix/ -r /nix/store/df3m4da96d84ljzxx4mygfshm1p0r2n3-geeqie-1.4 \
    --substituters 'http://cache.nixos.org?priority=100 daemon?priority=10'

Fixes #3264.
This commit is contained in:
Eelco Dolstra 2019-12-17 17:17:53 +01:00
parent 54bf5ba422
commit f8abbdd456
13 changed files with 51 additions and 47 deletions

View file

@ -147,26 +147,26 @@ public:
});
}
bool cacheExists(const std::string & uri,
bool & wantMassQuery, int & priority) override
std::optional<CacheInfo> cacheExists(const std::string & uri) override
{
return retrySQLite<bool>([&]() {
return retrySQLite<std::optional<CacheInfo>>([&]() -> std::optional<CacheInfo> {
auto state(_state.lock());
auto i = state->caches.find(uri);
if (i == state->caches.end()) {
auto queryCache(state->queryCache.use()(uri));
if (!queryCache.next()) return false;
if (!queryCache.next())
return std::nullopt;
state->caches.emplace(uri,
Cache{(int) queryCache.getInt(0), queryCache.getStr(1), queryCache.getInt(2) != 0, (int) queryCache.getInt(3)});
}
auto & cache(getCache(*state, uri));
wantMassQuery = cache.wantMassQuery;
priority = cache.priority;
return true;
return CacheInfo {
.wantMassQuery = cache.wantMassQuery,
.priority = cache.priority
};
});
}