diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-08-31 16:18:07 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-08-31 16:18:07 +0200 |
commit | 58219e2d386a799cb89bf54a22386737614d31b0 (patch) | |
tree | 9e57e3e02d530e16cc512c95f1bededb68fd39e3 /src/lib/corelib/buildgraph | |
parent | ac7351024345ef6730e9d3b575979be20991ff88 (diff) | |
parent | 89689cac88ffe880942c7acb59fc3374a34cbd6c (diff) |
Merge 1.12 into master
Change-Id: I745a07a3b25abd6c89afcd3b2199119a751e8a0c
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraph.cpp | 22 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/executor.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/inputartifactscanner.cpp | 4 |
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; } } |