aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-07-11 17:19:04 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-16 09:41:23 +0200
commit5ffdee71e50e9593794e66139baa0c355e0bd88e (patch)
tree2dcdf712bb546a04049c493f81c6fb93d21346ad /src/lib/corelib/language
parente85876f236ad45b3327b7efefe79430d3972a4cf (diff)
Put a system-wide lock on the build directory.
So that two qbs instances can't overwrite each other's build graphs. In practice, this is probably most relevant for IDEs, as these hold a build graph for potentially long periods of time. Facilitates QLockFile that was introduced in Qt 5.1. For older Qt versions, no locking happens. Task-number: QBS-162 Change-Id: Ib598617fb1742eb57b6a017f40b9631d1d54e627 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/language.cpp5
-rw-r--r--src/lib/corelib/language/language.h4
2 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index cc9d02180..d7815938e 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -39,6 +39,7 @@
#include <buildgraph/transformer.h>
#include <jsextensions/jsextensions.h>
#include <logging/translator.h>
+#include <tools/buildgraphlocker.h>
#include <tools/hostosinfo.h>
#include <tools/error.h>
#include <tools/propertyfinder.h>
@@ -937,12 +938,14 @@ void ResolvedProject::store(PersistentPool &pool) const
}
-TopLevelProject::TopLevelProject() : locked(false), lastResolveTime(FileTime::oldestTime())
+TopLevelProject::TopLevelProject()
+ : bgLocker(0), locked(false), lastResolveTime(FileTime::oldestTime())
{
}
TopLevelProject::~TopLevelProject()
{
+ delete bgLocker;
}
QString TopLevelProject::deriveId(const QString &profile, const QVariantMap &config)
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h
index ed1b37320..e7df3232e 100644
--- a/src/lib/corelib/language/language.h
+++ b/src/lib/corelib/language/language.h
@@ -61,6 +61,7 @@ QT_END_NAMESPACE
namespace qbs {
namespace Internal {
+class BuildGraphLocker;
class BuildGraphLoader;
class BuildGraphVisitor;
@@ -460,7 +461,8 @@ public:
QHash<QString, bool> fileExistsResults; // Results of calls to "File.exists()".
QHash<QString, FileTime> fileLastModifiedResults; // Results of calls to "File.lastModified()".
QScopedPointer<ProjectBuildData> buildData;
- bool locked;
+ BuildGraphLocker *bgLocker; // This holds the system-wide build graph file lock.
+ bool locked; // This is the API-level lock for the project instance.
QSet<QString> buildSystemFiles;
FileTime lastResolveTime;