Qnx: Use /tmp for temporary pid files

/var/run is not writable for users in a lot of setups.

Change-Id: I510c04f6ee5887e3c58b3f6d4a2a870d9c0bc5a2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2023-02-21 12:12:27 +01:00
parent 01d3ed0463
commit 2f439af7a4
3 changed files with 13 additions and 8 deletions

View File

@@ -14,4 +14,6 @@ const char QNX_RUNCONFIG_ID[] = "Qt4ProjectManager.QNX.QNXRunConfiguration.";
const char QNX_QNX_OS_TYPE[] = "QnxOsType"; // Also used for device type. const char QNX_QNX_OS_TYPE[] = "QnxOsType"; // Also used for device type.
const char QNX_TOOLCHAIN_ID[] = "Qnx.QccToolChain"; const char QNX_TOOLCHAIN_ID[] = "Qnx.QccToolChain";
const char QNX_TMP_DIR[] = "/tmp"; // /var/run is root:root drwxr-xr-x
} // Qnx::Constants } // Qnx::Constants

View File

@@ -42,7 +42,7 @@ static std::atomic_int s_pidFileCounter = 1;
QnxProcessImpl::QnxProcessImpl(const LinuxDevice *linuxDevice) QnxProcessImpl::QnxProcessImpl(const LinuxDevice *linuxDevice)
: SshProcessInterface(linuxDevice) : SshProcessInterface(linuxDevice)
, m_pidFile(QString::fromLatin1("/var/run/qtc.%1.pid").arg(s_pidFileCounter.fetch_add(1))) , m_pidFile(QString("%1/qtc.%2.pid").arg(Constants::QNX_TMP_DIR).arg(s_pidFileCounter.fetch_add(1)))
{ {
} }

View File

@@ -2,6 +2,8 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "qnxdevicetester.h" #include "qnxdevicetester.h"
#include "qnxconstants.h"
#include "qnxdevice.h" #include "qnxdevice.h"
#include "qnxtr.h" #include "qnxtr.h"
@@ -58,10 +60,11 @@ void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConf
using namespace Tasking; using namespace Tasking;
auto setupHandler = [this](QtcProcess &process) { auto setupHandler = [this](QtcProcess &process) {
emit progressMessage(Tr::tr("Checking that files can be created in /var/run...")); emit progressMessage(Tr::tr("Checking that files can be created in %1...")
const CommandLine cmd {m_deviceConfiguration->filePath("/bin/sh"), .arg(Constants::QNX_TMP_DIR));
{"-c", QLatin1String("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1") const QString pidFile = QString("%1/qtc_xxxx.pid").arg(Constants::QNX_TMP_DIR);
.arg("/var/run/qtc_xxxx.pid")}}; const CommandLine cmd(m_deviceConfiguration->filePath("/bin/sh"),
{"-c", QLatin1String("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1").arg(pidFile)});
process.setCommand(cmd); process.setCommand(cmd);
}; };
auto doneHandler = [this](const QtcProcess &) { auto doneHandler = [this](const QtcProcess &) {
@@ -69,9 +72,9 @@ void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConf
}; };
auto errorHandler = [this](const QtcProcess &process) { auto errorHandler = [this](const QtcProcess &process) {
const QString message = process.result() == ProcessResult::StartFailed const QString message = process.result() == ProcessResult::StartFailed
? Tr::tr("An error occurred while checking that files can be created in /var/run.") ? Tr::tr("An error occurred while checking that files can be created in %1.")
+ '\n' + process.errorString() .arg(Constants::QNX_TMP_DIR) + '\n' + process.errorString()
: Tr::tr("Files cannot be created in /var/run."); : Tr::tr("Files cannot be created in %1.").arg(Constants::QNX_TMP_DIR);
emit errorMessage(message + '\n'); emit errorMessage(message + '\n');
}; };
m_genericTester->setExtraTests({Process(setupHandler, doneHandler, errorHandler)}); m_genericTester->setExtraTests({Process(setupHandler, doneHandler, errorHandler)});