summaryrefslogtreecommitdiff
path: root/src/lib/buildgraph/buildgraphloader.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-07-15 11:21:25 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-16 10:18:40 +0200
commit3315b5a35f86f70d9d3ef32fcc07d90406f5b30a (patch)
treeb18fe4a2e1ee63563be37416992266c460050315 /src/lib/buildgraph/buildgraphloader.cpp
parent7aff31171eb3e756fc6ac6ff4bb4db6dcc96e42a (diff)
downloadqbs-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.cpp17
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 &paramet
// 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)