forked from lix-project/lix
Call queryMissing() prior to building
Without this, substitute info is fetched sequentially, which is superslow. In the old UI (e.g. nix-build), we call printMissing(), which calls queryMissing(), thereby preheating the binary cache cache. But the new UI doesn't do that.
This commit is contained in:
parent
fd73c1e20a
commit
bbdf08bc0f
|
@ -4166,10 +4166,20 @@ void Worker::markContentsGood(const Path & path)
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
static void primeCache(Store & store, const PathSet & paths)
|
||||||
|
{
|
||||||
|
PathSet willBuild, willSubstitute, unknown;
|
||||||
|
unsigned long long downloadSize, narSize;
|
||||||
|
store.queryMissing(paths, willBuild, willSubstitute, unknown, downloadSize, narSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocalStore::buildPaths(const PathSet & drvPaths, BuildMode buildMode)
|
void LocalStore::buildPaths(const PathSet & drvPaths, BuildMode buildMode)
|
||||||
{
|
{
|
||||||
Worker worker(*this);
|
Worker worker(*this);
|
||||||
|
|
||||||
|
primeCache(*this, drvPaths);
|
||||||
|
|
||||||
Goals goals;
|
Goals goals;
|
||||||
for (auto & i : drvPaths) {
|
for (auto & i : drvPaths) {
|
||||||
DrvPathWithOutputs i2 = parseDrvPathWithOutputs(i);
|
DrvPathWithOutputs i2 = parseDrvPathWithOutputs(i);
|
||||||
|
@ -4220,6 +4230,8 @@ void LocalStore::ensurePath(const Path & path)
|
||||||
/* If the path is already valid, we're done. */
|
/* If the path is already valid, we're done. */
|
||||||
if (isValidPath(path)) return;
|
if (isValidPath(path)) return;
|
||||||
|
|
||||||
|
primeCache(*this, {path});
|
||||||
|
|
||||||
Worker worker(*this);
|
Worker worker(*this);
|
||||||
GoalPtr goal = worker.makeSubstitutionGoal(path);
|
GoalPtr goal = worker.makeSubstitutionGoal(path);
|
||||||
Goals goals = {goal};
|
Goals goals = {goal};
|
||||||
|
|
|
@ -107,6 +107,8 @@ void Store::queryMissing(const PathSet & targets,
|
||||||
PathSet & willBuild_, PathSet & willSubstitute_, PathSet & unknown_,
|
PathSet & willBuild_, PathSet & willSubstitute_, PathSet & unknown_,
|
||||||
unsigned long long & downloadSize_, unsigned long long & narSize_)
|
unsigned long long & downloadSize_, unsigned long long & narSize_)
|
||||||
{
|
{
|
||||||
|
Activity act(*logger, lvlDebug, actUnknown, "querying info about missing paths");
|
||||||
|
|
||||||
downloadSize_ = narSize_ = 0;
|
downloadSize_ = narSize_ = 0;
|
||||||
|
|
||||||
ThreadPool pool;
|
ThreadPool pool;
|
||||||
|
|
Loading…
Reference in a new issue