From 946cce3706f19a362d1c9d8a6f5dd1df4b97a5b5 Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@nokia.com>
Date: Fri, 29 Oct 2010 11:41:39 +0200
Subject: [PATCH] Maemo: Improve clean-up behaviour on remote hosts.

We now remove files we have created on the device because they are
temporarily needed. This includes package files, mount points and pipes.

Task-number: QTCREATORBUG-2709
---
 src/plugins/debugger/gdb/remotegdbprocess.cpp         |  3 ++-
 .../qt4projectmanager/qt-maemo/maemodeploystep.cpp    | 11 +++++++----
 .../qt4projectmanager/qt-maemo/maemodeploystep.h      |  2 +-
 .../qt4projectmanager/qt-maemo/maemoremotemounter.cpp |  2 +-
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/plugins/debugger/gdb/remotegdbprocess.cpp b/src/plugins/debugger/gdb/remotegdbprocess.cpp
index 0b84a5b4a02..4f5657f54f6 100644
--- a/src/plugins/debugger/gdb/remotegdbprocess.cpp
+++ b/src/plugins/debugger/gdb/remotegdbprocess.cpp
@@ -99,7 +99,8 @@ void RemoteGdbProcess::handleFifoCreationFinished(int exitStatus)
     if (exitStatus != SshRemoteProcess::ExitedNormally) {
         emitErrorExit(tr("Could not create FIFO."));
     } else {
-        m_appOutputReader = m_conn->createRemoteProcess("cat " + AppOutputFile);
+        m_appOutputReader = m_conn->createRemoteProcess("cat " + AppOutputFile
+            + " && rm -f " + AppOutputFile);
         connect(m_appOutputReader.data(), SIGNAL(started()), this,
             SLOT(handleAppOutputReaderStarted()));
         connect(m_appOutputReader.data(), SIGNAL(closed(int)), this,
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
index 67664f0cd0c..f2cf09994f1 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
@@ -387,7 +387,7 @@ void MaemoDeployStep::handleSftpJobFinished(Core::SftpJobId,
         .arg(filePathNative));
     const QString remoteFilePath
         = uploadDir() + QLatin1Char('/') + QFileInfo(filePathNative).fileName();
-    runDpkg(remoteFilePath);
+    runDpkg(remoteFilePath, true);
 }
 
 void MaemoDeployStep::handleMounted()
@@ -400,7 +400,7 @@ void MaemoDeployStep::handleMounted()
     if (m_needsInstall) {
         const QString remoteFilePath = deployMountPoint() + QLatin1Char('/')
             + QFileInfo(packagingStep()->packageFilePath()).fileName();
-        runDpkg(remoteFilePath);
+        runDpkg(remoteFilePath, false);
     } else {
         copyNextFileToDevice();
     }
@@ -605,11 +605,14 @@ void MaemoDeployStep::unmountOldDirs()
     m_mounter->unmount();
 }
 
-void MaemoDeployStep::runDpkg(const QString &packageFilePath)
+void MaemoDeployStep::runDpkg(const QString &packageFilePath,
+    bool removeAfterInstall)
 {
     writeOutput(tr("Installing package to device..."));
-    const QByteArray cmd = MaemoGlobal::remoteSudo().toUtf8() + " dpkg -i "
+    QByteArray cmd = MaemoGlobal::remoteSudo().toUtf8() + " dpkg -i "
         + packageFilePath.toUtf8();
+    if (removeAfterInstall)
+        cmd += " && rm " + packageFilePath.toUtf8() + " || :";
     m_deviceInstaller = m_connection->createRemoteProcess(cmd);
     connect(m_deviceInstaller.data(), SIGNAL(closed(int)), this,
         SLOT(handleInstallationFinished(int)));
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
index c88ab5f7a47..7c1076c2e12 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
@@ -134,7 +134,7 @@ private:
     void unmountOldDirs();
     void setupMount();
     void prepareSftpConnection();
-    void runDpkg(const QString &packageFilePath);
+    void runDpkg(const QString &packageFilePath, bool removeAfterInstall);
 
     static const QLatin1String Id;
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
index 84fdd1cb614..8431fea3ca1 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
@@ -113,7 +113,7 @@ void MaemoRemoteMounter::unmount()
 
     QString remoteCall;
     for (int i = 0; i < m_mountSpecs.count(); ++i) {
-        remoteCall += QString::fromLocal8Bit("%1 umount %2;")
+        remoteCall += QString::fromLocal8Bit("%1 umount %2 && %1 rmdir %2;")
             .arg(MaemoGlobal::remoteSudo(),
                 m_mountSpecs.at(i).mountSpec.remoteMountPoint);
     }
-- 
GitLab