aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-07-16 17:30:01 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-17 13:08:11 +0200
commit32c4d3d7d26937c8f2a0f2f99add2eb0b0f1e503 (patch)
treeb61d49ff5ec5730040404e31f4edc7563000ef34 /src/lib/corelib/language
parent1c982622acd9e38096dd9feabe8e5a4c129df31c (diff)
fix calculation of added/removed artifacts
We kept lists of added and removed artifacts in ProductBuildData. It was never quite clear when to invalidate those lists, which led to QBS-635. Instead we let the RuleNode decide which artifacts it considers as "added or removed for this rule". Task-number: QBS-635 Change-Id: I390e0ab775c695045c6e91ade3ac7326692cb314 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/language.cpp76
-rw-r--r--src/lib/corelib/language/language.h7
2 files changed, 0 insertions, 83 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index f13a6fb82..56a560d44 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -664,63 +664,6 @@ void ResolvedProduct::setupRunEnvironment(ScriptEngine *engine, const QProcessEn
runEnvironment = getProcessEnvironment(engine, RunEnv, modules, moduleProperties, env);
}
-static bool removeFromHash(ProductBuildData::ArtifactSetByFileTag &tagHash, const FileTag &tag,
- Artifact *artifact)
-{
- const ProductBuildData::ArtifactSetByFileTag::Iterator it = tagHash.find(tag);
- if (it == tagHash.end())
- return false;
-
- ArtifactSet &artifacts = it.value();
- const bool wasInSet = artifacts.remove(artifact);
- if (wasInSet) {
- if (artifacts.isEmpty())
- tagHash.erase(it); // Do not keep empty artifact set in hash.
- return true;
- }
- return false;
-}
-
-void ResolvedProduct::registerAddedFileTag(const FileTag &fileTag, Artifact *artifact)
-{
- QBS_CHECK(buildData);
- QBS_CHECK(artifact->product == this);
- if (removeFromHash(buildData->removedArtifactsByFileTag, fileTag, artifact))
- return;
- buildData->addedArtifactsByFileTag[fileTag].insert(artifact);
-}
-
-void ResolvedProduct::registerAddedArtifact(Artifact *artifact)
-{
- QBS_CHECK(buildData);
- QBS_CHECK(artifact->product == this);
- foreach (const FileTag &tag, artifact->fileTags)
- registerAddedFileTag(tag, artifact);
-}
-
-void ResolvedProduct::unregisterAddedArtifact(Artifact *artifact)
-{
- ProductBuildData::ArtifactSetByFileTag::Iterator it
- = buildData->addedArtifactsByFileTag.begin();
- while (it != buildData->addedArtifactsByFileTag.end()) {
- ArtifactSet &artifacts = it.value();
- artifacts.remove(artifact);
- if (artifacts.isEmpty())
- it = buildData->addedArtifactsByFileTag.erase(it);
- else
- ++it;
- }
-}
-
-void ResolvedProduct::registerRemovedFileTag(const FileTag &fileTag, Artifact *artifact)
-{
- QBS_CHECK(buildData);
- QBS_CHECK(artifact->product == this);
- if (removeFromHash(buildData->addedArtifactsByFileTag, fileTag, artifact))
- return;
- buildData->removedArtifactsByFileTag[fileTag].insert(artifact);
-}
-
void ResolvedProduct::registerArtifactWithChangedInputs(Artifact *artifact)
{
QBS_CHECK(buildData);
@@ -746,25 +689,6 @@ void ResolvedProduct::unmarkForReapplication(const RuleConstPtr &rule)
buildData->artifactsWithChangedInputsPerRule.remove(rule);
}
-const ArtifactSet ResolvedProduct::addedArtifactsByFileTag(const FileTag &tag) const
-{
- return buildData->addedArtifactsByFileTag.value(tag);
-}
-
-bool ResolvedProduct::isAdded(Artifact *a) const
-{
- foreach (const ArtifactSet &artifacts, buildData->addedArtifactsByFileTag) {
- if (artifacts.contains(a))
- return true;
- }
- return false;
-}
-
-const ArtifactSet ResolvedProduct::removedArtifactsByFileTag(const FileTag &tag) const
-{
- return buildData->removedArtifactsByFileTag.value(tag);
-}
-
bool ResolvedProduct::isMarkedForReapplication(const RuleConstPtr &rule) const
{
return !buildData->artifactsWithChangedInputsPerRule.value(rule).isEmpty();
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h
index bff76aab8..145e4d22b 100644
--- a/src/lib/corelib/language/language.h
+++ b/src/lib/corelib/language/language.h
@@ -384,16 +384,9 @@ public:
void setupBuildEnvironment(ScriptEngine *scriptEngine, const QProcessEnvironment &env) const;
void setupRunEnvironment(ScriptEngine *scriptEngine, const QProcessEnvironment &env) const;
- void registerAddedFileTag(const FileTag &fileTag, Artifact *artifact);
- void registerAddedArtifact(Artifact *artifact);
- void unregisterAddedArtifact(Artifact *artifact);
- void registerRemovedFileTag(const FileTag &fileTag, Artifact *artifact);
void registerArtifactWithChangedInputs(Artifact *artifact);
void unregisterArtifactWithChangedInputs(Artifact *artifact);
void unmarkForReapplication(const RuleConstPtr &rule);
- const ArtifactSet addedArtifactsByFileTag(const FileTag &tag) const;
- bool isAdded(Artifact *a) const;
- const ArtifactSet removedArtifactsByFileTag(const FileTag &tag) const;
bool isMarkedForReapplication(const RuleConstPtr &rule) const;
ArtifactSet lookupArtifactsByFileTag(const FileTag &tag) const;
ArtifactSet targetArtifacts() const;