BinaryCacheStore: When adding a path, ensure the references are valid
This prevents copying a partial closure to a binary cache.
This commit is contained in:
parent
21ef1670b3
commit
0207272b28
1 changed files with 11 additions and 0 deletions
|
@ -50,6 +50,17 @@ Path BinaryCacheStore::narInfoFileFor(const Path & storePath)
|
||||||
void BinaryCacheStore::addToCache(const ValidPathInfo & info,
|
void BinaryCacheStore::addToCache(const ValidPathInfo & info,
|
||||||
const string & nar)
|
const string & nar)
|
||||||
{
|
{
|
||||||
|
/* Verify that all references are valid. This may do some .narinfo
|
||||||
|
reads, but typically they'll already be cached. */
|
||||||
|
for (auto & ref : info.references)
|
||||||
|
try {
|
||||||
|
if (ref != info.path)
|
||||||
|
queryPathInfo(ref);
|
||||||
|
} catch (InvalidPath &) {
|
||||||
|
throw Error(format("cannot add ‘%s’ to the binary cache because the reference ‘%s’ is not valid")
|
||||||
|
% info.path % ref);
|
||||||
|
}
|
||||||
|
|
||||||
auto narInfoFile = narInfoFileFor(info.path);
|
auto narInfoFile = narInfoFileFor(info.path);
|
||||||
if (fileExists(narInfoFile)) return;
|
if (fileExists(narInfoFile)) return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue