diff --git a/src/plugins/remotelinux/rsyncdeploystep.cpp b/src/plugins/remotelinux/rsyncdeploystep.cpp index 14d7914baf6..355e1441161 100644 --- a/src/plugins/remotelinux/rsyncdeploystep.cpp +++ b/src/plugins/remotelinux/rsyncdeploystep.cpp @@ -29,6 +29,7 @@ #include "remotelinux_constants.h" #include +#include #include #include #include @@ -71,7 +72,7 @@ private: bool m_ignoreMissingFiles = false; QString m_flags; QtcProcess m_rsync; - SshRemoteProcessPtr m_mkdir; + std::unique_ptr m_mkdir; }; bool RsyncDeployService::isDeploymentNecessary() const @@ -101,21 +102,19 @@ void RsyncDeployService::createRemoteDirectories() remoteDirs << f.remoteDirectory(); remoteDirs.sort(); remoteDirs.removeDuplicates(); - m_mkdir = connection()->createRemoteProcess("mkdir -p " + - ProcessArgs::createUnixArgs(remoteDirs).toString()); + m_mkdir.reset(new QtcProcess); + const CommandLine command {deviceConfiguration()->mapToGlobalPath("mkdir"), + {"-p", ProcessArgs::createUnixArgs(remoteDirs).toString()}}; + m_mkdir->setCommand(command); connect(m_mkdir.get(), &QtcProcess::done, this, [this] { - QString userError; - const QString error = m_mkdir->errorString(); - if (!error.isEmpty()) - 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)); + if (m_mkdir->result() != ProcessResult::FinishedWithSuccess) { + emit errorMessage(tr("Failed to create remote directories: %1") + .arg(QString::fromUtf8(m_mkdir->readAllStandardError()))); setFinished(); return; } deployFiles(); + m_mkdir.release()->deleteLater(); }); m_mkdir->start(); } @@ -173,12 +172,9 @@ void RsyncDeployService::deployNextFile() void RsyncDeployService::setFinished() { - if (m_mkdir) { - m_mkdir->disconnect(); - m_mkdir->kill(); - } - m_rsync.disconnect(); - m_rsync.kill(); + if (m_mkdir) + m_mkdir.release()->deleteLater(); + m_rsync.close(); handleDeploymentDone(); }