aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-08-31 16:18:07 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-08-31 16:18:07 +0200
commit58219e2d386a799cb89bf54a22386737614d31b0 (patch)
tree9e57e3e02d530e16cc512c95f1bededb68fd39e3 /src/lib/corelib/buildgraph
parentac7351024345ef6730e9d3b575979be20991ff88 (diff)
parent89689cac88ffe880942c7acb59fc3374a34cbd6c (diff)
Merge 1.12 into master
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r--src/lib/corelib/buildgraph/buildgraph.cpp22
-rw-r--r--src/lib/corelib/buildgraph/executor.cpp4
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.cpp4
3 files changed, 23 insertions, 7 deletions
diff --git a/src/lib/corelib/buildgraph/buildgraph.cpp b/src/lib/corelib/buildgraph/buildgraph.cpp
index 27e28ce44..42091ec56 100644
--- a/src/lib/corelib/buildgraph/buildgraph.cpp
+++ b/src/lib/corelib/buildgraph/buildgraph.cpp
@@ -224,9 +224,25 @@ private:
QScriptValue result = engine->newArray();
quint32 idx = 0;
const bool exportCase = depType == DependencyType::Exported;
- const std::vector<ResolvedProductPtr> &productDeps = (exportCase
- ? product->exportedModule.productDependencies
- : product->dependencies);
+ std::vector<ResolvedProductPtr> productDeps;
+ if (exportCase) {
+ if (!product->exportedModule.productDependencies.empty()) {
+ const auto allProducts = product->topLevelProject()->allProducts();
+ const auto getProductForName = [&allProducts](const QString &name) {
+ const auto cmp = [name](const ResolvedProductConstPtr &p) {
+ return p->uniqueName() == name;
+ };
+ const auto it = std::find_if(allProducts.cbegin(), allProducts.cend(), cmp);
+ QBS_ASSERT(it != allProducts.cend(), return ResolvedProductPtr());
+ return *it;
+ };
+ std::transform(product->exportedModule.productDependencies.cbegin(),
+ product->exportedModule.productDependencies.cend(),
+ std::back_inserter(productDeps), getProductForName);
+ }
+ } else {
+ productDeps = product->dependencies;
+ }
for (const ResolvedProductPtr &dependency : qAsConst(productDeps)) {
QScriptValue obj = engine->newObject(engine->productPropertyScriptClass());
obj.setPrototype(setupProductScriptValue(static_cast<ScriptEngine *>(engine),
diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp
index 9a97b054e..1fd6aa986 100644
--- a/src/lib/corelib/buildgraph/executor.cpp
+++ b/src/lib/corelib/buildgraph/executor.cpp
@@ -889,8 +889,8 @@ void Executor::rescueOldBuildData(Artifact *artifact, bool *childrenAdded = null
if (childrenAdded && !childrenToConnect.empty())
*childrenAdded = true;
for (Artifact * const child : childrenToConnect) {
- safeConnect(artifact, child);
- artifact->childrenAddedByScanner << child;
+ if (safeConnect(artifact, child))
+ artifact->childrenAddedByScanner << child;
}
qCDebug(lcBuildGraph) << "Data was rescued.";
} else {
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
index 051560aba..143c99fb5 100644
--- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp
+++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
@@ -343,8 +343,8 @@ void InputArtifactScanner::handleDependency(ResolvedDependency &dependency)
} else {
if (m_artifact->children.contains(artifactDependency))
return;
- safeConnect(m_artifact, artifactDependency);
- m_artifact->childrenAddedByScanner += artifactDependency;
+ if (safeConnect(m_artifact, artifactDependency))
+ m_artifact->childrenAddedByScanner += artifactDependency;
m_newDependencyAdded = true;
}
}