From 273d7c03a0f90ebd046a1087252ae9dc40996067 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 23 Nov 2011 12:50:52 +0100 Subject: Harmattan: Use pkgmgr for deployment instead of dpkg. Apparently, packages installed by dpkg are not uninstallable via the home screen. Change-Id: Ibe22b0ecde983ad3dfafb374eabff18db9055b74 Task-number: QTCREATORBUG-6603 Reviewed-by: Christian Kandeler --- .../madde/maddeuploadandinstallpackagesteps.cpp | 23 +++++++++++++++++++++- .../madde/maddeuploadandinstallpackagesteps.h | 1 - src/plugins/madde/maemopackageinstaller.cpp | 16 +++++++++++++++ src/plugins/madde/maemopackageinstaller.h | 12 +++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/plugins/madde/maddeuploadandinstallpackagesteps.cpp b/src/plugins/madde/maddeuploadandinstallpackagesteps.cpp index d3789c0967..3e5e32d9f2 100644 --- a/src/plugins/madde/maddeuploadandinstallpackagesteps.cpp +++ b/src/plugins/madde/maddeuploadandinstallpackagesteps.cpp @@ -36,6 +36,7 @@ #include "maemopackageinstaller.h" #include "maemoqemumanager.h" #include "qt4maemodeployconfiguration.h" +#include "qt4maemotarget.h" #include #include @@ -102,6 +103,23 @@ private: MaemoDebianPackageInstaller * const m_installer; }; +class HarmattanUploadAndInstallPackageAction : public AbstractMaddeUploadAndInstallPackageAction +{ + Q_OBJECT + +public: + HarmattanUploadAndInstallPackageAction(AbstractRemoteLinuxDeployStep *step) + : AbstractMaddeUploadAndInstallPackageAction(step), + m_installer(new HarmattanPackageInstaller(this)) + { + } + + AbstractRemoteLinuxPackageInstaller *packageInstaller() const { return m_installer; } + +private: + HarmattanPackageInstaller * const m_installer; +}; + class MeegoUploadAndInstallPackageAction : public AbstractMaddeUploadAndInstallPackageAction { Q_OBJECT @@ -137,7 +155,10 @@ MaemoUploadAndInstallPackageStep::MaemoUploadAndInstallPackageStep(ProjectExplor void MaemoUploadAndInstallPackageStep::ctor() { setDefaultDisplayName(displayName()); - m_deployService = new MaemoUploadAndInstallPackageAction(this); + if (qobject_cast(target())) + m_deployService = new HarmattanUploadAndInstallPackageAction(this); + else + m_deployService = new MaemoUploadAndInstallPackageAction(this); } AbstractRemoteLinuxDeployService *MaemoUploadAndInstallPackageStep::deployService() const diff --git a/src/plugins/madde/maddeuploadandinstallpackagesteps.h b/src/plugins/madde/maddeuploadandinstallpackagesteps.h index 3e4b209476..63dfeea2f9 100644 --- a/src/plugins/madde/maddeuploadandinstallpackagesteps.h +++ b/src/plugins/madde/maddeuploadandinstallpackagesteps.h @@ -62,7 +62,6 @@ private: RemoteLinux::AbstractUploadAndInstallPackageService *m_deployService; }; - class MeegoUploadAndInstallPackageStep : public RemoteLinux::AbstractRemoteLinuxDeployStep { Q_OBJECT diff --git a/src/plugins/madde/maemopackageinstaller.cpp b/src/plugins/madde/maemopackageinstaller.cpp index 57cbcf84dc..7f7400ab8d 100644 --- a/src/plugins/madde/maemopackageinstaller.cpp +++ b/src/plugins/madde/maemopackageinstaller.cpp @@ -97,5 +97,21 @@ QString MaemoRpmPackageInstaller::cancelInstallationCommandLine() const return QLatin1String("pkill rpm"); } +HarmattanPackageInstaller::HarmattanPackageInstaller(QObject *parent) + : AbstractRemoteLinuxPackageInstaller(parent) +{ +} + +QString HarmattanPackageInstaller::installCommandLine(const QString &packageFilePath) const +{ + return QLatin1String("pkgmgr install-file -f ") + packageFilePath + + QLatin1String(" |grep -v '%'"); // Otherwise, the terminal codes will screw with our output. +} + +QString HarmattanPackageInstaller::cancelInstallationCommandLine() const +{ + return QLatin1String("pkill pkgmgr"); +} + } // namespace Internal } // namespace Madde diff --git a/src/plugins/madde/maemopackageinstaller.h b/src/plugins/madde/maemopackageinstaller.h index 8749c2c635..8cf86170b0 100644 --- a/src/plugins/madde/maemopackageinstaller.h +++ b/src/plugins/madde/maemopackageinstaller.h @@ -68,6 +68,18 @@ private: QString cancelInstallationCommandLine() const; }; + +class HarmattanPackageInstaller: public RemoteLinux::AbstractRemoteLinuxPackageInstaller +{ + Q_OBJECT +public: + explicit HarmattanPackageInstaller(QObject *parent); + +private: + QString installCommandLine(const QString &packageFilePath) const; + QString cancelInstallationCommandLine() const; +}; + } // namespace Internal } // namespace Madde -- cgit v1.2.1