[PackageKit-commit] packagekit: Branch 'master' - 9 commits

Richard Hughes hughsient at kemper.freedesktop.org
Sat Apr 12 20:44:24 PDT 2008


 backends/poldek/pk-backend-poldek.c     |  168 ++++++++++++-----
 backends/yum/helpers/yumBackend.py      |    2 
 backends/yum2/helpers/yumDBUSBackend.py |   22 +-
 client/pk-monitor.c                     |    4 
 docs/html/img/pk-added-deps.png         |binary
 docs/html/img/pk-backend-status.png     |binary
 docs/html/img/pk-repo.png               |binary
 docs/html/pk-screenshots.html           |    3 
 libpackagekit/pk-client.c               |    2 
 libpackagekit/pk-task-list.c            |   39 +++-
 libpackagekit/pk-task-list.h            |    2 
 src/pk-transaction.c                    |  303 ++++++++++++++++----------------
 12 files changed, 323 insertions(+), 222 deletions(-)

New commits:
commit fd596fad5dd239078bf7e7e45f07e3daba18bf62
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Apr 13 01:32:33 2008 +0100

    forward port the repo filtering form yum1 to yum2

diff --git a/backends/yum2/helpers/yumDBUSBackend.py b/backends/yum2/helpers/yumDBUSBackend.py
index 0361626..41ec362 100755
--- a/backends/yum2/helpers/yumDBUSBackend.py
+++ b/backends/yum2/helpers/yumDBUSBackend.py
@@ -1175,10 +1175,11 @@ class PackageKitYumBackend(PackageKitBaseBackend):
         self.StatusChanged(STATUS_INFO)
 
         for repo in self.yumbase.repos.repos.values():
-            if repo.isEnabled():
-                self.RepoDetail(repo.id,repo.name,True)
-            else:
-                self.RepoDetail(repo.id,repo.name,False)
+            if filters != FILTER_NOT_DEVELOPMENT or not self._is_development_repo(repo.id):
+                if repo.isEnabled():
+                    self.RepoDetail(repo.id,repo.name,True)
+                else:
+                    self.RepoDetail(repo.id,repo.name,False)
 
         self._unlock_yum()
         self.Finished(EXIT_SUCCESS)
@@ -1503,6 +1504,19 @@ class PackageKitYumBackend(PackageKitBaseBackend):
 
         return False
 
+    def _is_development_repo(self, repo):
+        if repo.endswith('-debuginfo'):
+            return True
+        if repo.endswith('-testing'):
+            return True
+        if repo.endswith('-debug'):
+            return True
+        if repo.endswith('-development'):
+            return True
+        if repo.endswith('-source'):
+            return True
+        return False
+
     def _buildGroupDict(self):
         pkgGroups= {}
         cats = self.yumbase.comps.categories
