diff options
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraphloader.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/language.cpp | 35 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 20 | ||||
-rw-r--r-- | src/lib/corelib/loader/productresolver.cpp | 3 |
4 files changed, 20 insertions, 40 deletions
diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index eae52864f..18287e39f 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -606,7 +606,7 @@ bool BuildGraphLoader::hasProductFileChanged(const std::vector<ResolvedProductPt }); if (!reExpansionRequired) continue; - const Set<QString> files = group->wildcards->expandPatterns(group, + const Set<QString> files = group->wildcards->expandPatterns(group->prefix, FileInfo::path(group->location.filePath()), product->topLevelProject()->buildDirectory); Set<QString> wcFiles; diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 0d2813447..8b87a7977 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -166,18 +166,6 @@ std::vector<SourceArtifactPtr> ResolvedGroup::allFiles() const return lst; } -void ResolvedGroup::load(PersistentPool &pool) -{ - serializationOp<PersistentPool::Load>(pool); - if (wildcards) - wildcards->group = this; -} - -void ResolvedGroup::store(PersistentPool &pool) -{ - serializationOp<PersistentPool::Store>(pool); -} - /*! * \class RuleArtifact * \brief The \c RuleArtifact class represents an Artifact item encountered in the context @@ -717,19 +705,19 @@ void TopLevelProject::cleanupModuleProviderOutput() * \brief The \c SourceArtifacts resulting from the expanded list of matching files. */ -Set<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QString &baseDir, const QString &buildDir) +Set<QString> SourceWildCards::expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir) { - Set<QString> files = expandPatterns(group, patterns, baseDir, buildDir); - files -= expandPatterns(group, excludePatterns, baseDir, buildDir); + Set<QString> files = expandPatterns(prefix, patterns, baseDir, buildDir); + files -= expandPatterns(prefix, excludePatterns, baseDir, buildDir); return files; } -Set<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QStringList &patterns, const QString &baseDir, const QString &buildDir) +Set<QString> SourceWildCards::expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir) { Set<QString> files; - QString expandedPrefix = group->prefix; + QString expandedPrefix = prefix; if (expandedPrefix.startsWith(StringConstants::tildeSlash())) expandedPrefix.replace(0, 1, QDir::homePath()); for (QString pattern : patterns) { @@ -745,17 +733,16 @@ Set<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, } else { rootDir = QLatin1Char('/'); } - expandPatterns(files, group, parts, rootDir, buildDir); + expandPatterns(files, parts, rootDir, buildDir); } else { - expandPatterns(files, group, parts, baseDir, buildDir); + expandPatterns(files, parts, baseDir, buildDir); } } return files; } -void SourceWildCards::expandPatterns(Set<QString> &result, const GroupConstPtr &group, - const QStringList &parts, +void SourceWildCards::expandPatterns(Set<QString> &result, const QStringList &parts, const QString &baseDir, const QString &buildDir) { // People might build directly in the project source directory. This is okay, since @@ -806,7 +793,7 @@ void SourceWildCards::expandPatterns(Set<QString> &result, const GroupConstPtr & if (!isDir && it.fileInfo().isDir() && !it.fileInfo().isSymLink()) continue; if (isDir) { - expandPatterns(result, group, changed_parts, filePath, buildDir); + expandPatterns(result, changed_parts, filePath, buildDir); } else { if (parentDir != baseDir) dirTimeStamps.emplace_back(parentDir, FileInfo(baseDir).lastModified()); diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index 86f0f86fe..c2f892727 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -259,10 +259,9 @@ inline bool operator!=(const SourceArtifactInternal &sa1, const SourceArtifactIn class SourceWildCards { public: - Set<QString> expandPatterns(const GroupConstPtr &group, const QString &baseDir, - const QString &buildDir); + Set<QString> expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir); - const ResolvedGroup *group = nullptr; // The owning group. QStringList patterns; QStringList excludePatterns; std::vector<std::pair<QString, FileTime>> dirTimeStamps; @@ -274,11 +273,10 @@ public: } private: - Set<QString> expandPatterns(const GroupConstPtr &group, const QStringList &patterns, - const QString &baseDir, const QString &buildDir); - void expandPatterns(Set<QString> &result, const GroupConstPtr &group, - const QStringList &parts, const QString &baseDir, - const QString &buildDir); + Set<QString> expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir); + void expandPatterns(Set<QString> &result, const QStringList &parts, + const QString &baseDir, const QString &buildDir); }; class QBS_AUTOTEST_EXPORT ResolvedGroup @@ -300,11 +298,7 @@ public: std::vector<SourceArtifactPtr> allFiles() const; - void load(PersistentPool &pool); - void store(PersistentPool &pool); - -private: - template<PersistentPool::OpType opType> void serializationOp(PersistentPool &pool) + template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) { pool.serializationOp<opType>(name, enabled, location, prefix, files, wildcards, properties, fileTags, targetOfModule, overrideTags); diff --git a/src/lib/corelib/loader/productresolver.cpp b/src/lib/corelib/loader/productresolver.cpp index 6d10132ee..f27e1bf37 100644 --- a/src/lib/corelib/loader/productresolver.cpp +++ b/src/lib/corelib/loader/productresolver.cpp @@ -787,11 +787,10 @@ void ProductResolverStage2::resolveGroupFully(Item *item, bool isEnabled) if (!patterns.empty()) { group->wildcards = std::make_unique<SourceWildCards>(); SourceWildCards *wildcards = group->wildcards.get(); - wildcards->group = group.get(); wildcards->excludePatterns = evaluator.stringListValue( item, StringConstants::excludeFilesProperty()); wildcards->patterns = patterns; - const Set<QString> files = wildcards->expandPatterns(group, + const Set<QString> files = wildcards->expandPatterns(group->prefix, FileInfo::path(item->file()->filePath()), m_product.project->project->topLevelProject()->buildDirectory); for (const QString &fileName : files) |