diff options
author | hjk <hjk@qt.io> | 2021-11-09 18:20:14 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-11-10 07:26:31 +0000 |
commit | 652b9844e6fabe147f789c6da95a639c9b154a34 (patch) | |
tree | f539ac6690fafe350ed5e3ad5d4db4a4bd2540db | |
parent | d14e68eac202783f5ff1f9286e4d2b79690ff8a8 (diff) | |
download | qt-creator-652b9844e6fabe147f789c6da95a639c9b154a34.tar.gz |
Utils: FilePathify Environment::{ap,pre}pendOrSetPath etc
Change-Id: Idfa5ec247337570936b0236cab9d3a5669792ca0
Reviewed-by: David Schulz <david.schulz@qt.io>
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(); |