summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2020-02-03 13:05:23 +0100
committerRobert Griebl <robert.griebl@qt.io>2020-02-03 16:41:37 +0100
commit1aacec3d1ccb2ccff8abdde57a95dc61d4035702 (patch)
tree2058196485d630fce600da82bfa7ff90af221cb7
parent43e62d9eb104725407dce2ddfd7ba3d9cf58edc4 (diff)
Output an error message when trying to remove built-in packages
Change-Id: I83fe51acffc18c68be7b8894c641d902fe922945 Fixes: AUTOSUITE-1217 Reviewed-by: Dominik Holland <dominik.holland@qt.io>
-rw-r--r--src/manager-lib/deinstallationtask.cpp7
-rw-r--r--src/manager-lib/packagemanager.cpp6
2 files changed, 8 insertions, 5 deletions
diff --git a/src/manager-lib/deinstallationtask.cpp b/src/manager-lib/deinstallationtask.cpp
index 4695add6..0530cf23 100644
--- a/src/manager-lib/deinstallationtask.cpp
+++ b/src/manager-lib/deinstallationtask.cpp
@@ -76,11 +76,16 @@ void DeinstallationTask::execute()
// these have been checked in PackageManager::removePackage() already
Q_ASSERT(m_package);
Q_ASSERT(m_package->info());
- Q_ASSERT(m_package->info()->installationReport());
bool managerApproval = false;
try {
+ if (m_package->isBuiltIn() && !m_package->builtInHasRemovableUpdate())
+ throw Exception("There is no removable update for the built-in package %1").arg(m_package->id());
+
+ if (!m_package->info()->installationReport())
+ throw Exception("Cannot remove package %1 due to missing installation report").arg(m_package->id());
+
// we need to call those PackageManager methods in the correct thread
// this will also exclusively lock the package for us
QMetaObject::invokeMethod(PackageManager::instance(), [this, &managerApproval]()
diff --git a/src/manager-lib/packagemanager.cpp b/src/manager-lib/packagemanager.cpp
index 46eb2894..b379783e 100644
--- a/src/manager-lib/packagemanager.cpp
+++ b/src/manager-lib/packagemanager.cpp
@@ -1061,10 +1061,8 @@ QString PackageManager::removePackage(const QString &packageId, bool keepDocumen
AM_TRACE(LogInstaller, packageId, keepDocuments)
if (Package *package = fromId(packageId)) {
- if (package->info()->installationReport()) {
- return enqueueTask(new DeinstallationTask(package, d->installationPath,
- d->documentPath, force, keepDocuments));
- }
+ return enqueueTask(new DeinstallationTask(package, d->installationPath,
+ d->documentPath, force, keepDocuments));
}
return QString();
}