Don't use readDerivation() in addValidPath()
readDerivation() requires a valid path. Fixes #4210.
This commit is contained in:
parent
8b15650e74
commit
7cf874c17d
|
@ -623,7 +623,10 @@ uint64_t LocalStore::addValidPath(State & state,
|
||||||
efficiently query whether a path is an output of some
|
efficiently query whether a path is an output of some
|
||||||
derivation. */
|
derivation. */
|
||||||
if (info.path.isDerivation()) {
|
if (info.path.isDerivation()) {
|
||||||
auto drv = readDerivation(info.path);
|
auto drv = parseDerivation(
|
||||||
|
*this,
|
||||||
|
readFile(Store::toRealPath(info.path)),
|
||||||
|
Derivation::nameFromPath(info.path));
|
||||||
|
|
||||||
/* Verify that the output paths in the derivation are correct
|
/* Verify that the output paths in the derivation are correct
|
||||||
(i.e., follow the scheme for computing output paths from
|
(i.e., follow the scheme for computing output paths from
|
||||||
|
@ -1000,7 +1003,11 @@ void LocalStore::registerValidPaths(const ValidPathInfos & infos)
|
||||||
for (auto & i : infos)
|
for (auto & i : infos)
|
||||||
if (i.path.isDerivation()) {
|
if (i.path.isDerivation()) {
|
||||||
// FIXME: inefficient; we already loaded the derivation in addValidPath().
|
// FIXME: inefficient; we already loaded the derivation in addValidPath().
|
||||||
checkDerivationOutputs(i.path, readDerivation(i.path));
|
checkDerivationOutputs(i.path,
|
||||||
|
parseDerivation(
|
||||||
|
*this,
|
||||||
|
readFile(Store::toRealPath(i.path)),
|
||||||
|
Derivation::nameFromPath(i.path)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do a topological sort of the paths. This will throw an
|
/* Do a topological sort of the paths. This will throw an
|
||||||
|
|
Loading…
Reference in a new issue