summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2021-11-09 18:20:14 +0100
committerhjk <hjk@qt.io>2021-11-10 07:26:31 +0000
commit652b9844e6fabe147f789c6da95a639c9b154a34 (patch)
treef539ac6690fafe350ed5e3ad5d4db4a4bd2540db
parentd14e68eac202783f5ff1f9286e4d2b79690ff8a8 (diff)
downloadqt-creator-652b9844e6fabe147f789c6da95a639c9b154a34.tar.gz
Utils: FilePathify Environment::{ap,pre}pendOrSetPath etc
Change-Id: Idfa5ec247337570936b0236cab9d3a5669792ca0 Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/libs/utils/environment.cpp37
-rw-r--r--src/libs/utils/environment.h12
-rw-r--r--src/libs/utils/filepath.cpp13
-rw-r--r--src/libs/utils/filepath.h1
-rw-r--r--src/plugins/android/androidconfigurations.cpp2
-rw-r--r--src/plugins/android/androidtoolchain.cpp2
-rw-r--r--src/plugins/baremetal/iarewtoolchain.cpp6
-rw-r--r--src/plugins/baremetal/keiltoolchain.cpp6
-rw-r--r--src/plugins/baremetal/sdcctoolchain.cpp6
-rw-r--r--src/plugins/cmakeprojectmanager/builddirparameters.cpp3
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp6
-rw-r--r--src/plugins/cmakeprojectmanager/cmakekitinformation.cpp4
-rw-r--r--src/plugins/coreplugin/systemsettings.cpp4
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp3
-rw-r--r--src/plugins/git/gitclient.cpp2
-rw-r--r--src/plugins/git/gitsettings.cpp3
-rw-r--r--src/plugins/nim/project/nimblebuildstep.cpp2
-rw-r--r--src/plugins/nim/project/nimtoolchain.cpp2
-rw-r--r--src/plugins/projectexplorer/customtoolchain.cpp8
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp6
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp3
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp3
-rw-r--r--src/plugins/qnx/qnxqtversion.cpp3
-rw-r--r--src/plugins/qtsupport/qtkitinformation.cpp14
-rw-r--r--src/plugins/vcsbase/commonvcssettings.cpp4
-rw-r--r--src/plugins/webassembly/webassemblyemsdk.cpp4
-rw-r--r--src/plugins/webassembly/webassemblytoolchain.cpp6
-rw-r--r--tests/auto/debugger/tst_dumpers.cpp6
29 files changed, 88 insertions, 89 deletions
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp
index 76f32ccb98..f8e24567ee 100644
--- a/src/libs/utils/environment.cpp
+++ b/src/libs/utils/environment.cpp
@@ -52,16 +52,22 @@ QProcessEnvironment Environment::toProcessEnvironment() const
return result;
}
-void Environment::appendOrSetPath(const QString &value)
+void Environment::appendOrSetPath(const FilePath &value)
{
- appendOrSet("PATH", QDir::toNativeSeparators(value),
+ QTC_CHECK(value.osType() == m_osType);
+ if (value.isEmpty())
+ return;
+ appendOrSet("PATH", value.deviceLocalPath(),
QString(OsSpecificAspects::pathListSeparator(m_osType)));
}
-void Environment::prependOrSetPath(const QString &value)
+void Environment::prependOrSetPath(const FilePath &value)
{
- prependOrSet("PATH", QDir::toNativeSeparators(value),
- QString(OsSpecificAspects::pathListSeparator(m_osType)));
+ QTC_CHECK(value.osType() == m_osType);
+ if (value.isEmpty())
+ return;
+ prependOrSet("PATH", value.deviceLocalPath(),
+ QString(OsSpecificAspects::pathListSeparator(m_osType)));
}
void Environment::appendOrSet(const QString &key, const QString &value, const QString &sep)
@@ -92,17 +98,18 @@ void Environment::prependOrSet(const QString &key, const QString &value, const Q
}
}
-void Environment::prependOrSetLibrarySearchPath(const QString &value)
+void Environment::prependOrSetLibrarySearchPath(const FilePath &value)
{
+ QTC_CHECK(value.osType() == m_osType);
switch (m_osType) {
case OsTypeWindows: {
const QChar sep = ';';
- prependOrSet("PATH", QDir::toNativeSeparators(value), QString(sep));
+ prependOrSet("PATH", value.deviceLocalPath(), QString(sep));
break;
}
case OsTypeMac: {
const QString sep = ":";
- const QString nativeValue = QDir::toNativeSeparators(value);
+ const QString nativeValue = value.deviceLocalPath();
prependOrSet("DYLD_LIBRARY_PATH", nativeValue, sep);
prependOrSet("DYLD_FRAMEWORK_PATH", nativeValue, sep);
break;
@@ -110,7 +117,7 @@ void Environment::prependOrSetLibrarySearchPath(const QString &value)
case OsTypeLinux:
case OsTypeOtherUnix: {
const QChar sep = ':';
- prependOrSet("LD_LIBRARY_PATH", QDir::toNativeSeparators(value), QString(sep));
+ prependOrSet("LD_LIBRARY_PATH", value.deviceLocalPath(), QString(sep));
break;
}
default:
@@ -118,9 +125,9 @@ void Environment::prependOrSetLibrarySearchPath(const QString &value)
}
}
-void Environment::prependOrSetLibrarySearchPaths(const QStringList &values)
+void Environment::prependOrSetLibrarySearchPaths(const FilePaths &values)
{
- Utils::reverseForeach(values, [this](const QString &value) {
+ Utils::reverseForeach(values, [this](const FilePath &value) {
prependOrSetLibrarySearchPath(value);
});
}
@@ -431,17 +438,17 @@ void EnvironmentChange::addUnsetValue(const QString &key)
m_changeItems.append([key](Environment &env) { env.unset(key); });
}
-void EnvironmentChange::addPrependToPath(const QStringList &values)
+void EnvironmentChange::addPrependToPath(const FilePaths &values)
{
for (int i = values.size(); --i >= 0; ) {
- const QString value = values.at(i);
+ const FilePath value = values.at(i);
m_changeItems.append([value](Environment &env) { env.prependOrSetPath(value); });
}
}
-void EnvironmentChange::addAppendToPath(const QStringList &values)
+void EnvironmentChange::addAppendToPath(const FilePaths &values)
{
- for (const QString &value : values)
+ for (const FilePath &value : values)
m_changeItems.append([value](Environment &env) { env.appendOrSetPath(value); });
}
diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h
index 9cfa64faba..0f150299f3 100644
--- a/src/libs/utils/environment.h
+++ b/src/libs/utils/environment.h
@@ -51,11 +51,11 @@ public:
void appendOrSet(const QString &key, const QString &value, const QString &sep = QString());
void prependOrSet(const QString &key, const QString &value, const QString &sep = QString());
- void appendOrSetPath(const QString &value);
- void prependOrSetPath(const QString &value);
+ void appendOrSetPath(const Utils::FilePath &value);
+ void prependOrSetPath(const Utils::FilePath &value);
- void prependOrSetLibrarySearchPath(const QString &value);
- void prependOrSetLibrarySearchPaths(const QStringList &values);
+ void prependOrSetLibrarySearchPath(const Utils::FilePath &value);
+ void prependOrSetLibrarySearchPaths(const Utils::FilePaths &values);
void setupEnglishOutput();
@@ -97,8 +97,8 @@ public:
void addSetValue(const QString &key, const QString &value);
void addUnsetValue(const QString &key);
- void addPrependToPath(const QStringList &values);
- void addAppendToPath(const QStringList &values);
+ void addPrependToPath(const Utils::FilePaths &values);
+ void addAppendToPath(const Utils::FilePaths &values);
void addModify(const NameValueItems &items);
void addChange(const Item &item) { m_changeItems.append(item); }
diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp
index 35af5b94c1..50526558e1 100644
--- a/src/libs/utils/filepath.cpp
+++ b/src/libs/utils/filepath.cpp
@@ -476,7 +476,7 @@ void FileUtils::setDeviceFileHooks(const DeviceFileHooks &hooks)
s_deviceHooks = hooks;
}
-/// \returns a QString to display to the user
+/// \returns a QString to display to the user, including the device prefix
/// Converts the separators to the native format of the system
/// this path belongs to.
QString FilePath::toUserOutput() const
@@ -487,6 +487,17 @@ QString FilePath::toUserOutput() const
return tmp.toString();
}
+/// \returns a QString to pass to target system native commands, without the device prefix.
+/// Converts the separators to the native format of the system
+/// this path belongs to.
+QString FilePath::deviceLocalPath() const
+{
+ QString data = m_data;
+ if (osType() == OsTypeWindows)
+ data.replace('/', '\\');
+ return data;
+}
+
QString FilePath::fileName() const
{
const QChar slash = QLatin1Char('/');
diff --git a/src/libs/utils/filepath.h b/src/libs/utils/filepath.h
index 7cb5b9f2b8..2a135ec115 100644
--- a/src/libs/utils/filepath.h
+++ b/src/libs/utils/filepath.h
@@ -66,6 +66,7 @@ public:
[[nodiscard]] static FilePath fromUrl(const QUrl &url);
QString toUserOutput() const;
+ QString deviceLocalPath() const;
QString toString() const;
QVariant toVariant() const;
QUrl toUrl() const;
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index b0859ae6a0..92d6219f60 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -1414,7 +1414,7 @@ Environment AndroidConfigurations::toolsEnvironment(const AndroidConfig &config)
FilePath jdkLocation = config.openJDKLocation();
if (!jdkLocation.isEmpty()) {
env.set("JAVA_HOME", jdkLocation.toUserOutput());
- env.prependOrSetPath(jdkLocation.pathAppended("bin").toUserOutput());
+ env.prependOrSetPath(jdkLocation.pathAppended("bin"));
}
return env;
}
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index 8406ea0e67..8eb6e172ba 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -124,7 +124,7 @@ void AndroidToolChain::addToEnvironment(Environment &env) const
const FilePath javaBin = javaHome.pathAppended("bin");
const FilePath currentJavaFilePath = env.searchInPath("java");
if (!currentJavaFilePath.isChildOf(javaBin))
- env.prependOrSetPath(javaBin.toUserOutput());
+ env.prependOrSetPath(javaBin);
}
env.set(QLatin1String("ANDROID_HOME"), config.sdkLocation().toString());
env.set(QLatin1String("ANDROID_SDK_ROOT"), config.sdkLocation().toString());
diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp
index d4f56db353..a07ac11ffd 100644
--- a/src/plugins/baremetal/iarewtoolchain.cpp
+++ b/src/plugins/baremetal/iarewtoolchain.cpp
@@ -361,10 +361,8 @@ ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner
void IarToolChain::addToEnvironment(Environment &env) const
{
- if (!compilerCommand().isEmpty()) {
- const FilePath path = compilerCommand().parentDir();
- env.prependOrSetPath(path.toString());
- }
+ if (!compilerCommand().isEmpty())
+ env.prependOrSetPath(compilerCommand().parentDir());
}
QList<Utils::OutputLineParser *> IarToolChain::createOutputParsers() const
diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp
index ff4a2759a5..c602d678e7 100644
--- a/src/plugins/baremetal/keiltoolchain.cpp
+++ b/src/plugins/baremetal/keiltoolchain.cpp
@@ -486,10 +486,8 @@ ToolChain::BuiltInHeaderPathsRunner KeilToolChain::createBuiltInHeaderPathsRunne
void KeilToolChain::addToEnvironment(Environment &env) const
{
- if (!compilerCommand().isEmpty()) {
- const FilePath path = compilerCommand().parentDir();
- env.prependOrSetPath(path.toString());
- }
+ if (!compilerCommand().isEmpty())
+ env.prependOrSetPath(compilerCommand().parentDir());
}
QList<OutputLineParser *> KeilToolChain::createOutputParsers() const
diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp
index 98aef855f7..195eabf826 100644
--- a/src/plugins/baremetal/sdcctoolchain.cpp
+++ b/src/plugins/baremetal/sdcctoolchain.cpp
@@ -265,10 +265,8 @@ ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunne
void SdccToolChain::addToEnvironment(Environment &env) const
{
- if (!compilerCommand().isEmpty()) {
- const FilePath path = compilerCommand().parentDir();
- env.prependOrSetPath(path.toString());
- }
+ if (!compilerCommand().isEmpty())
+ env.prependOrSetPath(compilerCommand().parentDir());
}
QList<Utils::OutputLineParser *> SdccToolChain::createOutputParsers() const
diff --git a/src/plugins/cmakeprojectmanager/builddirparameters.cpp b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
index 97ab54166c..1ef1215d22 100644
--- a/src/plugins/cmakeprojectmanager/builddirparameters.cpp
+++ b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
@@ -87,8 +87,7 @@ BuildDirParameters::BuildDirParameters(CMakeBuildConfiguration *bc)
CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
if (!settings->ninjaPath.filePath().isEmpty()) {
const Utils::FilePath ninja = settings->ninjaPath.filePath();
- const Utils::FilePath ninjaDir = ninja.isFile() ? ninja.parentDir() : ninja;
- environment.appendOrSetPath(ninjaDir.path());
+ environment.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja);
}
cmakeToolId = CMakeKitAspect::cmakeToolId(k);
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index 4eb6fdc97f..dac623ebe8 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -1022,10 +1022,8 @@ const QList<BuildTargetInfo> CMakeBuildSystem::appTargets() const
// Workaround for QTCREATORBUG-19354:
bti.runEnvModifier = [this, buildKey](Environment &env, bool enabled) {
- if (enabled) {
- const Utils::FilePaths paths = librarySearchPaths(this, buildKey);
- env.prependOrSetLibrarySearchPaths(Utils::transform(paths, &FilePath::toString));
- }
+ if (enabled)
+ env.prependOrSetLibrarySearchPaths(librarySearchPaths(this, buildKey));
};
appTargetList.append(bti);
diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
index ef051d4a52..c2a6d7c009 100644
--- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
@@ -848,8 +848,8 @@ void CMakeGeneratorKitAspect::addToBuildEnvironment(const Kit *k, Environment &e
if (info.generator == "NMake Makefiles JOM") {
if (env.searchInPath("jom.exe").exists())
return;
- env.appendOrSetPath(Core::ICore::libexecPath().toUserOutput());
- env.appendOrSetPath(Core::ICore::libexecPath("jom").toUserOutput());
+ env.appendOrSetPath(Core::ICore::libexecPath());
+ env.appendOrSetPath(Core::ICore::libexecPath("jom"));
}
}
diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp
index 844e1cc695..78cffe58a9 100644
--- a/src/plugins/coreplugin/systemsettings.cpp
+++ b/src/plugins/coreplugin/systemsettings.cpp
@@ -36,6 +36,8 @@
#include "vcsmanager.h"
#include <app/app_version.h>
+
+#include <utils/algorithm.h>
#include <utils/checkablemessagebox.h>
#include <utils/consoleprocess.h>
#include <utils/environment.h>
@@ -324,7 +326,7 @@ void SystemSettingsWidget::resetFileBrowser()
void SystemSettingsWidget::updatePath()
{
EnvironmentChange change;
- change.addAppendToPath(VcsManager::additionalToolsPath());
+ change.addAppendToPath(Utils::transform(VcsManager::additionalToolsPath(), &FilePath::fromString));
m_ui.patchChooser->setEnvironmentChange(change);
}
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index a5440edb7f..4188966e48 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -217,8 +217,7 @@ void LldbEngine::setupEngine()
FilePath androidPythonDir = lldbCmd.parentDir().parentDir().pathAppended("python3");
if (HostOsInfo::isAnyUnixHost())
androidPythonDir = androidPythonDir.pathAppended("bin");
- if (androidPythonDir.exists())
- environment.prependOrSetPath(androidPythonDir.path());
+ environment.prependOrSetPath(androidPythonDir);
}
m_lldbProc.setEnvironment(environment);
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 1e4ed5346e..257c74ef60 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2217,7 +2217,7 @@ Environment GitClient::processEnvironment() const
{
Environment environment = VcsBaseClientImpl::processEnvironment();
QString gitPath = settings().path.value();
- environment.prependOrSetPath(gitPath);
+ environment.prependOrSetPath(FilePath::fromUserInput(gitPath));
if (HostOsInfo::isWindowsHost() && settings().winSetHomeEnvironment.value())
environment.set("HOME", QDir::toNativeSeparators(QDir::homePath()));
environment.set("GIT_EDITOR", m_disableEditor ? "true" : m_gitQtcEditor);
diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp
index 00270a1d42..8a265d35bc 100644
--- a/src/plugins/git/gitsettings.cpp
+++ b/src/plugins/git/gitsettings.cpp
@@ -143,8 +143,7 @@ FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) const
FilePath binPath = binaryPath.filePath();
if (!binPath.isAbsolutePath()) {
Environment env = Environment::systemEnvironment();
- if (!path.filePath().isEmpty())
- env.prependOrSetPath(path.filePath().toString());
+ env.prependOrSetPath(path.filePath());
binPath = env.searchInPath(binPath.toString());
}
if (binPath.isEmpty()) {
diff --git a/src/plugins/nim/project/nimblebuildstep.cpp b/src/plugins/nim/project/nimblebuildstep.cpp
index a1657dc03f..b242d2128c 100644
--- a/src/plugins/nim/project/nimblebuildstep.cpp
+++ b/src/plugins/nim/project/nimblebuildstep.cpp
@@ -66,7 +66,7 @@ NimbleBuildStep::NimbleBuildStep(BuildStepList *parentList, Id id)
});
setWorkingDirectoryProvider([this] { return project()->projectDirectory(); });
setEnvironmentModifier([this](Environment &env) {
- env.appendOrSetPath(Nim::nimPathFromKit(kit()).toUserOutput());
+ env.appendOrSetPath(Nim::nimPathFromKit(kit()));
});
setSummaryUpdater([this] {
diff --git a/src/plugins/nim/project/nimtoolchain.cpp b/src/plugins/nim/project/nimtoolchain.cpp
index d68654ade3..b5cab33888 100644
--- a/src/plugins/nim/project/nimtoolchain.cpp
+++ b/src/plugins/nim/project/nimtoolchain.cpp
@@ -77,7 +77,7 @@ ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner
void NimToolChain::addToEnvironment(Environment &env) const
{
if (isValid())
- env.prependOrSetPath(compilerCommand().parentDir().toString());
+ env.prependOrSetPath(compilerCommand().parentDir());
}
FilePath NimToolChain::makeCommand(const Environment &env) const
diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp
index e6223c3cf1..9ead29bf35 100644
--- a/src/plugins/projectexplorer/customtoolchain.cpp
+++ b/src/plugins/projectexplorer/customtoolchain.cpp
@@ -153,11 +153,11 @@ ToolChain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRun
void CustomToolChain::addToEnvironment(Environment &env) const
{
if (!m_compilerCommand.isEmpty()) {
- FilePath path = m_compilerCommand.parentDir();
- env.prependOrSetPath(path.toString());
- FilePath makePath = m_makeCommand.parentDir();
+ const FilePath path = m_compilerCommand.parentDir();
+ env.prependOrSetPath(path);
+ const FilePath makePath = m_makeCommand.parentDir();
if (makePath != path)
- env.prependOrSetPath(makePath.toString());
+ env.prependOrSetPath(makePath);
}
}
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index b539afaa2e..ea45d93ec5 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -633,9 +633,7 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner
void GccToolChain::addCommandPathToEnvironment(const FilePath &command, Environment &env)
{
- const Utils::FilePath compilerDir = command.parentDir();
- if (!compilerDir.isEmpty())
- env.prependOrSetPath(compilerDir.toString());
+ env.prependOrSetPath(command.parentDir());
}
void GccToolChain::addToEnvironment(Environment &env) const
@@ -1526,7 +1524,7 @@ void ClangToolChain::addToEnvironment(Environment &env) const
const QString sysroot = sysRoot();
if (!sysroot.isEmpty())
- env.prependOrSetPath(sysroot + "/bin");
+ env.prependOrSetPath(FilePath::fromString(sysroot) / "bin");
// Clang takes PWD as basis for debug info, if set.
// When running Qt Creator from a shell, PWD is initially set to an "arbitrary" value.
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 56b7431073..4c8aca4802 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -1701,8 +1701,7 @@ bool ClangClToolChain::isValid() const
void ClangClToolChain::addToEnvironment(Utils::Environment &env) const
{
MsvcToolChain::addToEnvironment(env);
- QDir path = QFileInfo(m_clangPath).absoluteDir(); // bin folder
- env.prependOrSetPath(path.canonicalPath());
+ env.prependOrSetPath(FilePath::fromString(m_clangPath).parentDir()); // bin folder
}
Utils::FilePath ClangClToolChain::compilerCommand() const
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index 54395bfc37..0168966a2b 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -1187,7 +1187,7 @@ void QmakeBuildSystem::updateBuildSystemData()
bti.usesTerminal = !qt.contains("testlib") && !qt.contains("qmltest");
}
- QStringList libraryPaths;
+ FilePaths libraryPaths;
// The user could be linking to a library found via a -L/some/dir switch
// to find those libraries while actually running we explicitly prepend those
@@ -1202,12 +1202,12 @@ void QmakeBuildSystem::updateBuildSystemData()
const QFileInfo fi(dir);
if (!fi.isAbsolute())
dir = QDir::cleanPath(proDirectory + '/' + dir);
- libraryPaths.append(dir);
+ libraryPaths.append(FilePath::fromUserInput(dir));
}
}
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit());
if (qtVersion)
- libraryPaths.append(qtVersion->librarySearchPath().toString());
+ libraryPaths.append(qtVersion->librarySearchPath());
bti.runEnvModifierHash = qHash(libraryPaths);
bti.runEnvModifier = [libraryPaths](Environment &env, bool useLibrarySearchPath) {
diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
index 23014b7ce9..676c9920bb 100644
--- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
@@ -485,8 +485,7 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
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
- const Utils::FilePath qtBinPath = qt->hostBinPath();
- environment.prependOrSetPath(qtBinPath.toString());
+ environment.prependOrSetPath(qt->hostBinPath());
}
}
}
diff --git a/src/plugins/qnx/qnxqtversion.cpp b/src/plugins/qnx/qnxqtversion.cpp
index ee0d3924b0..973b52d12a 100644
--- a/src/plugins/qnx/qnxqtversion.cpp
+++ b/src/plugins/qnx/qnxqtversion.cpp
@@ -156,8 +156,7 @@ void QnxQtVersion::addToEnvironment(const Kit *k, Environment &env) const
QtSupport::BaseQtVersion::addToEnvironment(k, env);
updateEnvironment();
env.modify(m_qnxEnv);
-
- env.prependOrSetLibrarySearchPath(libraryPath().toString());
+ env.prependOrSetLibrarySearchPath(libraryPath());
}
void QnxQtVersion::setupQmakeRunEnvironment(Environment &env) const
diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp
index 79935c1c00..cde42dc7e1 100644
--- a/src/plugins/qtsupport/qtkitinformation.cpp
+++ b/src/plugins/qtsupport/qtkitinformation.cpp
@@ -381,17 +381,11 @@ void QtKitAspect::setQtVersion(Kit *k, const BaseQtVersion *v)
void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env)
{
- if (const ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) {
- const FilePath compilerDir = tc->compilerCommand().parentDir();
- if (!compilerDir.isEmpty())
- env.prependOrSetPath(compilerDir.toString());
- }
+ if (const ToolChain *tc = ToolChainKitAspect::cxxToolChain(k))
+ env.prependOrSetPath(tc->compilerCommand().parentDir());
- if (const BaseQtVersion *qt = qtVersion(k)) {
- const FilePath hostBinPath = qt->hostBinPath();
- if (!hostBinPath.isEmpty())
- env.prependOrSetPath(hostBinPath.toString());
- }
+ if (const BaseQtVersion *qt = qtVersion(k))
+ env.prependOrSetPath(qt->hostBinPath());
}
void QtKitAspect::qtVersionsChanged(const QList<int> &addedIds,
diff --git a/src/plugins/vcsbase/commonvcssettings.cpp b/src/plugins/vcsbase/commonvcssettings.cpp
index 9d6bfe2032..c84abf0b13 100644
--- a/src/plugins/vcsbase/commonvcssettings.cpp
+++ b/src/plugins/vcsbase/commonvcssettings.cpp
@@ -31,6 +31,7 @@
#include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h>
+#include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h>
#include <utils/layoutbuilder.h>
@@ -156,7 +157,8 @@ CommonSettingsWidget::CommonSettingsWidget(CommonOptionsPage *page)
void CommonSettingsWidget::updatePath()
{
EnvironmentChange change;
- change.addAppendToPath(Core::VcsManager::additionalToolsPath());
+ change.addAppendToPath(Utils::transform(Core::VcsManager::additionalToolsPath(),
+ &FilePath::fromString));
m_page->settings().sshPasswordPrompt.setEnvironmentChange(change);
}
diff --git a/src/plugins/webassembly/webassemblyemsdk.cpp b/src/plugins/webassembly/webassemblyemsdk.cpp
index 11fe6fac98..c5da7d1357 100644
--- a/src/plugins/webassembly/webassemblyemsdk.cpp
+++ b/src/plugins/webassembly/webassemblyemsdk.cpp
@@ -76,7 +76,7 @@ static void parseEmSdkEnvOutputAndAddToEnv(const QString &output, Environment &e
for (const QString &line : lines) {
const QStringList prependParts = line.trimmed().split(" += ");
if (prependParts.count() == 2)
- env.prependOrSetPath(prependParts.last());
+ env.prependOrSetPath(FilePath::fromUserInput(prependParts.last()));
const QStringList setParts = line.trimmed().split(" = ");
if (setParts.count() == 2) {
@@ -89,7 +89,7 @@ static void parseEmSdkEnvOutputAndAddToEnv(const QString &output, Environment &e
// QTCREATORBUG-26199: Wrapper scripts (e.g. emcc.bat) of older emsdks might not find python
const QString emsdkPython = env.value("EMSDK_PYTHON");
if (!emsdkPython.isEmpty())
- env.appendOrSetPath(FilePath::fromUserInput(emsdkPython).parentDir().toUserOutput());
+ env.appendOrSetPath(FilePath::fromUserInput(emsdkPython).parentDir());
}
bool WebAssemblyEmSdk::isValid(const FilePath &sdkRoot)
diff --git a/src/plugins/webassembly/webassemblytoolchain.cpp b/src/plugins/webassembly/webassemblytoolchain.cpp
index ea87c8b774..7db5445a99 100644
--- a/src/plugins/webassembly/webassemblytoolchain.cpp
+++ b/src/plugins/webassembly/webassemblytoolchain.cpp
@@ -64,10 +64,8 @@ static void addRegisteredMinGWToEnvironment(Environment &env)
const ToolChain *toolChain = ToolChainManager::toolChain([](const ToolChain *t){
return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID;
});
- if (toolChain) {
- const QString mingwPath = toolChain->compilerCommand().parentDir().toUserOutput();
- env.appendOrSetPath(mingwPath);
- }
+ if (toolChain)
+ env.appendOrSetPath(toolChain->compilerCommand().parentDir());
}
void WebAssemblyToolChain::addToEnvironment(Environment &env) const
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index e1f01b61c7..1accd1e719 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -1224,10 +1224,10 @@ void tst_Dumpers::initTestCase()
if (m_makeBinary.isEmpty())
m_makeBinary = "mingw32-make";
if (m_makeBinary != "mingw32-make")
- env.prependOrSetPath(QDir::toNativeSeparators(QFileInfo(m_makeBinary).absolutePath()));
+ env.prependOrSetPath(Utils::FilePath::fromString(m_makeBinary));
// if qmake is not in PATH make sure the correct libs for inferior are prepended to PATH
if (m_qmakeBinary != "qmake")
- env.prependOrSetPath(QDir::toNativeSeparators(QFileInfo(m_qmakeBinary).absolutePath()));
+ env.prependOrSetPath(Utils::FilePath::fromString(m_qmakeBinary));
m_env = env.toProcessEnvironment();
#else
m_env = QProcessEnvironment::systemEnvironment();
@@ -1248,7 +1248,7 @@ void tst_Dumpers::initTestCase()
cdbextPath = QString(CDBEXT_PATH "\\qtcreatorcdbext64");
QVERIFY(QFile::exists(cdbextPath + "\\qtcreatorcdbext.dll"));
env.set("_NT_DEBUGGER_EXTENSION_PATH", cdbextPath);
- env.prependOrSetPath(QDir::toNativeSeparators(QFileInfo(m_qmakeBinary).absolutePath()));
+ env.prependOrSetPath(Utils::FilePath::fromString(m_qmakeBinary));
m_makeBinary = env.searchInPath("nmake.exe").toString();
m_env = env.toProcessEnvironment();