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