summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-07-11 18:06:02 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-12 14:28:50 +0200
commitb3abe3ef3c37c25548f46a81ac2a3b24f36dba53 (patch)
tree123321c5f075e3b2c24de1f2570c10eacbfff943
parent1429dfb4052e5fa443ee9677eef95534b436f461 (diff)
downloadqbs-b3abe3ef3c37c25548f46a81ac2a3b24f36dba53.tar.gz
Properly support disabled projects.
Until now, this only worked for SubProject items. Change-Id: Id63424883d0c120567860f225f112635c7ea0c82 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/lib/buildgraph/projectbuilddata.cpp3
-rw-r--r--src/lib/language/loader.cpp11
-rw-r--r--src/lib/language/moduleloader.cpp2
-rw-r--r--src/lib/language/projectresolver.cpp2
-rw-r--r--tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs7
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp6
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
7 files changed, 28 insertions, 4 deletions
diff --git a/src/lib/buildgraph/projectbuilddata.cpp b/src/lib/buildgraph/projectbuilddata.cpp
index 2c4e44935..1250b868b 100644
--- a/src/lib/buildgraph/projectbuilddata.cpp
+++ b/src/lib/buildgraph/projectbuilddata.cpp
@@ -228,12 +228,13 @@ void BuildDataResolver::resolveBuildData(const TopLevelProjectPtr &resolvedProje
resolvedProject->buildData->evaluationContext = evalContext;
const QList<ResolvedProductPtr> allProducts = resolvedProject->allProducts();
evalContext->initializeObserver(Tr::tr("Setting up build graph for configuration %1")
- .arg(resolvedProject->id()), allProducts.count());
+ .arg(resolvedProject->id()), allProducts.count() + 1);
foreach (ResolvedProductPtr rProduct, allProducts) {
if (rProduct->enabled)
resolveProductBuildData(rProduct);
evalContext->incrementProgressValue();
}
+ evalContext->incrementProgressValue();
CycleDetector(m_logger).visitProject(m_project);
}
diff --git a/src/lib/language/loader.cpp b/src/lib/language/loader.cpp
index 52f9eee89..a4689b925 100644
--- a/src/lib/language/loader.cpp
+++ b/src/lib/language/loader.cpp
@@ -101,9 +101,14 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &parameters)
= m_moduleLoader->load(parameters.projectFilePath(),
parameters.buildConfigurationTree(),
true);
- return m_projectResolver->resolve(loadResult, parameters.buildRoot(),
- parameters.buildConfigurationTree(),
- parameters.environment());
+ const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult,
+ parameters.buildRoot(), parameters.buildConfigurationTree(), parameters.environment());
+
+ // E.g. if the top-level project is disabled.
+ if (m_progressObserver)
+ m_progressObserver->setFinished();
+
+ return project;
}
QByteArray Loader::qmlTypeInfo()
diff --git a/src/lib/language/moduleloader.cpp b/src/lib/language/moduleloader.cpp
index aaa6e5c09..fda92d2e8 100644
--- a/src/lib/language/moduleloader.cpp
+++ b/src/lib/language/moduleloader.cpp
@@ -117,6 +117,8 @@ ModuleLoaderResult ModuleLoader::load(const QString &filePath, const QVariantMap
void ModuleLoader::handleProject(ModuleLoaderResult *loadResult, Item *item)
{
+ if (!checkItemCondition(item))
+ return;
ProjectContext projectContext;
projectContext.result = loadResult;
projectContext.extraSearchPaths = readExtraSearchPaths(item);
diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp
index 1b2c092ea..d9fcc4306 100644
--- a/src/lib/language/projectresolver.cpp
+++ b/src/lib/language/projectresolver.cpp
@@ -206,6 +206,8 @@ void ProjectResolver::resolveProject(Item *item, ProjectContext *projectContext)
mapping["FileTagger"] = &ProjectResolver::resolveFileTagger;
mapping["Rule"] = &ProjectResolver::resolveRule;
+ if (m_progressObserver)
+ m_progressObserver->setMaximum(item->children().count());
foreach (Item *child, item->children()) {
callItemFunction(mapping, child, projectContext);
if (m_progressObserver)
diff --git a/tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs b/tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs
new file mode 100644
index 000000000..1461b70ad
--- /dev/null
+++ b/tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs
@@ -0,0 +1,7 @@
+import qbs
+import qbs.File
+
+Project {
+ condition: File.exists("blubb");
+ references: "blubb/nosuchfile.qbs"
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 347586fc7..dd9719b09 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -983,6 +983,12 @@ void TestBlackbox::disabledProduct()
QCOMPARE(runQbs(), 0);
}
+void TestBlackbox::disabledProject()
+{
+ QDir::setCurrent(testDataDir + "/disabledProject");
+ QCOMPARE(runQbs(), 0);
+}
+
void TestBlackbox::fileDependencies()
{
QDir::setCurrent(testDataDir + "/fileDependencies");
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index b969c62ee..b9d19da96 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -98,6 +98,7 @@ private slots:
void build_project_dry_run();
void dependenciesProperty();
void disabledProduct();
+ void disabledProject();
void fileDependencies();
void resolve_project_data();
void resolve_project();