summaryrefslogtreecommitdiff
path: root/src/lib/buildgraph/buildgraphloader.cpp
diff options
context:
space:
mode:
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)