Projects: Use qtcEnvironmentVariable* instead of qEnvironmentVariable*

And instead of qgetenv.
Takes Qt Creator's setting at "Environment > System > Environment" into
account, which makes it easier on some platforms to set them (e.g.
macOS), can be configured differently in different settings paths, and
potentially can be changed at runtime (depending on usage).

Change-Id: I2217f13336ec816d28bd447ccd14a405bff2a3a7
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Eike Ziller
2022-08-24 14:56:40 +02:00
parent c0f2fb9981
commit 904c368858
13 changed files with 44 additions and 33 deletions

View File

@@ -53,9 +53,9 @@ static std::vector<std::unique_ptr<CMakeTool>> autoDetectCMakeTools()
path = Utils::filteredUnique(path); path = Utils::filteredUnique(path);
if (HostOsInfo::isWindowsHost()) { if (HostOsInfo::isWindowsHost()) {
for (auto envVar : {"ProgramFiles", "ProgramFiles(x86)", "ProgramW6432"}) { for (const auto &envVar : QStringList{"ProgramFiles", "ProgramFiles(x86)", "ProgramW6432"}) {
if (qEnvironmentVariableIsSet(envVar)) { if (qtcEnvironmentVariableIsSet(envVar)) {
const QString progFiles = qEnvironmentVariable(envVar); const QString progFiles = qtcEnvironmentVariable(envVar);
path.append(FilePath::fromUserInput(progFiles + "/CMake")); path.append(FilePath::fromUserInput(progFiles + "/CMake"));
path.append(FilePath::fromUserInput(progFiles + "/CMake/bin")); path.append(FilePath::fromUserInput(progFiles + "/CMake/bin"));
} }

View File

@@ -4,6 +4,7 @@
#include "abi.h" #include "abi.h"
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -1273,7 +1274,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiOfBinary_data()
// Clone test data from: https://git.qt.io/chstenge/creator-test-data // Clone test data from: https://git.qt.io/chstenge/creator-test-data
// Set up prefix for test data now that we can be sure to have some tests to run: // Set up prefix for test data now that we can be sure to have some tests to run:
QString prefix = QString::fromLocal8Bit(qgetenv("QTC_TEST_EXTRADATALOCATION")); QString prefix = Utils::qtcEnvironmentVariable("QTC_TEST_EXTRADATALOCATION");
if (prefix.isEmpty()) if (prefix.isEmpty())
return; return;
prefix += "/projectexplorer/abi"; prefix += "/projectexplorer/abi";

View File

@@ -15,6 +15,7 @@
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -37,7 +38,7 @@ const char configFileC[] = "wizard.xml";
static bool enableLoadTemplateFiles() static bool enableLoadTemplateFiles()
{ {
#ifdef WITH_TESTS #ifdef WITH_TESTS
static bool value = qEnvironmentVariableIsEmpty("QTC_DISABLE_LOAD_TEMPLATES_FOR_TEST"); static bool value = qtcEnvironmentVariableIsEmpty("QTC_DISABLE_LOAD_TEMPLATES_FOR_TEST");
#else #else
static bool value = true; static bool value = true;
#endif #endif

View File

@@ -5,6 +5,7 @@
#include "customwizard.h" #include "customwizard.h"
#include "customwizardparameters.h" #include "customwizardparameters.h"
#include <utils/environment.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
@@ -46,7 +47,7 @@ QStringList fixGeneratorScript(const QString &configFile, QString binary)
if (!extension.isEmpty() && extension.compare(QLatin1String("exe"), if (!extension.isEmpty() && extension.compare(QLatin1String("exe"),
Qt::CaseInsensitive) != 0) { Qt::CaseInsensitive) != 0) {
rc.push_front(QLatin1String("/C")); rc.push_front(QLatin1String("/C"));
rc.push_front(QString::fromLocal8Bit(qgetenv("COMSPEC"))); rc.push_front(qtcEnvironmentVariable("COMSPEC"));
if (rc.front().isEmpty()) if (rc.front().isEmpty())
rc.front() = QLatin1String("cmd.exe"); rc.front() = QLatin1String("cmd.exe");
} }

View File

@@ -106,29 +106,29 @@ bool operator!=(const SshParameters &p1, const SshParameters &p2)
namespace SshTest { namespace SshTest {
const QString getHostFromEnvironment() const QString getHostFromEnvironment()
{ {
const QString host = QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_HOST")); const QString host = qtcEnvironmentVariable("QTC_SSH_TEST_HOST");
if (host.isEmpty() && qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) if (host.isEmpty() && qtcEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS"))
return QString("127.0.0.1"); return QString("127.0.0.1");
return host; return host;
} }
quint16 getPortFromEnvironment() quint16 getPortFromEnvironment()
{ {
const int port = qEnvironmentVariableIntValue("QTC_SSH_TEST_PORT"); const int port = qtcEnvironmentVariableIntValue("QTC_SSH_TEST_PORT");
return port != 0 ? quint16(port) : 22; return port != 0 ? quint16(port) : 22;
} }
const QString getUserFromEnvironment() const QString getUserFromEnvironment()
{ {
return QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_USER")); return qtcEnvironmentVariable("QTC_SSH_TEST_USER");
} }
const QString getKeyFileFromEnvironment() const QString getKeyFileFromEnvironment()
{ {
const FilePath defaultKeyFile = FileUtils::homePath() / ".ssh/id_rsa"; const FilePath defaultKeyFile = FileUtils::homePath() / ".ssh/id_rsa";
const QString keyFile = QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_KEYFILE")); const QString keyFile = qtcEnvironmentVariable("QTC_SSH_TEST_KEYFILE");
if (keyFile.isEmpty()) { if (keyFile.isEmpty()) {
if (qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) if (qtcEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS"))
return defaultKeyFile.toString(); return defaultKeyFile.toString();
} }
return keyFile; return keyFile;
@@ -145,7 +145,7 @@ const QString userAtHost()
SshParameters getParameters() SshParameters getParameters()
{ {
SshParameters params; SshParameters params;
if (!qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) { if (!qtcEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) {
params.setUserName(getUserFromEnvironment()); params.setUserName(getUserFromEnvironment());
params.privateKeyFile = FilePath::fromUserInput(getKeyFileFromEnvironment()); params.privateKeyFile = FilePath::fromUserInput(getKeyFileFromEnvironment());
} }
@@ -160,7 +160,7 @@ SshParameters getParameters()
bool checkParameters(const SshParameters &params) bool checkParameters(const SshParameters &params)
{ {
if (qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) if (qtcEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS"))
return true; return true;
if (params.host().isEmpty()) { if (params.host().isEmpty()) {
qWarning("No hostname provided. Set QTC_SSH_TEST_HOST."); qWarning("No hostname provided. Set QTC_SSH_TEST_HOST.");

View File

@@ -18,6 +18,7 @@
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
@@ -492,7 +493,7 @@ static QStringList environmentTemplatesPaths()
{ {
QStringList paths; QStringList paths;
QString envTempPath = QString::fromLocal8Bit(qgetenv("QTCREATOR_TEMPLATES_PATH")); QString envTempPath = qtcEnvironmentVariable("QTCREATOR_TEMPLATES_PATH");
if (!envTempPath.isEmpty()) { if (!envTempPath.isEmpty()) {
for (const QString &path : envTempPath for (const QString &path : envTempPath

View File

@@ -13,13 +13,14 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/optional.h> #include <utils/optional.h>
#include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/runextensions.h> #include <utils/runextensions.h>
#include <utils/temporarydirectory.h> #include <utils/temporarydirectory.h>
#include <utils/pathchooser.h>
#include <utils/winutils.h> #include <utils/winutils.h>
#include <QDir> #include <QDir>
@@ -196,7 +197,7 @@ static QString windowsProgramFilesDir()
#else #else
const char programFilesC[] = "ProgramFiles"; const char programFilesC[] = "ProgramFiles";
#endif #endif
return QDir::fromNativeSeparators(QFile::decodeName(qgetenv(programFilesC))); return QDir::fromNativeSeparators(qtcEnvironmentVariable(programFilesC));
} }
static Utils::optional<VisualStudioInstallation> installationFromPathAndVersion( static Utils::optional<VisualStudioInstallation> installationFromPathAndVersion(
@@ -2110,8 +2111,7 @@ Utils::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils:
runEnv.unset(QLatin1String("ORIGINALPATH")); runEnv.unset(QLatin1String("ORIGINALPATH"));
run.setEnvironment(runEnv); run.setEnvironment(runEnv);
run.setTimeoutS(60); run.setTimeoutS(60);
Utils::FilePath cmdPath = Utils::FilePath::fromUserInput( Utils::FilePath cmdPath = Utils::FilePath::fromUserInput(qtcEnvironmentVariable("COMSPEC"));
QString::fromLocal8Bit(qgetenv("COMSPEC")));
if (cmdPath.isEmpty()) if (cmdPath.isEmpty())
cmdPath = env.searchInPath(QLatin1String("cmd.exe")); cmdPath = env.searchInPath(QLatin1String("cmd.exe"));
// Windows SDK setup scripts require command line switches for environment expansion. // Windows SDK setup scripts require command line switches for environment expansion.

View File

@@ -15,8 +15,9 @@
#include <app/app_version.h> #include <app/app_version.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/persistentsettings.h> #include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/persistentsettings.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
@@ -184,10 +185,10 @@ static QString generateSuffix(const QString &suffix)
// Return path to shared directory for .user files, create if necessary. // Return path to shared directory for .user files, create if necessary.
static inline Utils::optional<QString> defineExternalUserFileDir() static inline Utils::optional<QString> defineExternalUserFileDir()
{ {
static const char userFilePathVariable[] = "QTC_USER_FILE_PATH"; const char userFilePathVariable[] = "QTC_USER_FILE_PATH";
if (Q_LIKELY(!qEnvironmentVariableIsSet(userFilePathVariable))) if (Q_LIKELY(!qtcEnvironmentVariableIsSet(userFilePathVariable)))
return nullopt; return nullopt;
const QFileInfo fi(QFile::decodeName(qgetenv(userFilePathVariable))); const QFileInfo fi(qtcEnvironmentVariable(userFilePathVariable));
const QString path = fi.absoluteFilePath(); const QString path = fi.absoluteFilePath();
if (fi.isDir() || fi.isSymLink()) if (fi.isDir() || fi.isSymLink())
return path; return path;
@@ -379,21 +380,21 @@ QVariant UserFileAccessor::retrieveSharedSettings() const
FilePath UserFileAccessor::projectUserFile() const FilePath UserFileAccessor::projectUserFile() const
{ {
static const QString qtcExt = QLatin1String(qgetenv("QTC_EXTENSION")); static const QString qtcExt = qtcEnvironmentVariable("QTC_EXTENSION");
return m_project->projectFilePath() return m_project->projectFilePath()
.stringAppended(generateSuffix(qtcExt.isEmpty() ? FILE_EXTENSION_STR : qtcExt)); .stringAppended(generateSuffix(qtcExt.isEmpty() ? FILE_EXTENSION_STR : qtcExt));
} }
FilePath UserFileAccessor::externalUserFile() const FilePath UserFileAccessor::externalUserFile() const
{ {
static const QString qtcExt = QFile::decodeName(qgetenv("QTC_EXTENSION")); static const QString qtcExt = qtcEnvironmentVariable("QTC_EXTENSION");
return externalUserFilePath(m_project->projectFilePath(), return externalUserFilePath(m_project->projectFilePath(),
generateSuffix(qtcExt.isEmpty() ? FILE_EXTENSION_STR : qtcExt)); generateSuffix(qtcExt.isEmpty() ? FILE_EXTENSION_STR : qtcExt));
} }
FilePath UserFileAccessor::sharedFile() const FilePath UserFileAccessor::sharedFile() const
{ {
static const QString qtcExt = QLatin1String(qgetenv("QTC_SHARED_EXTENSION")); static const QString qtcExt = qtcEnvironmentVariable("QTC_SHARED_EXTENSION");
return m_project->projectFilePath() return m_project->projectFilePath()
.stringAppended(generateSuffix(qtcExt.isEmpty() ? ".shared" : qtcExt)); .stringAppended(generateSuffix(qtcExt.isEmpty() ? ".shared" : qtcExt));
} }

View File

@@ -40,6 +40,7 @@
#include <projectexplorer/taskhub.h> #include <projectexplorer/taskhub.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/runextensions.h> #include <utils/runextensions.h>
@@ -80,7 +81,7 @@ public:
} }
~OpTimer() ~OpTimer()
{ {
if (qEnvironmentVariableIsSet(Constants::QBS_PROFILING_ENV)) { if (qtcEnvironmentVariableIsSet(Constants::QBS_PROFILING_ENV)) {
MessageManager::writeSilently( MessageManager::writeSilently(
QString("operation %1 took %2ms").arg(QLatin1String(m_name)).arg(m_timer.elapsed())); QString("operation %1 took %2ms").arg(QLatin1String(m_name)).arg(m_timer.elapsed()));
} }

View File

@@ -247,10 +247,10 @@ void QbsSession::sendRequest(const QJsonObject &request)
qDebug() << request.value("type").toString() qDebug() << request.value("type").toString()
<< d->currentRequest.value("type").toString(); return); << d->currentRequest.value("type").toString(); return);
d->currentRequest = request; d->currentRequest = request;
const QString logLevelFromEnv = qEnvironmentVariable("QBS_LOG_LEVEL"); const QString logLevelFromEnv = qtcEnvironmentVariable("QBS_LOG_LEVEL");
if (!logLevelFromEnv.isEmpty()) if (!logLevelFromEnv.isEmpty())
d->currentRequest.insert("log-level", logLevelFromEnv); d->currentRequest.insert("log-level", logLevelFromEnv);
if (!qEnvironmentVariableIsEmpty(Constants::QBS_PROFILING_ENV)) if (!qtcEnvironmentVariableIsEmpty(Constants::QBS_PROFILING_ENV))
d->currentRequest.insert("log-time", true); d->currentRequest.insert("log-time", true);
if (d->state == State::Active) if (d->state == State::Active)
sendQueuedRequest(); sendQueuedRequest();

View File

@@ -14,6 +14,7 @@
#include <designer/designerconstants.h> #include <designer/designerconstants.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
@@ -153,7 +154,7 @@ bool ExternalQtEditor::getEditorLaunchData(const Utils::FilePath &filePath,
data->binary = findFirstCommand(qtVersionsToCheck, m_commandForQtVersion); data->binary = findFirstCommand(qtVersionsToCheck, m_commandForQtVersion);
// fallback // fallback
if (data->binary.isEmpty()) { if (data->binary.isEmpty()) {
const QString path = qEnvironmentVariable("PATH"); const QString path = qtcEnvironmentVariable("PATH");
data->binary = Utils::QtcProcess::locateBinary(path, m_commandForQtVersion(nullptr)); data->binary = Utils::QtcProcess::locateBinary(path, m_commandForQtVersion(nullptr));
} }

View File

@@ -20,6 +20,7 @@
#include <qtsupport/qtversionmanager.h> #include <qtsupport/qtversionmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
@@ -35,8 +36,7 @@ namespace Internal {
static bool debugExamples() static bool debugExamples()
{ {
static bool isDebugging = qEnvironmentVariableIsSet("QTC_DEBUG_EXAMPLESMODEL"); return qtcEnvironmentVariableIsSet("QTC_DEBUG_EXAMPLESMODEL");
return isDebugging;
} }
static const char kSelectedExampleSetKey[] = "WelcomePage/SelectedExampleSet"; static const char kSelectedExampleSetKey[] = "WelcomePage/SelectedExampleSet";

View File

@@ -5,6 +5,7 @@
#include "remotelinuxtr.h" #include "remotelinuxtr.h"
#include <utils/environment.h>
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -12,7 +13,10 @@ using namespace Utils;
namespace RemoteLinux { namespace RemoteLinux {
static QString defaultDisplay() { return qEnvironmentVariable("DISPLAY"); } static QString defaultDisplay()
{
return qtcEnvironmentVariable("DISPLAY");
}
X11ForwardingAspect::X11ForwardingAspect(const MacroExpander *expander) X11ForwardingAspect::X11ForwardingAspect(const MacroExpander *expander)
: m_macroExpander(expander) : m_macroExpander(expander)