diff options
| author | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-15 11:21:25 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-16 10:18:40 +0200 |
| commit | 3315b5a35f86f70d9d3ef32fcc07d90406f5b30a (patch) | |
| tree | b18fe4a2e1ee63563be37416992266c460050315 /src/lib/buildgraph/buildgraphloader.cpp | |
| parent | 7aff31171eb3e756fc6ac6ff4bb4db6dcc96e42a (diff) | |
| download | qbs-3315b5a35f86f70d9d3ef32fcc07d90406f5b30a.tar.gz | |
Use previous results of calls to "File.exists()" in change tracking.
This is the same kind of "external change" as those coming from the
environment or JavaScript files, and is thus handled the same way.
Change-Id: I0a097d6d5c39ece859e6784f65f77f35a7273d59
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/buildgraph/buildgraphloader.cpp')
| -rw-r--r-- | src/lib/buildgraph/buildgraphloader.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/lib/buildgraph/buildgraphloader.cpp b/src/lib/buildgraph/buildgraphloader.cpp index 4d62e55ae..ab3360574 100644 --- a/src/lib/buildgraph/buildgraphloader.cpp +++ b/src/lib/buildgraph/buildgraphloader.cpp @@ -179,7 +179,8 @@ void BuildGraphLoader::trackProjectChanges(const SetupProjectParameters ¶met // anew. bool allProductsPotentiallyChanged = false; if (hasBuildSystemFileChanged(buildSystemFiles, buildGraphTimeStamp) - || hasEnvironmentChanged(restoredProject)) { + || hasEnvironmentChanged(restoredProject) + || hasFileExistsResultChanged(restoredProject)) { reResolvingNecessary = true; allProductsPotentiallyChanged = true; } @@ -285,6 +286,20 @@ bool BuildGraphLoader::hasEnvironmentChanged(const TopLevelProjectConstPtr &rest return false; } +bool BuildGraphLoader::hasFileExistsResultChanged(const TopLevelProjectConstPtr &restoredProject) const +{ + for (QHash<QString, bool>::ConstIterator it = restoredProject->fileExistsResults.constBegin(); + it != restoredProject->fileExistsResults.constEnd(); ++it) { + if (FileInfo(it.key()).exists() != it.value()) { + m_logger.qbsDebug() << "Existence check for file '" << it.key() + << " 'changed, must re-resolve project."; + return true; + } + } + + return false; +} + bool BuildGraphLoader::hasProductFileChanged(const QList<ResolvedProductPtr> &restoredProducts, const FileTime &referenceTime, QSet<QString> &remainingBuildSystemFiles, QList<ResolvedProductPtr> &changedProducts) |
