forked from qt-creator/qt-creator
RsyncDeployService: Don't use SshRemoteProcess
Use QtcProcess with a path on device instead. Change-Id: I0b5f3160926287112b7fe53dea19d54ca5c07232 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -29,6 +29,7 @@
|
|||||||
#include "remotelinux_constants.h"
|
#include "remotelinux_constants.h"
|
||||||
|
|
||||||
#include <projectexplorer/deploymentdata.h>
|
#include <projectexplorer/deploymentdata.h>
|
||||||
|
#include <projectexplorer/devicesupport/idevice.h>
|
||||||
#include <projectexplorer/runconfigurationaspects.h>
|
#include <projectexplorer/runconfigurationaspects.h>
|
||||||
#include <projectexplorer/target.h>
|
#include <projectexplorer/target.h>
|
||||||
#include <ssh/sshconnection.h>
|
#include <ssh/sshconnection.h>
|
||||||
@@ -71,7 +72,7 @@ private:
|
|||||||
bool m_ignoreMissingFiles = false;
|
bool m_ignoreMissingFiles = false;
|
||||||
QString m_flags;
|
QString m_flags;
|
||||||
QtcProcess m_rsync;
|
QtcProcess m_rsync;
|
||||||
SshRemoteProcessPtr m_mkdir;
|
std::unique_ptr<QtcProcess> m_mkdir;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool RsyncDeployService::isDeploymentNecessary() const
|
bool RsyncDeployService::isDeploymentNecessary() const
|
||||||
@@ -101,21 +102,19 @@ void RsyncDeployService::createRemoteDirectories()
|
|||||||
remoteDirs << f.remoteDirectory();
|
remoteDirs << f.remoteDirectory();
|
||||||
remoteDirs.sort();
|
remoteDirs.sort();
|
||||||
remoteDirs.removeDuplicates();
|
remoteDirs.removeDuplicates();
|
||||||
m_mkdir = connection()->createRemoteProcess("mkdir -p " +
|
m_mkdir.reset(new QtcProcess);
|
||||||
ProcessArgs::createUnixArgs(remoteDirs).toString());
|
const CommandLine command {deviceConfiguration()->mapToGlobalPath("mkdir"),
|
||||||
|
{"-p", ProcessArgs::createUnixArgs(remoteDirs).toString()}};
|
||||||
|
m_mkdir->setCommand(command);
|
||||||
connect(m_mkdir.get(), &QtcProcess::done, this, [this] {
|
connect(m_mkdir.get(), &QtcProcess::done, this, [this] {
|
||||||
QString userError;
|
if (m_mkdir->result() != ProcessResult::FinishedWithSuccess) {
|
||||||
const QString error = m_mkdir->errorString();
|
emit errorMessage(tr("Failed to create remote directories: %1")
|
||||||
if (!error.isEmpty())
|
.arg(QString::fromUtf8(m_mkdir->readAllStandardError())));
|
||||||
userError = error;
|
|
||||||
if (m_mkdir->exitCode() != 0)
|
|
||||||
userError = QString::fromUtf8(m_mkdir->readAllStandardError());
|
|
||||||
if (!userError.isEmpty()) {
|
|
||||||
emit errorMessage(tr("Failed to create remote directories: %1").arg(userError));
|
|
||||||
setFinished();
|
setFinished();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
deployFiles();
|
deployFiles();
|
||||||
|
m_mkdir.release()->deleteLater();
|
||||||
});
|
});
|
||||||
m_mkdir->start();
|
m_mkdir->start();
|
||||||
}
|
}
|
||||||
@@ -173,12 +172,9 @@ void RsyncDeployService::deployNextFile()
|
|||||||
|
|
||||||
void RsyncDeployService::setFinished()
|
void RsyncDeployService::setFinished()
|
||||||
{
|
{
|
||||||
if (m_mkdir) {
|
if (m_mkdir)
|
||||||
m_mkdir->disconnect();
|
m_mkdir.release()->deleteLater();
|
||||||
m_mkdir->kill();
|
m_rsync.close();
|
||||||
}
|
|
||||||
m_rsync.disconnect();
|
|
||||||
m_rsync.kill();
|
|
||||||
handleDeploymentDone();
|
handleDeploymentDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user