forked from qt-creator/qt-creator
ProjectExplorer: Split Kit::*environment into build and run
They may differ in a containerized setup. Change-Id: Ib7e60fdd69f56e8e22bad3dfbc246e7de2fe9cd4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -661,8 +661,7 @@ QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const
|
||||
= Internal::CMakeProjectPlugin::projectTypeSpecificSettings();
|
||||
|
||||
if (settings->ninjaPath.filePath().isEmpty()) {
|
||||
Utils::Environment env = Utils::Environment::systemEnvironment();
|
||||
k->addToEnvironment(env);
|
||||
Utils::Environment env = k->buildEnvironment();
|
||||
return !env.searchInPath("ninja").isEmpty();
|
||||
}
|
||||
return true;
|
||||
@@ -829,7 +828,7 @@ KitAspectWidget *CMakeGeneratorKitAspect::createConfigWidget(Kit *k) const
|
||||
return new CMakeGeneratorKitAspectWidget(k, this);
|
||||
}
|
||||
|
||||
void CMakeGeneratorKitAspect::addToEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
void CMakeGeneratorKitAspect::addToBuildEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
{
|
||||
GeneratorInfo info = generatorInfo(k);
|
||||
if (info.generator == "NMake Makefiles JOM") {
|
||||
|
@@ -86,7 +86,7 @@ public:
|
||||
void upgrade(ProjectExplorer::Kit *k) final;
|
||||
ItemList toUserOutput(const ProjectExplorer::Kit *k) const final;
|
||||
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *k) const final;
|
||||
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const final;
|
||||
void addToBuildEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const final;
|
||||
|
||||
private:
|
||||
QVariant defaultValue(const ProjectExplorer::Kit *k) const;
|
||||
|
@@ -1287,8 +1287,7 @@ ProjectPart::Ptr CppModelManager::fallbackProjectPart()
|
||||
Utils::FilePath sysroot = SysRootKitAspect::sysRoot(defaultKit);
|
||||
if (sysroot.isEmpty())
|
||||
sysroot = Utils::FilePath::fromString(defaultTc->sysRoot());
|
||||
Utils::Environment env = Utils::Environment::systemEnvironment();
|
||||
defaultKit->addToEnvironment(env);
|
||||
Utils::Environment env = defaultKit->buildEnvironment();
|
||||
ToolChainInfo tcInfo(defaultTc, sysroot.toString(), env);
|
||||
part->setupToolchainProperties(tcInfo, {});
|
||||
if (part->language == Language::C)
|
||||
|
@@ -474,11 +474,9 @@ void StartApplicationDialog::run(bool attachRemote)
|
||||
debugger->setSysRoot(newParameters.sysRoot);
|
||||
|
||||
bool isLocal = !dev || (dev->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE);
|
||||
if (isLocal) {
|
||||
Environment inferiorEnvironment = Environment::systemEnvironment();
|
||||
k->addToEnvironment(inferiorEnvironment);
|
||||
debugger->setInferiorEnvironment(inferiorEnvironment);
|
||||
}
|
||||
if (isLocal) // FIXME: Restriction needed?
|
||||
debugger->setInferiorEnvironment(k->runEnvironment());
|
||||
|
||||
if (!attachRemote)
|
||||
debugger->setStartMode(isLocal ? StartExternal : StartRemoteProcess);
|
||||
|
||||
|
@@ -344,8 +344,7 @@ Runnable DebuggerKitAspect::runnable(const Kit *kit)
|
||||
if (const DebuggerItem *item = debugger(kit)) {
|
||||
runnable.executable = item->command();
|
||||
runnable.workingDirectory = item->workingDirectory().toString();
|
||||
runnable.environment = Utils::Environment::systemEnvironment();
|
||||
kit->addToEnvironment(runnable.environment);
|
||||
runnable.environment = kit->runEnvironment();
|
||||
runnable.environment.set("LC_NUMERIC", "C");
|
||||
}
|
||||
return runnable;
|
||||
|
@@ -471,7 +471,7 @@ Environment BuildConfiguration::baseEnvironment() const
|
||||
if (useSystemEnvironment())
|
||||
result = Environment::systemEnvironment();
|
||||
addToEnvironment(result);
|
||||
kit()->addToEnvironment(result);
|
||||
kit()->addToBuildEnvironment(result);
|
||||
result.modify(project()->additionalEnvironment());
|
||||
return result;
|
||||
}
|
||||
|
@@ -188,10 +188,7 @@ Environment BuildSystem::activeParseEnvironment() const
|
||||
if (rc)
|
||||
return rc->runnable().environment;
|
||||
|
||||
Environment result = Utils::Environment::systemEnvironment();
|
||||
d->m_target->kit()->addToEnvironment(result);
|
||||
|
||||
return result;
|
||||
return d->m_target->kit()->buildEnvironment();
|
||||
}
|
||||
|
||||
void BuildSystem::requestParseHelper(int delay)
|
||||
|
@@ -563,10 +563,30 @@ QVariantMap Kit::toMap() const
|
||||
return data;
|
||||
}
|
||||
|
||||
void Kit::addToEnvironment(Environment &env) const
|
||||
void Kit::addToBuildEnvironment(Environment &env) const
|
||||
{
|
||||
for (KitAspect *aspect : KitManager::kitAspects())
|
||||
aspect->addToEnvironment(this, env);
|
||||
aspect->addToBuildEnvironment(this, env);
|
||||
}
|
||||
|
||||
void Kit::addToRunEnvironment(Environment &env) const
|
||||
{
|
||||
for (KitAspect *aspect : KitManager::kitAspects())
|
||||
aspect->addToRunEnvironment(this, env);
|
||||
}
|
||||
|
||||
Environment Kit::buildEnvironment() const
|
||||
{
|
||||
Environment env = Environment::systemEnvironment(); // FIXME: Use build device
|
||||
addToBuildEnvironment(env);
|
||||
return env;
|
||||
}
|
||||
|
||||
Environment Kit::runEnvironment() const
|
||||
{
|
||||
Environment env = Environment::systemEnvironment(); // FIXME: Use run device
|
||||
addToRunEnvironment(env);
|
||||
return env;
|
||||
}
|
||||
|
||||
QList<OutputLineParser *> Kit::createOutputParsers() const
|
||||
|
@@ -115,7 +115,12 @@ public:
|
||||
bool isDataEqual(const Kit *other) const;
|
||||
bool isEqual(const Kit *other) const;
|
||||
|
||||
void addToEnvironment(Utils::Environment &env) const;
|
||||
void addToBuildEnvironment(Utils::Environment &env) const;
|
||||
Utils::Environment buildEnvironment() const;
|
||||
|
||||
void addToRunEnvironment(Utils::Environment &env) const;
|
||||
Utils::Environment runEnvironment() const;
|
||||
|
||||
QList<Utils::OutputLineParser *> createOutputParsers() const;
|
||||
|
||||
QString toHtml(const Tasks &additional = Tasks(), const QString &extraText = QString()) const;
|
||||
|
@@ -526,7 +526,7 @@ KitAspect::ItemList ToolChainKitAspect::toUserOutput(const Kit *k) const
|
||||
return {{tr("Compiler"), tc ? tc->displayName() : tr("None")}};
|
||||
}
|
||||
|
||||
void ToolChainKitAspect::addToEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
void ToolChainKitAspect::addToBuildEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
{
|
||||
ToolChain *tc = cxxToolChain(k);
|
||||
if (tc)
|
||||
@@ -1501,7 +1501,7 @@ void EnvironmentKitAspect::fix(Kit *k)
|
||||
}
|
||||
}
|
||||
|
||||
void EnvironmentKitAspect::addToEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
void EnvironmentKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const
|
||||
{
|
||||
const QStringList values
|
||||
= Utils::transform(Utils::EnvironmentItem::toStringList(environmentChanges(k)),
|
||||
@@ -1509,6 +1509,11 @@ void EnvironmentKitAspect::addToEnvironment(const Kit *k, Utils::Environment &en
|
||||
env.modify(Utils::EnvironmentItem::fromStringList(values));
|
||||
}
|
||||
|
||||
void EnvironmentKitAspect::addToRunEnvironment(const Kit *k, Environment &env) const
|
||||
{
|
||||
addToBuildEnvironment(k, env);
|
||||
}
|
||||
|
||||
KitAspectWidget *EnvironmentKitAspect::createConfigWidget(Kit *k) const
|
||||
{
|
||||
QTC_ASSERT(k, return nullptr);
|
||||
|
@@ -83,7 +83,9 @@ public:
|
||||
|
||||
ItemList toUserOutput(const Kit *k) const override;
|
||||
|
||||
void addToEnvironment(const Kit *k, Utils::Environment &env) const override;
|
||||
void addToBuildEnvironment(const Kit *k, Utils::Environment &env) const override;
|
||||
void addToRunEnvironment(const Kit *, Utils::Environment &) const override {}
|
||||
|
||||
void addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const override;
|
||||
QList<Utils::OutputLineParser *> createOutputParsers(const Kit *k) const override;
|
||||
QSet<Utils::Id> availableFeatures(const Kit *k) const override;
|
||||
@@ -219,7 +221,9 @@ public:
|
||||
Tasks validate(const Kit *k) const override;
|
||||
void fix(Kit *k) override;
|
||||
|
||||
void addToEnvironment(const Kit *k, Utils::Environment &env) const override;
|
||||
void addToBuildEnvironment(const Kit *k, Utils::Environment &env) const override;
|
||||
void addToRunEnvironment(const Kit *, Utils::Environment &) const override;
|
||||
|
||||
KitAspectWidget *createConfigWidget(Kit *k) const override;
|
||||
|
||||
ItemList toUserOutput(const Kit *k) const override;
|
||||
|
@@ -682,7 +682,13 @@ int KitAspect::weight(const Kit *k) const
|
||||
return k->value(id()).isValid() ? 1 : 0;
|
||||
}
|
||||
|
||||
void KitAspect::addToEnvironment(const Kit *k, Environment &env) const
|
||||
void KitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const
|
||||
{
|
||||
Q_UNUSED(k)
|
||||
Q_UNUSED(env)
|
||||
}
|
||||
|
||||
void KitAspect::addToRunEnvironment(const Kit *k, Environment &env) const
|
||||
{
|
||||
Q_UNUSED(k)
|
||||
Q_UNUSED(env)
|
||||
|
@@ -96,7 +96,9 @@ public:
|
||||
|
||||
virtual KitAspectWidget *createConfigWidget(Kit *) const = 0;
|
||||
|
||||
virtual void addToEnvironment(const Kit *k, Utils::Environment &env) const;
|
||||
virtual void addToBuildEnvironment(const Kit *k, Utils::Environment &env) const;
|
||||
virtual void addToRunEnvironment(const Kit *k, Utils::Environment &env) const;
|
||||
|
||||
virtual QList<Utils::OutputLineParser *> createOutputParsers(const Kit *k) const;
|
||||
|
||||
virtual QString displayNamePostfix(const Kit *k) const;
|
||||
|
@@ -49,8 +49,7 @@ LocalEnvironmentAspect::LocalEnvironmentAspect(Target *target, bool includeBuild
|
||||
if (BuildConfiguration *bc = target->activeBuildConfiguration()) {
|
||||
env = bc->environment();
|
||||
} else { // Fallback for targets without buildconfigurations:
|
||||
env = Environment::systemEnvironment();
|
||||
target->kit()->addToEnvironment(env);
|
||||
env = target->kit()->buildEnvironment();
|
||||
}
|
||||
return env;
|
||||
});
|
||||
|
@@ -462,7 +462,7 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
|
||||
Utils::Environment environment = Utils::Environment::systemEnvironment();
|
||||
if (QTC_GUARD(m_target)) {
|
||||
if (!useOnlyFallbackPuppet())
|
||||
m_target->kit()->addToEnvironment(environment);
|
||||
m_target->kit()->addToBuildEnvironment(environment);
|
||||
const QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(m_target->kit());
|
||||
if (QTC_GUARD(qt)) { // Kits without a Qt version should not have a puppet!
|
||||
// Update PATH to include QT_HOST_BINS
|
||||
@@ -561,8 +561,7 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
|
||||
|
||||
QString PuppetCreator::buildCommand() const
|
||||
{
|
||||
Utils::Environment environment = Utils::Environment::systemEnvironment();
|
||||
m_target->kit()->addToEnvironment(environment);
|
||||
const Utils::Environment environment = m_target->kit()->buildEnvironment();
|
||||
|
||||
if (ToolChain *toolChain = ToolChainKitAspect::cxxToolChain(m_target->kit()))
|
||||
return toolChain->makeCommand(environment).toString();
|
||||
|
@@ -277,7 +277,7 @@ KitAspect::ItemList QtKitAspect::toUserOutput(const Kit *k) const
|
||||
return {{tr("Qt version"), version ? version->displayName() : tr("None")}};
|
||||
}
|
||||
|
||||
void QtKitAspect::addToEnvironment(const Kit *k, Environment &env) const
|
||||
void QtKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const
|
||||
{
|
||||
BaseQtVersion *version = qtVersion(k);
|
||||
if (version)
|
||||
|
@@ -53,7 +53,7 @@ public:
|
||||
|
||||
ItemList toUserOutput(const ProjectExplorer::Kit *k) const override;
|
||||
|
||||
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;
|
||||
void addToBuildEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;
|
||||
QList<Utils::OutputLineParser *> createOutputParsers(const ProjectExplorer::Kit *k) const override;
|
||||
void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const override;
|
||||
|
||||
|
Reference in New Issue
Block a user