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