diff options
| author | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-11 18:06:02 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-12 14:28:50 +0200 |
| commit | b3abe3ef3c37c25548f46a81ac2a3b24f36dba53 (patch) | |
| tree | 123321c5f075e3b2c24de1f2570c10eacbfff943 | |
| parent | 1429dfb4052e5fa443ee9677eef95534b436f461 (diff) | |
| download | qbs-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.cpp | 3 | ||||
| -rw-r--r-- | src/lib/language/loader.cpp | 11 | ||||
| -rw-r--r-- | src/lib/language/moduleloader.cpp | 2 | ||||
| -rw-r--r-- | src/lib/language/projectresolver.cpp | 2 | ||||
| -rw-r--r-- | tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs | 7 | ||||
| -rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 6 | ||||
| -rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 1 |
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 ¶meters) = 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(); |
