From 420595bc0753d67460bf672207113337f50d9403 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 30 Oct 2013 15:33:16 +0100 Subject: Store the right build configuration. The build config we serialized did not contain overridden values. Change-Id: Ie2841466dc49ad67e7b8f397398533e0e13df207 Reviewed-by: Joerg Bornemann Reviewed-by: Christian Kandeler --- src/lib/language/loader.cpp | 4 +--- src/lib/language/projectresolver.cpp | 18 ++++++++---------- src/lib/language/projectresolver.h | 9 ++++----- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/lib/language/loader.cpp b/src/lib/language/loader.cpp index fa047942b..29c080b60 100644 --- a/src/lib/language/loader.cpp +++ b/src/lib/language/loader.cpp @@ -104,9 +104,7 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters ¶meters) parameters.overriddenValuesTree(), parameters.buildConfigurationTree(), true); - const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult, - parameters.buildRoot(), parameters.overriddenValuesTree(), - parameters.buildConfigurationTree()); + const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult, parameters); // E.g. if the top-level project is disabled. if (m_progressObserver) diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp index f64978f66..29b50c190 100644 --- a/src/lib/language/projectresolver.cpp +++ b/src/lib/language/projectresolver.cpp @@ -101,18 +101,15 @@ static void checkForDuplicateProductNames(const TopLevelProjectConstPtr &project } TopLevelProjectPtr ProjectResolver::resolve(ModuleLoaderResult &loadResult, - const QString &buildRoot, const QVariantMap &overriddenProperties, - const QVariantMap &buildConfiguration) + const SetupProjectParameters &setupParameters) { - QBS_ASSERT(FileInfo::isAbsolute(buildRoot), return TopLevelProjectPtr()); + QBS_ASSERT(FileInfo::isAbsolute(setupParameters.buildRoot()), return TopLevelProjectPtr()); if (m_logger.traceEnabled()) m_logger.qbsTrace() << "[PR] resolving " << loadResult.root->file()->filePath(); ProjectContext projectContext; projectContext.loadResult = &loadResult; - m_buildRoot = buildRoot; - m_overriddenProperties = overriddenProperties; - m_buildConfiguration = buildConfiguration; + m_setupParams = setupParameters; m_productContext = 0; m_moduleContext = 0; resolveTopLevelProject(loadResult.root, &projectContext); @@ -126,7 +123,7 @@ void ProjectResolver::checkCancelation() const { if (m_progressObserver && m_progressObserver->canceled()) { throw ErrorInfo(Tr::tr("Project resolving canceled for configuration %1.") - .arg(TopLevelProject::deriveId(m_buildConfiguration))); + .arg(TopLevelProject::deriveId(m_setupParams.finalBuildConfigurationTree()))); } } @@ -182,8 +179,9 @@ void ProjectResolver::resolveTopLevelProject(Item *item, ProjectContext *project if (m_progressObserver) m_progressObserver->setMaximum(projectContext->loadResult->productInfos.count()); const TopLevelProjectPtr project = TopLevelProject::create(); - project->setBuildConfiguration(m_buildConfiguration); - project->buildDirectory = TopLevelProject::deriveBuildDirectory(m_buildRoot, project->id()); + project->setBuildConfiguration(m_setupParams.finalBuildConfigurationTree()); + project->buildDirectory + = TopLevelProject::deriveBuildDirectory(m_setupParams.buildRoot(), project->id()); projectContext->project = project; resolveProject(item, projectContext); project->usedEnvironment = m_engine->usedEnvironment(); @@ -298,7 +296,7 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext) item->location()); } - ModuleLoader::overrideItemProperties(item, product->name, m_overriddenProperties); + ModuleLoader::overrideItemProperties(item, product->name, m_setupParams.overriddenValuesTree()); m_productsByName.insert(product->name, product); product->enabled = m_evaluator->boolValue(item, QLatin1String("condition")); product->additionalFileTags diff --git a/src/lib/language/projectresolver.h b/src/lib/language/projectresolver.h index b57a5a57e..645aeba77 100644 --- a/src/lib/language/projectresolver.h +++ b/src/lib/language/projectresolver.h @@ -34,6 +34,7 @@ #include "filetags.h" #include "language.h" #include +#include #include #include @@ -57,8 +58,8 @@ public: ~ProjectResolver(); void setProgressObserver(ProgressObserver *observer); - TopLevelProjectPtr resolve(ModuleLoaderResult &loadResult, const QString &buildRoot, - const QVariantMap &overriddenProperties, const QVariantMap &buildConfiguration); + TopLevelProjectPtr resolve(ModuleLoaderResult &loadResult, + const SetupProjectParameters &setupParameters); private: struct ProjectContext @@ -121,15 +122,13 @@ private: Logger m_logger; ScriptEngine *m_engine; ProgressObserver *m_progressObserver; - QString m_buildRoot; - QVariantMap m_overriddenProperties; - QVariantMap m_buildConfiguration; ProductContext *m_productContext; ModuleContext *m_moduleContext; QMap m_productsByName; QHash m_productItemMap; mutable QHash m_fileContextMap; QMap m_exports; + SetupProjectParameters m_setupParams; typedef void (ProjectResolver::*ItemFuncPtr)(Item *item, ProjectContext *projectContext); typedef QMap ItemFuncMap; -- cgit v1.2.3