Use QtcProcess in QbsSession

Change-Id: I1220bb533e4d7aa0577860b750a7d97e2139bc20
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2021-11-03 16:21:36 +01:00
parent 7208ada5b3
commit cd6d2b0cd8

View File

@@ -35,12 +35,12 @@
#include <projectexplorer/taskhub.h> #include <projectexplorer/taskhub.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <QDir> #include <QDir>
#include <QEventLoop> #include <QEventLoop>
#include <QJsonArray> #include <QJsonArray>
#include <QJsonDocument> #include <QJsonDocument>
#include <QProcess>
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QTimer> #include <QTimer>
@@ -149,7 +149,7 @@ private:
class QbsSession::Private class QbsSession::Private
{ {
public: public:
QProcess *qbsProcess = nullptr; QtcProcess *qbsProcess = nullptr;
PacketReader *packetReader = nullptr; PacketReader *packetReader = nullptr;
QJsonObject currentRequest; QJsonObject currentRequest;
QJsonObject projectData; QJsonObject projectData;
@@ -167,18 +167,18 @@ QbsSession::QbsSession(QObject *parent) : QObject(parent), d(new Private)
void QbsSession::initialize() void QbsSession::initialize()
{ {
QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); Environment env = Environment::systemEnvironment();
env.insert("QT_FORCE_STDERR_LOGGING", "1"); env.set("QT_FORCE_STDERR_LOGGING", "1");
d->packetReader = new PacketReader(this); d->packetReader = new PacketReader(this);
d->qbsProcess = new QProcess(this); d->qbsProcess = new QtcProcess(ProcessMode::Writer, this);
d->qbsProcess->setProcessEnvironment(env); d->qbsProcess->setEnvironment(env);
connect(d->qbsProcess, &QProcess::readyReadStandardOutput, this, [this] { connect(d->qbsProcess, &QtcProcess::readyReadStandardOutput, this, [this] {
d->packetReader->handleData(d->qbsProcess->readAllStandardOutput()); d->packetReader->handleData(d->qbsProcess->readAllStandardOutput());
}); });
connect(d->qbsProcess, &QProcess::readyReadStandardError, this, [this] { connect(d->qbsProcess, &QtcProcess::readyReadStandardError, this, [this] {
qCDebug(qbsPmLog) << "[qbs stderr]: " << d->qbsProcess->readAllStandardError(); qCDebug(qbsPmLog) << "[qbs stderr]: " << d->qbsProcess->readAllStandardError();
}); });
connect(d->qbsProcess, &QProcess::errorOccurred, this, [this](QProcess::ProcessError e) { connect(d->qbsProcess, &QtcProcess::errorOccurred, this, [this](QProcess::ProcessError e) {
d->eventLoop.exit(1); d->eventLoop.exit(1);
if (state() == State::ShuttingDown || state() == State::Inactive) if (state() == State::ShuttingDown || state() == State::Inactive)
return; return;
@@ -196,8 +196,7 @@ void QbsSession::initialize()
break; break;
} }
}); });
connect(d->qbsProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, connect(d->qbsProcess, &QtcProcess::finished, this, [this] {
[this] {
d->qbsProcess->deleteLater(); d->qbsProcess->deleteLater();
switch (state()) { switch (state()) {
case State::Inactive: case State::Inactive:
@@ -225,7 +224,8 @@ void QbsSession::initialize()
QTimer::singleShot(0, this, [this] { setError(Error::QbsFailedToStart); }); QTimer::singleShot(0, this, [this] { setError(Error::QbsFailedToStart); });
return; return;
} }
d->qbsProcess->start(qbsExe.toString(), {"session"}); d->qbsProcess->setCommand({qbsExe, {"session"}});
d->qbsProcess->start();
} }
void QbsSession::sendQuitPacket() void QbsSession::sendQuitPacket()