Introduce the concept of a "device process".

Provide a QProcess-like abstraction that can be used
to implement processes running locally or on a remote
device. Objects of a concrete class implementing the functionality
are created by IDevice objects.
Current implementations are:
     - Local execution (QProcess-based), provided via the DesktopDevice.
     - Remote execution via SSH.
     - A specialized case of the former for remote Linux systems (provided by
       LinuxDevice).
The latter is already being used in a number of places. As a result, lots of
code dealing with details such as setting the remote environment could be
moved to a central location. These things are no longer the concern of whoever
is wishing to run a remote process.

Change-Id: I919260ee6e77a020ca47226a4a534e7b8398106f
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
Christian Kandeler
2013-08-08 14:05:11 +02:00
parent dc07796c23
commit 22599094b0
48 changed files with 1214 additions and 208 deletions

View File

@@ -34,6 +34,7 @@
#include <projectexplorer/devicesupport/deviceapplicationrunner.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
using namespace ProjectExplorer;
@@ -78,10 +79,12 @@ void QnxAnalyzeSupport::startExecution()
setState(StartingRemoteProcess);
const QString args = m_runControl->startParameters().debuggeeArgs +
QString::fromLatin1(" -qmljsdebugger=port:%1,block").arg(m_qmlPort);
const QString command = QString::fromLatin1("%1 %2 %3").arg(commandPrefix(), executable(), args);
appRunner()->start(device(), command.toUtf8());
const QStringList args = QStringList()
<< Utils::QtcProcess::splitArgs(m_runControl->startParameters().debuggeeArgs)
<< QString::fromLatin1("-qmljsdebugger=port:%1,block").arg(m_qmlPort);
appRunner()->setEnvironment(environment());
appRunner()->setWorkingDirectory(workingDirectory());
appRunner()->start(device(), executable(), args);
}
void QnxAnalyzeSupport::handleRemoteProcessFinished(bool success)