diff options
author | hjk <hjk@qt.io> | 2019-05-24 11:48:47 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-05-24 14:05:21 +0000 |
commit | f8e21037e30ad58204dfba6dd31a5d9d5489ac53 (patch) | |
tree | 77e0a84e4ec767e7a069ce445de70320877f18d5 | |
parent | d492d14a920f20fe5296dcbab8dd0206e6d4cc92 (diff) |
Qbs: Move environment cache from runconfiguration to project
Change-Id: I2a987e55cde133931bb4578506bb26666eece601
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.cpp | 14 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.h | 2 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 15 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsrunconfiguration.h | 3 |
4 files changed, 17 insertions, 17 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 727e464b43..7d44d03796 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -469,6 +469,7 @@ void QbsProject::updateAfterParse() updateCppCodeModel(); updateQmlJsCodeModel(); emit fileListChanged(); + m_envCache.clear(); emit dataChanged(); } @@ -652,6 +653,7 @@ void QbsProject::updateAfterBuild() m_extraCompilersPending = false; updateCppCodeModel(); } + m_envCache.clear(); emit dataChanged(); } @@ -1115,6 +1117,16 @@ void QbsProject::updateApplicationTargets() bti.runEnvModifier = [targetFile, productData, this](Utils::Environment &env, bool usingLibraryPaths) { if (!qbsProject().isValid()) return; + + const QString key = env.toStringList().join(QChar()) + + QbsProject::uniqueProductName(productData) + + QString::number(usingLibraryPaths); + const auto it = m_envCache.constFind(key); + if (it != m_envCache.constEnd()) { + env = it.value(); + return; + } + QProcessEnvironment procEnv = env.toProcessEnvironment(); procEnv.insert(QLatin1String("QBS_RUN_FILE_PATH"), targetFile); QStringList setupRunEnvConfig; @@ -1133,6 +1145,8 @@ void QbsProject::updateApplicationTargets() foreach (const QString &key, procEnv.keys()) env.set(key, procEnv.value(key)); } + + m_envCache.insert(key, env); }; applications.append(bti); diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index 835f6c6b55..c60172e2ec 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -164,6 +164,8 @@ private: QTimer m_parsingDelay; QList<ProjectExplorer::ExtraCompiler *> m_extraCompilers; bool m_extraCompilersPending = false; + + QHash<QString, Utils::Environment> m_envCache; }; } // namespace Internal diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index a162ef33c5..042d90c623 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -59,21 +59,9 @@ QbsRunConfiguration::QbsRunConfiguration(Target *target, Core::Id id) envAspect->addModifier([this](Environment &env) { bool usingLibraryPaths = aspect<UseLibraryPathsAspect>()->value(); - const auto key = qMakePair(env.toStringList(), usingLibraryPaths); - const auto it = m_envCache.constFind(key); - if (it != m_envCache.constEnd()) { - env = it.value(); - return; - } BuildTargetInfo bti = buildTargetInfo(); - if (bti.runEnvModifier) { - if (project()->isParsing() || BuildManager::isBuilding(this->target())) { - qCDebug(qbsPmLog) << "qbs project in flux, cannot modify environment"; - return; // Intentionally skips the cache update below. - } + if (bti.runEnvModifier) bti.runEnvModifier(env, usingLibraryPaths); - } - m_envCache.insert(key, env); }); addAspect<ExecutableAspect>(); @@ -108,7 +96,6 @@ QbsRunConfiguration::QbsRunConfiguration(Target *target, Core::Id id) this, &QbsRunConfiguration::updateTargetInformation); auto qbsProject = static_cast<QbsProject *>(target->project()); - connect(qbsProject, &QbsProject::dataChanged, this, [this] { m_envCache.clear(); }); connect(qbsProject, &Project::parsingFinished, this, &QbsRunConfiguration::updateTargetInformation); } diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h index d7b75fa114..331df7ce6b 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h @@ -48,9 +48,6 @@ private: void doAdditionalSetup(const ProjectExplorer::RunConfigurationCreationInfo &rci) final; void updateTargetInformation(); - - using EnvCache = QHash<QPair<QStringList, bool>, Utils::Environment>; - mutable EnvCache m_envCache; }; class QbsRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory |