diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2021-06-16 21:31:26 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2021-07-27 12:44:42 +0000 |
commit | 242d81fc0f9236a8dc8a51367076d9e5d09c020e (patch) | |
tree | fc3c17e891049c63cf340e6bae2dd9abf874e437 | |
parent | 560938a033c72c3ca2955d894643d1171edd3f5b (diff) |
Wrap ModuleProviderInfoList in a struct
Required for ongoing patchsets - later patches will add more members.
Change-Id: Iad57e17139b104e55221059eedb8c0f057f6f4e0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraphloader.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/language.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/loader.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/loader.h | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.h | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleproviderinfo.h | 11 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleproviderloader.cpp | 8 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleproviderloader.h | 12 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/tools/persistence.cpp | 2 |
12 files changed, 38 insertions, 23 deletions
diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index c5a377550..f1a5e5cb9 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -643,8 +643,8 @@ bool BuildGraphLoader::hasBuildSystemFileChanged(const Set<QString> &buildSystem const auto generatedChecker = [&file, restoredProject](const ModuleProviderInfo &mpi) { return file.startsWith(mpi.outputDirPath(restoredProject->buildDirectory)); }; - const bool fileWasCreatedByModuleProvider = any_of(restoredProject->moduleProviderInfo, - generatedChecker); + const bool fileWasCreatedByModuleProvider = + any_of(restoredProject->moduleProviderInfo.providers, generatedChecker); const FileTime referenceTime = fileWasCreatedByModuleProvider ? restoredProject->lastEndResolveTime : restoredProject->lastStartResolveTime; if (referenceTime < fi.lastModified()) { diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 0b472a668..8c8b4a9a2 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -614,7 +614,7 @@ QString TopLevelProject::profile() const void TopLevelProject::makeModuleProvidersNonTransient() { - for (ModuleProviderInfo &m : moduleProviderInfo) + for (ModuleProviderInfo &m : moduleProviderInfo.providers) m.transientOutput = false; } @@ -664,7 +664,7 @@ void TopLevelProject::store(PersistentPool &pool) void TopLevelProject::cleanupModuleProviderOutput() { QString error; - for (const ModuleProviderInfo &m : moduleProviderInfo) { + for (const ModuleProviderInfo &m : moduleProviderInfo.providers) { if (m.transientOutput) { if (!removeDirectoryWithContents(m.outputDirPath(buildDirectory), &error)) qCWarning(lcBuildGraph) << "Error removing module provider output:" << error; diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index 23a5f1d1a..e50691560 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -688,7 +688,7 @@ public: QString buildDirectory; // Not saved QProcessEnvironment environment; std::vector<ProbeConstPtr> probes; - ModuleProviderInfoList moduleProviderInfo; + StoredModuleProviderInfo moduleProviderInfo; QHash<QString, QString> canonicalFilePathResults; // Results of calls to "File.canonicalFilePath()." QHash<QString, bool> fileExistsResults; // Results of calls to "File.exists()". diff --git a/src/lib/corelib/language/loader.cpp b/src/lib/corelib/language/loader.cpp index f248fbb1a..1de84da63 100644 --- a/src/lib/corelib/language/loader.cpp +++ b/src/lib/corelib/language/loader.cpp @@ -104,7 +104,7 @@ void Loader::setStoredProfiles(const QVariantMap &profiles) m_storedProfiles = profiles; } -void Loader::setStoredModuleProviderInfo(const ModuleProviderInfoList &providerInfo) +void Loader::setStoredModuleProviderInfo(const StoredModuleProviderInfo &providerInfo) { m_storedModuleProviderInfo = providerInfo; } diff --git a/src/lib/corelib/language/loader.h b/src/lib/corelib/language/loader.h index d172a74ed..2c8b08446 100644 --- a/src/lib/corelib/language/loader.h +++ b/src/lib/corelib/language/loader.h @@ -65,7 +65,7 @@ public: void setOldProductProbes(const QHash<QString, std::vector<ProbeConstPtr>> &oldProbes); void setLastResolveTime(const FileTime &time) { m_lastResolveTime = time; } void setStoredProfiles(const QVariantMap &profiles); - void setStoredModuleProviderInfo(const ModuleProviderInfoList &providerInfo); + void setStoredModuleProviderInfo(const StoredModuleProviderInfo &providerInfo); TopLevelProjectPtr loadProject(const SetupProjectParameters ¶meters); static void setupProjectFilePath(SetupProjectParameters ¶meters); @@ -77,7 +77,7 @@ private: QStringList m_searchPaths; std::vector<ProbeConstPtr> m_oldProjectProbes; QHash<QString, std::vector<ProbeConstPtr>> m_oldProductProbes; - ModuleProviderInfoList m_storedModuleProviderInfo; + StoredModuleProviderInfo m_storedModuleProviderInfo; QVariantMap m_storedProfiles; FileTime m_lastResolveTime; }; diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index fd9a3e070..84482d5ff 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -287,9 +287,9 @@ void ModuleLoader::setStoredProfiles(const QVariantMap &profiles) m_storedProfiles = profiles; } -void ModuleLoader::setStoredModuleProviderInfo(const ModuleProviderInfoList &moduleProviderInfo) +void ModuleLoader::setStoredModuleProviderInfo(const StoredModuleProviderInfo &moduleProviderInfo) { - m_moduleProviderLoader->setModuleProviderInfo(moduleProviderInfo); + m_moduleProviderLoader->setStoredModuleProviderInfo(moduleProviderInfo); } ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters ¶meters) @@ -643,7 +643,7 @@ void ModuleLoader::handleTopLevelProject(ModuleLoaderResult *loadResult, Item *p } loadResult->projectProbes = tlp.probes; - loadResult->moduleProviderInfo = m_moduleProviderLoader->moduleProviderInfo(); + loadResult->storedModuleProviderInfo = m_moduleProviderLoader->storedModuleProviderInfo(); m_reader->clearExtraSearchPathsStack(); AccumulatingTimer timer(m_parameters.logElapsedTime() diff --git a/src/lib/corelib/language/moduleloader.h b/src/lib/corelib/language/moduleloader.h index 1e39c2cf5..b619686c0 100644 --- a/src/lib/corelib/language/moduleloader.h +++ b/src/lib/corelib/language/moduleloader.h @@ -109,7 +109,7 @@ struct ModuleLoaderResult Item *root; std::unordered_map<Item *, ProductInfo> productInfos; std::vector<ProbeConstPtr> projectProbes; - ModuleProviderInfoList moduleProviderInfo; + StoredModuleProviderInfo storedModuleProviderInfo; Set<QString> qbsFiles; QVariantMap profileConfigs; }; @@ -132,7 +132,7 @@ public: void setOldProductProbes(const QHash<QString, std::vector<ProbeConstPtr>> &oldProbes); void setLastResolveTime(const FileTime &time) { m_lastResolveTime = time; } void setStoredProfiles(const QVariantMap &profiles); - void setStoredModuleProviderInfo(const ModuleProviderInfoList &moduleProviderInfo); + void setStoredModuleProviderInfo(const StoredModuleProviderInfo &moduleProviderInfo); Evaluator *evaluator() const { return m_evaluator; } ModuleLoaderResult load(const SetupProjectParameters ¶meters); diff --git a/src/lib/corelib/language/moduleproviderinfo.h b/src/lib/corelib/language/moduleproviderinfo.h index 4f757d3d9..d55459221 100644 --- a/src/lib/corelib/language/moduleproviderinfo.h +++ b/src/lib/corelib/language/moduleproviderinfo.h @@ -87,6 +87,17 @@ public: using ModuleProviderInfoList = std::vector<ModuleProviderInfo>; +// Persistent info stored between sessions +struct StoredModuleProviderInfo +{ + ModuleProviderInfoList providers; + + template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) + { + pool.serializationOp<opType>(providers); + } +}; + } // namespace Internal } // namespace qbs diff --git a/src/lib/corelib/language/moduleproviderloader.cpp b/src/lib/corelib/language/moduleproviderloader.cpp index e8e12e216..c1da85490 100644 --- a/src/lib/corelib/language/moduleproviderloader.cpp +++ b/src/lib/corelib/language/moduleproviderloader.cpp @@ -70,9 +70,9 @@ void ModuleProviderLoader::setupKnownModuleProviders(ProductContext &product) { // Existing module provider search paths are re-used if and only if the provider configuration // at setup time was the same as the current one for the respective module provider. - if (!m_moduleProviderInfo.empty()) { + if (!m_storedModuleProviderInfo.providers.empty()) { const QVariantMap configForProduct = moduleProviderConfig(product); - for (const ModuleProviderInfo &c : m_moduleProviderInfo) { + for (const ModuleProviderInfo &c : m_storedModuleProviderInfo.providers) { if (configForProduct.value(c.name.toString()).toMap() == c.config) { qCDebug(lcModuleLoader) << "re-using search paths" << c.searchPaths << "from module provider" << c.name @@ -129,8 +129,8 @@ ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::findModuleProvi const QStringList searchPaths = getProviderSearchPaths(name, providerFile, product, config, dependsItemLocation); const auto addToGlobalInfo = [=] { - m_moduleProviderInfo.emplace_back(ModuleProviderInfo(name, config, - searchPaths, m_parameters.dryRun())); + m_storedModuleProviderInfo.providers.emplace_back( + ModuleProviderInfo(name, config, searchPaths, m_parameters.dryRun())); }; if (searchPaths.empty()) { qCDebug(lcModuleLoader) << "Module provider did run, but did not set up " diff --git a/src/lib/corelib/language/moduleproviderloader.h b/src/lib/corelib/language/moduleproviderloader.h index e5455a1aa..694cf4b5c 100644 --- a/src/lib/corelib/language/moduleproviderloader.h +++ b/src/lib/corelib/language/moduleproviderloader.h @@ -67,10 +67,14 @@ public: bool providerAddedSearchPaths = false; }; - const ModuleProviderInfoList &moduleProviderInfo() const { return m_moduleProviderInfo; } - void setModuleProviderInfo(ModuleProviderInfoList moduleProviderInfo) + const StoredModuleProviderInfo &storedModuleProviderInfo() const { - m_moduleProviderInfo = std::move(moduleProviderInfo); + return m_storedModuleProviderInfo; + } + + void setStoredModuleProviderInfo(StoredModuleProviderInfo moduleProviderInfo) + { + m_storedModuleProviderInfo = std::move(moduleProviderInfo); } void setProjectParameters(SetupProjectParameters parameters) @@ -107,7 +111,7 @@ private: Evaluator *const m_evaluator{nullptr}; SetupProjectParameters m_parameters; - ModuleProviderInfoList m_moduleProviderInfo; + StoredModuleProviderInfo m_storedModuleProviderInfo; Set<QString> m_tempQbsFiles; }; diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index 829cc955a..d3b744892 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -239,7 +239,7 @@ TopLevelProjectPtr ProjectResolver::resolveTopLevelProject() project->buildSystemFiles = m_loadResult.qbsFiles; project->profileConfigs = m_loadResult.profileConfigs; project->probes = m_loadResult.projectProbes; - project->moduleProviderInfo = m_loadResult.moduleProviderInfo; + project->moduleProviderInfo = m_loadResult.storedModuleProviderInfo; ProjectContext projectContext; projectContext.project = project; diff --git a/src/lib/corelib/tools/persistence.cpp b/src/lib/corelib/tools/persistence.cpp index 7c4458b5f..95211e894 100644 --- a/src/lib/corelib/tools/persistence.cpp +++ b/src/lib/corelib/tools/persistence.cpp @@ -48,7 +48,7 @@ namespace qbs { namespace Internal { -static const char QBS_PERSISTENCE_MAGIC[] = "QBSPERSISTENCE-129"; +static const char QBS_PERSISTENCE_MAGIC[] = "QBSPERSISTENCE-130"; NoBuildGraphError::NoBuildGraphError(const QString &filePath) : ErrorInfo(Tr::tr("Build graph not found for configuration '%1'. Expected location was '%2'.") |