forked from qt-creator/qt-creator
Utils: More explicit host os use to make it stand out
Quite a few of the uses are actually wrong, but are better visible now and therefore more likely to be fixed. Change-Id: Ia51f7d6eb1b2d3a9c9f73d67dabacfd227c44b15 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -55,7 +55,7 @@ public:
|
||||
//! Append already quoted arguments to a shell command
|
||||
static void addArgs(QString *args, const QString &inArgs);
|
||||
//! Split a shell command into separate arguments.
|
||||
static QStringList splitArgs(const QString &cmd, OsType osType = HostOsInfo::hostOs(),
|
||||
static QStringList splitArgs(const QString &cmd, OsType osType,
|
||||
bool abortOnMeta = false, SplitError *err = nullptr,
|
||||
const Environment *env = nullptr, const QString *pwd = nullptr);
|
||||
//! Safely replace the expandos in a shell command
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
|
||||
using namespace Utils;
|
||||
|
||||
namespace AutotoolsProjectManager::Internal {
|
||||
|
||||
MakefileParser::MakefileParser(const QString &makefile) : m_makefile(makefile)
|
||||
@@ -423,7 +425,7 @@ QStringList MakefileParser::parseTermsAfterAssign(const QString &line)
|
||||
if (assignPos <= 0 || assignPos >= line.size())
|
||||
return QStringList();
|
||||
|
||||
const QStringList parts = Utils::ProcessArgs::splitArgs(line.mid(assignPos));
|
||||
const QStringList parts = ProcessArgs::splitArgs(line.mid(assignPos), HostOsInfo::hostOs());
|
||||
QStringList result;
|
||||
for (int i = 0; i < parts.count(); ++i) {
|
||||
const QString cur = parts.at(i);
|
||||
|
||||
@@ -64,7 +64,7 @@ QString OpenOcdGdbServerProvider::channelString() const
|
||||
// otherwise running will be stuck.
|
||||
CommandLine cmd = command();
|
||||
QStringList args = {"|", cmd.executable().toString()};
|
||||
for (const QString &a : ProcessArgs::splitArgs(cmd.arguments())) {
|
||||
for (const QString &a : ProcessArgs::splitArgs(cmd.arguments(), HostOsInfo::hostOs())) {
|
||||
if (a.startsWith('\"') && a.endsWith('\"'))
|
||||
args << a;
|
||||
else
|
||||
|
||||
@@ -284,7 +284,7 @@ static QStringList extraOptions(const QString &envVar)
|
||||
if (!qtcEnvironmentVariableIsSet(envVar))
|
||||
return QStringList();
|
||||
QString arguments = qtcEnvironmentVariable(envVar);
|
||||
return Utils::ProcessArgs::splitArgs(arguments);
|
||||
return ProcessArgs::splitArgs(arguments, HostOsInfo::hostOs());
|
||||
}
|
||||
|
||||
QStringList extraClangToolsPrependOptions()
|
||||
|
||||
@@ -643,7 +643,7 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
|
||||
// As the user would expect to have e.g. "--preset" from "Initial Configuration"
|
||||
// to "Current Configuration" as additional parameters
|
||||
m_buildSystem->setAdditionalCMakeArguments(ProcessArgs::splitArgs(
|
||||
bc->aspect<InitialCMakeArgumentsAspect>()->value()));
|
||||
bc->aspect<InitialCMakeArgumentsAspect>()->value(), HostOsInfo::hostOs()));
|
||||
}
|
||||
|
||||
void CMakeBuildSettingsWidget::kitCMakeConfiguration()
|
||||
@@ -823,9 +823,10 @@ void CMakeBuildSettingsWidget::updateFromKit()
|
||||
|
||||
// Then the additional parameters
|
||||
const QStringList additionalKitCMake = ProcessArgs::splitArgs(
|
||||
CMakeConfigurationKitAspect::additionalConfiguration(k));
|
||||
CMakeConfigurationKitAspect::additionalConfiguration(k), HostOsInfo::hostOs());
|
||||
const QStringList additionalInitialCMake = ProcessArgs::splitArgs(
|
||||
m_buildSystem->buildConfiguration()->aspect<InitialCMakeArgumentsAspect>()->value());
|
||||
m_buildSystem->buildConfiguration()->aspect<InitialCMakeArgumentsAspect>()->value(),
|
||||
HostOsInfo::hostOs());
|
||||
|
||||
QStringList mergedArgumentList;
|
||||
std::set_union(additionalInitialCMake.begin(),
|
||||
@@ -1725,7 +1726,8 @@ void CMakeBuildSystem::setInitialCMakeArguments(const QStringList &args)
|
||||
|
||||
QStringList CMakeBuildSystem::additionalCMakeArguments() const
|
||||
{
|
||||
return ProcessArgs::splitArgs(buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value());
|
||||
return ProcessArgs::splitArgs(buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value(),
|
||||
HostOsInfo::hostOs());
|
||||
}
|
||||
|
||||
void CMakeBuildSystem::setAdditionalCMakeArguments(const QStringList &args)
|
||||
@@ -1748,7 +1750,8 @@ void CMakeBuildSystem::filterConfigArgumentsFromAdditionalCMakeArguments()
|
||||
// which is already part of the CMake variables and should not be also
|
||||
// in the addtional CMake options
|
||||
const QStringList arguments = ProcessArgs::splitArgs(
|
||||
buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value());
|
||||
buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value(),
|
||||
HostOsInfo::hostOs());
|
||||
QStringList unknownOptions;
|
||||
const CMakeConfig config = CMakeConfig::fromArguments(arguments, unknownOptions);
|
||||
|
||||
@@ -2144,7 +2147,7 @@ const QStringList InitialCMakeArgumentsAspect::allValues() const
|
||||
return ci.toArgument(nullptr);
|
||||
});
|
||||
|
||||
initialCMakeArguments.append(ProcessArgs::splitArgs(value()));
|
||||
initialCMakeArguments.append(ProcessArgs::splitArgs(value(), HostOsInfo::hostOs()));
|
||||
|
||||
return initialCMakeArguments;
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ QList<CMakeBuildTarget> generateBuildTargets(const PreprocessedData &input,
|
||||
continue;
|
||||
|
||||
// CMake sometimes mixes several shell-escaped pieces into one fragment. Disentangle that again:
|
||||
const QStringList parts = ProcessArgs::splitArgs(f.fragment);
|
||||
const QStringList parts = ProcessArgs::splitArgs(f.fragment, HostOsInfo::hostOs());
|
||||
for (QString part : parts) {
|
||||
// Library search paths that are added with target_link_directories are added as
|
||||
// -LIBPATH:... (Windows/MSVC), or
|
||||
@@ -306,7 +306,7 @@ static QStringList splitFragments(const QStringList &fragments)
|
||||
{
|
||||
QStringList result;
|
||||
for (const QString &f : fragments) {
|
||||
result += ProcessArgs::splitArgs(f);
|
||||
result += ProcessArgs::splitArgs(f, HostOsInfo::hostOs());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,8 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const FilePath &pathIn)
|
||||
const QString folder = fileInfo.isDir() ? fileInfo.absoluteFilePath() : fileInfo.filePath();
|
||||
const QString app = UnixUtils::fileBrowser(ICore::settings());
|
||||
QStringList browserArgs = ProcessArgs::splitArgs(
|
||||
UnixUtils::substituteFileBrowserParameters(app, folder));
|
||||
UnixUtils::substituteFileBrowserParameters(app, folder),
|
||||
HostOsInfo::hostOs());
|
||||
QString error;
|
||||
if (browserArgs.isEmpty()) {
|
||||
error = Tr::tr("The command for file browser is not set.");
|
||||
|
||||
@@ -267,7 +267,8 @@ void LldbEngine::handleLldbStarted()
|
||||
cmd2.arg("nativemixed", isNativeMixedActive());
|
||||
cmd2.arg("workingdirectory", rp.inferior.workingDirectory.path());
|
||||
cmd2.arg("environment", rp.inferior.environment.toStringList());
|
||||
cmd2.arg("processargs", toHex(ProcessArgs::splitArgs(rp.inferior.command.arguments()).join(QChar(0))));
|
||||
cmd2.arg("processargs", toHex(ProcessArgs::splitArgs(rp.inferior.command.arguments(),
|
||||
HostOsInfo::hostOs()).join(QChar(0))));
|
||||
cmd2.arg("platform", rp.platform);
|
||||
cmd2.arg("symbolfile", rp.symbolFile.path());
|
||||
|
||||
|
||||
@@ -400,7 +400,7 @@ static QStringList readFlags(const QString &filePath)
|
||||
return QStringList();
|
||||
QStringList flags;
|
||||
for (const auto &line : lines)
|
||||
flags.append(ProcessArgs::splitArgs(line));
|
||||
flags.append(ProcessArgs::splitArgs(line, HostOsInfo::hostOs()));
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,8 @@ QWidget *IosBuildStep::createConfigWidget()
|
||||
updateDetails();
|
||||
|
||||
connect(buildArgumentsTextEdit, &QPlainTextEdit::textChanged, this, [=] {
|
||||
setBaseArguments(ProcessArgs::splitArgs(buildArgumentsTextEdit->toPlainText()));
|
||||
setBaseArguments(ProcessArgs::splitArgs(buildArgumentsTextEdit->toPlainText(),
|
||||
HostOsInfo::hostOs()));
|
||||
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
|
||||
updateDetails();
|
||||
});
|
||||
@@ -113,7 +114,8 @@ QWidget *IosBuildStep::createConfigWidget()
|
||||
});
|
||||
|
||||
connect(extraArgumentsLineEdit, &QLineEdit::editingFinished, this, [=] {
|
||||
setExtraArguments(ProcessArgs::splitArgs(extraArgumentsLineEdit->text()));
|
||||
setExtraArguments(ProcessArgs::splitArgs(extraArgumentsLineEdit->text(),
|
||||
HostOsInfo::hostOs()));
|
||||
});
|
||||
|
||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
||||
|
||||
@@ -242,7 +242,8 @@ QWidget *IosDsymBuildStep::createConfigWidget()
|
||||
|
||||
connect(argumentsTextEdit, &QPlainTextEdit::textChanged, this,
|
||||
[this, argumentsTextEdit, resetDefaultsButton, updateDetails] {
|
||||
setArguments(Utils::ProcessArgs::splitArgs(argumentsTextEdit->toPlainText()));
|
||||
setArguments(ProcessArgs::splitArgs(argumentsTextEdit->toPlainText(),
|
||||
HostOsInfo::hostOs()));
|
||||
resetDefaultsButton->setEnabled(!isDefault());
|
||||
updateDetails();
|
||||
});
|
||||
|
||||
@@ -91,7 +91,8 @@ void MesonBuildConfiguration::build(const QString &target)
|
||||
|
||||
QStringList MesonBuildConfiguration::mesonConfigArgs()
|
||||
{
|
||||
return Utils::ProcessArgs::splitArgs(m_parameters) + QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
||||
return Utils::ProcessArgs::splitArgs(m_parameters, HostOsInfo::hostOs())
|
||||
+ QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
||||
}
|
||||
|
||||
const QString &MesonBuildConfiguration::parameters() const
|
||||
|
||||
@@ -76,7 +76,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget()
|
||||
|
||||
auto updateUi = [=] {
|
||||
const CommandLine cmd = commandLine();
|
||||
const QStringList parts = ProcessArgs::splitArgs(cmd.toUserOutput());
|
||||
const QStringList parts = ProcessArgs::splitArgs(cmd.toUserOutput(), HostOsInfo::hostOs());
|
||||
|
||||
commandTextEdit->setText(parts.join(QChar::LineFeed));
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ QStringList PerfSettings::perfRecordArguments() const
|
||||
"--call-graph", callgraphArg,
|
||||
sampleMode.itemValue().toString(),
|
||||
QString::number(period.value())})
|
||||
+ ProcessArgs::splitArgs(extraArguments.value());
|
||||
+ ProcessArgs::splitArgs(extraArguments.value(), HostOsInfo::hostOs());
|
||||
}
|
||||
|
||||
void PerfSettings::resetToDefault()
|
||||
|
||||
@@ -78,7 +78,7 @@ static void startTerminalEmulator(const QString &workingDir, const Environment &
|
||||
const TerminalCommand term = TerminalCommand::terminalEmulator();
|
||||
QProcess process;
|
||||
process.setProgram(term.command.nativePath());
|
||||
process.setArguments(ProcessArgs::splitArgs(term.openArgs));
|
||||
process.setArguments(ProcessArgs::splitArgs(term.openArgs, HostOsInfo::hostOs()));
|
||||
process.setProcessEnvironment(env.toProcessEnvironment());
|
||||
process.setWorkingDirectory(workingDir);
|
||||
process.startDetached();
|
||||
|
||||
@@ -1385,8 +1385,10 @@ void GccToolChainConfigWidget::setFromToolchain()
|
||||
QSignalBlocker blocker(this);
|
||||
auto tc = static_cast<GccToolChain *>(toolChain());
|
||||
m_compilerCommand->setFilePath(tc->compilerCommand());
|
||||
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags()));
|
||||
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags()));
|
||||
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags(),
|
||||
HostOsInfo::hostOs()));
|
||||
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags(),
|
||||
HostOsInfo::hostOs()));
|
||||
if (m_abiWidget) {
|
||||
m_abiWidget->setAbis(tc->supportedAbis(), tc->targetAbi());
|
||||
if (!m_isReadOnly && !m_compilerCommand->filePath().toString().isEmpty())
|
||||
|
||||
@@ -479,8 +479,8 @@ void QmakeProjectManagerPlugin::testMakefileParser()
|
||||
MakeFileParse parser("/tmp/something", MakeFileParse::Mode::FilterKnownConfigValues);
|
||||
parser.parseCommandLine(command, project);
|
||||
|
||||
QCOMPARE(ProcessArgs::splitArgs(parser.unparsedArguments()),
|
||||
ProcessArgs::splitArgs(unparsedArguments));
|
||||
QCOMPARE(ProcessArgs::splitArgs(parser.unparsedArguments(), HostOsInfo::hostOs()),
|
||||
ProcessArgs::splitArgs(unparsedArguments, HostOsInfo::hostOs()));
|
||||
QCOMPARE(parser.effectiveBuildConfig({}), effectiveBuildConfig);
|
||||
|
||||
const QMakeStepConfig qmsc = parser.config();
|
||||
|
||||
@@ -48,7 +48,7 @@ QnxProcessImpl::QnxProcessImpl(const LinuxDevice *linuxDevice)
|
||||
|
||||
QString QnxProcessImpl::fullCommandLine(const CommandLine &commandLine) const
|
||||
{
|
||||
QStringList args = ProcessArgs::splitArgs(commandLine.arguments());
|
||||
QStringList args = ProcessArgs::splitArgs(commandLine.arguments(), HostOsInfo::hostOs());
|
||||
args.prepend(commandLine.executable().toString());
|
||||
const QString cmd = ProcessArgs::createUnixArgs(args).toString();
|
||||
|
||||
|
||||
@@ -261,7 +261,7 @@ void MakeInstallStep::updateFromCustomCommandLineAspect()
|
||||
const StringAspect * const aspect = customCommandLineAspect();
|
||||
if (!aspect->isChecked())
|
||||
return;
|
||||
const QStringList tokens = ProcessArgs::splitArgs(aspect->value());
|
||||
const QStringList tokens = ProcessArgs::splitArgs(aspect->value(), HostOsInfo::hostOs());
|
||||
setMakeCommand(tokens.isEmpty() ? FilePath() : FilePath::fromString(tokens.first()));
|
||||
setUserArguments(ProcessArgs::joinArgs(tokens.mid(1)));
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ QStringList CallgrindToolRunner::toolArguments() const
|
||||
|
||||
arguments << "--callgrind-out-file=" + m_valgrindOutputFile.path();
|
||||
|
||||
arguments << ProcessArgs::splitArgs(m_settings.callgrindArguments.value());
|
||||
arguments << ProcessArgs::splitArgs(m_settings.callgrindArguments.value(), HostOsInfo::hostOs());
|
||||
|
||||
return arguments;
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ QStringList MemcheckToolRunner::toolArguments() const
|
||||
if (m_withGdb)
|
||||
arguments << "--vgdb=yes" << "--vgdb-error=0";
|
||||
|
||||
arguments << Utils::ProcessArgs::splitArgs(m_settings.memcheckArguments.value());
|
||||
arguments << ProcessArgs::splitArgs(m_settings.memcheckArguments.value(), HostOsInfo::hostOs());
|
||||
|
||||
return arguments;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user