diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-06-04 16:32:15 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-06-11 23:07:41 +0200 |
commit | 74c99e52836a367c58a4f1108c5df527d3028f2c (patch) | |
tree | 28601e699769bfe0e98e263e7653190072e9113f /src/lib/corelib/buildgraph | |
parent | a4041a342d21a7f950eba8255841f024ec93f0c8 (diff) |
centralize input(s) property setup
For simplex rules we did set up the inputs with
setupScriptEngineForArtifact.
We removed setupScriptEngineForArtifact in favor of translateFileConfig.
Change-Id: I0df90c65ad6157e715d83e785b3ae67d92ec2088
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 38 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.h | 1 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/transformer.cpp | 2 |
3 files changed, 3 insertions, 38 deletions
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index ee5062c8e..38999e582 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -111,7 +111,6 @@ void RulesApplicator::applyRule(const RuleConstPtr &rule) doApply(inputArtifacts, prepareScriptContext); } else { // apply the rule once for each input foreach (Artifact * const inputArtifact, inputArtifacts + usingsArtifacts) { - setupScriptEngineForArtifact(inputArtifact); ArtifactSet lst; lst += inputArtifact; doApply(lst, prepareScriptContext); @@ -173,10 +172,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p // create the output artifacts from the set of input artifacts Transformer::setupInputs(prepareScriptContext, inputArtifacts, m_rule->module->name); copyProperty(QLatin1String("inputs"), prepareScriptContext, scope()); - if (m_rule->multiplex) { - // ### awful! Revisit how the "input" property is set up! - copyProperty(QLatin1String("input"), prepareScriptContext, scope()); - } + copyProperty(QLatin1String("input"), prepareScriptContext, scope()); copyProperty(QLatin1String("product"), prepareScriptContext, scope()); copyProperty(QLatin1String("project"), prepareScriptContext, scope()); if (m_rule->isDynamic()) { @@ -260,38 +256,6 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p .arg(m_rule->toString()), m_rule->prepareScript->location); } -void RulesApplicator::setupScriptEngineForArtifact(Artifact *artifact) -{ - QString inFileName = artifact->fileName(); - QString inBaseName = FileInfo::baseName(artifact->filePath()); - QString inCompleteBaseName = FileInfo::completeBaseName(artifact->filePath()); - - QString basedir; - if (artifact->artifactType == Artifact::SourceFile) { - QDir sourceDir(m_product->sourceDirectory); - basedir = FileInfo::path(sourceDir.relativeFilePath(artifact->filePath())); - } else { - QDir buildDir(m_product->topLevelProject()->buildDirectory); - basedir = FileInfo::path(buildDir.relativeFilePath(artifact->filePath())); - } - - // expose per file properties we want to use in an Artifact within a Rule - QScriptValue scriptValue = engine()->newObject(); - ModuleProperties::init(scriptValue, artifact); - scriptValue.setProperty(QLatin1String("fileName"), inFileName); - scriptValue.setProperty(QLatin1String("filePath"), artifact->filePath()); - scriptValue.setProperty(QLatin1String("baseName"), inBaseName); - scriptValue.setProperty(QLatin1String("completeBaseName"), inCompleteBaseName); - scriptValue.setProperty(QLatin1String("baseDir"), basedir); - scriptValue.setProperty(QLatin1String("fileTags"), - engine()->toScriptValue(artifact->fileTags.toStringList())); - attachPointerTo(scriptValue, artifact); - - scope().setProperty(QLatin1String("input"), scriptValue); - Q_ASSERT_X(scriptValue.strictlyEquals(engine()->evaluate(QLatin1String("input"))), - "BG", "The input object is not in current scope."); -} - ArtifactSet RulesApplicator::collectOldOutputArtifacts(const ArtifactSet &inputArtifacts) const { ArtifactSet result; diff --git a/src/lib/corelib/buildgraph/rulesapplicator.h b/src/lib/corelib/buildgraph/rulesapplicator.h index 2cd63968f..334dfa084 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.h +++ b/src/lib/corelib/buildgraph/rulesapplicator.h @@ -60,7 +60,6 @@ public: private: void doApply(const ArtifactSet &inputArtifacts, QScriptValue &prepareScriptContext); - void setupScriptEngineForArtifact(Artifact *artifact); ArtifactSet collectOldOutputArtifacts(const ArtifactSet &inputArtifacts) const; Artifact *createOutputArtifactFromRuleArtifact(const RuleArtifactConstPtr &ruleArtifact, const ArtifactSet &inputArtifacts); diff --git a/src/lib/corelib/buildgraph/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp index e0cbf900a..b9a206851 100644 --- a/src/lib/corelib/buildgraph/transformer.cpp +++ b/src/lib/corelib/buildgraph/transformer.cpp @@ -37,6 +37,7 @@ #include <logging/translator.h> #include <tools/error.h> #include <tools/persistence.h> +#include <tools/scripttools.h> #include <tools/qbsassert.h> #include <QDir> @@ -94,6 +95,7 @@ static void setArtifactProperty(QScriptValue &obj, const QString &name, QScriptValue Transformer::translateFileConfig(QScriptEngine *scriptEngine, Artifact *artifact, const QString &defaultModuleName) { QScriptValue obj = scriptEngine->newObject(); + attachPointerTo(obj, artifact); ModuleProperties::init(obj, artifact); obj.setProperty(QLatin1String("fileName"), artifact->fileName()); obj.setProperty(QLatin1String("filePath"), artifact->filePath()); |