commit 414ee69c3ec5a5140a1daf8cb7315d8d8c50e937
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Apr 13 00:39:47 2008 +0100

    only connect the backend signals when the transaction is running, not wen it is queued.
    This bug could be observed when two transactions that are queued could sometimes 'share' the same tid,
    which made the client tools go crazy. A tricky one to find

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 3e6f1bd..dd069f4 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -194,112 +194,6 @@ pk_transaction_error_get_type (void)
 }
 
 /**
- * pk_transaction_set_running:
- */
-G_GNUC_WARN_UNUSED_RESULT static gboolean
-pk_transaction_set_running (PkTransaction *transaction)
-{
-	PkBackendDesc *desc;
-	PkTransactionPrivate *priv = PK_TRANSACTION_GET_PRIVATE (transaction);
-	g_return_val_if_fail (PK_IS_TRANSACTION (transaction), FALSE);
-	g_return_val_if_fail (transaction->priv->tid != NULL, FALSE);
-
-	/* assign */
-	pk_backend_set_current_tid (priv->backend, priv->tid);
-
-	/* i don't think we actually need to do this */
-	pk_backend_set_role (priv->backend, priv->role);
-
-	/* we are no longer waiting, we are setting up */
-	pk_backend_set_status (priv->backend, PK_STATUS_ENUM_SETUP);
-
-	/* mark running */
-	transaction->priv->running = TRUE;
-
-	/* lets reduce pointer dereferences... */
-	desc = priv->backend->desc;
-
-	/* do the correct action with the cached parameters */
-	if (priv->role == PK_ROLE_ENUM_GET_DEPENDS) {
-		desc->get_depends (priv->backend, priv->cached_filters, priv->cached_package_id, priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATE_DETAIL) {
-		desc->get_update_detail (priv->backend, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_RESOLVE) {
-		desc->resolve (priv->backend, priv->cached_filters, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_ROLLBACK) {
-		desc->rollback (priv->backend, priv->cached_transaction_id);
-	} else if (priv->role == PK_ROLE_ENUM_GET_DESCRIPTION) {
-		desc->get_description (priv->backend, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_GET_FILES) {
-		desc->get_files (priv->backend, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_GET_REQUIRES) {
-		desc->get_requires (priv->backend, priv->cached_filters, priv->cached_package_id, priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_WHAT_PROVIDES) {
-		desc->what_provides (priv->backend, priv->cached_filters, priv->cached_provides, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATES) {
-		desc->get_updates (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_GET_PACKAGES) {
-		desc->get_packages (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_DETAILS) {
-		desc->search_details (priv->backend, priv->cached_filters, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_FILE) {
-		desc->search_file (priv->backend,priv->cached_filters,priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_GROUP) {
-		desc->search_group (priv->backend, priv->cached_filters, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_NAME) {
-		desc->search_name (priv->backend,priv->cached_filters,priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_PACKAGE) {
-		desc->install_package (priv->backend, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_FILE) {
-		desc->install_file (priv->backend, priv->cached_full_path);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_SIGNATURE) {
-		desc->install_signature (priv->backend, PK_SIGTYPE_ENUM_GPG, priv->cached_key_id, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_SERVICE_PACK) {
-		desc->service_pack (priv->backend, priv->cached_full_path, priv->cached_enabled);
-	} else if (priv->role == PK_ROLE_ENUM_REFRESH_CACHE) {
-		desc->refresh_cache (priv->backend,  priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_REMOVE_PACKAGE) {
-		desc->remove_package (priv->backend, priv->cached_package_id, priv->cached_allow_deps, priv->cached_autoremove);
-	} else if (priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
-		desc->update_packages (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM) {
-		desc->update_system (priv->backend);
-	} else if (priv->role == PK_ROLE_ENUM_GET_REPO_LIST) {
-		desc->get_repo_list (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_REPO_ENABLE) {
-		desc->repo_enable (priv->backend, priv->cached_repo_id, priv->cached_enabled);
-	} else if (priv->role == PK_ROLE_ENUM_REPO_SET_DATA) {
-		desc->repo_set_data (priv->backend, priv->cached_repo_id, priv->cached_parameter, priv->cached_value);
-	} else {
-		pk_error ("failed to run as role not assigned");
-		return FALSE;
-	}
-	return TRUE;
-}
-
-/**
- * pk_transaction_run:
- */
-gboolean
-pk_transaction_run (PkTransaction *transaction)
-{
-	gboolean ret;
-	g_return_val_if_fail (PK_IS_TRANSACTION (transaction), FALSE);
-	g_return_val_if_fail (transaction->priv->tid != NULL, FALSE);
-
-	/* prepare for use; the transaction list ensures this is safe */
-	pk_backend_reset (transaction->priv->backend);
-
-	ret = pk_transaction_set_running (transaction);
-	if (ret) {
-		/* we start inhibited, it's up to the backed to
-		 * release early if a shutdown is possible */
-		pk_inhibit_add (transaction->priv->inhibit, transaction);
-	}
-	return ret;
-}
-
-/**
  * pk_transaction_get_runtime:
  *
  * Returns time running in ms
@@ -586,10 +480,6 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
 		pk_transaction_db_set_finished (transaction->priv->transaction_db, transaction->priv->tid, FALSE, time);
 	}
 
-	exit_text = pk_exit_enum_to_text (exit);
-	pk_debug ("emitting finished '%s', %i", exit_text, time);
-	g_signal_emit (transaction, signals [PK_TRANSACTION_FINISHED], 0, exit_text, time);
-
 	/* disconnect these straight away, as the PkTransaction object takes time to timeout */
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_allow_cancel);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_description);
@@ -604,6 +494,11 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_require_restart);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_status_changed);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_update_detail);
+
+	/* we emit last, as other backends will be running very soon after us, and we don't want to be notified */
+	exit_text = pk_exit_enum_to_text (exit);
+	pk_debug ("emitting finished '%s', %i", exit_text, time);
+	g_signal_emit (transaction, signals [PK_TRANSACTION_FINISHED], 0, exit_text, time);
 }
 
 /**
@@ -807,6 +702,154 @@ pk_transaction_update_detail_cb (PkBackend *backend, const gchar *package_id,
 		       package_id, updates, obsoletes, vendor_url, bugzilla_url, cve_url, restart_text, update_text);
 }
 
+
+/**
+ * pk_transaction_set_running:
+ */
+G_GNUC_WARN_UNUSED_RESULT static gboolean
+pk_transaction_set_running (PkTransaction *transaction)
+{
+	PkBackendDesc *desc;
+	PkTransactionPrivate *priv = PK_TRANSACTION_GET_PRIVATE (transaction);
+	g_return_val_if_fail (PK_IS_TRANSACTION (transaction), FALSE);
+	g_return_val_if_fail (transaction->priv->tid != NULL, FALSE);
+
+	/* prepare for use; the transaction list ensures this is safe */
+	pk_backend_reset (transaction->priv->backend);
+
+	/* assign */
+	pk_backend_set_current_tid (priv->backend, priv->tid);
+
+	/* set the role */
+	pk_backend_set_role (priv->backend, priv->role);
+
+	/* we are no longer waiting, we are setting up */
+	pk_backend_set_status (priv->backend, PK_STATUS_ENUM_SETUP);
+
+	/* connect up the signals */
+	transaction->priv->signal_allow_cancel =
+		g_signal_connect (transaction->priv->backend, "allow-cancel",
+				  G_CALLBACK (pk_transaction_allow_cancel_cb), transaction);
+	transaction->priv->signal_description =
+		g_signal_connect (transaction->priv->backend, "description",
+				  G_CALLBACK (pk_transaction_description_cb), transaction);
+	transaction->priv->signal_error_code =
+		g_signal_connect (transaction->priv->backend, "error-code",
+				  G_CALLBACK (pk_transaction_error_code_cb), transaction);
+	transaction->priv->signal_files =
+		g_signal_connect (transaction->priv->backend, "files",
+				  G_CALLBACK (pk_transaction_files_cb), transaction);
+	transaction->priv->signal_finished =
+		g_signal_connect (transaction->priv->backend, "finished",
+				  G_CALLBACK (pk_transaction_finished_cb), transaction);
+	transaction->priv->signal_message =
+		g_signal_connect (transaction->priv->backend, "message",
+				  G_CALLBACK (pk_transaction_message_cb), transaction);
+	transaction->priv->signal_package =
+		g_signal_connect (transaction->priv->backend, "package",
+				  G_CALLBACK (pk_transaction_package_cb), transaction);
+	transaction->priv->signal_progress_changed =
+		g_signal_connect (transaction->priv->backend, "progress-changed",
+				  G_CALLBACK (pk_transaction_progress_changed_cb), transaction);
+	transaction->priv->signal_repo_detail =
+		g_signal_connect (transaction->priv->backend, "repo-detail",
+				  G_CALLBACK (pk_transaction_repo_detail_cb), transaction);
+	transaction->priv->signal_repo_signature_required =
+		g_signal_connect (transaction->priv->backend, "repo-signature-required",
+				  G_CALLBACK (pk_transaction_repo_signature_required_cb), transaction);
+	transaction->priv->signal_require_restart =
+		g_signal_connect (transaction->priv->backend, "require-restart",
+				  G_CALLBACK (pk_transaction_require_restart_cb), transaction);
+	transaction->priv->signal_status_changed =
+		g_signal_connect (transaction->priv->backend, "status-changed",
+				  G_CALLBACK (pk_transaction_status_changed_cb), transaction);
+	transaction->priv->signal_update_detail =
+		g_signal_connect (transaction->priv->backend, "update-detail",
+				  G_CALLBACK (pk_transaction_update_detail_cb), transaction);
+
+	/* mark running */
+	transaction->priv->running = TRUE;
+
+	/* lets reduce pointer dereferences... */
+	desc = priv->backend->desc;
+
+	/* do the correct action with the cached parameters */
+	if (priv->role == PK_ROLE_ENUM_GET_DEPENDS) {
+		desc->get_depends (priv->backend, priv->cached_filters, priv->cached_package_id, priv->cached_force);
+	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATE_DETAIL) {
+		desc->get_update_detail (priv->backend, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_RESOLVE) {
+		desc->resolve (priv->backend, priv->cached_filters, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_ROLLBACK) {
+		desc->rollback (priv->backend, priv->cached_transaction_id);
+	} else if (priv->role == PK_ROLE_ENUM_GET_DESCRIPTION) {
+		desc->get_description (priv->backend, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_GET_FILES) {
+		desc->get_files (priv->backend, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_GET_REQUIRES) {
+		desc->get_requires (priv->backend, priv->cached_filters, priv->cached_package_id, priv->cached_force);
+	} else if (priv->role == PK_ROLE_ENUM_WHAT_PROVIDES) {
+		desc->what_provides (priv->backend, priv->cached_filters, priv->cached_provides, priv->cached_search);
+	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATES) {
+		desc->get_updates (priv->backend, priv->cached_filters);
+	} else if (priv->role == PK_ROLE_ENUM_GET_PACKAGES) {
+		desc->get_packages (priv->backend, priv->cached_filters);
+	} else if (priv->role == PK_ROLE_ENUM_SEARCH_DETAILS) {
+		desc->search_details (priv->backend, priv->cached_filters, priv->cached_search);
+	} else if (priv->role == PK_ROLE_ENUM_SEARCH_FILE) {
+		desc->search_file (priv->backend,priv->cached_filters,priv->cached_search);
+	} else if (priv->role == PK_ROLE_ENUM_SEARCH_GROUP) {
+		desc->search_group (priv->backend, priv->cached_filters, priv->cached_search);
+	} else if (priv->role == PK_ROLE_ENUM_SEARCH_NAME) {
+		desc->search_name (priv->backend,priv->cached_filters,priv->cached_search);
+	} else if (priv->role == PK_ROLE_ENUM_INSTALL_PACKAGE) {
+		desc->install_package (priv->backend, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_INSTALL_FILE) {
+		desc->install_file (priv->backend, priv->cached_full_path);
+	} else if (priv->role == PK_ROLE_ENUM_INSTALL_SIGNATURE) {
+		desc->install_signature (priv->backend, PK_SIGTYPE_ENUM_GPG, priv->cached_key_id, priv->cached_package_id);
+	} else if (priv->role == PK_ROLE_ENUM_SERVICE_PACK) {
+		desc->service_pack (priv->backend, priv->cached_full_path, priv->cached_enabled);
+	} else if (priv->role == PK_ROLE_ENUM_REFRESH_CACHE) {
+		desc->refresh_cache (priv->backend,  priv->cached_force);
+	} else if (priv->role == PK_ROLE_ENUM_REMOVE_PACKAGE) {
+		desc->remove_package (priv->backend, priv->cached_package_id, priv->cached_allow_deps, priv->cached_autoremove);
+	} else if (priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
+		desc->update_packages (priv->backend, priv->cached_package_ids);
+	} else if (priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM) {
+		desc->update_system (priv->backend);
+	} else if (priv->role == PK_ROLE_ENUM_GET_REPO_LIST) {
+		desc->get_repo_list (priv->backend, priv->cached_filters);
+	} else if (priv->role == PK_ROLE_ENUM_REPO_ENABLE) {
+		desc->repo_enable (priv->backend, priv->cached_repo_id, priv->cached_enabled);
+	} else if (priv->role == PK_ROLE_ENUM_REPO_SET_DATA) {
+		desc->repo_set_data (priv->backend, priv->cached_repo_id, priv->cached_parameter, priv->cached_value);
+	} else {
+		pk_error ("failed to run as role not assigned");
+		return FALSE;
+	}
+	return TRUE;
+}
+
+/**
+ * pk_transaction_run:
+ */
+gboolean
+pk_transaction_run (PkTransaction *transaction)
+{
+	gboolean ret;
+	g_return_val_if_fail (PK_IS_TRANSACTION (transaction), FALSE);
+	g_return_val_if_fail (transaction->priv->tid != NULL, FALSE);
+
+	ret = pk_transaction_set_running (transaction);
+	if (ret) {
+		/* we start inhibited, it's up to the backed to
+		 * release early if a shutdown is possible */
+		pk_inhibit_add (transaction->priv->inhibit, transaction);
+	}
+	return ret;
+}
+
 /**
  * pk_transaction_get_tid:
  */
@@ -2888,46 +2931,6 @@ pk_transaction_init (PkTransaction *transaction)
 	transaction->priv->role = PK_ROLE_ENUM_UNKNOWN;
 
 	transaction->priv->backend = pk_backend_new ();
-	transaction->priv->signal_allow_cancel =
-		g_signal_connect (transaction->priv->backend, "allow-cancel",
-				  G_CALLBACK (pk_transaction_allow_cancel_cb), transaction);
-	transaction->priv->signal_description =
-		g_signal_connect (transaction->priv->backend, "description",
-				  G_CALLBACK (pk_transaction_description_cb), transaction);
-	transaction->priv->signal_error_code =
-		g_signal_connect (transaction->priv->backend, "error-code",
-				  G_CALLBACK (pk_transaction_error_code_cb), transaction);
-	transaction->priv->signal_files =
-		g_signal_connect (transaction->priv->backend, "files",
-				  G_CALLBACK (pk_transaction_files_cb), transaction);
-	transaction->priv->signal_finished =
-		g_signal_connect (transaction->priv->backend, "finished",
-				  G_CALLBACK (pk_transaction_finished_cb), transaction);
-	transaction->priv->signal_message =
-		g_signal_connect (transaction->priv->backend, "message",
-				  G_CALLBACK (pk_transaction_message_cb), transaction);
-	transaction->priv->signal_package =
-		g_signal_connect (transaction->priv->backend, "package",
-				  G_CALLBACK (pk_transaction_package_cb), transaction);
-	transaction->priv->signal_progress_changed =
-		g_signal_connect (transaction->priv->backend, "progress-changed",
-				  G_CALLBACK (pk_transaction_progress_changed_cb), transaction);
-	transaction->priv->signal_repo_detail =
-		g_signal_connect (transaction->priv->backend, "repo-detail",
-				  G_CALLBACK (pk_transaction_repo_detail_cb), transaction);
-	transaction->priv->signal_repo_signature_required =
-		g_signal_connect (transaction->priv->backend, "repo-signature-required",
-				  G_CALLBACK (pk_transaction_repo_signature_required_cb), transaction);
-	transaction->priv->signal_require_restart =
-		g_signal_connect (transaction->priv->backend, "require-restart",
-				  G_CALLBACK (pk_transaction_require_restart_cb), transaction);
-	transaction->priv->signal_status_changed =
-		g_signal_connect (transaction->priv->backend, "status-changed",
-				  G_CALLBACK (pk_transaction_status_changed_cb), transaction);
-	transaction->priv->signal_update_detail =
-		g_signal_connect (transaction->priv->backend, "update-detail",
-				  G_CALLBACK (pk_transaction_update_detail_cb), transaction);
-
 	transaction->priv->security = pk_security_new ();
 	transaction->priv->cache = pk_cache_new ();
 	transaction->priv->notify = pk_notify_new ();
commit c012bbda9279bedc2b695ba83c22b655ac7bc92c
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Apr 13 00:04:28 2008 +0100

    fix some gtk-doc markup

diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index 7e1a366..ff9700d 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -119,8 +119,6 @@ G_DEFINE_TYPE (PkClient, pk_client, G_TYPE_OBJECT)
 /**
  * pk_client_error_quark:
  *
- * We are a clever GObject that sets errors
- *
  * Return value: Our personal error quark.
  **/
 GQuark
diff --git a/libpackagekit/pk-task-list.c b/libpackagekit/pk-task-list.c
index 53dedc6..76ab022 100644
--- a/libpackagekit/pk-task-list.c
+++ b/libpackagekit/pk-task-list.c
@@ -348,6 +348,7 @@ pk_task_list_class_init (PkTaskListClass *klass)
 
 	/**
 	 * PkTaskList::changed:
+	 * @tlist: the #PkTaskList instance that emitted the signal
 	 *
 	 * The ::changed signal is emitted when the transaction list has changed
 	 **/
@@ -359,6 +360,7 @@ pk_task_list_class_init (PkTaskListClass *klass)
 			      G_TYPE_NONE, 0);
 	/**
 	 * PkTaskList::status-changed:
+	 * @tlist: the #PkTaskList instance that emitted the signal
 	 *
 	 * The ::status-changed signal is emitted when one of the status' of the transaction list
 	 * clients has changed
@@ -371,7 +373,8 @@ pk_task_list_class_init (PkTaskListClass *klass)
 			      G_TYPE_NONE, 0);
 	/**
 	 * PkTaskList::message:
-	 * @client: the #PkTaskList instance that emitted the signal
+	 * @tlist: the #PkTaskList instance that emitted the signal
+	 * @client: the #PkClient instance that caused the signal
 	 * @message: the PkMessageEnum type of the message, e.g. PK_MESSAGE_ENUM_WARNING
 	 * @details: the non-localised message details
 	 *
@@ -386,7 +389,8 @@ pk_task_list_class_init (PkTaskListClass *klass)
 			      G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_STRING);
 	/**
 	 * PkTaskList::finished:
-	 * @client: the #PkTaskList instance that emitted the signal
+	 * @tlist: the #PkTaskList instance that emitted the signal
+	 * @client: the #PkClient instance that caused the signal
 	 * @exit: the #PkExitEnum status value, e.g. PK_EXIT_ENUM_SUCCESS
 	 * @runtime: the time in seconds the transaction has been running
 	 *
@@ -400,7 +404,8 @@ pk_task_list_class_init (PkTaskListClass *klass)
 			      G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_UINT);
 	/**
 	 * PkClient::error-code:
-	 * @client: the #PkClient instance that emitted the signal
+	 * @tlist: the #PkTaskList instance that emitted the signal
+	 * @client: the #PkClient instance that caused the signal
 	 * @code: the #PkErrorCodeEnum of the error, e.g. PK_ERROR_ENUM_DEP_RESOLUTION_FAILED
 	 * @details: the non-locaised details about the error
 	 *
commit 393dc44dce1152ee72d6859524cd3f264c0f8409
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Sun Apr 13 00:06:01 2008 +0200

    poldek: fix GetDepends to return correctly packages which will be installed

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index b07c726..f16af59 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -310,20 +310,33 @@ poldek_vf_progress_reset (void *bar)
 	td->pd->subpercentage = 0;
 }
 
-static gboolean
-poldek_pkg_in_array (const struct pkg *pkg, const tn_array *array, tn_fn_cmp cmp_fn) {
-	gint		i;
+/**
+ * poldek_pkg_in_array_idx:
+ *
+ * Returns index of the first matching package. If not found, -1 will be returned.
+ **/
+static gint
+poldek_pkg_in_array_idx (const struct pkg *pkg, const tn_array *array, tn_fn_cmp cmp_fn) {
+	gint	i;
 
 	if (array) {
 		for (i = 0; i < n_array_size (array); i++) {
 			struct pkg	*p = n_array_nth (array, i);
 
 			if (cmp_fn (pkg, p) == 0)
-				return TRUE;
+				return i;
 		}
 	}
 
-	return FALSE;
+	return -1;
+}
+
+static gboolean
+poldek_pkg_in_array (const struct pkg *pkg, const tn_array *array, tn_fn_cmp cmp_fn) {
+	if (poldek_pkg_in_array_idx (pkg, array, cmp_fn) == -1)
+		return FALSE;
+	else
+		return TRUE;
 }
 
 /**
@@ -750,6 +763,25 @@ do_depends (tn_array *installed, tn_array *available, tn_array *depends, struct
 				struct pkg	*p = n_array_nth (available, j);
 
 				if (pkg_satisfies_req (p, req, 1)) {
+					/* If only available packages are queried,
+					 * don't return these, which are installed.
+					 * Can be used to tell the user which packages
+					 * will be additionaly installed. */
+					if (pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+						gint	ret;
+
+						ret = poldek_pkg_in_array_idx (p, installed, (tn_fn_cmp)pkg_cmp_name);
+
+						if (ret >= 0) {
+							struct pkg	*ipkg = NULL;
+
+							ipkg = n_array_nth (installed, ret);
+
+							if (pkg_satisfies_req (ipkg, req, 1))
+								break;
+						}
+					}
+
 					n_array_push (depends, pkg_link (p));
 					n_array_push (tmp, pkg_link (p));
 					break;
commit e5796b348464a90d43f112e77064ee041c263c40
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Sat Apr 12 18:56:15 2008 +0200

    poldek: add GetPackages

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index 86ba125..b07c726 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -48,6 +48,7 @@ typedef enum {
 } TsType;
 
 enum {
+	SEARCH_ENUM_NONE,
 	SEARCH_ENUM_NAME,
 	SEARCH_ENUM_GROUP,
 	SEARCH_ENUM_DETAILS,
@@ -891,7 +892,7 @@ static gboolean
 search_package (PkBackendThread *thread, gpointer data)
 {
 	SearchData	 	*d = (SearchData*) data;
-	gchar			*search_inst = NULL;
+	gchar			*search_cmd = NULL;
 	struct poclidek_rcmd	*cmd = NULL;
 	PkBackend *backend;
 
@@ -901,32 +902,39 @@ search_package (PkBackendThread *thread, gpointer data)
 
 	cmd = poclidek_rcmd_new (cctx, NULL);
 
-	switch (d->mode)
-	{
+	switch (d->mode) {
+		/* GetPackages */
+		case SEARCH_ENUM_NONE:
+			search_cmd = g_strdup ("ls -q");
+			break;
+		/* SearchName */
 		case SEARCH_ENUM_NAME:
-			search_inst = g_strdup ("ls -q");
+			search_cmd = g_strdup_printf ("ls -q *%s*", d->search);
 			break;
+		/* SearchGroup */
 		case SEARCH_ENUM_GROUP:
-			search_inst = g_strdup ("search -qg");
+			search_cmd = g_strdup_printf ("search -qg *%s*", d->search);
 			break;
+		/* SearchDetails */
 		case SEARCH_ENUM_DETAILS:
-			search_inst = g_strdup ("search -dsq");
+			search_cmd = g_strdup_printf ("search -dsq *%s*", d->search);
 			break;
+		/* SearchFile */
 		case SEARCH_ENUM_FILE:
-			search_inst = g_strdup ("search -qlf");
+			search_cmd = g_strdup_printf ("search -qlf *%s*", d->search);
 			break;
 		default:
 			/* Error */
 			break;
 	}
 
-	if (cmd != NULL && search_inst)
+	if (cmd != NULL && search_cmd)
 	{
-		gchar		*command = NULL;
+		gchar		*command;
 		tn_array	*pkgs = NULL, *installed = NULL, *available = NULL;
 
 		if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
-			command = g_strdup_printf ("cd /installed; %s *%s*", search_inst, d->search);
+			command = g_strdup_printf ("cd /installed; %s", search_cmd);
 			if (poclidek_rcmd_execline (cmd, command)) {
 				gint	i;
 
@@ -943,7 +951,7 @@ search_package (PkBackendThread *thread, gpointer data)
 			g_free (command);
 		}
 		if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED)) {
-			command = g_strdup_printf ("cd /all-avail; %s *%s*", search_inst, d->search);
+			command = g_strdup_printf ("cd /all-avail; %s", search_cmd);
 			if (poclidek_rcmd_execline (cmd, command))
 				available = poclidek_rcmd_get_packages (cmd);
 
@@ -1030,12 +1038,10 @@ search_package (PkBackendThread *thread, gpointer data)
 		} else {
 			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "Package not found");
 		}
-
-		g_free (search_inst);
-
 		poclidek_rcmd_free (cmd);
 	}
 
+	g_free (search_cmd);
 	g_free (d->search);
 	g_free (d);
 
@@ -1352,6 +1358,23 @@ backend_get_files (PkBackend *backend, const gchar *package_id)
 }
 
 /**
+ * backend_get_packages:
+ **/
+static void
+backend_get_packages (PkBackend *backend, PkFilterEnum filters)
+{
+	SearchData	*data = g_new0 (SearchData, 1);
+
+	g_return_if_fail (backend != NULL);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+
+	data->mode = SEARCH_ENUM_NONE;
+	data->filters = filters;
+	pk_backend_thread_create (thread, search_package, data);
+}
+
+/**
  * backend_get_requires:
  */
 static gboolean
@@ -2008,7 +2031,7 @@ PK_BACKEND_OPTIONS (
 	backend_get_depends,				/* get_depends */
 	backend_get_description,			/* get_description */
 	backend_get_files,				/* get_files */
-	NULL,						/* get_packages */
+	backend_get_packages,				/* get_packages */
 	backend_get_repo_list,				/* get_repo_list */
 	backend_get_requires,				/* get_requires */
 	backend_get_update_detail,			/* get_update_detail */
commit 51af7e1d73512402675dab07e64e64c93667b018
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Sat Apr 12 17:54:25 2008 +0200

    poldek: fix conversion to PkFilterEnum

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index f139134..86ba125 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -596,7 +596,8 @@ do_requires (tn_array *installed, tn_array *available, tn_array *requires, struc
 
 	tmp = n_array_new (2, NULL, NULL);
 
-	if (pk_enums_contain (data->filters, PK_FILTER_ENUM_INSTALLED)) {
+	/* if ~installed doesn't exists in filters, we can query installed */
+	if (!pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
 		for (i = 0; i < n_array_size (installed); i++) {
 			struct pkg      *ipkg = n_array_nth (installed, i);
 			int j;
@@ -629,7 +630,7 @@ do_requires (tn_array *installed, tn_array *available, tn_array *requires, struc
                 	}
                 }
         }
-        if (pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+        if (!pk_enums_contain (data->filters, PK_FILTER_ENUM_INSTALLED)) {
 	        for (i = 0; i < n_array_size (available); i++) {
         	        struct pkg      *apkg = n_array_nth (available, i);
 	                int j;
@@ -663,7 +664,7 @@ do_requires (tn_array *installed, tn_array *available, tn_array *requires, struc
         }
 
 	/* FIXME: recursive takes too much time for available packages, so don't use it */
-	if (!pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+	if (pk_enums_contain (data->filters, PK_FILTER_ENUM_INSTALLED)) {
 		if (data->recursive && tmp && n_array_size (tmp) > 0) {
 			for (i = 0; i < n_array_size (tmp); i++) {
 				struct pkg	*p = n_array_nth (tmp, i);
@@ -726,7 +727,7 @@ do_depends (tn_array *installed, tn_array *available, tn_array *depends, struct
 			continue;
 
 		/* first check in installed packages */
-		if (pk_enums_contain (data->filters, PK_FILTER_ENUM_INSTALLED)) {
+		if (!pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
 			for (j = 0; j < n_array_size (installed); j++) {
 				struct pkg	*p = n_array_nth (installed, j);
 
@@ -743,7 +744,7 @@ do_depends (tn_array *installed, tn_array *available, tn_array *depends, struct
 			continue;
 
 		/* ... now available */
-		if (pk_enums_contain (data->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+		if (!pk_enums_contain (data->filters, PK_FILTER_ENUM_INSTALLED)) {
 			for (j = 0; j < n_array_size (available); j++) {
 				struct pkg	*p = n_array_nth (available, j);
 
@@ -924,8 +925,7 @@ search_package (PkBackendThread *thread, gpointer data)
 		gchar		*command = NULL;
 		tn_array	*pkgs = NULL, *installed = NULL, *available = NULL;
 
-		if (pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED))
-		{
+		if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
 			command = g_strdup_printf ("cd /installed; %s *%s*", search_inst, d->search);
 			if (poclidek_rcmd_execline (cmd, command)) {
 				gint	i;
@@ -942,8 +942,7 @@ search_package (PkBackendThread *thread, gpointer data)
 
 			g_free (command);
 		}
-		if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED))
-		{
+		if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED)) {
 			command = g_strdup_printf ("cd /all-avail; %s *%s*", search_inst, d->search);
 			if (poclidek_rcmd_execline (cmd, command))
 				available = poclidek_rcmd_get_packages (cmd);
@@ -951,8 +950,8 @@ search_package (PkBackendThread *thread, gpointer data)
 			g_free (command);
 		}
 
-		if (pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED) &&
-		    pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED) &&
+		if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED) &&
+		    !pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED) &&
 		    installed && available) {
 			gint	i;
 
@@ -973,7 +972,7 @@ search_package (PkBackendThread *thread, gpointer data)
 			n_array_sort_ex(pkgs, (tn_fn_cmp)pkg_cmp_name_evr_rev_recno);
 
 			n_array_free (available);
-		} else if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED) || available) {
+		} else if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED) || available) {
 			gint	i;
 
 			pkgs = available;
@@ -983,40 +982,46 @@ search_package (PkBackendThread *thread, gpointer data)
 
 				poldek_pkg_set_installed (pkg, FALSE);
 			}
-		} else if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_INSTALLED) || installed)
+		} else if (pk_enums_contain (d->filters, PK_FILTER_ENUM_INSTALLED) || installed)
 			pkgs = installed;
 
 		if (pkgs) {
 			gint	i;
 
-			if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_NEWEST) == FALSE)
+			if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NEWEST))
 				do_newest (pkgs);
 
 			for (i = 0; i < n_array_size (pkgs); i++) {
 				struct pkg	*pkg = n_array_nth (pkgs, i);
 
-				/* development filter */
-				if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_DEVELOPMENT) ||
-				    !pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
-					/* devel in filter */
-					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_DEVELOPMENT) && !poldek_pkg_is_devel (pkg))
-						continue;
-
-					/* ~devel in filter */
-					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_DEVELOPMENT) && poldek_pkg_is_devel (pkg))
-						continue;
+				/* check if we have to do development filtering
+				 * (devel or ~devel in filters) */
+				if (pk_enums_contain (d->filters, PK_FILTER_ENUM_DEVELOPMENT) ||
+				    pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
+					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_DEVELOPMENT)) {
+						/* devel in filters */
+						if (!poldek_pkg_is_devel (pkg))
+							continue;
+					} else {
+						/* ~devel in filters */
+						if (poldek_pkg_is_devel (pkg))
+							continue;
+					}
 				}
 
-				/* gui filter */
-				if (!pk_enums_contain (d->filters, PK_FILTER_ENUM_GUI) ||
-				    !pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_GUI)) {
-					/* gui in filter */
-					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_GUI) && !poldek_pkg_is_gui (pkg))
-						continue;
-
-					/* ~gui in filter */
-					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_GUI) && poldek_pkg_is_gui (pkg))
-						continue;
+				/* check if we have to do gui filtering
+				 * (gui or ~gui in filters) */
+				if (pk_enums_contain (d->filters, PK_FILTER_ENUM_GUI) ||
+				    pk_enums_contain (d->filters, PK_FILTER_ENUM_NOT_GUI)) {
+					if (pk_enums_contain (d->filters, PK_FILTER_ENUM_GUI)) {
+						/* gui in filters */
+						if (!poldek_pkg_is_gui (pkg))
+							continue;
+					} else {
+						/* ~gui in filters */
+						if (poldek_pkg_is_gui (pkg))
+							continue;
+					}
 				}
 
 				poldek_backend_package (pkg, PK_INFO_ENUM_UNKNOWN);
commit c5a010fb85c32a62f1d6617650ac585c24fdddee
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Apr 12 14:32:25 2008 +0100

    convert ::task-list-changed to ::changed and ::status-changed, as sometimes clients need to know the difference

diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index b7bb919..2d5114a 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -139,7 +139,9 @@ main (int argc, char *argv[])
 			  G_CALLBACK (pk_monitor_updates_changed_cb), NULL);
 
 	tlist = pk_task_list_new ();
-	g_signal_connect (tlist, "task-list-changed",
+	g_signal_connect (tlist, "changed",
+			  G_CALLBACK (pk_monitor_task_list_changed_cb), NULL);
+	g_signal_connect (tlist, "status-changed",
 			  G_CALLBACK (pk_monitor_task_list_changed_cb), NULL);
 
 	pk_debug ("refreshing task list");
diff --git a/libpackagekit/pk-task-list.c b/libpackagekit/pk-task-list.c
index b916221..53dedc6 100644
--- a/libpackagekit/pk-task-list.c
+++ b/libpackagekit/pk-task-list.c
@@ -69,6 +69,7 @@ struct _PkTaskListPrivate
 
 typedef enum {
 	PK_TASK_LIST_CHANGED,
+	PK_TASK_LIST_STATUS_CHANGED,
 	PK_TASK_LIST_MESSAGE,
 	PK_TASK_LIST_FINISHED,
 	PK_TASK_LIST_ERROR_CODE,
@@ -167,8 +168,8 @@ pk_task_list_status_changed_cb (PkClient *client, PkStatusEnum status, PkTaskLis
 	item->status = status;
 	g_free (tid);
 
-	pk_debug ("emit task-list-changed");
-	g_signal_emit (tlist, signals [PK_TASK_LIST_CHANGED], 0);
+	pk_debug ("emit status-changed");
+	g_signal_emit (tlist, signals [PK_TASK_LIST_STATUS_CHANGED], 0);
 }
 
 /**
@@ -317,7 +318,7 @@ pk_task_list_transaction_list_changed_cb (PkControl *control, PkTaskList *tlist)
 	g_return_if_fail (PK_IS_TASK_LIST (tlist));
 	/* for now, just refresh all the jobs. a little inefficient me thinks */
 	pk_task_list_refresh (tlist);
-	pk_debug ("emit task-list-changed");
+	pk_debug ("emit changed");
 	g_signal_emit (tlist , signals [PK_TASK_LIST_CHANGED], 0);
 }
 
@@ -346,14 +347,27 @@ pk_task_list_class_init (PkTaskListClass *klass)
 	object_class->finalize = pk_task_list_finalize;
 
 	/**
-	 * PkTaskList::task-list-changed:
+	 * PkTaskList::changed:
 	 *
-	 * The ::task-list-changed signal is emitted when the transaction list has changed
+	 * The ::changed signal is emitted when the transaction list has changed
 	 **/
 	signals [PK_TASK_LIST_CHANGED] =
-		g_signal_new ("task-list-changed",
+		g_signal_new ("changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+			      G_STRUCT_OFFSET (PkTaskListClass, changed),
+			      NULL, NULL, g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
+	/**
+	 * PkTaskList::status-changed:
+	 *
+	 * The ::status-changed signal is emitted when one of the status' of the transaction list
+	 * clients has changed
+	 **/
+	signals [PK_TASK_LIST_STATUS_CHANGED] =
+		g_signal_new ("status-changed",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (PkTaskListClass, status_changed),
+			      NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
 	/**
 	 * PkTaskList::message:
diff --git a/libpackagekit/pk-task-list.h b/libpackagekit/pk-task-list.h
index 8746bb5..47e57a1 100644
--- a/libpackagekit/pk-task-list.h
+++ b/libpackagekit/pk-task-list.h
@@ -58,6 +58,8 @@ struct _PkTaskList
 struct _PkTaskListClass
 {
 	GObjectClass	parent_class;
+	void		(* changed)			(PkTaskList	*tlist);
+	void		(* status_changed)		(PkTaskList	*tlist);
 	void		(* message)			(PkTaskList	*tlist,
 							 PkClient	*client,
 							 PkMessageEnum	 message,
commit 2954d45831cf3d630a0d919521db5996041767f7
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Apr 12 13:15:33 2008 +0100

    update screenshots

diff --git a/docs/html/img/pk-added-deps.png b/docs/html/img/pk-added-deps.png
new file mode 100644
index 0000000..29e5c81
Binary files /dev/null and b/docs/html/img/pk-added-deps.png differ
diff --git a/docs/html/img/pk-backend-status.png b/docs/html/img/pk-backend-status.png
index 5ccbcb3..1cdc711 100644
Binary files a/docs/html/img/pk-backend-status.png and b/docs/html/img/pk-backend-status.png differ
diff --git a/docs/html/img/pk-repo.png b/docs/html/img/pk-repo.png
index df40670..aa6fc66 100644
Binary files a/docs/html/img/pk-repo.png and b/docs/html/img/pk-repo.png differ
diff --git a/docs/html/pk-screenshots.html b/docs/html/pk-screenshots.html
index 82b6f33..5f4241a 100644
--- a/docs/html/pk-screenshots.html
+++ b/docs/html/pk-screenshots.html
@@ -41,6 +41,9 @@
 <center><img src="img/pk-progress.png" alt="[img]"/></center>
 <p class="caption">Progress dialog</p>
 
+<center><img src="img/pk-added-deps.png" alt="[img]"/></center>
+<p class="caption">Added check warning</p>
+
 <center><img src="img/pk-remove-confirm.png" alt="[img]"/></center>
 <p class="caption">Remove check warning</p>
 
commit 7f0abe1ac73762188ba859dff956c5740ed10c6c
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Apr 12 13:02:11 2008 +0100

    yum:fix my error in GetDepends

diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index ad26be5..e210751 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -780,7 +780,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
                 if self._is_inst(pkg) and FILTER_NOT_INSTALLED not in fltlist:
                     self.package(id, INFO_INSTALLED, pkg.summary)
                 else:
-                    if self._installable(pkg) and FILTER_NOT_INSTALLED not in fltlist:
+                    if self._installable(pkg) and FILTER_INSTALLED not in fltlist:
                         self.package(id, INFO_AVAILABLE, pkg.summary)
 
     def update_system(self):


More information about the PackageKit-commit mailing list