aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-07-31 12:08:14 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-07-31 17:15:40 +0200
commitdb9a29f2c94fc47e0fe7bcac0142f48e2468c0da (patch)
tree5bd9529190252ecc784cb26251be6712669e6acc /src/lib
parent885e66e13c7b6eedbda4754989f5fb894ba37e44 (diff)
fix condition for "conflicting rules" error
Change-Id: I3877fcee643e1b80b2ee5030bc2dd98bb13244cd Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp53
1 files changed, 24 insertions, 29 deletions
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 4986a517b..632606566 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -276,6 +276,30 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F
Artifact *outputArtifact = lookupArtifact(m_product, outputPath);
if (outputArtifact) {
+ if (outputArtifact->transformer && outputArtifact->transformer->rule != m_rule) {
+ QString e = Tr::tr("Conflicting rules for producing %1 %2 \n")
+ .arg(outputArtifact->filePath(),
+ QLatin1Char('[') +
+ outputArtifact->fileTags.toStringList().join(QLatin1String(", "))
+ + QLatin1Char(']'));
+ QString str = QLatin1Char('[') + m_rule->inputs.toStringList().join(QLatin1String(", "))
+ + QLatin1String("] -> [") + outputArtifact->fileTags.toStringList()
+ .join(QLatin1String(", ")) + QLatin1Char(']');
+
+ e += QString::fromLatin1(" while trying to apply: %1:%2:%3 %4\n")
+ .arg(m_rule->prepareScript->location.fileName())
+ .arg(m_rule->prepareScript->location.line())
+ .arg(m_rule->prepareScript->location.column())
+ .arg(str);
+
+ e += QString::fromLatin1(" was already defined in: %1:%2:%3 %4\n")
+ .arg(outputArtifact->transformer->rule->prepareScript->location.fileName())
+ .arg(outputArtifact->transformer->rule->prepareScript->location.line())
+ .arg(outputArtifact->transformer->rule->prepareScript->location.column())
+ .arg(str);
+
+ throw ErrorInfo(e);
+ }
if (outputArtifact->transformer && outputArtifact->transformer != m_transformer) {
QBS_CHECK(!m_transformer);
@@ -287,35 +311,6 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F
}
m_transformer = outputArtifact->transformer;
m_transformer->inputs.unite(inputArtifacts);
-
- if (Q_UNLIKELY(m_transformer->inputs.count() > 1 && !m_rule->multiplex)) {
- QString th = QLatin1Char('[') + outputArtifact->fileTags.toStringList()
- .join(QLatin1String(", ")) + QLatin1Char(']');
- QString e = Tr::tr("Conflicting rules for producing %1 %2 \n")
- .arg(outputArtifact->filePath(), th);
- th = QLatin1Char('[') + m_rule->inputs.toStringList().join(QLatin1String(", "))
- + QLatin1String("] -> [") + outputArtifact->fileTags.toStringList()
- .join(QLatin1String(", ")) + QLatin1Char(']');
-
- e += QString::fromLatin1(" while trying to apply: %1:%2:%3 %4\n")
- .arg(m_rule->prepareScript->location.fileName())
- .arg(m_rule->prepareScript->location.line())
- .arg(m_rule->prepareScript->location.column())
- .arg(th);
-
- e += QString::fromLatin1(" was already defined in: %1:%2:%3 %4\n")
- .arg(outputArtifact->transformer->rule->prepareScript->location.fileName())
- .arg(outputArtifact->transformer->rule->prepareScript->location.line())
- .arg(outputArtifact->transformer->rule->prepareScript->location.column())
- .arg(th);
-
- QStringList inputFilePaths;
- foreach (const Artifact * const a, m_transformer->inputs)
- inputFilePaths << a->filePath();
- e.append(Tr::tr("The input artifacts are: %1")
- .arg(inputFilePaths.join(QLatin1String(", "))));
- throw ErrorInfo(e);
- }
}
outputArtifact->fileTags += fileTags;
outputArtifact->clearTimestamp();