aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-06-16 21:31:26 +0200
committerIvan Komissarov <ABBAPOH@gmail.com>2021-07-27 12:44:42 +0000
commit242d81fc0f9236a8dc8a51367076d9e5d09c020e (patch)
treefc3c17e891049c63cf340e6bae2dd9abf874e437
parent560938a033c72c3ca2955d894643d1171edd3f5b (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.cpp4
-rw-r--r--src/lib/corelib/language/language.cpp4
-rw-r--r--src/lib/corelib/language/language.h2
-rw-r--r--src/lib/corelib/language/loader.cpp2
-rw-r--r--src/lib/corelib/language/loader.h4
-rw-r--r--src/lib/corelib/language/moduleloader.cpp6
-rw-r--r--src/lib/corelib/language/moduleloader.h4
-rw-r--r--src/lib/corelib/language/moduleproviderinfo.h11
-rw-r--r--src/lib/corelib/language/moduleproviderloader.cpp8
-rw-r--r--src/lib/corelib/language/moduleproviderloader.h12
-rw-r--r--src/lib/corelib/language/projectresolver.cpp2
-rw-r--r--src/lib/corelib/tools/persistence.cpp2
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 &parameters);
static void setupProjectFilePath(SetupProjectParameters &parameters);
@@ -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 &parameters)
@@ -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 &parameters);
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'.")