diff --git a/src/libs/utils/archive.cpp b/src/libs/utils/archive.cpp index 66a419fdbb8..2bbc8eb9eb8 100644 --- a/src/libs/utils/archive.cpp +++ b/src/libs/utils/archive.cpp @@ -118,8 +118,8 @@ static QVector toolsForFilePath(const FilePath &fp) static Utils::optional resolveTool(const Tool &tool) { - const FilePaths dirs = Environment::systemEnvironment().path() + tool.additionalSearchDirs; - const FilePath executable = tool.command.executable().withExecutableSuffix().searchInDirectories(dirs); + const FilePath executable = + tool.command.executable().withExecutableSuffix().searchInPath(tool.additionalSearchDirs); Tool resolvedTool = tool; resolvedTool.command.setExecutable(executable); return executable.isEmpty() ? Utils::nullopt : Utils::make_optional(resolvedTool); diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 3aa5e709506..817f6246676 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1168,6 +1168,11 @@ FilePath FilePath::searchInDirectories(const FilePaths &dirs) const return Environment::systemEnvironment().searchInPath(path(), dirs); } +FilePath FilePath::searchInPath(const QList &additionalDirs) const +{ + return searchInDirectories(deviceEnvironment().path() + additionalDirs); +} + Environment FilePath::deviceEnvironment() const { if (needsDevice()) { diff --git a/src/libs/utils/filepath.h b/src/libs/utils/filepath.h index 691548fd725..0b56b822707 100644 --- a/src/libs/utils/filepath.h +++ b/src/libs/utils/filepath.h @@ -176,6 +176,7 @@ public: QUrl toUrl() const; FilePath searchInDirectories(const QList &dirs) const; + FilePath searchInPath(const QList &additionalDirs = {}) const; Environment deviceEnvironment() const; static QString formatFilePaths(const QList &files, const QString &separator); diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index f62b7049c5b..385c15d6890 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -223,9 +223,7 @@ FilePath PathChooserPrivate::expandedPath(const QString &input) const switch (m_acceptingKind) { case PathChooser::Command: case PathChooser::ExistingCommand: { - FilePaths searchPaths = env.path(); - searchPaths.append(m_baseDirectory); - const FilePath expanded = path.searchInDirectories(searchPaths); + const FilePath expanded = path.searchInPath({m_baseDirectory}); return expanded.isEmpty() ? path : expanded; } case PathChooser::Any: diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp index 37c83ae3528..6af8a6a9c62 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp @@ -186,9 +186,8 @@ void CMakeToolManager::autoDetectCMakeForDevice(const FilePath &deviceRoot, { QStringList messages{tr("Searching CMake binaries...")}; const FilePaths candidates = {deviceRoot.withNewPath("cmake")}; - const Environment env = deviceRoot.deviceEnvironment(); for (const FilePath &candidate : candidates) { - const FilePath cmake = candidate.searchInDirectories(env.path()); + const FilePath cmake = candidate.searchInPath(); if (!cmake.isEmpty()) { registerCMakeByPath(cmake, detectionSource); messages.append(tr("Found \"%1\"").arg(cmake.toUserOutput())); diff --git a/src/plugins/coreplugin/patchtool.cpp b/src/plugins/coreplugin/patchtool.cpp index ac79162ba16..f49185ea0ef 100644 --- a/src/plugins/coreplugin/patchtool.cpp +++ b/src/plugins/coreplugin/patchtool.cpp @@ -70,7 +70,7 @@ static bool runPatchHelper(const QByteArray &input, const FilePath &workingDirec return false; } - if (!patch.exists() && !patch.searchInDirectories(Environment::systemEnvironment().path()).exists()) { + if (!patch.exists() && !patch.searchInPath().exists()) { MessageManager::writeDisrupting( QApplication::translate("Core::PatchTool", "The patch-command configured in the general \"Environment\" "