diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-11 17:19:04 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-16 09:41:23 +0200 |
commit | 5ffdee71e50e9593794e66139baa0c355e0bd88e (patch) | |
tree | 2dcdf712bb546a04049c493f81c6fb93d21346ad /src/lib/corelib/language | |
parent | e85876f236ad45b3327b7efefe79430d3972a4cf (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.cpp | 5 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 4 |
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; |