diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-05-14 12:21:04 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-05-14 16:40:30 +0200 |
commit | bbe0de32340289407e8d0770ce95f274c448e8be (patch) | |
tree | 37e0e3e1351423b99c6ed51ee98d4d7a36a96de5 /src/lib/corelib/language/projectresolver.cpp | |
parent | 3bc7c3ca15e6ab416aef7343afe13acfd3a2fa61 (diff) |
make product.buildDirectory available in Probe item
As a consequence product.name is evaluated very early and cannot depend
on module properties and such. Autotests that used product.name as
verification script had to be adjusted accordingly.
Task-number: QBS-393
Change-Id: I62ae1a92313af54d9eb15e88b7457388584f7556
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index b559454d5..346658bf2 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -280,13 +280,10 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext) projectContext->project->products += product; productContext.product = product; product->name = m_evaluator->stringValue(item, QLatin1String("name")); - if (product->name.isEmpty()) { - product->name = FileInfo::completeBaseName(item->file()->filePath()); - item->setProperty(QLatin1String("name"), VariantValue::create(product->name)); - } m_logger.qbsTrace() << "[PR] resolveProduct " << product->name; - item->setProperty(QLatin1String("buildDirectory"), - VariantValue::create(product->buildDirectory())); + + // product->buildDirectory() isn't valid yet, because the productProperties map is not ready. + productContext.buildDirectory = m_evaluator->stringValue(item, QLatin1String("buildDirectory")); if (std::find_if(item->modules().begin(), item->modules().end(), ModuleNameEquals(product->name)) != item->modules().end()) { @@ -314,8 +311,9 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext) product->sourceDirectory = m_evaluator->stringValue(item, QLatin1String("sourceDirectory")); const QString destDirKey = QLatin1String("destinationDirectory"); product->destinationDirectory = m_evaluator->stringValue(item, destDirKey); + if (product->destinationDirectory.isEmpty()) { - product->destinationDirectory = product->buildDirectory(); + product->destinationDirectory = productContext.buildDirectory; } else { product->destinationDirectory = FileInfo::resolvePath( product->topLevelProject()->buildDirectory, @@ -747,7 +745,7 @@ void ProjectResolver::resolveTransformer(Item *item, ProjectContext *projectCont if (Q_UNLIKELY(fileName.isEmpty())) throw ErrorInfo(Tr::tr("Artifact fileName must not be empty.")); artifact->absoluteFilePath - = FileInfo::resolvePath(m_productContext->product->buildDirectory(), fileName); + = FileInfo::resolvePath(m_productContext->buildDirectory, fileName); artifact->fileTags = m_evaluator->fileTagsValue(child, QLatin1String("fileTags")); if (artifact->fileTags.isEmpty()) artifact->fileTags.insert(unknownFileTag()); |