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

Richard Hughes hughsient at kemper.freedesktop.org
Tue Jul 28 04:18:14 PDT 2009


 autogen.sh                                       |    2 
 backends/apt/aptBackend.py                       |    3 
 backends/apt/pk-backend-apt.c                    |    2 
 backends/conary/conaryBackend.py                 |    3 
 backends/conary/pk-backend-conary.c              |    2 
 backends/pisi/pisiBackend.py                     |    3 
 backends/pisi/pk-backend-pisi.c                  |    2 
 backends/portage/pk-backend-portage.c            |    3 
 backends/portage/portageBackend.py               |  318 +++--
 backends/smart/pk-backend-smart.c                |    3 
 backends/smart/smartBackend.py                   |    3 
 backends/yum/pk-backend-yum.c                    |    3 
 backends/yum/yumBackend.py                       |   48 
 backends/yum/yumFilter.py                        |   19 
 client/pkcon.xml                                 |    2 
 client/pkmon.xml                                 |    2 
 configure.ac                                     |   34 
 contrib/PackageKit.catalog                       |    2 
 contrib/PackageKit.spec.in                       |    6 
 contrib/command-not-found/CommandNotFound.conf   |   25 
 contrib/command-not-found/pk-command-not-found.c |  148 ++
 contrib/debuginfo-install/Makefile.am            |    2 
 contrib/debuginfo-install/pk-debuginfo-install.c |   38 
 etc/PackageKit.conf.in                           |    4 
 lib/packagekit-glib/pk-client.c                  |   57 -
 lib/packagekit-glib/pk-enum.c                    |    1 
 lib/packagekit-glib/pk-enum.h                    |    1 
 lib/packagekit-qt/src/client.h                   |    1 
 lib/python/packagekit/backend.py                 |    9 
 lib/python/packagekit/filter.py                  |   18 
 po/de.po                                         | 1167 +++++++++++++--------
 po/es.po                                         |  112 +-
 po/pl.po                                         |  211 ++-
 po/sv.po                                         | 1274 ++++++++++++++++++-----
 src/pk-main.c                                    |    9 
 src/pk-network-stack-unix.c                      |  119 +-
 src/pk-polkit-action-lookup.c                    |   58 +
 src/pk-transaction-extra.c                       |  414 +++----
 src/pk-transaction-extra.h                       |   13 
 src/pk-transaction.c                             |   39 
 40 files changed, 2924 insertions(+), 1256 deletions(-)

New commits:
commit 1806afffc91fedac59e2785ba589a97f465ca2a1
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 11:47:51 2009 +0100

    Don't emit the RequireRestart security signals until the transaction completes with success. Fixes rh#513856

diff --git a/src/pk-transaction-extra.c b/src/pk-transaction-extra.c
index f29c40e..30fb179 100644
--- a/src/pk-transaction-extra.c
+++ b/src/pk-transaction-extra.c
@@ -54,6 +54,7 @@ struct PkTransactionExtraPrivate
 	guint			 package_id;
 	GHashTable		*hash;
 	GPtrArray		*files_list;
+	GPtrArray		*pids;
 };
 
 enum {
@@ -849,10 +850,10 @@ out:
 }
 
 /**
- * pk_transaction_extra_check_library_restart_emit:
+ * pk_transaction_extra_check_library_restart:
  **/
-static gboolean
-pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *extra, GPtrArray *pids)
+gboolean
+pk_transaction_extra_check_library_restart (PkTransactionExtra *extra)
 {
 	gint uid;
 	guint i;
@@ -864,11 +865,22 @@ pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *extra, GPtr
 	GPtrArray *files_session;
 	GPtrArray *files_system;
 	const PkPackageObj *obj;
+	GPtrArray *pids;
+
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
 	/* create arrays */
 	files_session = g_ptr_array_new ();
 	files_system = g_ptr_array_new ();
 
+	/* get local array */
+	pids = extra->priv->pids;
+	if (pids == NULL)
+		goto out;
+
+	/* set status */
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_CHECK_LIBRARIES);
+
 	/* find the package name of each pid */
 	for (i=0; i<pids->len; i++) {
 		pid = GPOINTER_TO_INT (g_ptr_array_index (pids, i));
@@ -942,7 +954,7 @@ out:
 }
 
 /**
- * pk_transaction_extra_check_library_restart:
+ * pk_transaction_extra_check_library_restart_pre:
  * @package_ids: the list of security updates
  *
  * This function does the following things:
@@ -954,13 +966,12 @@ out:
  *  6) For each package, emit a RequireRestart of the correct type (according to the UID)
  **/
 gboolean
-pk_transaction_extra_check_library_restart (PkTransactionExtra *extra, gchar **package_ids)
+pk_transaction_extra_check_library_restart_pre (PkTransactionExtra *extra, gchar **package_ids)
 {
 	PkStore *store;
 	guint signal_files = 0;
 	gboolean ret = TRUE;
 	gchar **files = NULL;
-	GPtrArray *pids;
 
 	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
@@ -973,6 +984,11 @@ pk_transaction_extra_check_library_restart (PkTransactionExtra *extra, gchar **p
 	g_ptr_array_foreach (extra->priv->files_list, (GFunc) g_free, NULL);
 	g_ptr_array_set_size (extra->priv->files_list, 0);
 
+	if (extra->priv->pids != NULL) {
+		g_ptr_array_free (extra->priv->pids, TRUE);
+		extra->priv->pids = NULL;
+	}
+
 	/* set status */
 	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_SCAN_PROCESS_LIST);
 	pk_transaction_extra_set_progress_changed (extra, 101);
@@ -1007,23 +1023,21 @@ pk_transaction_extra_check_library_restart (PkTransactionExtra *extra, gchar **p
 
 	/* get the list of PIDs */
 	files = pk_ptr_array_to_strv (extra->priv->files_list);
-	pids = pk_lsof_get_pids_for_filenames (extra->priv->lsof, files);
+	extra->priv->pids = pk_lsof_get_pids_for_filenames (extra->priv->lsof, files);
 
 	/* nothing depends on these libraries */
-	if (pids == NULL) {
+	if (extra->priv->pids == NULL) {
 		egg_warning ("failed to get process list");
 		goto out;
 	}
 
 	/* nothing depends on these libraries */
-	if (pids->len == 0) {
+	if (extra->priv->pids->len == 0) {
 		egg_warning ("no processes depend on these libraries");
 		goto out;
 	}
 
-	/* emit */
-	pk_transaction_extra_check_library_restart_emit (extra, pids);
-	g_ptr_array_free (pids, TRUE);
+	/* don't emit until we've run the transaction and it's success */
 out:
 	pk_transaction_extra_set_progress_changed (extra, 100);
 	if (signal_files > 0)
@@ -1047,6 +1061,8 @@ pk_transaction_extra_finalize (GObject *object)
 	g_signal_handler_disconnect (extra->priv->backend, extra->priv->finished_id);
 	g_signal_handler_disconnect (extra->priv->backend, extra->priv->package_id);
 
+	if (extra->priv->pids != NULL)
+		g_ptr_array_free (extra->priv->pids, TRUE);
 	if (g_main_loop_is_running (extra->priv->loop))
 		g_main_loop_quit (extra->priv->loop);
 	g_main_loop_unref (extra->priv->loop);
@@ -1111,6 +1127,7 @@ pk_transaction_extra_init (PkTransactionExtra *extra)
 	extra->priv->backend = pk_backend_new ();
 	extra->priv->lsof = pk_lsof_new ();
 	extra->priv->db = NULL;
+	extra->priv->pids = NULL;
 	extra->priv->hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
 	extra->priv->files_list = g_ptr_array_new ();
 
diff --git a/src/pk-transaction-extra.h b/src/pk-transaction-extra.h
index e7e6cb6..b42cd55 100644
--- a/src/pk-transaction-extra.h
+++ b/src/pk-transaction-extra.h
@@ -56,7 +56,8 @@ gboolean	 pk_transaction_extra_check_running_process	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
 gboolean	 pk_transaction_extra_check_desktop_files	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
-gboolean	 pk_transaction_extra_check_library_restart	(PkTransactionExtra	*extra,
+gboolean	 pk_transaction_extra_check_library_restart	(PkTransactionExtra	*extra);
+gboolean	 pk_transaction_extra_check_library_restart_pre	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
 
 G_END_DECLS
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index ce98f28..7dad87b 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -657,6 +657,15 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit_enum, PkTransact
 		}
 	}
 
+	/* look for library restarts */
+	if (exit_enum == PK_EXIT_ENUM_SUCCESS) {
+		ret = pk_conf_get_bool (transaction->priv->conf, "CheckSharedLibrariesInUse");
+		if (ret) {
+			/* now emit what we found ealier */
+			pk_transaction_extra_check_library_restart (transaction->priv->transaction_extra);
+		}
+	}
+
 	/* signals we are not allowed to send from the second phase post transaction */
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_allow_cancel);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_message);
@@ -1149,7 +1158,7 @@ pk_transaction_pre_transaction_checks (PkTransaction *transaction, gchar **packa
 
 	/* find files in security updates */
 	package_ids_security = pk_package_ids_from_array (list);
-	ret = pk_transaction_extra_check_library_restart (transaction->priv->transaction_extra, package_ids_security);
+	ret = pk_transaction_extra_check_library_restart_pre (transaction->priv->transaction_extra, package_ids_security);
 out:
 	g_strfreev (package_ids_security);
 	if (list != NULL) {
commit 001a1d1d0d2aeb894a5151e46d3844ebd8f5acc8
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 11:21:28 2009 +0100

    Fix a small memory leak in PkTransactionExtra

diff --git a/src/pk-transaction-extra.c b/src/pk-transaction-extra.c
index 4eada5a..f29c40e 100644
--- a/src/pk-transaction-extra.c
+++ b/src/pk-transaction-extra.c
@@ -595,6 +595,7 @@ pk_transaction_extra_update_process_list (PkTransactionExtra *extra)
 	pk_obj_list_clear (PK_OBJ_LIST(extra->priv->running_exec_list));
 	while (name != NULL) {
 		contents = NULL;
+		exec = NULL;
 		uid_file = g_build_filename ("/proc", name, "loginuid", NULL);
 
 		/* is a process file */
@@ -635,6 +636,7 @@ pk_transaction_extra_update_process_list (PkTransactionExtra *extra)
 		egg_debug ("uid=%i, pid=%i, exec=%s", uid, pid, exec);
 		pk_obj_list_add (PK_OBJ_LIST(extra->priv->running_exec_list), exec);
 out:
+		g_free (exec);
 		g_free (uid_file);
 		g_free (contents);
 		name = g_dir_read_name (dir);
commit ab196b1551af7d000e8473cf623e63edcce6ed98
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 11:11:03 2009 +0100

    bugfix: Fix a small memory leak in PkNetworkStackUnix

diff --git a/src/pk-network-stack-unix.c b/src/pk-network-stack-unix.c
index 3b961c3..5d5fd8f 100644
--- a/src/pk-network-stack-unix.c
+++ b/src/pk-network-stack-unix.c
@@ -58,6 +58,60 @@ G_DEFINE_TYPE (PkNetworkStackUnix, pk_network_stack_unix, PK_TYPE_NETWORK_STACK)
 #define PK_NETWORK_PROC_ROUTE	"/proc/net/route"
 
 /**
+ * pk_network_stack_unix_is_valid:
+ **/
+static gboolean
+pk_network_stack_unix_is_valid (const gchar *line)
+{
+	gchar **sections = NULL;
+	gboolean online = FALSE;
+	guint number_sections;
+
+	/* empty line */
+	if (egg_strzero (line))
+		goto out;
+
+	/* tab delimited */
+	sections = g_strsplit (line, "\t", 0);
+	if (sections == NULL) {
+		egg_warning ("unable to split %s", PK_NETWORK_PROC_ROUTE);
+		goto out;
+	}
+
+	/* is header? */
+	if (egg_strequal (sections[0], "Iface"))
+		goto out;
+
+	/* is loopback? */
+	if (egg_strequal (sections[0], "lo"))
+		goto out;
+
+	/* is correct parameters? */
+	number_sections = g_strv_length (sections);
+	if (number_sections != 11) {
+		egg_warning ("invalid line '%s' (%i)", line, number_sections);
+		goto out;
+	}
+
+	/* is destination zero (default route)? */
+	if (egg_strequal (sections[1], "00000000")) {
+		egg_debug ("destination %s is valid", sections[0]);
+		online = TRUE;
+		goto out;
+	}
+
+	/* is gateway nonzero? */
+	if (!egg_strequal (sections[2], "00000000")) {
+		egg_debug ("interface %s is valid", sections[0]);
+		online = TRUE;
+		goto out;
+	}
+out:
+	g_strfreev (sections);
+	return online;
+}
+
+/**
  * pk_network_stack_unix_get_state:
  **/
 static PkNetworkEnum
@@ -66,12 +120,11 @@ pk_network_stack_unix_get_state (PkNetworkStack *nstack)
 	gchar *contents = NULL;
 	gboolean ret;
 	GError *error = NULL;
-	gchar **lines;
-	gchar **sections;
+	gchar **lines = NULL;
 	guint number_lines;
-	guint number_sections;
 	guint i;
 	gboolean online = FALSE;
+	PkNetworkEnum state = PK_NETWORK_ENUM_ONLINE;
 
 	/* hack, because netlink is teh suck */
 	ret = g_file_get_contents (PK_NETWORK_PROC_ROUTE, &contents, NULL, &error);
@@ -79,73 +132,37 @@ pk_network_stack_unix_get_state (PkNetworkStack *nstack)
 		egg_warning ("could not open %s: %s", PK_NETWORK_PROC_ROUTE, error->message);
 		g_error_free (error);
 		/* no idea whatsoever! */
-		return PK_NETWORK_ENUM_ONLINE;
+		goto out;
 	}
 
 	/* something insane */
 	if (contents == NULL) {
 		egg_warning ("insane contents of %s", PK_NETWORK_PROC_ROUTE);
-		return PK_NETWORK_ENUM_ONLINE;
+		goto out;
 	}
 
 	/* one line per interface */
 	lines = g_strsplit (contents, "\n", 0);
 	if (lines == NULL) {
 		egg_warning ("unable to split %s", PK_NETWORK_PROC_ROUTE);
-		return PK_NETWORK_ENUM_ONLINE;
+		goto out;
 	}
 
 	number_lines = g_strv_length (lines);
 	for (i=0; i<number_lines; i++) {
-		/* empty line */
-		if (egg_strzero (lines[i])) {
-			continue;
-		}
-
-		/* tab delimited */
-		sections = g_strsplit (lines[i], "\t", 0);
-		if (sections == NULL) {
-			egg_warning ("unable to split %s", PK_NETWORK_PROC_ROUTE);
-			continue;
-		}
-
-		/* is header? */
-		if (egg_strequal (sections[0], "Iface")) {
-			continue;
-		}
-
-		/* is loopback? */
-		if (egg_strequal (sections[0], "lo")) {
-			continue;
-		}
-
-		/* is correct parameters? */
-		number_sections = g_strv_length (sections);
-		if (number_sections != 11) {
-			egg_warning ("invalid line '%s' (%i)", lines[i], number_sections);
-			continue;
-		}
-
-		/* is destination zero (default route)? */
-		if (egg_strequal (sections[1], "00000000")) {
-			egg_debug ("destination %s is valid", sections[0]);
-			online = TRUE;
-		}
 
-		/* is gateway nonzero? */
-		if (!egg_strequal (sections[2], "00000000")) {
-			egg_debug ("interface %s is valid", sections[0]);
+		/* is valid interface */
+		ret = pk_network_stack_unix_is_valid (lines[i]);
+		if (ret)
 			online = TRUE;
-		}
-		g_strfreev (sections);
-	}
-	g_strfreev (lines);
-
-	if (online) {
-		return PK_NETWORK_ENUM_ONLINE;
 	}
 
-	return PK_NETWORK_ENUM_OFFLINE;
+	if (!online)
+		state = PK_NETWORK_ENUM_OFFLINE;
+out:
+	g_free (contents);
+	g_strfreev (lines);
+	return state;
 }
 
 /**
commit fc8511bb4a918b7b0b20ba273d12189837321e80
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 10:56:04 2009 +0100

    Fix up a tiny problem with setting a NULL environment

diff --git a/src/pk-main.c b/src/pk-main.c
index 7e446db..8c245f3 100644
--- a/src/pk-main.c
+++ b/src/pk-main.c
@@ -284,9 +284,12 @@ main (int argc, char *argv[])
 	env_pk_console = g_getenv (EGG_CONSOLE);
 	env_pk_logging = g_getenv (EGG_LOGGING);
 	clearenv ();
-	g_setenv (EGG_VERBOSE, env_pk_verbose, FALSE);
-	g_setenv (EGG_CONSOLE, env_pk_console, FALSE);
-	g_setenv (EGG_LOGGING, env_pk_logging, FALSE);
+	if (env_pk_verbose != NULL)
+		g_setenv (EGG_VERBOSE, env_pk_verbose, FALSE);
+	if (env_pk_console != NULL)
+		g_setenv (EGG_CONSOLE, env_pk_console, FALSE);
+	if (env_pk_logging != NULL)
+		g_setenv (EGG_LOGGING, env_pk_logging, FALSE);
 #endif
 
 	/* get values from the config file */
commit 5afb59da148a9730b469e8a825ae05d4c5c933f9
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 10:25:30 2009 +0100

    Add some trivial docs

diff --git a/src/pk-transaction-extra.c b/src/pk-transaction-extra.c
index 4b8cc14..4eada5a 100644
--- a/src/pk-transaction-extra.c
+++ b/src/pk-transaction-extra.c
@@ -941,6 +941,15 @@ out:
 
 /**
  * pk_transaction_extra_check_library_restart:
+ * @package_ids: the list of security updates
+ *
+ * This function does the following things:
+ *  1) Refreshes the list of open files
+ *  2) Gets the list of library files from the security updates
+ *  3) Gets a list of pids that are using the libraries
+ *  4) The list of pids are converted to a list of files
+ *  5) The list of files is converted to a list of packages
+ *  6) For each package, emit a RequireRestart of the correct type (according to the UID)
  **/
 gboolean
 pk_transaction_extra_check_library_restart (PkTransactionExtra *extra, gchar **package_ids)
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 43b53ef..ce98f28 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1067,6 +1067,9 @@ pk_transaction_update_detail_cb (PkBackend *backend, const PkUpdateDetailObj *de
 
 /**
  * pk_transaction_pre_transaction_checks:
+ * @package_ids: the list of packages to process
+ *
+ * This function does any pre-transaction checks
  */
 static gboolean
 pk_transaction_pre_transaction_checks (PkTransaction *transaction, gchar **package_ids)
commit 69a6bb5f575636438fb4c9c6fdee1eda436afc79
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 28 09:28:48 2009 +0100

    Rename a object prefix

diff --git a/src/pk-transaction-extra.c b/src/pk-transaction-extra.c
index d69b2c3..4b8cc14 100644
--- a/src/pk-transaction-extra.c
+++ b/src/pk-transaction-extra.c
@@ -70,81 +70,81 @@ G_DEFINE_TYPE (PkTransactionExtra, pk_transaction_extra, G_TYPE_OBJECT)
  * pk_transaction_extra_finished_cb:
  **/
 static void
-pk_transaction_extra_finished_cb (PkBackend *backend, PkExitEnum exit_enum, PkTransactionExtra *post)
+pk_transaction_extra_finished_cb (PkBackend *backend, PkExitEnum exit_enum, PkTransactionExtra *extra)
 {
-	if (g_main_loop_is_running (post->priv->loop))
-		g_main_loop_quit (post->priv->loop);
+	if (g_main_loop_is_running (extra->priv->loop))
+		g_main_loop_quit (extra->priv->loop);
 }
 
 /**
  * pk_transaction_extra_package_cb:
  **/
 static void
-pk_transaction_extra_package_cb (PkBackend *backend, const PkPackageObj *obj, PkTransactionExtra *post)
+pk_transaction_extra_package_cb (PkBackend *backend, const PkPackageObj *obj, PkTransactionExtra *extra)
 {
-	pk_obj_list_add (PK_OBJ_LIST(post->priv->list), obj);
+	pk_obj_list_add (PK_OBJ_LIST(extra->priv->list), obj);
 }
 
 /**
  * pk_transaction_extra_set_require_restart:
  **/
 static void
-pk_transaction_extra_set_require_restart (PkTransactionExtra *post, PkRestartEnum restart, const gchar *package_id)
+pk_transaction_extra_set_require_restart (PkTransactionExtra *extra, PkRestartEnum restart, const gchar *package_id)
 {
 	egg_debug ("emit require-restart %s, %s", pk_restart_enum_to_text (restart), package_id);
-	g_signal_emit (post, signals [PK_POST_TRANS_REQUIRE_RESTART], 0, restart, package_id);
+	g_signal_emit (extra, signals [PK_POST_TRANS_REQUIRE_RESTART], 0, restart, package_id);
 }
 
 /**
  * pk_transaction_extra_set_status_changed:
  **/
 static void
-pk_transaction_extra_set_status_changed (PkTransactionExtra *post, PkStatusEnum status)
+pk_transaction_extra_set_status_changed (PkTransactionExtra *extra, PkStatusEnum status)
 {
 	egg_debug ("emiting status-changed %s", pk_status_enum_to_text (status));
-	g_signal_emit (post, signals [PK_POST_TRANS_STATUS_CHANGED], 0, status);
+	g_signal_emit (extra, signals [PK_POST_TRANS_STATUS_CHANGED], 0, status);
 }
 
 /**
  * pk_transaction_extra_set_progress_changed:
  **/
 static void
-pk_transaction_extra_set_progress_changed (PkTransactionExtra *post, guint percentage)
+pk_transaction_extra_set_progress_changed (PkTransactionExtra *extra, guint percentage)
 {
 	egg_debug ("emiting progress-changed %i", percentage);
-	g_signal_emit (post, signals [PK_POST_TRANS_PROGRESS_CHANGED], 0, percentage, 0, 0, 0);
+	g_signal_emit (extra, signals [PK_POST_TRANS_PROGRESS_CHANGED], 0, percentage, 0, 0, 0);
 }
 
 /**
  * pk_transaction_extra_get_installed_package_for_file:
  **/
 static const PkPackageObj *
-pk_transaction_extra_get_installed_package_for_file (PkTransactionExtra *post, const gchar *filename)
+pk_transaction_extra_get_installed_package_for_file (PkTransactionExtra *extra, const gchar *filename)
 {
 	guint size;
 	const PkPackageObj *obj = NULL;
 	PkStore *store;
 
 	/* use PK to find the correct package */
-	pk_obj_list_clear (PK_OBJ_LIST(post->priv->list));
-	pk_backend_reset (post->priv->backend);
-	store = pk_backend_get_store (post->priv->backend);
+	pk_obj_list_clear (PK_OBJ_LIST(extra->priv->list));
+	pk_backend_reset (extra->priv->backend);
+	store = pk_backend_get_store (extra->priv->backend);
 	pk_store_set_uint (store, "filters", pk_bitfield_value (PK_FILTER_ENUM_INSTALLED));
 	pk_store_set_string (store, "search", filename);
-	post->priv->backend->desc->search_file (post->priv->backend, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), filename);
+	extra->priv->backend->desc->search_file (extra->priv->backend, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), filename);
 
 	/* wait for finished */
-	g_main_loop_run (post->priv->loop);
+	g_main_loop_run (extra->priv->loop);
 
 	/* check that we only matched one package */
-	size = pk_package_list_get_size (post->priv->list);
+	size = pk_package_list_get_size (extra->priv->list);
 	if (size != 1) {
 		egg_warning ("not correct size, %i", size);
 		goto out;
 	}
 
 	/* get the obj */
-	obj = pk_package_list_get_obj (post->priv->list, 0);
+	obj = pk_package_list_get_obj (extra->priv->list, 0);
 	if (obj == NULL) {
 		egg_warning ("cannot get obj");
 		goto out;
@@ -205,13 +205,13 @@ out:
  * pk_transaction_extra_sqlite_remove_filename:
  **/
 static gint
-pk_transaction_extra_sqlite_remove_filename (PkTransactionExtra *post, const gchar *filename)
+pk_transaction_extra_sqlite_remove_filename (PkTransactionExtra *extra, const gchar *filename)
 {
 	gchar *statement;
 	gint rc;
 
 	statement = g_strdup_printf ("DELETE FROM cache WHERE filename = '%s'", filename);
-	rc = sqlite3_exec (post->priv->db, statement, NULL, NULL, NULL);
+	rc = sqlite3_exec (extra->priv->db, statement, NULL, NULL, NULL);
 	g_free (statement);
 	return rc;
 }
@@ -220,7 +220,7 @@ pk_transaction_extra_sqlite_remove_filename (PkTransactionExtra *post, const gch
  * pk_transaction_extra_sqlite_add_filename_details:
  **/
 static gint
-pk_transaction_extra_sqlite_add_filename_details (PkTransactionExtra *post, const gchar *filename, const gchar *package, const gchar *md5)
+pk_transaction_extra_sqlite_add_filename_details (PkTransactionExtra *extra, const gchar *filename, const gchar *package, const gchar *md5)
 {
 	gchar *statement;
 	gchar *error_msg = NULL;
@@ -242,13 +242,13 @@ pk_transaction_extra_sqlite_add_filename_details (PkTransactionExtra *post, cons
 
 	/* the row might already exist */
 	statement = g_strdup_printf ("DELETE FROM cache WHERE filename = '%s'", filename);
-	sqlite3_exec (post->priv->db, statement, NULL, NULL, NULL);
+	sqlite3_exec (extra->priv->db, statement, NULL, NULL, NULL);
 	g_free (statement);
 
 	/* prepare the query, as we don't escape it */
-	rc = sqlite3_prepare_v2 (post->priv->db, "INSERT INTO cache (filename, package, show, md5) VALUES (?, ?, ?, ?)", -1, &sql_statement, NULL);
+	rc = sqlite3_prepare_v2 (extra->priv->db, "INSERT INTO cache (filename, package, show, md5) VALUES (?, ?, ?, ?)", -1, &sql_statement, NULL);
 	if (rc != SQLITE_OK) {
-		egg_warning ("SQL failed to prepare: %s", sqlite3_errmsg (post->priv->db));
+		egg_warning ("SQL failed to prepare: %s", sqlite3_errmsg (extra->priv->db));
 		goto out;
 	}
 
@@ -275,7 +275,7 @@ out:
  * pk_transaction_extra_sqlite_add_filename:
  **/
 static gint
-pk_transaction_extra_sqlite_add_filename (PkTransactionExtra *post, const gchar *filename, const gchar *md5_opt)
+pk_transaction_extra_sqlite_add_filename (PkTransactionExtra *extra, const gchar *filename, const gchar *md5_opt)
 {
 	gchar *md5 = NULL;
 	gchar *package = NULL;
@@ -289,14 +289,14 @@ pk_transaction_extra_sqlite_add_filename (PkTransactionExtra *post, const gchar
 		md5 = pk_transaction_extra_get_filename_md5 (filename);
 
 	/* resolve */
-	obj = pk_transaction_extra_get_installed_package_for_file (post, filename);
+	obj = pk_transaction_extra_get_installed_package_for_file (extra, filename);
 	if (obj == NULL) {
 		egg_warning ("failed to get list");
 		goto out;
 	}
 
 	/* add */
-	rc = pk_transaction_extra_sqlite_add_filename_details (post, filename, obj->id->name, md5);
+	rc = pk_transaction_extra_sqlite_add_filename_details (extra, filename, obj->id->name, md5);
 out:
 	g_free (md5);
 	g_free (package);
@@ -309,7 +309,7 @@ out:
 static gint
 pk_transaction_extra_sqlite_cache_rescan_cb (void *data, gint argc, gchar **argv, gchar **col_name)
 {
-	PkTransactionExtra *post = PK_POST_TRANS (data);
+	PkTransactionExtra *extra = PK_POST_TRANS (data);
 	const gchar *filename = NULL;
 	const gchar *md5 = NULL;
 	gchar *md5_calc = NULL;
@@ -333,17 +333,17 @@ pk_transaction_extra_sqlite_cache_rescan_cb (void *data, gint argc, gchar **argv
 	md5_calc = pk_transaction_extra_get_filename_md5 (filename);
 	if (md5_calc == NULL) {
 		egg_debug ("remove of %s as no longer found", filename);
-		pk_transaction_extra_sqlite_remove_filename (post, filename);
+		pk_transaction_extra_sqlite_remove_filename (extra, filename);
 		goto out;
 	}
 
 	/* we've checked the file */
-	g_hash_table_insert (post->priv->hash, g_strdup (filename), GUINT_TO_POINTER (1));
+	g_hash_table_insert (extra->priv->hash, g_strdup (filename), GUINT_TO_POINTER (1));
 
 	/* check md5 is same */
 	if (g_strcmp0 (md5, md5_calc) != 0) {
 		egg_debug ("add of %s as md5 invalid (%s vs %s)", filename, md5, md5_calc);
-		pk_transaction_extra_sqlite_add_filename (post, filename, md5_calc);
+		pk_transaction_extra_sqlite_add_filename (extra, filename, md5_calc);
 	}
 
 	egg_debug ("existing filename %s valid, md5=%s", filename, md5);
@@ -356,7 +356,7 @@ out:
  * pk_transaction_extra_import_desktop_files:
  **/
 gboolean
-pk_transaction_extra_import_desktop_files (PkTransactionExtra *post)
+pk_transaction_extra_import_desktop_files (PkTransactionExtra *extra)
 {
 	gchar *statement;
 	gchar *error_msg = NULL;
@@ -370,25 +370,25 @@ pk_transaction_extra_import_desktop_files (PkTransactionExtra *post)
 	gfloat step;
 	guint i;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
-	g_return_val_if_fail (post->priv->db != NULL, FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
+	g_return_val_if_fail (extra->priv->db != NULL, FALSE);
 
-	if (post->priv->backend->desc->search_file == NULL) {
+	if (extra->priv->backend->desc->search_file == NULL) {
 		egg_debug ("cannot search files");
 		return FALSE;
 	}
 
 	/* use a local backend instance */
-	pk_backend_reset (post->priv->backend);
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_SCAN_APPLICATIONS);
+	pk_backend_reset (extra->priv->backend);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_SCAN_APPLICATIONS);
 
 	/* reset hash */
-	g_hash_table_remove_all (post->priv->hash);
-	pk_transaction_extra_set_progress_changed (post, 101);
+	g_hash_table_remove_all (extra->priv->hash);
+	pk_transaction_extra_set_progress_changed (extra, 101);
 
 	/* first go through the existing data, and look for modifications and removals */
 	statement = g_strdup ("SELECT filename, md5 FROM cache");
-	rc = sqlite3_exec (post->priv->db, statement, pk_transaction_extra_sqlite_cache_rescan_cb, post, &error_msg);
+	rc = sqlite3_exec (extra->priv->db, statement, pk_transaction_extra_sqlite_cache_rescan_cb, extra, &error_msg);
 	g_free (statement);
 	if (rc != SQLITE_OK) {
 		egg_warning ("SQL error: %s\n", error_msg);
@@ -409,7 +409,7 @@ pk_transaction_extra_import_desktop_files (PkTransactionExtra *post)
 	while (filename != NULL) {
 		if (g_str_has_suffix (filename, ".desktop")) {
 			path = g_build_filename (PK_DESKTOP_DEFAULT_APPLICATION_DIR, filename, NULL);
-			data = g_hash_table_lookup (post->priv->hash, path);
+			data = g_hash_table_lookup (extra->priv->hash, path);
 			if (data == NULL) {
 				egg_debug ("add of %s as not present in db", path);
 				g_ptr_array_add (array, g_strdup (path));
@@ -421,20 +421,20 @@ pk_transaction_extra_import_desktop_files (PkTransactionExtra *post)
 	g_dir_close (dir);
 
 	step = 100.0f / array->len;
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_GENERATE_PACKAGE_LIST);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_GENERATE_PACKAGE_LIST);
 
 	/* process files in an array */
 	for (i=0; i<array->len; i++) {
-		pk_transaction_extra_set_progress_changed (post, i * step);
+		pk_transaction_extra_set_progress_changed (extra, i * step);
 		path = g_ptr_array_index (array, i);
-		pk_transaction_extra_sqlite_add_filename (post, path, NULL);
+		pk_transaction_extra_sqlite_add_filename (extra, path, NULL);
 	}
 	g_ptr_array_foreach (array, (GFunc) g_free, NULL);
 	g_ptr_array_free (array, TRUE);
 
 out:
-	pk_transaction_extra_set_progress_changed (post, 100);
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_FINISHED);
+	pk_transaction_extra_set_progress_changed (extra, 100);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_FINISHED);
 	return TRUE;
 }
 
@@ -442,13 +442,13 @@ out:
  * pk_transaction_extra_update_package_list:
  **/
 gboolean
-pk_transaction_extra_update_package_list (PkTransactionExtra *post)
+pk_transaction_extra_update_package_list (PkTransactionExtra *extra)
 {
 	gboolean ret;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
-	if (post->priv->backend->desc->get_packages == NULL) {
+	if (extra->priv->backend->desc->get_packages == NULL) {
 		egg_debug ("cannot get packages");
 		return FALSE;
 	}
@@ -456,31 +456,31 @@ pk_transaction_extra_update_package_list (PkTransactionExtra *post)
 	egg_debug ("updating package lists");
 
 	/* clear old list */
-	pk_obj_list_clear (PK_OBJ_LIST(post->priv->list));
+	pk_obj_list_clear (PK_OBJ_LIST(extra->priv->list));
 
 	/* update UI */
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_GENERATE_PACKAGE_LIST);
-	pk_transaction_extra_set_progress_changed (post, 101);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_GENERATE_PACKAGE_LIST);
+	pk_transaction_extra_set_progress_changed (extra, 101);
 
 	/* get the new package list */
-	pk_backend_reset (post->priv->backend);
-	pk_store_set_uint (pk_backend_get_store (post->priv->backend), "filters", pk_bitfield_value (PK_FILTER_ENUM_NONE));
-	post->priv->backend->desc->get_packages (post->priv->backend, PK_FILTER_ENUM_NONE);
+	pk_backend_reset (extra->priv->backend);
+	pk_store_set_uint (pk_backend_get_store (extra->priv->backend), "filters", pk_bitfield_value (PK_FILTER_ENUM_NONE));
+	extra->priv->backend->desc->get_packages (extra->priv->backend, PK_FILTER_ENUM_NONE);
 
 	/* wait for finished */
-	g_main_loop_run (post->priv->loop);
+	g_main_loop_run (extra->priv->loop);
 
 	/* update UI */
-	pk_transaction_extra_set_progress_changed (post, 90);
+	pk_transaction_extra_set_progress_changed (extra, 90);
 
 	/* convert to a file */
-	ret = pk_obj_list_to_file (PK_OBJ_LIST(post->priv->list), PK_SYSTEM_PACKAGE_LIST_FILENAME);
+	ret = pk_obj_list_to_file (PK_OBJ_LIST(extra->priv->list), PK_SYSTEM_PACKAGE_LIST_FILENAME);
 	if (!ret)
 		egg_warning ("failed to save to file");
 
 	/* update UI */
-	pk_transaction_extra_set_progress_changed (post, 100);
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_FINISHED);
+	pk_transaction_extra_set_progress_changed (extra, 100);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_FINISHED);
 
 	return ret;
 }
@@ -489,12 +489,12 @@ pk_transaction_extra_update_package_list (PkTransactionExtra *post)
  * pk_transaction_extra_clear_firmware_requests:
  **/
 gboolean
-pk_transaction_extra_clear_firmware_requests (PkTransactionExtra *post)
+pk_transaction_extra_clear_firmware_requests (PkTransactionExtra *extra)
 {
 	gboolean ret;
 	gchar *filename;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
 	/* clear the firmware requests directory */
 	filename = g_build_filename (LOCALSTATEDIR, "run", "PackageKit", "udev", NULL);
@@ -512,7 +512,7 @@ pk_transaction_extra_clear_firmware_requests (PkTransactionExtra *post)
  **/
 static void
 pk_transaction_extra_update_files_check_running_cb (PkBackend *backend, const gchar *package_id,
-					     const gchar *filelist, PkTransactionExtra *post)
+					     const gchar *filelist, PkTransactionExtra *extra)
 {
 	guint i;
 	guint len;
@@ -532,7 +532,7 @@ pk_transaction_extra_update_files_check_running_cb (PkBackend *backend, const gc
 			continue;
 
 		/* running? */
-		ret = pk_obj_list_exists (PK_OBJ_LIST(post->priv->running_exec_list), files[i]);
+		ret = pk_obj_list_exists (PK_OBJ_LIST(extra->priv->running_exec_list), files[i]);
 		if (!ret)
 			continue;
 
@@ -541,7 +541,7 @@ pk_transaction_extra_update_files_check_running_cb (PkBackend *backend, const gc
 
 		/* send signal about session restart */
 		egg_debug ("package %s updated, and %s is running", id->name, files[i]);
-		pk_backend_require_restart (post->priv->backend, PK_RESTART_ENUM_SESSION, package_id);
+		pk_backend_require_restart (extra->priv->backend, PK_RESTART_ENUM_SESSION, package_id);
 	}
 	g_strfreev (files);
 	pk_package_id_free (id);
@@ -549,10 +549,10 @@ pk_transaction_extra_update_files_check_running_cb (PkBackend *backend, const gc
 
 #ifdef USE_SECURITY_POLKIT
 /**
- * dkp_post_trans_get_cmdline:
+ * dkp_extra_trans_get_cmdline:
  **/
 static gchar *
-dkp_post_trans_get_cmdline (guint pid)
+dkp_extra_trans_get_cmdline (guint pid)
 {
 	gboolean ret;
 	gchar *filename = NULL;
@@ -577,7 +577,7 @@ out:
  * pk_transaction_extra_update_process_list:
  **/
 static gboolean
-pk_transaction_extra_update_process_list (PkTransactionExtra *post)
+pk_transaction_extra_update_process_list (PkTransactionExtra *extra)
 {
 	GDir *dir;
 	const gchar *name;
@@ -592,7 +592,7 @@ pk_transaction_extra_update_process_list (PkTransactionExtra *post)
 	uid = getuid ();
 	dir = g_dir_open ("/proc", 0, NULL);
 	name = g_dir_read_name (dir);
-	pk_obj_list_clear (PK_OBJ_LIST(post->priv->running_exec_list));
+	pk_obj_list_clear (PK_OBJ_LIST(extra->priv->running_exec_list));
 	while (name != NULL) {
 		contents = NULL;
 		uid_file = g_build_filename ("/proc", name, "loginuid", NULL);
@@ -621,7 +621,7 @@ pk_transaction_extra_update_process_list (PkTransactionExtra *post)
 		}
 
 #ifdef USE_SECURITY_POLKIT
-		exec = dkp_post_trans_get_cmdline (pid);
+		exec = dkp_extra_trans_get_cmdline (pid);
 		if (exec == NULL)
 			goto out;
 #else
@@ -633,7 +633,7 @@ pk_transaction_extra_update_process_list (PkTransactionExtra *post)
 		if (offset != NULL)
 			*(offset) = '\0';
 		egg_debug ("uid=%i, pid=%i, exec=%s", uid, pid, exec);
-		pk_obj_list_add (PK_OBJ_LIST(post->priv->running_exec_list), exec);
+		pk_obj_list_add (PK_OBJ_LIST(extra->priv->running_exec_list), exec);
 out:
 		g_free (uid_file);
 		g_free (contents);
@@ -647,37 +647,37 @@ out:
  * pk_transaction_extra_check_running_process:
  **/
 gboolean
-pk_transaction_extra_check_running_process (PkTransactionExtra *post, gchar **package_ids)
+pk_transaction_extra_check_running_process (PkTransactionExtra *extra, gchar **package_ids)
 {
 	PkStore *store;
 	guint signal_files = 0;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
-	if (post->priv->backend->desc->get_files == NULL) {
+	if (extra->priv->backend->desc->get_files == NULL) {
 		egg_debug ("cannot get files");
 		return FALSE;
 	}
 
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_CHECK_EXECUTABLE_FILES);
-	pk_transaction_extra_set_progress_changed (post, 101);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_CHECK_EXECUTABLE_FILES);
+	pk_transaction_extra_set_progress_changed (extra, 101);
 
-	store = pk_backend_get_store (post->priv->backend);
-	pk_transaction_extra_update_process_list (post);
+	store = pk_backend_get_store (extra->priv->backend);
+	pk_transaction_extra_update_process_list (extra);
 
-	signal_files = g_signal_connect (post->priv->backend, "files",
-					 G_CALLBACK (pk_transaction_extra_update_files_check_running_cb), post);
+	signal_files = g_signal_connect (extra->priv->backend, "files",
+					 G_CALLBACK (pk_transaction_extra_update_files_check_running_cb), extra);
 
 	/* get all the files touched in the packages we just updated */
-	pk_backend_reset (post->priv->backend);
+	pk_backend_reset (extra->priv->backend);
 	pk_store_set_strv (store, "package_ids", package_ids);
-	post->priv->backend->desc->get_files (post->priv->backend, package_ids);
+	extra->priv->backend->desc->get_files (extra->priv->backend, package_ids);
 
 	/* wait for finished */
-	g_main_loop_run (post->priv->loop);
+	g_main_loop_run (extra->priv->loop);
 
-	g_signal_handler_disconnect (post->priv->backend, signal_files);
-	pk_transaction_extra_set_progress_changed (post, 100);
+	g_signal_handler_disconnect (extra->priv->backend, signal_files);
+	pk_transaction_extra_set_progress_changed (extra, 100);
 	return TRUE;
 }
 
@@ -686,7 +686,7 @@ pk_transaction_extra_check_running_process (PkTransactionExtra *post, gchar **pa
  **/
 static void
 pk_transaction_extra_update_files_check_desktop_cb (PkBackend *backend, const gchar *package_id,
-					     const gchar *filelist, PkTransactionExtra *post)
+					     const gchar *filelist, PkTransactionExtra *extra)
 {
 	guint i;
 	guint len;
@@ -715,7 +715,7 @@ pk_transaction_extra_update_files_check_desktop_cb (PkBackend *backend, const gc
 
 		egg_debug ("adding filename %s", files[i]);
 		md5 = pk_transaction_extra_get_filename_md5 (files[i]);
-		pk_transaction_extra_sqlite_add_filename_details (post, files[i], package[0], md5);
+		pk_transaction_extra_sqlite_add_filename_details (extra, files[i], package[0], md5);
 		g_free (md5);
 	}
 	g_strfreev (files);
@@ -727,35 +727,35 @@ pk_transaction_extra_update_files_check_desktop_cb (PkBackend *backend, const gc
  * pk_transaction_extra_check_desktop_files:
  **/
 gboolean
-pk_transaction_extra_check_desktop_files (PkTransactionExtra *post, gchar **package_ids)
+pk_transaction_extra_check_desktop_files (PkTransactionExtra *extra, gchar **package_ids)
 {
 	PkStore *store;
 	guint signal_files = 0;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
-	if (post->priv->backend->desc->get_files == NULL) {
+	if (extra->priv->backend->desc->get_files == NULL) {
 		egg_debug ("cannot get files");
 		return FALSE;
 	}
 
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_SCAN_APPLICATIONS);
-	pk_transaction_extra_set_progress_changed (post, 101);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_SCAN_APPLICATIONS);
+	pk_transaction_extra_set_progress_changed (extra, 101);
 
-	store = pk_backend_get_store (post->priv->backend);
-	signal_files = g_signal_connect (post->priv->backend, "files",
-					 G_CALLBACK (pk_transaction_extra_update_files_check_desktop_cb), post);
+	store = pk_backend_get_store (extra->priv->backend);
+	signal_files = g_signal_connect (extra->priv->backend, "files",
+					 G_CALLBACK (pk_transaction_extra_update_files_check_desktop_cb), extra);
 
 	/* get all the files touched in the packages we just updated */
-	pk_backend_reset (post->priv->backend);
+	pk_backend_reset (extra->priv->backend);
 	pk_store_set_strv (store, "package_ids", package_ids);
-	post->priv->backend->desc->get_files (post->priv->backend, package_ids);
+	extra->priv->backend->desc->get_files (extra->priv->backend, package_ids);
 
 	/* wait for finished */
-	g_main_loop_run (post->priv->loop);
+	g_main_loop_run (extra->priv->loop);
 
-	g_signal_handler_disconnect (post->priv->backend, signal_files);
-	pk_transaction_extra_set_progress_changed (post, 100);
+	g_signal_handler_disconnect (extra->priv->backend, signal_files);
+	pk_transaction_extra_set_progress_changed (extra, 100);
 	return TRUE;
 }
 
@@ -764,7 +764,7 @@ pk_transaction_extra_check_desktop_files (PkTransactionExtra *post, gchar **pack
  **/
 static void
 pk_transaction_extra_files_check_library_restart_cb (PkBackend *backend, const gchar *package_id,
-					      const gchar *filelist, PkTransactionExtra *post)
+					      const gchar *filelist, PkTransactionExtra *extra)
 {
 	guint i;
 	guint len;
@@ -785,7 +785,7 @@ pk_transaction_extra_files_check_library_restart_cb (PkBackend *backend, const g
 
 		/* add as it matches the criteria */
 		egg_debug ("adding filename %s", files[i]);
-		g_ptr_array_add (post->priv->files_list, g_strdup (files[i]));
+		g_ptr_array_add (extra->priv->files_list, g_strdup (files[i]));
 	}
 }
 
@@ -793,7 +793,7 @@ pk_transaction_extra_files_check_library_restart_cb (PkBackend *backend, const g
  * pk_transaction_extra_get_cmdline:
  **/
 static gchar *
-pk_transaction_extra_get_cmdline (PkTransactionExtra *post, guint pid)
+pk_transaction_extra_get_cmdline (PkTransactionExtra *extra, guint pid)
 {
 	gboolean ret;
 	gchar *filename = NULL;
@@ -817,7 +817,7 @@ out:
  * pk_transaction_extra_get_uid:
  **/
 static gint
-pk_transaction_extra_get_uid (PkTransactionExtra *post, guint pid)
+pk_transaction_extra_get_uid (PkTransactionExtra *extra, guint pid)
 {
 	gboolean ret;
 	gint uid = -1;
@@ -850,7 +850,7 @@ out:
  * pk_transaction_extra_check_library_restart_emit:
  **/
 static gboolean
-pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *post, GPtrArray *pids)
+pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *extra, GPtrArray *pids)
 {
 	gint uid;
 	guint i;
@@ -872,12 +872,12 @@ pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *post, GPtrA
 		pid = GPOINTER_TO_INT (g_ptr_array_index (pids, i));
 
 		/* get user */
-		uid = pk_transaction_extra_get_uid (post, pid);
+		uid = pk_transaction_extra_get_uid (extra, pid);
 		if (uid < 0)
 			continue;
 
 		/* get command line */
-		cmdline = pk_transaction_extra_get_cmdline (post, pid);
+		cmdline = pk_transaction_extra_get_cmdline (extra, pid);
 		if (cmdline == NULL)
 			continue;
 
@@ -905,14 +905,14 @@ pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *post, GPtrA
 	for (i=0; i<files_session->len; i++) {
 		filename = g_ptr_array_index (files_session, i);
 
-		obj = pk_transaction_extra_get_installed_package_for_file (post, filename);
+		obj = pk_transaction_extra_get_installed_package_for_file (extra, filename);
 		if (obj == NULL) {
 			egg_warning ("failed to find package for %s", filename);
 			continue;
 		}
 
 		package_id = pk_package_id_to_string (obj->id);
-		pk_transaction_extra_set_require_restart (post, PK_RESTART_ENUM_SECURITY_SESSION, package_id);
+		pk_transaction_extra_set_require_restart (extra, PK_RESTART_ENUM_SECURITY_SESSION, package_id);
 		g_free (package_id);
 	}
 
@@ -920,14 +920,14 @@ pk_transaction_extra_check_library_restart_emit (PkTransactionExtra *post, GPtrA
 	for (i=0; i<files_system->len; i++) {
 		filename = g_ptr_array_index (files_system, i);
 
-		obj = pk_transaction_extra_get_installed_package_for_file (post, filename);
+		obj = pk_transaction_extra_get_installed_package_for_file (extra, filename);
 		if (obj == NULL) {
 			egg_warning ("failed to find package for %s", filename);
 			continue;
 		}
 
 		package_id = pk_package_id_to_string (obj->id);
-		pk_transaction_extra_set_require_restart (post, PK_RESTART_ENUM_SECURITY_SYSTEM, package_id);
+		pk_transaction_extra_set_require_restart (extra, PK_RESTART_ENUM_SECURITY_SYSTEM, package_id);
 		g_free (package_id);
 	}
 
@@ -943,7 +943,7 @@ out:
  * pk_transaction_extra_check_library_restart:
  **/
 gboolean
-pk_transaction_extra_check_library_restart (PkTransactionExtra *post, gchar **package_ids)
+pk_transaction_extra_check_library_restart (PkTransactionExtra *extra, gchar **package_ids)
 {
 	PkStore *store;
 	guint signal_files = 0;
@@ -951,52 +951,52 @@ pk_transaction_extra_check_library_restart (PkTransactionExtra *post, gchar **pa
 	gchar **files = NULL;
 	GPtrArray *pids;
 
-	g_return_val_if_fail (PK_IS_POST_TRANS (post), FALSE);
+	g_return_val_if_fail (PK_IS_POST_TRANS (extra), FALSE);
 
-	if (post->priv->backend->desc->get_files == NULL) {
+	if (extra->priv->backend->desc->get_files == NULL) {
 		egg_debug ("cannot get files");
 		return FALSE;
 	}
 
 	/* reset */
-	g_ptr_array_foreach (post->priv->files_list, (GFunc) g_free, NULL);
-	g_ptr_array_set_size (post->priv->files_list, 0);
+	g_ptr_array_foreach (extra->priv->files_list, (GFunc) g_free, NULL);
+	g_ptr_array_set_size (extra->priv->files_list, 0);
 
 	/* set status */
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_SCAN_PROCESS_LIST);
-	pk_transaction_extra_set_progress_changed (post, 101);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_SCAN_PROCESS_LIST);
+	pk_transaction_extra_set_progress_changed (extra, 101);
 
 	/* get list from lsof */
-	ret = pk_lsof_refresh (post->priv->lsof);
+	ret = pk_lsof_refresh (extra->priv->lsof);
 	if (!ret) {
 		egg_warning ("failed to refresh");
 		goto out;
 	}
 
 	/* set status */
-	pk_transaction_extra_set_status_changed (post, PK_STATUS_ENUM_CHECK_LIBRARIES);
+	pk_transaction_extra_set_status_changed (extra, PK_STATUS_ENUM_CHECK_LIBRARIES);
 
-	store = pk_backend_get_store (post->priv->backend);
-	signal_files = g_signal_connect (post->priv->backend, "files",
-					 G_CALLBACK (pk_transaction_extra_files_check_library_restart_cb), post);
+	store = pk_backend_get_store (extra->priv->backend);
+	signal_files = g_signal_connect (extra->priv->backend, "files",
+					 G_CALLBACK (pk_transaction_extra_files_check_library_restart_cb), extra);
 
 	/* get all the files touched in the packages we just updated */
-	pk_backend_reset (post->priv->backend);
+	pk_backend_reset (extra->priv->backend);
 	pk_store_set_strv (store, "package_ids", package_ids);
-	post->priv->backend->desc->get_files (post->priv->backend, package_ids);
+	extra->priv->backend->desc->get_files (extra->priv->backend, package_ids);
 
 	/* wait for finished */
-	g_main_loop_run (post->priv->loop);
+	g_main_loop_run (extra->priv->loop);
 
 	/* nothing to do */
-	if (post->priv->files_list->len == 0) {
+	if (extra->priv->files_list->len == 0) {
 		egg_warning ("no files");
 		goto out;
 	}
 
 	/* get the list of PIDs */
-	files = pk_ptr_array_to_strv (post->priv->files_list);
-	pids = pk_lsof_get_pids_for_filenames (post->priv->lsof, files);
+	files = pk_ptr_array_to_strv (extra->priv->files_list);
+	pids = pk_lsof_get_pids_for_filenames (extra->priv->lsof, files);
 
 	/* nothing depends on these libraries */
 	if (pids == NULL) {
@@ -1011,12 +1011,12 @@ pk_transaction_extra_check_library_restart (PkTransactionExtra *post, gchar **pa
 	}
 
 	/* emit */
-	pk_transaction_extra_check_library_restart_emit (post, pids);
+	pk_transaction_extra_check_library_restart_emit (extra, pids);
 	g_ptr_array_free (pids, TRUE);
 out:
-	pk_transaction_extra_set_progress_changed (post, 100);
+	pk_transaction_extra_set_progress_changed (extra, 100);
 	if (signal_files > 0)
-		g_signal_handler_disconnect (post->priv->backend, signal_files);
+		g_signal_handler_disconnect (extra->priv->backend, signal_files);
 	g_strfreev (files);
 	return ret;
 }
@@ -1027,27 +1027,27 @@ out:
 static void
 pk_transaction_extra_finalize (GObject *object)
 {
-	PkTransactionExtra *post;
+	PkTransactionExtra *extra;
 
 	g_return_if_fail (object != NULL);
 	g_return_if_fail (PK_IS_POST_TRANS (object));
-	post = PK_POST_TRANS (object);
+	extra = PK_POST_TRANS (object);
 
-	g_signal_handler_disconnect (post->priv->backend, post->priv->finished_id);
-	g_signal_handler_disconnect (post->priv->backend, post->priv->package_id);
+	g_signal_handler_disconnect (extra->priv->backend, extra->priv->finished_id);
+	g_signal_handler_disconnect (extra->priv->backend, extra->priv->package_id);
 
-	if (g_main_loop_is_running (post->priv->loop))
-		g_main_loop_quit (post->priv->loop);
-	g_main_loop_unref (post->priv->loop);
-	sqlite3_close (post->priv->db);
-	g_hash_table_unref (post->priv->hash);
-	g_ptr_array_foreach (post->priv->files_list, (GFunc) g_free, NULL);
-	g_ptr_array_free (post->priv->files_list, TRUE);
+	if (g_main_loop_is_running (extra->priv->loop))
+		g_main_loop_quit (extra->priv->loop);
+	g_main_loop_unref (extra->priv->loop);
+	sqlite3_close (extra->priv->db);
+	g_hash_table_unref (extra->priv->hash);
+	g_ptr_array_foreach (extra->priv->files_list, (GFunc) g_free, NULL);
+	g_ptr_array_free (extra->priv->files_list, TRUE);
 
-	g_object_unref (post->priv->backend);
-	g_object_unref (post->priv->lsof);
-	g_object_unref (post->priv->list);
-	g_object_unref (post->priv->running_exec_list);
+	g_object_unref (extra->priv->backend);
+	g_object_unref (extra->priv->lsof);
+	g_object_unref (extra->priv->list);
+	g_object_unref (extra->priv->running_exec_list);
 
 	G_OBJECT_CLASS (pk_transaction_extra_parent_class)->finalize (object);
 }
@@ -1081,44 +1081,44 @@ pk_transaction_extra_class_init (PkTransactionExtraClass *klass)
 /**
  * pk_transaction_extra_init:
  *
- * initializes the post_trans class. NOTE: We expect post_trans objects
+ * initializes the extra_trans class. NOTE: We expect extra_trans objects
  * to *NOT* be removed or added during the session.
- * We only control the first post_trans object if there are more than one.
+ * We only control the first extra_trans object if there are more than one.
  **/
 static void
-pk_transaction_extra_init (PkTransactionExtra *post)
+pk_transaction_extra_init (PkTransactionExtra *extra)
 {
 	gboolean ret;
 	const gchar *statement;
 	gchar *error_msg = NULL;
 	gint rc;
 
-	post->priv = PK_POST_TRANS_GET_PRIVATE (post);
-	post->priv->running_exec_list = pk_transaction_extra_string_list_new ();
-	post->priv->loop = g_main_loop_new (NULL, FALSE);
-	post->priv->list = pk_package_list_new ();
-	post->priv->backend = pk_backend_new ();
-	post->priv->lsof = pk_lsof_new ();
-	post->priv->db = NULL;
-	post->priv->hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-	post->priv->files_list = g_ptr_array_new ();
-
-	post->priv->finished_id =
-		g_signal_connect (post->priv->backend, "finished",
-				  G_CALLBACK (pk_transaction_extra_finished_cb), post);
-	post->priv->package_id =
-		g_signal_connect (post->priv->backend, "package",
-				  G_CALLBACK (pk_transaction_extra_package_cb), post);
+	extra->priv = PK_POST_TRANS_GET_PRIVATE (extra);
+	extra->priv->running_exec_list = pk_transaction_extra_string_list_new ();
+	extra->priv->loop = g_main_loop_new (NULL, FALSE);
+	extra->priv->list = pk_package_list_new ();
+	extra->priv->backend = pk_backend_new ();
+	extra->priv->lsof = pk_lsof_new ();
+	extra->priv->db = NULL;
+	extra->priv->hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	extra->priv->files_list = g_ptr_array_new ();
+
+	extra->priv->finished_id =
+		g_signal_connect (extra->priv->backend, "finished",
+				  G_CALLBACK (pk_transaction_extra_finished_cb), extra);
+	extra->priv->package_id =
+		g_signal_connect (extra->priv->backend, "package",
+				  G_CALLBACK (pk_transaction_extra_package_cb), extra);
 
 	/* check if exists */
 	ret = g_file_test (PK_DESKTOP_DEFAULT_DATABASE, G_FILE_TEST_EXISTS);
 
 	egg_debug ("trying to open database '%s'", PK_DESKTOP_DEFAULT_DATABASE);
-	rc = sqlite3_open (PK_DESKTOP_DEFAULT_DATABASE, &post->priv->db);
+	rc = sqlite3_open (PK_DESKTOP_DEFAULT_DATABASE, &extra->priv->db);
 	if (rc != 0) {
-		egg_warning ("Can't open database: %s\n", sqlite3_errmsg (post->priv->db));
-		sqlite3_close (post->priv->db);
-		post->priv->db = NULL;
+		egg_warning ("Can't open database: %s\n", sqlite3_errmsg (extra->priv->db));
+		sqlite3_close (extra->priv->db);
+		extra->priv->db = NULL;
 		return;
 	}
 
@@ -1130,7 +1130,7 @@ pk_transaction_extra_init (PkTransactionExtra *post)
 			    "package TEXT,"
 			    "show INTEGER,"
 			    "md5 TEXT);";
-		rc = sqlite3_exec (post->priv->db, statement, NULL, NULL, &error_msg);
+		rc = sqlite3_exec (extra->priv->db, statement, NULL, NULL, &error_msg);
 		if (rc != SQLITE_OK) {
 			egg_warning ("SQL error: %s\n", error_msg);
 			sqlite3_free (error_msg);
@@ -1138,19 +1138,19 @@ pk_transaction_extra_init (PkTransactionExtra *post)
 	}
 
 	/* we don't need to keep syncing */
-	sqlite3_exec (post->priv->db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
+	sqlite3_exec (extra->priv->db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
 }
 
 /**
  * pk_transaction_extra_new:
- * Return value: A new post_trans class instance.
+ * Return value: A new extra_trans class instance.
  **/
 PkTransactionExtra *
 pk_transaction_extra_new (void)
 {
-	PkTransactionExtra *post;
-	post = g_object_new (PK_TYPE_POST_TRANS, NULL);
-	return PK_POST_TRANS (post);
+	PkTransactionExtra *extra;
+	extra = g_object_new (PK_TYPE_POST_TRANS, NULL);
+	return PK_POST_TRANS (extra);
 }
 
 /***************************************************************************
@@ -1160,19 +1160,19 @@ pk_transaction_extra_new (void)
 #include "egg-test.h"
 
 void
-egg_test_post_trans (EggTest *test)
+egg_test_extra_trans (EggTest *test)
 {
-	PkTransactionExtra *post;
+	PkTransactionExtra *extra;
 
 	if (!egg_test_start (test, "PkTransactionExtra"))
 		return;
 
 	/************************************************************/
 	egg_test_title (test, "get an instance");
-	post = pk_transaction_extra_new ();
-	egg_test_assert (test, post != NULL);
+	extra = pk_transaction_extra_new ();
+	egg_test_assert (test, extra != NULL);
 
-	g_object_unref (post);
+	g_object_unref (extra);
 
 	egg_test_end (test);
 }
diff --git a/src/pk-transaction-extra.h b/src/pk-transaction-extra.h
index 8a4160c..e7e6cb6 100644
--- a/src/pk-transaction-extra.h
+++ b/src/pk-transaction-extra.h
@@ -49,14 +49,14 @@ typedef struct
 GType		 pk_transaction_extra_get_type			(void);
 PkTransactionExtra	*pk_transaction_extra_new		(void);
 
-gboolean	 pk_transaction_extra_clear_firmware_requests	(PkTransactionExtra	*post);
-gboolean	 pk_transaction_extra_update_package_list	(PkTransactionExtra	*post);
-gboolean	 pk_transaction_extra_import_desktop_files	(PkTransactionExtra	*post);
-gboolean	 pk_transaction_extra_check_running_process	(PkTransactionExtra	*post,
+gboolean	 pk_transaction_extra_clear_firmware_requests	(PkTransactionExtra	*extra);
+gboolean	 pk_transaction_extra_update_package_list	(PkTransactionExtra	*extra);
+gboolean	 pk_transaction_extra_import_desktop_files	(PkTransactionExtra	*extra);
+gboolean	 pk_transaction_extra_check_running_process	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
-gboolean	 pk_transaction_extra_check_desktop_files	(PkTransactionExtra	*post,
+gboolean	 pk_transaction_extra_check_desktop_files	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
-gboolean	 pk_transaction_extra_check_library_restart	(PkTransactionExtra	*post,
+gboolean	 pk_transaction_extra_check_library_restart	(PkTransactionExtra	*extra,
 								 gchar			**package_ids);
 
 G_END_DECLS
commit 87c8185afb6fedb77456d692e69f19900516dba3
Author: yeager <yeager at fedoraproject.org>
Date:   Mon Jul 27 22:15:22 2009 +0000

    Sending translation for Swedish

diff --git a/po/sv.po b/po/sv.po
index c8bb864..5b03edb 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-24 01:31+0000\n"
-"PO-Revision-Date: 2009-02-11 11:39+0100\n"
+"POT-Creation-Date: 2009-07-27 19:56+0000\n"
+"PO-Revision-Date: 2009-07-28 00:12+0100\n"
 "Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -16,704 +16,1448 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+#. TRANSLATORS: this is an atomic transaction
+#: ../client/pk-console.c:231
+msgid "Transaction"
+msgstr "Transaktion"
+
+#. TRANSLATORS: this is the time the transaction was started in system timezone
+#: ../client/pk-console.c:233
+msgid "System time"
+msgstr "Systemtid"
+
+#. TRANSLATORS: this is if the transaction succeeded or not
+#: ../client/pk-console.c:235
+msgid "Succeeded"
+msgstr "Lyckades"
+
+#. TRANSLATORS: if the repo is enabled
+#: ../client/pk-console.c:235
+#: ../client/pk-console.c:402
+msgid "True"
+msgstr "Sant"
+
+#: ../client/pk-console.c:235
+#: ../client/pk-console.c:402
+msgid "False"
+msgstr "Falskt"
+
+#. TRANSLATORS: this is the transactions role, e.g. "update-system"
+#. TRANSLATORS: the trasaction role, e.g. update-system
+#: ../client/pk-console.c:237
+#: ../src/pk-polkit-action-lookup.c:297
+msgid "Role"
+msgstr "Roll"
+
+#. TRANSLATORS: this is The duration of the transaction
+#: ../client/pk-console.c:242
+msgid "Duration"
+msgstr "Längd"
+
+#: ../client/pk-console.c:242
+msgid "(seconds)"
+msgstr "(sekunder)"
+
+#. TRANSLATORS: this is The command line used to do the action
+#. TRANSLATORS: the command line of the thing that wants the authentication
+#: ../client/pk-console.c:246
+#: ../src/pk-polkit-action-lookup.c:311
+msgid "Command line"
+msgstr "Kommandorad"
+
+#. TRANSLATORS: this is the user ID of the user that started the action
+#: ../client/pk-console.c:248
+msgid "User ID"
+msgstr "Användar-id"
+
+#. TRANSLATORS: this is the username, e.g. hughsie
+#: ../client/pk-console.c:255
+msgid "Username"
+msgstr "Användarnamn"
+
+#. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
+#: ../client/pk-console.c:259
+msgid "Real name"
+msgstr "Verkligt namn"
+
+#: ../client/pk-console.c:267
+msgid "Affected packages:"
+msgstr "PÃ¥verkade paket:"
+
+#: ../client/pk-console.c:269
+msgid "Affected packages: None"
+msgstr "PÃ¥verkade paket: Inga"
+
+#. TRANSLATORS: this is the distro, e.g. Fedora 10
+#: ../client/pk-console.c:294
+msgid "Distribution"
+msgstr "Distribution"
+
+#. TRANSLATORS: this is type of update, stable or testing
+#: ../client/pk-console.c:296
+msgid "Type"
+msgstr "Typ"
+
+#. TRANSLATORS: this is any summary text describing the upgrade
+#. TRANSLATORS: this is the summary of the group
+#: ../client/pk-console.c:298
+#: ../client/pk-console.c:321
+msgid "Summary"
+msgstr "Sammandrag"
+
+#. TRANSLATORS: this is the group category name
+#: ../client/pk-console.c:310
+msgid "Category"
+msgstr "Kategori"
+
+#. TRANSLATORS: this is group identifier
+#: ../client/pk-console.c:312
+msgid "ID"
+msgstr "ID"
+
+#. TRANSLATORS: this is the parent group
+#: ../client/pk-console.c:315
+msgid "Parent"
+msgstr "Förälder"
+
+#. TRANSLATORS: this is the name of the parent group
+#: ../client/pk-console.c:318
+msgid "Name"
+msgstr "Namn"
+
+#. TRANSLATORS: this is preferred icon for the group
+#: ../client/pk-console.c:324
+msgid "Icon"
+msgstr "Ikon"
+
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:287
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
 msgstr "Detaljer om uppdateringen:"
 
-#: ../client/pk-console.c:480
+#. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: title, the names of the packages that the method is processing
+#: ../client/pk-console.c:341
+#: ../src/pk-polkit-action-lookup.c:322
+msgid "Package"
+msgid_plural "Packages"
+msgstr[0] "Paket"
+msgstr[1] "Paket"
+
+#. TRANSLATORS: details about the update, any packages that this update updates
+#: ../client/pk-console.c:344
+msgid "Updates"
+msgstr "Uppdaterar"
+
+#. TRANSLATORS: details about the update, any packages that this update obsoletes
+#: ../client/pk-console.c:348
+msgid "Obsoletes"
+msgstr "Föräldrar"
+
+#. TRANSLATORS: details about the update, the vendor URLs
+#: ../client/pk-console.c:352
+msgid "Vendor"
+msgstr "Leverantör"
+
+#. TRANSLATORS: details about the update, the bugzilla URLs
+#: ../client/pk-console.c:356
+msgid "Bugzilla"
+msgstr "Bugzilla"
+
+#. TRANSLATORS: details about the update, the CVE URLs
+#: ../client/pk-console.c:360
+msgid "CVE"
+msgstr "CVE"
+
+#. TRANSLATORS: details about the update, if the package requires a restart
+#: ../client/pk-console.c:364
+msgid "Restart"
+msgstr "Omstart"
+
+#. TRANSLATORS: details about the update, any description of the update
+#: ../client/pk-console.c:368
+msgid "Update text"
+msgstr "Uppdateringstext"
+
+#. TRANSLATORS: details about the update, the changelog for the package
+#: ../client/pk-console.c:372
+msgid "Changes"
+msgstr "Ändringar"
+
+#. TRANSLATORS: details about the update, the ongoing state of the update
+#: ../client/pk-console.c:376
+msgid "State"
+msgstr "Tillstånd"
+
+#. TRANSLATORS: details about the update, date the update was issued
+#: ../client/pk-console.c:381
+msgid "Issued"
+msgstr "Utfärdad"
+
+#. TRANSLATORS: details about the update, date the update was updated
+#: ../client/pk-console.c:386
+msgid "Updated"
+msgstr "Uppdaterad"
+
+#: ../client/pk-console.c:473
+#: ../client/pk-console.c:475
+msgid "Percentage"
+msgstr "Procentandel"
+
+#: ../client/pk-console.c:475
+msgid "Unknown"
+msgstr "Okänt"
+
+#. TRANSLATORS: a package requires the system to be restarted
+#: ../client/pk-console.c:517
+msgid "System restart required by:"
+msgstr "Omstart av systemet krävs:"
+
+#. TRANSLATORS: a package requires the session to be restarted
+#: ../client/pk-console.c:520
+msgid "Session restart required:"
+msgstr "Omstart av sessionen krävs:"
+
+#. TRANSLATORS: a package requires the system to be restarted due to a security update
+#: ../client/pk-console.c:523
+msgid "System restart (security) required by:"
+msgstr "Omstart av systemet (säkerhet) krävs av:"
+
+#. TRANSLATORS: a package requires the session to be restarted due to a security update
+#: ../client/pk-console.c:526
+msgid "Session restart (security) required:"
+msgstr "Omstart av sessionen (säkerhet) krävs:"
+
+#. TRANSLATORS: a package requires the application to be restarted
+#: ../client/pk-console.c:529
+msgid "Application restart required by:"
+msgstr "Omstart av program krävs av:"
+
+#. TRANSLATORS: a package needs to restart their system
+#: ../client/pk-console.c:584
 msgid "Please restart the computer to complete the update."
 msgstr "Starta om datorn för att färdigställa uppdateringen."
 
-#: ../client/pk-console.c:482
+#. TRANSLATORS: a package needs to restart the session
+#: ../client/pk-console.c:587
 msgid "Please logout and login to complete the update."
 msgstr "Logga ut och logga in igen för att färdigställa uppdateringen."
 
-#: ../client/pk-console.c:484
+#. TRANSLATORS: a package needs to restart the application
+#: ../client/pk-console.c:590
 msgid "Please restart the application as it is being used."
 msgstr "Starta om programmet eftersom det används för tillfället."
 
-#. TRANSLATORS: The package is already installed on the system
+#. TRANSLATORS: a package needs to restart their system (due to security)
+#: ../client/pk-console.c:593
+msgid "Please restart the computer to complete the update as important security updates have been installed."
+msgstr "Starta om datorn för att färdigställa uppdateringen eftersom viktiga säkerhetsuppdateringar har installerats."
+
+#. TRANSLATORS: a package needs to restart the session (due to security)
 #: ../client/pk-console.c:596
+msgid "Please logout and login to complete the update as important security updates have been installed."
+msgstr "Logga ut och logga in igen för att färdigställa uppdateringen eftersom viktiga säkerhetsuppdateringar har installerats."
+
+#. TRANSLATORS: The package is already installed on the system
+#: ../client/pk-console.c:723
 #, c-format
 msgid "The package %s is already installed"
 msgstr "Paketet %s är redan installerat"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:604
+#: ../client/pk-console.c:731
 #, c-format
 msgid "The package %s could not be installed: %s"
 msgstr "Paketet %s kunde inte installeras: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:629
-#: ../client/pk-console.c:656
-#: ../client/pk-console.c:752
-#: ../client/pk-console.c:869
-#: ../client/pk-tools-common.c:61
-#: ../client/pk-tools-common.c:79
-#: ../client/pk-tools-common.c:86
+#: ../client/pk-console.c:756
+#: ../client/pk-console.c:779
+#: ../client/pk-console.c:875
+#: ../client/pk-console.c:992
+#: ../client/pk-tools-common.c:62
+#: ../client/pk-tools-common.c:81
+#: ../client/pk-tools-common.c:89
 #, c-format
 msgid "Internal error: %s"
 msgstr "Internt fel: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:637
-#: ../client/pk-console.c:1264
+#: ../client/pk-console.c:764
+#: ../client/pk-console.c:1388
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Detta verktyg kunde inte installera paketen: %s"
 
 #. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:664
+#: ../client/pk-console.c:787
 #, c-format
 msgid "This tool could not install the files: %s"
 msgstr "Detta verktyg kunde inte installera filerna: %s"
 
 #. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:720
+#: ../client/pk-console.c:843
 #, c-format
 msgid "This tool could not remove %s: %s"
 msgstr "Detta verktyg kunde inte ta bort %s: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:743
-#: ../client/pk-console.c:781
-#: ../client/pk-console.c:814
+#: ../client/pk-console.c:866
+#: ../client/pk-console.c:904
+#: ../client/pk-console.c:937
 #, c-format
 msgid "This tool could not remove the packages: %s"
 msgstr "Detta verktyg kunde inte ta bort paketen: %s"
 
 #. TRANSLATORS: When removing, we might have to remove other dependencies
-#: ../client/pk-console.c:793
+#: ../client/pk-console.c:916
 msgid "The following packages have to be removed:"
 msgstr "Följande paket måste tas bort:"
 
 #. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:800
+#: ../client/pk-console.c:923
 msgid "Proceed removing additional packages?"
 msgstr "Fortsätt med att ta bort ytterligare paket?"
 
 #. TRANSLATORS: We did not remove any packages
-#: ../client/pk-console.c:805
+#: ../client/pk-console.c:928
 msgid "The package removal was canceled!"
 msgstr "Paketborttagningen avbröts!"
 
 #. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:846
+#: ../client/pk-console.c:969
 #, c-format
 msgid "This tool could not download the package %s as it could not be found"
 msgstr "Detta verktyg kunde inte hämta paketet %s eftersom det inte hittades"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:877
+#: ../client/pk-console.c:1000
 #, c-format
 msgid "This tool could not download the packages: %s"
 msgstr "Detta verktyg kunde inte hämta paketen: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:904
-#: ../client/pk-console.c:913
+#: ../client/pk-console.c:1027
+#: ../client/pk-console.c:1036
 #, c-format
 msgid "This tool could not update %s: %s"
 msgstr "Detta verktyg kunde inte uppdatera %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:935
-#: ../client/pk-console.c:943
+#: ../client/pk-console.c:1058
+#: ../client/pk-console.c:1066
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "Detta verktyg kunde inte få tag på kraven för %s: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:965
-#: ../client/pk-console.c:973
+#: ../client/pk-console.c:1088
+#: ../client/pk-console.c:1096
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "Detta verktyg kunde inte få tag på beroenden för detta %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:995
-#: ../client/pk-console.c:1003
+#: ../client/pk-console.c:1118
+#: ../client/pk-console.c:1126
 #, c-format
 msgid "This tool could not get package details for %s: %s"
 msgstr "Detta verktyg kunde inte få tag på paketdetaljerna för %s: %s"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1025
+#: ../client/pk-console.c:1148
 #, c-format
 msgid "This tool could not find the files for %s: %s"
 msgstr "Detta verktyg kunde inte hitta filerna för %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1033
+#: ../client/pk-console.c:1156
 #, c-format
 msgid "This tool could not get the file list for %s: %s"
 msgstr "Detta verktyg kunde inte få tag på fillistan för %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1055
+#: ../client/pk-console.c:1178
 #, c-format
 msgid "File already exists: %s"
 msgstr "Filen finns redan: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1116
-#: ../client/pk-console.c:1191
+#: ../client/pk-console.c:1183
+#: ../client/pk-console.c:1239
+#: ../client/pk-console.c:1314
 msgid "Getting package list"
 msgstr "Hämtar paketlista"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1066
-#: ../client/pk-console.c:1122
-#: ../client/pk-console.c:1197
+#: ../client/pk-console.c:1189
+#: ../client/pk-console.c:1245
+#: ../client/pk-console.c:1320
 #, c-format
 msgid "This tool could not get package list: %s"
 msgstr "Detta verktyg kunde inte få tag på paketlistan: %s"
 
 #. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1077
+#: ../client/pk-console.c:1200
+#, c-format
 msgid "Failed to save to disk"
 msgstr "Misslyckades med att spara till disk"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1111
-#: ../client/pk-console.c:1186
+#: ../client/pk-console.c:1234
+#: ../client/pk-console.c:1309
 #, c-format
 msgid "File does not exist: %s"
 msgstr "Filen finns inte: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1143
+#: ../client/pk-console.c:1266
 msgid "Packages to add"
 msgstr "Paket att lägga till"
 
 #. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1151
+#: ../client/pk-console.c:1274
 msgid "Packages to remove"
 msgstr "Paket att ta bort"
 
 #. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1219
+#: ../client/pk-console.c:1342
+#, c-format
 msgid "No new packages need to be installed"
 msgstr "Inga nya paket behöver installeras"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1225
+#: ../client/pk-console.c:1348
 msgid "To install"
 msgstr "Att installera"
 
 #. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1236
+#: ../client/pk-console.c:1360
 msgid "Searching for package: "
 msgstr "Söker efter paket: "
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1240
+#: ../client/pk-console.c:1364
 msgid "not found."
 msgstr "hittades inte."
 
 #. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1251
+#: ../client/pk-console.c:1375
+#, c-format
 msgid "No packages can be found to install"
 msgstr "Inga paket hittades för installation"
 
 #. TRANSLATORS: installing new packages from package list
-#: ../client/pk-console.c:1257
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#: ../client/pk-console.c:1381
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:886
+#, c-format
 msgid "Installing packages"
 msgstr "Installerar paket"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1293
+#: ../client/pk-console.c:1417
 #, c-format
 msgid "This tool could not find the update details for %s: %s"
 msgstr "Detta verktyg kunde inte hitta uppdateringsdetaljer för %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1301
+#: ../client/pk-console.c:1425
 #, c-format
 msgid "This tool could not get the update details for %s: %s"
 msgstr "Detta verktyg kunde inte få tag på uppdateringsdetaljer för %s: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1347
+#: ../client/pk-console.c:1456
 msgid "Error:"
 msgstr "Fel:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1361
+#: ../client/pk-console.c:1470
 msgid "Package description"
 msgstr "Paketbeskrivning"
 
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:1486
+msgid "Message:"
+msgstr "Meddelande:"
+
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1394
+#: ../client/pk-console.c:1514
 msgid "Package files"
 msgstr "Paketfiler"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1403
+#: ../client/pk-console.c:1522
 msgid "No files"
 msgstr "Inga filer"
 
 #. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1426
+#: ../client/pk-console.c:1545
 msgid "Repository signature required"
 msgstr "Förrådssignatur krävs"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1436
+#: ../client/pk-console.c:1555
 msgid "Do you accept this signature?"
 msgstr "Godkänner du denna signatur?"
 
 #. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1440
+#: ../client/pk-console.c:1559
 msgid "The signature was not accepted."
 msgstr "Signaturen godkändes inte."
 
 #. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1474
+#: ../client/pk-console.c:1593
 msgid "End user license agreement required"
 msgstr "Godkännande av slutanvändaravtal krävs"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1481
+#: ../client/pk-console.c:1600
 msgid "Do you agree to this license?"
 msgstr "Godkänner du denna licens?"
 
 #. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1485
+#: ../client/pk-console.c:1604
 msgid "The license was refused."
 msgstr "Licensen nekades."
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1514
+#: ../client/pk-console.c:1633
 msgid "The daemon crashed mid-transaction!"
 msgstr "Demonen kraschade mitt under transaktionen!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1567
+#: ../client/pk-console.c:1686
 msgid "PackageKit Console Interface"
 msgstr "Konsollgränssnitt för PackageKit"
 
-#: ../client/pk-console.c:1567
+#. these are commands we can use with pkcon
+#: ../client/pk-console.c:1688
 msgid "Subcommands:"
 msgstr "Underkommandon:"
 
-#: ../client/pk-console.c:1658
-#: ../client/pk-generate-pack.c:184
-#: ../client/pk-monitor.c:115
-#: ../src/pk-main.c:191
+#. TRANSLATORS: command line argument, if we should show debugging information
+#. TRANSLATORS: if we should show debugging data
+#: ../client/pk-console.c:1781
+#: ../client/pk-generate-pack.c:185
+#: ../client/pk-monitor.c:128
+#: ../contrib/command-not-found/pk-command-not-found.c:610
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:550
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Visa extra felsökningsinformation"
 
-#: ../client/pk-console.c:1660
-#: ../client/pk-monitor.c:117
+#. TRANSLATORS: command line argument, just show the version string
+#: ../client/pk-console.c:1784
+#: ../client/pk-monitor.c:130
 msgid "Show the program version and exit"
 msgstr "Visa programversion och avsluta"
 
-#: ../client/pk-console.c:1662
+#. TRANSLATORS: command line argument, use a filter to narrow down results
+#: ../client/pk-console.c:1787
 msgid "Set the filter, e.g. installed"
 msgstr "Ange filtret, t.ex. installed"
 
-#: ../client/pk-console.c:1664
+#. TRANSLATORS: command line argument, work asynchronously
+#: ../client/pk-console.c:1790
 msgid "Exit without waiting for actions to complete"
 msgstr "Avsluta utan att vänta på att åtgärder ska färdigställas"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1691
+#: ../client/pk-console.c:1817
 msgid "This tool could not connect to system DBUS."
 msgstr "Detta verktyg kunde inte ansluta till systemets DBUS."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1776
+#: ../client/pk-console.c:1907
 msgid "The filter specified was invalid"
 msgstr "Angivet filter var ogiltigt"
 
-#: ../client/pk-console.c:1793
-msgid "You need to specify a search type, e.g. name"
-msgstr "Du måste ange en söktyp, t.ex. name"
-
-#: ../client/pk-console.c:1798
-#: ../client/pk-console.c:1805
-#: ../client/pk-console.c:1812
-#: ../client/pk-console.c:1819
-#: ../client/pk-console.c:1930
-#: ../client/pk-console.c:1940
-#: ../client/pk-console.c:1947
-#: ../client/pk-console.c:1954
-msgid "You need to specify a search term"
-msgstr "Du måste ange en sökterm"
-
-#: ../client/pk-console.c:1824
+#. TRANSLATORS: a search type can be name, details, file, etc
+#: ../client/pk-console.c:1926
+msgid "A search type is required, e.g. name"
+msgstr "En söktyp krävs, t.ex. namn"
+
+#. TRANSLATORS: the user needs to provide a search term
+#: ../client/pk-console.c:1933
+#: ../client/pk-console.c:1942
+#: ../client/pk-console.c:1951
+#: ../client/pk-console.c:1960
+msgid "A search term is required"
+msgstr "Ett sökvillkor krävs"
+
+#. TRANSLATORS: the search type was provided, but invalid
+#: ../client/pk-console.c:1967
 msgid "Invalid search type"
 msgstr "Ogiltig söktyp"
 
-#: ../client/pk-console.c:1829
-msgid "You need to specify a package or file to install"
-msgstr "Du måste ange ett paket eller fil att installera"
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1973
+msgid "A package name or filename to install is required"
+msgstr "Ett paketnamn eller filnamn att installera krävs"
 
-#: ../client/pk-console.c:1836
-msgid "You need to specify a type, key_id and package_id"
-msgstr "Du måste ange en type, key_id och package_id"
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1982
+msgid "A type, key_id and package_id are required"
+msgstr "En type, key_id och package_id krävs"
 
-#: ../client/pk-console.c:1843
-msgid "You need to specify a package to remove"
-msgstr "Du måste ange ett paket att ta bort"
+#. TRANSLATORS: the user did not specify what they wanted to remove
+#: ../client/pk-console.c:1991
+msgid "A package name to remove is required"
+msgstr "Ett paketnamn att ta bort krävs"
 
-#: ../client/pk-console.c:1849
-msgid "You need to specify the destination directory and then the packages to download"
-msgstr "Du måste ange målkatalogen och sedan paketen som ska hämtas"
+#. TRANSLATORS: the user did not specify anything about what to download or where
+#: ../client/pk-console.c:1999
+msgid "A destination directory and the package names to download are required"
+msgstr "En målkatalog och paketnamn att hämta ner krävs"
 
-#: ../client/pk-console.c:1854
+#. TRANSLATORS: the directory does not exist, so we can't continue
+#: ../client/pk-console.c:2006
 msgid "Directory not found"
 msgstr "Katalogen hittades inte"
 
-#: ../client/pk-console.c:1860
-msgid "You need to specify a licence identifier (eula-id)"
-msgstr "Du måste ange en licensidentifierare (eula-id)"
-
-#: ../client/pk-console.c:1876
-msgid "You need to specify a package name to resolve"
-msgstr "Du måste ange ett paketnamn att lösa"
-
-#: ../client/pk-console.c:1885
-#: ../client/pk-console.c:1892
-msgid "You need to specify a repository name"
-msgstr "Du måste ange ett förrådsnamn"
-
-#: ../client/pk-console.c:1899
-msgid "You need to specify a repo name/parameter and value"
-msgstr "Du måste ange ett förrådsnamn/parameter och värde"
-
-#: ../client/pk-console.c:1912
-msgid "You need to specify an action, e.g. 'update-system'"
-msgstr "Du måste ange en åtgärd, t.ex. \"update-system\""
-
-#: ../client/pk-console.c:1917
-msgid "You need to specify a correct role"
-msgstr "Du måste ange en korrekt roll"
-
-#: ../client/pk-console.c:1922
-msgid "Failed to get last time"
-msgstr "Misslyckades med att få tag på senaste tid"
-
-#: ../client/pk-console.c:1961
-msgid "You need to specify a package to find the details for"
-msgstr "Du måste ange ett paket att söka information om"
-
-#: ../client/pk-console.c:1968
-msgid "You need to specify a package to find the files for"
-msgstr "Du måste ange ett paket att söka efter filerna för"
-
-#: ../client/pk-console.c:1975
-msgid "You need to specify a list file to create"
-msgstr "Du måste ange en listfil att skapa"
-
-#: ../client/pk-console.c:1983
-#: ../client/pk-console.c:1991
-msgid "You need to specify a list file to open"
-msgstr "Du måste ange en listfil att öppna"
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:2014
+msgid "A licence identifier (eula-id) is required"
+msgstr "En licensidentifierare (eula-id) krävs"
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:2024
+msgid "A transaction identifier (tid) is required"
+msgstr "En transaktionsidentifierare (tid) krävs"
+
+#. TRANSLATORS: The user did not specify a package name
+#: ../client/pk-console.c:2041
+msgid "A package name to resolve is required"
+msgstr "Ett paketnamn att slå upp krävs"
+
+#. TRANSLATORS: The user did not specify a repository (software source) name
+#: ../client/pk-console.c:2050
+#: ../client/pk-console.c:2059
+msgid "A repository name is required"
+msgstr "Ett förrådsnamn krävs"
+
+#. TRANSLATORS: The user didn't provide any data
+#: ../client/pk-console.c:2068
+msgid "A repo name, parameter and value are required"
+msgstr "Ett förrådsnamn, parameter och värde krävs"
+
+#. TRANSLATORS: The user didn't specify what action to use
+#: ../client/pk-console.c:2082
+msgid "An action, e.g. 'update-system' is required"
+msgstr "En åtgärd, t.ex. \"update-system\" krävs"
+
+#. TRANSLATORS: The user specified an invalid action
+#: ../client/pk-console.c:2089
+msgid "A correct role is required"
+msgstr "En korrekt roll krävs"
+
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:2096
+msgid "Failed to get the time since this action was last completed"
+msgstr "Misslyckades med att få tiden sedan denna åtgärd senast färdigställdes"
+
+#. TRANSLATORS: The user did not provide a package name
+#. TRANSLATORS: This is when the user fails to supply the package name
+#: ../client/pk-console.c:2106
+#: ../client/pk-console.c:2118
+#: ../client/pk-console.c:2127
+#: ../client/pk-console.c:2145
+#: ../client/pk-console.c:2154
+#: ../client/pk-generate-pack.c:241
+msgid "A package name is required"
+msgstr "Ett paketnamn krävs"
+
+#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
+#: ../client/pk-console.c:2136
+msgid "A package provide string is required"
+msgstr "En sträng för vad paketet tillhandahåller krävs"
+
+#. TRANSLATORS: The user didn't specify a filename to create as a list
+#: ../client/pk-console.c:2163
+msgid "A list file name to create is required"
+msgstr "Ett listfilnamn att skapa krävs"
+
+#. TRANSLATORS: The user didn't specify a filename to open as a list
+#: ../client/pk-console.c:2173
+#: ../client/pk-console.c:2183
+msgid "A list file to open is required"
+msgstr "En listfil att öppna krävs"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2044
+#: ../client/pk-console.c:2237
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Flaggan \"%s\" stöds inte"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2057
-msgid "You don't have the necessary privileges for this operation"
-msgstr "Du har inte den nödvändiga behörigheten för denna åtgärd"
+#: ../client/pk-console.c:2250
+msgid "Incorrect privileges for this operation"
+msgstr "Felaktig behörighet för denna åtgärd"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2060
+#: ../client/pk-console.c:2253
 msgid "Command failed"
 msgstr "Kommandot misslyckades"
 
 #. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:100
+#: ../client/pk-generate-pack.c:101
 msgid "Downloading"
 msgstr "Hämtar"
 
 #. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:120
+#: ../client/pk-generate-pack.c:121
 msgid "Downloading packages"
 msgstr "Hämtar paket"
 
 #. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:125
+#: ../client/pk-generate-pack.c:126
 msgid "Downloading dependencies"
 msgstr "Hämtar beroenden"
 
-#: ../client/pk-generate-pack.c:186
+#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
+#: ../client/pk-generate-pack.c:188
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Ange filnamnet för beroenden att undanta"
 
-#: ../client/pk-generate-pack.c:188
-msgid "The output directory (the current directory is used if ommitted)"
-msgstr "Utdatakatalogen (den aktuella katalogen om den inte anges)"
+#. TRANSLATORS: the output location
+#: ../client/pk-generate-pack.c:191
+msgid "The output file or directory (the current directory is used if ommitted)"
+msgstr "Fil eller katalog för utdata (den aktuella katalogen används om den inte anges)"
 
-#: ../client/pk-generate-pack.c:190
+#. TRANSLATORS: put a list of packages in the pack
+#: ../client/pk-generate-pack.c:194
 msgid "The package to be put into the service pack"
 msgstr "Paket att läggas i servicepaketet"
 
-#: ../client/pk-generate-pack.c:192
+#. TRANSLATORS: put all pending updates in the pack
+#: ../client/pk-generate-pack.c:197
 msgid "Put all updates available in the service pack"
 msgstr "Lägg alla tillgängliga uppdateringar i servicepaketet"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:220
+#: ../client/pk-generate-pack.c:225
 msgid "Neither --package or --updates option selected."
 msgstr "Varken flaggan --package eller --updates angavs."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:228
+#: ../client/pk-generate-pack.c:233
 msgid "Both options selected."
 msgstr "BÃ¥da flaggorna angavs."
 
+#. TRANSLATORS: This is when the user fails to supply the output
+#: ../client/pk-generate-pack.c:249
+msgid "A output directory or file name is required"
+msgstr "En utmatningskatalog eller filnamn krävs"
+
+#. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
+#. TRANSLATORS: This is when the backend doesn't have the capability to download
+#: ../client/pk-generate-pack.c:267
+#: ../client/pk-generate-pack.c:273
+msgid "The package manager cannot perform this type of operation."
+msgstr "Pakethanteraren kan inte genomföra denna typ av åtgärd."
+
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:280
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
+msgstr "Servicepaket kan inte skapa eftersom PackageKit inte har byggts med stöd för libarchive."
+
+#. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
+#: ../client/pk-generate-pack.c:291
+msgid "If specifying a file, the service pack name must end with"
+msgstr "Om en fil anges måste servicepaketets namn avslutas med"
+
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Ett paket med samma namn finns redan. Vill du skriva över det?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
 msgstr "Paketet skrevs inte över."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:276
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
 msgstr "Misslyckades med att skapa katalog:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
 msgstr "Misslyckades med öppna paketlistan."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:295
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
 msgstr "Söker efter paketnamn."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:299
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Misslyckades med att hitta paketet \"%s\": %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:315
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
 msgstr "Skapar servicepaket..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:322
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Servicepaket skapades \"%s\""
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:326
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Misslyckades med att skapa \"%s\": %s"
 
-#: ../client/pk-monitor.c:132
+#. TRANSLATORS: this is a program that monitors PackageKit
+#: ../client/pk-monitor.c:146
 msgid "PackageKit Monitor"
 msgstr "Övervakare för PackageKit"
 
+#: ../client/pk-monitor.c:183
+msgid "Cannot show the list of transactions"
+msgstr "Kan inte visa listan över transaktioner"
+
 #. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:114
+#: ../client/pk-tools-common.c:118
+#, c-format
 msgid "The package could not be found"
 msgstr "Paketet kunde inte hittas"
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-tools-common.c:125
+#: ../client/pk-tools-common.c:130
 msgid "More than one package matches:"
 msgstr "Det finns fler än ett paket som matchar:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-tools-common.c:132
+#: ../client/pk-tools-common.c:137
 msgid "Please choose the correct package: "
 msgstr "Välj det korrekta paketet: "
 
-#: ../client/pk-tools-common.c:158
+#: ../client/pk-tools-common.c:162
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Ange ett tal från 1 till %i: "
 
+#. TRANSLATORS: downloading repo data so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:349
+msgid "Downloading details about the software sources."
+msgstr "Hämtar detaljer om programkällorna."
+
+#. TRANSLATORS: downloading file lists so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:353
+msgid "Downloading filelists (this may take some time to complete)."
+msgstr "Hämtar fillistor (detta kan ta lite tid att färdigställa)."
+
+#. TRANSLATORS: waiting for native lock
+#: ../contrib/command-not-found/pk-command-not-found.c:357
+msgid "Waiting for package manager lock."
+msgstr "Väntar på låset för pakethanteraren."
+
+#. TRANSLATORS: loading package cache so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:361
+msgid "Loading list of packages."
+msgstr "Läser in lista över paket."
+
+#. TRANSLATORS: we failed to find the package, this shouldn't happen
+#: ../contrib/command-not-found/pk-command-not-found.c:414
+msgid "Failed to search for file"
+msgstr "Misslyckades med att söka efter filen"
+
+#. TRANSLATORS: we failed to launch the executable, the error follows
+#: ../contrib/command-not-found/pk-command-not-found.c:551
+msgid "Failed to launch:"
+msgstr "Misslyckades med att starta:"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/command-not-found/pk-command-not-found.c:626
+msgid "PackageKit Command Not Found"
+msgstr "PackageKit - Kommandot hittades inte"
+
+#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
+#: ../contrib/command-not-found/pk-command-not-found.c:652
+msgid "Command not found."
+msgstr "Kommandot hittades inte."
+
+#. TRANSLATORS: tell the user what we think the command is
+#: ../contrib/command-not-found/pk-command-not-found.c:659
+msgid "Similar command is:"
+msgstr "Liknande kommando är:"
+
+#. TRANSLATORS: Ask the user if we should run the similar command
+#: ../contrib/command-not-found/pk-command-not-found.c:668
+msgid "Run similar command:"
+msgstr "Kör liknande command:"
+
+#. TRANSLATORS: show the user a list of commands that they could have meant
+#. TRANSLATORS: show the user a list of commands we could run
+#: ../contrib/command-not-found/pk-command-not-found.c:680
+#: ../contrib/command-not-found/pk-command-not-found.c:689
+msgid "Similar commands are:"
+msgstr "Liknande kommandon är:"
+
+#. TRANSLATORS: ask the user to choose a file to run
+#: ../contrib/command-not-found/pk-command-not-found.c:696
+msgid "Please choose a command to run"
+msgstr "Välj ett kommando att köra"
+
+#. TRANSLATORS: tell the user what package provides the command
+#: ../contrib/command-not-found/pk-command-not-found.c:715
+msgid "The package providing this file is:"
+msgstr "Paketet som tillhandahåller denna fil är:"
+
+#. TRANSLATORS: as the user if we want to install a package to provide the command
+#: ../contrib/command-not-found/pk-command-not-found.c:720
+#, c-format
+msgid "Install package '%s' to provide command '%s'?"
+msgstr "Installera paketet \"%s\" för att tillhandahålla kommandot \"%s\"?"
+
+#. TRANSLATORS: Show the user a list of packages that provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:741
+msgid "Packages providing this file are:"
+msgstr "Paket som tillhandahåller denna fil är:"
+
+#. TRANSLATORS: Show the user a list of packages that they can install to provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:750
+msgid "Suitable packages are:"
+msgstr "Lämpliga paket är:"
+
+#. get selection
+#. TRANSLATORS: ask the user to choose a file to install
+#: ../contrib/command-not-found/pk-command-not-found.c:758
+msgid "Please choose a package to install"
+msgstr "Välj ett paket att installera"
+
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/packagekit-plugin/src/contents.cpp:294
+#: ../contrib/browser-plugin/pk-plugin-install.c:433
 msgid "Getting package information..."
 msgstr "Hämtar paketinformation..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/packagekit-plugin/src/contents.cpp:300
+#: ../contrib/browser-plugin/pk-plugin-install.c:439
 #, c-format
 msgid "Run %s"
 msgstr "Kör %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/packagekit-plugin/src/contents.cpp:306
+#: ../contrib/browser-plugin/pk-plugin-install.c:445
 msgid "Installed version"
 msgstr "Installerad version"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/packagekit-plugin/src/contents.cpp:314
+#: ../contrib/browser-plugin/pk-plugin-install.c:453
 #, c-format
 msgid "Run version %s now"
 msgstr "Kör version %s nu"
 
-#: ../contrib/packagekit-plugin/src/contents.cpp:320
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/pk-plugin-install.c:459
 msgid "Run now"
 msgstr "Kör nu"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/packagekit-plugin/src/contents.cpp:326
+#: ../contrib/browser-plugin/pk-plugin-install.c:465
 #, c-format
 msgid "Update to version %s"
 msgstr "Uppdatera till version %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/packagekit-plugin/src/contents.cpp:332
+#: ../contrib/browser-plugin/pk-plugin-install.c:471
 #, c-format
 msgid "Install %s now"
 msgstr "Installera %s nu"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/packagekit-plugin/src/contents.cpp:335
+#: ../contrib/browser-plugin/pk-plugin-install.c:474
 msgid "Version"
 msgstr "Version"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/packagekit-plugin/src/contents.cpp:340
+#: ../contrib/browser-plugin/pk-plugin-install.c:479
 msgid "No packages found for your system"
 msgstr "Inga paket hittades för ditt system"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/packagekit-plugin/src/contents.cpp:345
+#: ../contrib/browser-plugin/pk-plugin-install.c:484
 msgid "Installing..."
 msgstr "Installerar..."
 
+#. TRANSLATORS: we are starting to install the packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
+msgid "Starting install"
+msgstr "Påbörjar installation"
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
+#, c-format
+msgid "Failed to find the package %s, or already installed: %s"
+msgstr "Misslyckades med att hitta paketet %s, eller så är det redan installerat: %s"
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:553
+msgid "Don't actually install any packages, only simulate what would be installed"
+msgstr "Installera inte några paket, simulera endast vad som ska installeras"
+
+#. command line argument, do we skip packages that depend on the ones specified
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+msgid "Do not install dependencies of the core packages"
+msgstr "Installera inte några beroenden för baspaketen"
+
+#. command line argument, do we operate quietly
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:559
+msgid "Do not display information or progress"
+msgstr "Visa inte någon information eller förlopp"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:577
+msgid "PackageKit Debuginfo Installer"
+msgstr "PackageKit -Installation av debuginfo"
+
+#. TRANSLATORS: the use needs to specify a list of package names on the command line
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:589
+#, c-format
+msgid "ERROR: Specify package names to install."
+msgstr "FEL: Ange paketnamn att installera."
+
+#. TRANSLATORS: we are getting the list of repositories
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:623
+#, c-format
+msgid "Getting sources list"
+msgstr "Hämtar lista över källor"
+
+#. TRANSLATORS: all completed 100%
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:641
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:681
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:716
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:844
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:955
+#, c-format
+msgid "OK."
+msgstr "OK."
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:644
+#, c-format
+msgid "Found %i enabled and %i disabled sources."
+msgstr "Hittade %i aktiverade och %i inaktiverade källor."
+
+#. TRANSLATORS: we're finding repositories that match out pattern
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:651
+#, c-format
+msgid "Finding debugging sources"
+msgstr "Söker efter källor för felsökning"
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:684
+#, c-format
+msgid "Found %i disabled debuginfo repos."
+msgstr "Hittade %i inaktiverade debuginfo-förråd."
+
+#. TRANSLATORS: we're now enabling all the debug sources we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:691
+#, c-format
+msgid "Enabling debugging sources"
+msgstr "Aktiverar källor för felsökning"
+
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:701
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:829
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:940
+msgid "FAILED."
+msgstr "MISSLYCKADES."
+
+#. TRANSLATORS: tell the user how many we enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:719
+#, c-format
+msgid "Enabled %i debugging sources."
+msgstr "Aktiverade %i källor för felsökning."
+
+#. TRANSLATORS: we're now finding packages that match in all the repos
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:726
+#, c-format
+msgid "Finding debugging packages"
+msgstr "Söker efter paket för felsökning"
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:738
+#, c-format
+msgid "Failed to find the package %s: %s"
+msgstr "Misslyckades med att hitta paketet %s: %s"
+
+#. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
+#, c-format
+msgid "Failed to find the debuginfo package %s: %s"
+msgstr "Misslyckades med att hitta debuginfo-paketet %s: %s"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:789
+#, c-format
+msgid "Found no packages to install."
+msgstr "Hittade inga paket att installera."
+
+#. TRANSLATORS: tell the user we found some packages, and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#, c-format
+msgid "Found %i packages:"
+msgstr "Hittade %i paket:"
+
+#. TRANSLATORS: tell the user we are searching for deps
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:819
+#, c-format
+msgid "Finding packages that depend on these packages"
+msgstr "Söker efter paket som är beroende av dessa paket"
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:832
+#, c-format
+msgid "Could not find dependant packages: %s"
+msgstr "Kunde inte hitta paket som är beroende: %s"
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
+#, c-format
+msgid "Found %i extra packages."
+msgstr "Hittade %i extra paket."
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#, c-format
+msgid "No extra packages required."
+msgstr "Inga extra paket krävs."
+
+#. TRANSLATORS: tell the user we found some packages (and deps), and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:861
+#, c-format
+msgid "Found %i packages to install:"
+msgstr "Hittade %i paket att installera:"
+
+#. TRANSLATORS: simulate mode is a testing mode where we quit before the action
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:874
+#, c-format
+msgid "Not installing packages in simulate mode"
+msgstr "Installerar inte paket i simuleringsläget"
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
+#, c-format
+msgid "Could not install packages: %s"
+msgstr "Kunde inte installera paket: %s"
+
+#. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#, c-format
+msgid "Disabling sources previously enabled"
+msgstr "Inaktiverar källor som tidigare var aktiverade"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:943
+#, c-format
+msgid "Could not disable the debugging sources: %s"
+msgstr "Kunde inte inaktivera källorna för felsökning: %s"
+
+#. TRANSLATORS: we disabled all the debugging repos that we enabled before
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:958
+#, c-format
+msgid "Disabled %i debugging sources."
+msgstr "Inaktiverade %i källor för felsökning."
+
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
 msgstr "Katalog för PackageKit"
 
-#: ../data/packagekit-servicepack.xml.in.h:1
-msgid "PackageKit Service Pack"
-msgstr "Servicepaket för PackageKit"
-
 #: ../data/packagekit-package-list.xml.in.h:1
 msgid "PackageKit Package List"
 msgstr "Paketlista för PackageKit"
 
-#: ../src/pk-main.c:86
+#: ../data/packagekit-servicepack.xml.in.h:1
+msgid "PackageKit Service Pack"
+msgstr "Servicepaket för PackageKit"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to accept new
+#. licence agreements.
+#. - Change this to 'auth_admin' for environments where users should not
+#. be given the option to make legal decisions.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:7
+msgid "Accept EULA"
+msgstr "Acceptera slutanvändaravtal"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+msgid "Authentication is required to accept a EULA"
+msgstr "Autentisering krävs för att acceptera ett slutanvändaravtal"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+msgid "Authentication is required to cancel a task that was not started by yourself"
+msgstr "Autentisering krävs för att avbryta en åtgärd som inte startades av dig själv"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+msgid "Authentication is required to change software source parameters"
+msgstr "Autentisering krävs för att ändra parametrar för programvarukällor"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+msgid "Authentication is required to consider a key used for signing packages as trusted"
+msgstr "Autentisering krävs för att anse att en nyckel som används för paketsignering ska vara pålitlig"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+msgid "Authentication is required to install a signed package"
+msgstr "Autentisering krävs för att installera ett signerat paket"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+msgid "Authentication is required to install an untrusted package"
+msgstr "Autentisering krävs för att installera ett opålitligt paket"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+msgid "Authentication is required to refresh the system sources"
+msgstr "Autentisering krävs för att uppdatera systemkällorna"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+msgid "Authentication is required to remove packages"
+msgstr "Autentisering krävs för att ta bort paket"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+msgid "Authentication is required to rollback a transaction"
+msgstr "Autentisering krävs för att rulla tillbaka en transaktion"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+msgid "Authentication is required to set the network proxy used for downloading packages"
+msgstr "Autentisering krävs för att ange nätverksproxyservern som ska användas för hämtning av paket"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+msgid "Authentication is required to update packages"
+msgstr "Autentisering krävs för att uppdatera paket"
+
+#. SECURITY:
+#. - Normal users are allowed to cancel their own task without
+#. authentication, but a different user id needs the admin password
+#. to cancel another users task.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:24
+msgid "Cancel foreign task"
+msgstr "Avbryt främmande åtgärd"
+
+#. SECURITY:
+#. - Normal users require admin authentication to enable or disable
+#. software sources as this can be used to enable new updates or
+#. install different versions of software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:30
+msgid "Change software source parameters"
+msgstr "Ändra parametrar för programvarukällor"
+
+#. SECURITY:
+#. - Normal users do not need authentication to install signed packages
+#. from signed repositories, as this cannot exploit a system.
+#. - Paranoid users (or parents!) can change this to 'auth_admin' or
+#. 'auth_admin_keep'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:37
+msgid "Install signed package"
+msgstr "Installera signerat paket"
+
+#. SECURITY:
+#. - Normal users require admin authentication to install untrusted or
+#. unrecognised packages, as allowing users to do this without a
+#. password would be a massive security hole.
+#. - This is not retained as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:44
+msgid "Install untrusted local file"
+msgstr "Installera opålitlig lokal fil"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to refresh the
+#. cache, as this doesn't actually install or remove software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:49
+msgid "Refresh system sources"
+msgstr "Uppdatera systemkällor"
+
+#. SECURITY:
+#. - Normal users require admin authentication to remove packages as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#. - Be sure to close the tool used to remove the packages after the
+#. admin authentication has been obtained, otherwise packages can still
+#. be removed. If this is not possible, change this authentication to
+#. 'auth_admin'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
+msgid "Remove package"
+msgstr "Ta bort paket"
+
+#. SECURITY:
+#. - Normal users require admin authentication to rollback system state
+#. as this will change a large number of packages, and could expose the
+#. system to previously patched security vulnerabilities.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:65
+msgid "Rollback to a previous transaction"
+msgstr "Rulla tillbaka till en tidigare transaktion"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to set the proxy
+#. used for downloading packages.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:70
+msgid "Set network proxy"
+msgstr "Ange nätverksproxyserver"
+
+#. SECURITY:
+#. - Normal users require admin authentication to add signing keys.
+#. - This implies adding an explicit trust, and should not be granted
+#. without a secure authentication.
+#. - This is not kept as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
+msgid "Trust a key used for signing packages"
+msgstr "Lita på en nyckel som används för signering av paket"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to update the
+#. system as the packages will be signed, and the action is required
+#. to update the system when unattended.
+#. - Changing this to anything other than 'yes' will break unattended
+#. updates.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:85
+msgid "Update packages"
+msgstr "Uppdatera paket"
+
+#. TRANSLATORS: failed due to DBus security
+#: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
 msgstr "Uppstart misslyckades på grund av en säkerhetspolicy på denna dator."
 
-#: ../src/pk-main.c:87
+#. TRANSLATORS: only two ways this can fail...
+#: ../src/pk-main.c:89
 msgid "This can happen for two reasons:"
 msgstr "Detta kan inträffa av två anledningar:"
 
-#: ../src/pk-main.c:88
+#. TRANSLATORS: only allowed to be owned by root
+#: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
 msgstr "Den korrekta användaren startar inte den körbara filen (vanligtvis root)"
 
-#: ../src/pk-main.c:89
+#. TRANSLATORS: or we are installed in a prefix
+#: ../src/pk-main.c:93
 msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
 msgstr "Filen org.freedesktop.PackageKit.conf är inte installerad i systemkatalogen:"
 
-#: ../src/pk-main.c:187
+#. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Paketingsbakände att använda, t.ex. dummy"
 
-#: ../src/pk-main.c:189
+#. TRANSLATORS: if we should run in the background
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "Demonisera och koppla loss från terminalen"
 
-#: ../src/pk-main.c:193
+#. TRANSLATORS: if we should not monitor how long we are inactive for
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
 msgstr "Inaktivera tidsgräns för inaktivitet"
 
-#: ../src/pk-main.c:195
+#. TRANSLATORS: show version
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "Visa version och avsluta"
 
-#: ../src/pk-main.c:197
+#. TRANSLATORS: exit after we've started up, used for user profiling
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
 msgstr "Avsluta efter en mindre fördröjning"
 
-#: ../src/pk-main.c:199
+#. TRANSLATORS: exit straight away, used for automatic profiling
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
 msgstr "Avsluta efter att motorn har lästs in"
 
-#: ../src/pk-main.c:213
+#. TRANSLATORS: describing the service that is running
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "PackageKit-tjänst"
 
-#: ../src/pk-main.c:249
+#. TRANSLATORS: fatal error, dbus is not running
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
 msgstr "Kan inte ansluta till systembussen"
 
-#: ../src/pk-main.c:298
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
 msgstr "Fel vid försök att starta:"
 
+#: ../src/pk-polkit-action-lookup.c:143
+msgid "To install debugging packages, extra sources need to be enabled"
+msgstr "För att installera paket för felsökning så behöver extra källor aktiveras"
+
+#. TRANSLATORS: is not GPG signed
+#: ../src/pk-polkit-action-lookup.c:156
+#: ../src/pk-polkit-action-lookup.c:175
+msgid "The software is not from a trusted source."
+msgstr "Programvaran kommer inte från en pålitlig källa."
+
+#. TRANSLATORS: user has to trust provider -- I know, this sucks
+#: ../src/pk-polkit-action-lookup.c:160
+msgid "Do not update this package unless you are sure it is safe to do so."
+msgstr "Uppdatera inte detta paket såvida inte du vet att det är säkert att göra så."
+
+#. TRANSLATORS: warn the user that all bets are off
+#: ../src/pk-polkit-action-lookup.c:164
+#: ../src/pk-polkit-action-lookup.c:183
+msgid "Malicious software can damage your computer or cause other harm."
+msgstr "Skadlig programvara kan skada din dator eller orsaka andra problem."
+
+#. TRANSLATORS: user has to trust provider -- I know, this sucks
+#: ../src/pk-polkit-action-lookup.c:179
+msgid "Do not install this package unless you are sure it is safe to do so."
+msgstr "Installera inte detta paket såvida inte du vet att det är säkert att göra så."
+
+#. TRANSLATORS: if the transaction is forced to install only trusted packages
+#: ../src/pk-polkit-action-lookup.c:304
+msgid "Only trusted"
+msgstr "Endast pålitliga"
+
+#~ msgid "You need to specify a search type, e.g. name"
+#~ msgstr "Du måste ange en söktyp, t.ex. name"
+#~ msgid "You need to specify a search term"
+#~ msgstr "Du måste ange en sökterm"
+#~ msgid "You need to specify a package to remove"
+#~ msgstr "Du måste ange ett paket att ta bort"
+#~ msgid "You need to specify a package name to resolve"
+#~ msgstr "Du måste ange ett paketnamn att lösa"
+#~ msgid "You need to specify a repository name"
+#~ msgstr "Du måste ange ett förrådsnamn"
+#~ msgid "You need to specify an action, e.g. 'update-system'"
+#~ msgstr "Du måste ange en åtgärd, t.ex. \"update-system\""
+#~ msgid "You need to specify a correct role"
+#~ msgstr "Du måste ange en korrekt roll"
+#~ msgid "You need to specify a package to find the details for"
+#~ msgstr "Du måste ange ett paket att söka information om"
+#~ msgid "You need to specify a package to find the files for"
+#~ msgstr "Du måste ange ett paket att söka efter filerna för"
+#~ msgid "You need to specify a list file to create"
+#~ msgstr "Du måste ange en listfil att skapa"
+#~ msgid "You need to specify a list file to open"
+#~ msgstr "Du måste ange en listfil att öppna"
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "Detta verktyg kunde inte ta bort paketen: \"%s\""
-#~ msgid "Accept EULA"
-#~ msgstr "Acceptera slutanvändaravtal"
-#~ msgid "Authentication is required to accept a EULA"
-#~ msgstr "Autentisering krävs för att acceptera ett slutanvändaravtal"
-#~ msgid "Authentication is required to change software source parameters"
-#~ msgstr "Autentisering krävs för att ändra parametrar för programvarukällor"
-
-#, fuzzy
-#~ msgid ""
-#~ "Authentication is required to consider a key used for signing packages as "
-#~ "trusted"
-#~ msgstr "Autentisering krävs för att uppdatera paketlistorna"
-
-#, fuzzy
-#~ msgid "Authentication is required to install a signed package"
-#~ msgstr "Autentisering krävs för att installera ett paket"
-
-#, fuzzy
-#~ msgid "Authentication is required to install an untrusted package"
-#~ msgstr "Autentisering krävs för att installera ett paket"
-
-#, fuzzy
-#~ msgid "Authentication is required to refresh the system sources"
-#~ msgstr "Autentisering krävs för att uppdatera paketlistorna"
-#~ msgid "Authentication is required to remove packages"
-#~ msgstr "Autentisering krävs för att ta bort paket"
-#~ msgid "Authentication is required to rollback a transaction"
-#~ msgstr "Autentisering krävs för att rulla tillbaka en transaktion"
-
-#, fuzzy
-#~ msgid ""
-#~ "Authentication is required to set the network proxy used for downloading "
-#~ "packages"
-#~ msgstr "Autentisering krävs för att ta bort paket"
-#~ msgid "Authentication is required to update packages"
-#~ msgstr "Autentisering krävs för att uppdatera paket"
-#~ msgid "Change software source parameters"
-#~ msgstr "Ändra parametrar för programvarukällor"
 #~ msgid "Install local file"
 #~ msgstr "Installera lokal fil"
-#~ msgid "Install untrusted local file"
-#~ msgstr "Installera opålitlig lokal fil"
-#~ msgid "Remove package"
-#~ msgstr "Ta bort paket"
-#~ msgid "Rollback to a previous transaction"
-#~ msgstr "Rulla tillbaka till en tidigare transaktion"
-
-#, fuzzy
-#~ msgid "Update packages"
-#~ msgstr "Uppdatera paket"
 #~ msgid "Authentication is required to install a local file"
 #~ msgstr "Autentisering krävs för att installera en lokal fil"
 #~ msgid "Authentication is required to install a security signature"
@@ -728,16 +1472,6 @@ msgstr "Fel vid försök att starta:"
 #~ msgstr "Uppdatera paketlistor"
 #~ msgid "Update all packages"
 #~ msgstr "Uppdatera alla paket"
-#~ msgid "Update detail"
-#~ msgstr "Uppdateringsinformation"
-#~ msgid "A system restart is required"
-#~ msgstr "En omstart av systemet krävs"
-#~ msgid "A logout and login is required"
-#~ msgstr "En utloggning och inloggning krävs"
-#~ msgid "An application restart is required"
-#~ msgstr "En omstart av programmet krävs"
-#~ msgid "Could not find a package match"
-#~ msgstr "Kunde inte hitta ett matchande paket"
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
commit 65ec78cae469beb8aa0ec2af5d263769714513c3
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 11:38:10 2009 +0100

    Don't search for libraries in use when there are no security updates

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 5db6bf5..43b53ef 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1116,6 +1116,12 @@ pk_transaction_pre_transaction_checks (PkTransaction *transaction, gchar **packa
 		}
 	}
 
+	/* nothing to scan for */
+	if (list->len == 0) {
+		egg_debug ("no security updates");
+		goto out;
+	}
+
 	/* is a security update we are installing */
 	if (transaction->priv->role == PK_ROLE_ENUM_INSTALL_PACKAGES) {
 		ret = FALSE;
commit f57e9e58077ca189593336d83c8ae118302a3070
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 11:20:54 2009 +0100

    pk-debuginfo-install is designed to be run by the user, and should be in bin not libexec

diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index ec65785..34960aa 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -365,7 +365,7 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %files debuginfo-install
 %defattr(-,root,root,-)
 %doc README AUTHORS NEWS COPYING
-%{_libexecdir}/pk-debuginfo-install
+%{_bindir}/pk-debuginfo-install
 %{_datadir}/man/man1/pk-debuginfo-install.1.gz
 
 %files browser-plugin
diff --git a/contrib/debuginfo-install/Makefile.am b/contrib/debuginfo-install/Makefile.am
index ba52f4b..f453427 100644
--- a/contrib/debuginfo-install/Makefile.am
+++ b/contrib/debuginfo-install/Makefile.am
@@ -30,7 +30,7 @@ INCLUDES =						\
 
 PK_GLIB_LIBS = $(top_builddir)/lib/packagekit-glib/libpackagekit-glib.la
 
-libexec_PROGRAMS = pk-debuginfo-install
+bin_PROGRAMS = pk-debuginfo-install
 
 pk_debuginfo_install_SOURCES =				\
 	egg-debug.c					\
commit 3d477fbabe67c1e0f74c924b66faba5a15caf579
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 11:05:12 2009 +0100

    debuginfo-install: handle only-trusted FALSE packages

diff --git a/contrib/debuginfo-install/pk-debuginfo-install.c b/contrib/debuginfo-install/pk-debuginfo-install.c
index f7a0ae6..538a5e3 100644
--- a/contrib/debuginfo-install/pk-debuginfo-install.c
+++ b/contrib/debuginfo-install/pk-debuginfo-install.c
@@ -170,6 +170,7 @@ pk_debuginfo_install_packages_install (PkDebuginfoInstallPrivate *priv, GPtrArra
 	gboolean ret = TRUE;
 	gchar **package_ids;
 	GError *error_local = NULL;
+	PkExitEnum exit;
 
 	/* mush back into a char** */
 	package_ids = pk_package_ids_from_array (array);
@@ -188,9 +189,26 @@ pk_debuginfo_install_packages_install (PkDebuginfoInstallPrivate *priv, GPtrArra
 	/* enable this repo */
 	ret = pk_client_install_packages (priv->client, TRUE, package_ids, &error_local);
 	if (!ret) {
-		*error = g_error_new (1, 0, "failed to install packages: %s", error_local->message);
-		g_error_free (error_local);
-		goto out;
+		/* need to handle retry with only_trusted=FALSE */
+		g_object_get (priv->client, "exit", &exit, NULL);
+		if (exit == PK_EXIT_ENUM_NEED_UNTRUSTED) {
+			egg_debug ("need to handle untrusted");
+
+			/* retry new action with untrusted */
+			pk_client_set_only_trusted (priv->client, FALSE);
+			g_clear_error (&error_local);
+			ret = pk_client_requeue (priv->client, &error_local);
+			if (!ret) {
+				*error = g_error_new (1, 0, "failed to requeue transaction: %s", error_local->message);
+				g_error_free (error_local);
+				goto out;
+			}
+		} else {
+			*error = g_error_new (1, 0, "failed to install packages: %s", error_local->message);
+			g_error_free (error_local);
+			egg_error ("moo: %s", error_local->message);
+			goto out;
+		}
 	}
 
 	/* end progressbar output */
@@ -400,10 +418,10 @@ out:
 }
 
 /**
- * pk_console_progress_changed_cb:
+ * pk_debuginfo_install_progress_changed_cb:
  **/
 static void
-pk_console_progress_changed_cb (PkClient *client, guint percentage, guint subpercentage,
+pk_debuginfo_install_progress_changed_cb (PkClient *client, guint percentage, guint subpercentage,
 				guint elapsed, guint remaining, PkDebuginfoInstallPrivate *priv)
 {
 	PkRoleEnum role;
@@ -457,10 +475,10 @@ pk_strpad (const gchar *data, guint length)
 }
 
 /**
- * pk_console_package_cb:
+ * pk_debuginfo_install_package_cb:
  **/
 static void
-pk_console_package_cb (PkClient *client, const PkPackageObj *obj, PkDebuginfoInstallPrivate *priv)
+pk_debuginfo_install_package_cb (PkClient *client, const PkPackageObj *obj, PkDebuginfoInstallPrivate *priv)
 {
 	PkRoleEnum role;
 	gchar *package = NULL;
@@ -586,8 +604,8 @@ main (int argc, char *argv[])
 	/* create #PkClient */
 	priv->client = pk_client_new ();
 	g_signal_connect (priv->client, "repo-detail", G_CALLBACK (pk_debuginfo_install_repo_details_cb), priv);
-	g_signal_connect (priv->client, "progress-changed", G_CALLBACK (pk_console_progress_changed_cb), priv);
-	g_signal_connect (priv->client, "package", G_CALLBACK (pk_console_package_cb), priv);
+	g_signal_connect (priv->client, "progress-changed", G_CALLBACK (pk_debuginfo_install_progress_changed_cb), priv);
+	g_signal_connect (priv->client, "package", G_CALLBACK (pk_debuginfo_install_package_cb), priv);
 	pk_client_set_synchronous (priv->client, TRUE, NULL);
 	pk_client_set_use_buffer (priv->client, TRUE, NULL);
 
@@ -877,7 +895,7 @@ not_found:
 			/* TRANSLATORS: operation was not successful */
 			g_print ("%s ", _("FAILED."));
 		}
-		/* TRANSLATORS: coul dnot install, detailed error follows */
+		/* TRANSLATORS: could not install, detailed error follows */
 		g_print (_("Could not install packages: %s"), error->message);
 		g_print ("\n");
 		g_error_free (error);
commit 6c77e4ed13e488980e85adac8a43d281af90dae7
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 11:04:32 2009 +0100

    glib: expose the exit property on the PkClient object

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index d85c930..d17bc81 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -110,6 +110,7 @@ struct _PkClientPrivate
 	PkBitfield		 cached_filters;
 	gint			 timeout;
 	guint			 timeout_id;
+	PkExitEnum		 exit;
 	GError			*error;
 };
 
@@ -141,6 +142,7 @@ enum {
 	PROP_0,
 	PROP_ROLE,
 	PROP_STATUS,
+	PROP_EXIT,
 	PROP_LAST,
 };
 
@@ -530,8 +532,6 @@ pk_client_destroy_cb (DBusGProxy *proxy, PkClient *client)
 static void
 pk_client_finished_cb (DBusGProxy *proxy, const gchar *exit_text, guint runtime, PkClient *client)
 {
-	PkExitEnum exit_enum;
-
 	g_return_if_fail (PK_IS_CLIENT (client));
 
 	/* ref in case we unref the PkClient in ::finished */
@@ -543,7 +543,7 @@ pk_client_finished_cb (DBusGProxy *proxy, const gchar *exit_text, guint runtime,
 		client->priv->timeout_id = 0;
 	}
 
-	exit_enum = pk_exit_enum_from_text (exit_text);
+	client->priv->exit = pk_exit_enum_from_text (exit_text);
 	egg_debug ("emit finished %s, %i", exit_text, runtime);
 
 	/* only this instance is finished, and do it before the signal so we can reset */
@@ -553,14 +553,14 @@ pk_client_finished_cb (DBusGProxy *proxy, const gchar *exit_text, guint runtime,
 	 * in the ::Finished() handler */
 	client->priv->is_finishing = TRUE;
 
-	g_signal_emit (client, signals [SIGNAL_FINISHED], 0, exit_enum, runtime);
+	g_signal_emit (client, signals [SIGNAL_FINISHED], 0, client->priv->exit, runtime);
 
 	/* done callback */
 	client->priv->is_finishing = FALSE;
 
 	/* exit our private loop */
 	if (client->priv->synchronous) {
-		if (exit_enum != PK_EXIT_ENUM_SUCCESS)
+		if (client->priv->exit != PK_EXIT_ENUM_SUCCESS)
 			client->priv->error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED,
 							   "failed: %s", exit_text);
 		g_main_loop_quit (client->priv->loop);
@@ -4130,6 +4130,9 @@ pk_client_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
 	case PROP_STATUS:
 		g_value_set_uint (value, client->priv->status);
 		break;
+	case PROP_EXIT:
+		g_value_set_uint (value, client->priv->exit);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -4179,6 +4182,14 @@ pk_client_class_init (PkClientClass *klass)
 	g_object_class_install_property (object_class, PROP_STATUS, pspec);
 
 	/**
+	 * PkClient:exit:
+	 */
+	pspec = g_param_spec_uint ("exit", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_EXIT, pspec);
+
+	/**
 	 * PkClient::status-changed:
 	 * @client: the #PkClient instance that emitted the signal
 	 * @status: the #PkStatusEnum type, e.g. PK_STATUS_ENUM_REMOVE
@@ -4657,6 +4668,7 @@ pk_client_init (PkClient *client)
 	client->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	client->priv->require_restart = PK_RESTART_ENUM_NONE;
 	client->priv->role = PK_ROLE_ENUM_UNKNOWN;
+	client->priv->exit = PK_EXIT_ENUM_UNKNOWN;
 	client->priv->is_finished = FALSE;
 	client->priv->is_finishing = FALSE;
 	client->priv->package_list = pk_package_list_new ();
commit c3f1db683154d5f24c602571c682cf6f89e6fbcc
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 10:58:22 2009 +0100

    glib: clear the saved error from the first client if we are requeueing a second

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index 7eb2d72..d85c930 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -3918,6 +3918,7 @@ pk_client_requeue (PkClient *client, GError **error)
 	client->priv->tid = NULL;
 	client->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	client->priv->is_finished = FALSE;
+	g_clear_error (&client->priv->error);
 
 	/* clear package list */
 	pk_obj_list_clear (PK_OBJ_LIST(client->priv->package_list));
commit 12d9694991312cef268145e164c97bd16f1909ef
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 10:57:09 2009 +0100

    glib: don't exit from the loop when the first tid times out, and we're requeued

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index 3958d86..7eb2d72 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -63,7 +63,8 @@
 #include "egg-debug.h"
 #include "egg-string.h"
 
-static void     pk_client_finalize	(GObject       *object);
+static void     pk_client_finalize		(GObject	*object);
+static gboolean	pk_client_disconnect_proxy	(PkClient	*client);
 
 #define PK_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_CLIENT, PkClientPrivate))
 
@@ -3924,6 +3925,9 @@ pk_client_requeue (PkClient *client, GError **error)
 	pk_obj_list_clear (client->priv->distro_upgrade_list);
 	pk_obj_list_clear (client->priv->transaction_list);
 
+	/* don't exit from the loop when the first tid times out */
+	pk_client_disconnect_proxy (client);
+
 	/* do the correct action with the cached parameters */
 	if (priv->role == PK_ROLE_ENUM_GET_DEPENDS)
 		ret = pk_client_get_depends (client, priv->cached_filters, priv->cached_package_ids, priv->cached_force, error);
commit e49580b78cf8a476fa1b87f2441266fce89edbec
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 10:23:27 2009 +0100

    cnf: handle SIGINT in command-not-found

diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index f6e2c56..5ac0c39 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -23,6 +23,9 @@
 
 #include <string.h>
 #include <locale.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
 #include <packagekit-glib/packagekit.h>
@@ -51,6 +54,8 @@ typedef struct {
 	gchar		**locations;
 } PkCnfPolicyConfig;
 
+static PkClient *client = NULL;
+
 /**
  * pk_cnf_find_alternatives_swizzle:
  *
@@ -334,7 +339,7 @@ pk_cnf_find_alternatives (const gchar *cmd, guint len)
  * pk_cnf_status_changed_cb:
  **/
 static void
-pk_cnf_status_changed_cb (PkClient *client, PkStatusEnum status, gpointer data)
+pk_cnf_status_changed_cb (PkClient *client_, PkStatusEnum status, gpointer data)
 {
 	const gchar *text = NULL;
 
@@ -373,7 +378,6 @@ pk_cnf_status_changed_cb (PkClient *client, PkStatusEnum status, gpointer data)
 static gboolean
 pk_cnf_find_available (GPtrArray *array, const gchar *prefix, const gchar *cmd)
 {
-	PkClient *client;
 	PkControl *control;
 	GError *error = NULL;
 	PkBitfield roles;
@@ -390,6 +394,7 @@ pk_cnf_find_available (GPtrArray *array, const gchar *prefix, const gchar *cmd)
 	pk_client_set_use_buffer (client, TRUE, NULL);
 	g_signal_connect (client, "status-changed",
 			  G_CALLBACK (pk_cnf_status_changed_cb), NULL);
+	g_object_add_weak_pointer (G_OBJECT (client), (gpointer) &client);
 
 	roles = pk_control_get_actions (control, NULL);
 
@@ -399,15 +404,6 @@ pk_cnf_find_available (GPtrArray *array, const gchar *prefix, const gchar *cmd)
 		goto out;
 	}
 
-	/* reset instance */
-	ret = pk_client_reset (client, &error);
-	if (!ret) {
-		/* TRANSLATORS: we failed to reset the client, this shouldn't happen */
-		egg_warning ("%s: %s", _("Failed to reset client"), error->message);
-		g_error_free (error);
-		goto out;
-	}
-
 	/* do search */
 	path = g_build_filename (prefix, cmd, NULL);
 	egg_debug ("searching for %s", path);
@@ -559,6 +555,40 @@ pk_cnf_spawn_command (const gchar *exec)
 }
 
 /**
+ * pk_cnf_sigint_handler:
+ **/
+static void
+pk_cnf_sigint_handler (int sig)
+{
+	PkRoleEnum role;
+	gboolean ret;
+	GError *error = NULL;
+	egg_debug ("Handling SIGINT");
+
+	/* restore default ASAP, as the cancel might hang */
+	signal (SIGINT, SIG_DFL);
+
+	/* nothing in progress */
+	if (client == NULL)
+		goto out;
+
+	/* hopefully, cancel client */
+	pk_client_get_role (client, &role, NULL, NULL);
+	if (role != PK_ROLE_ENUM_UNKNOWN) {
+		ret = pk_client_cancel (client, &error);
+		if (!ret) {
+			egg_warning ("failed to cancel client: %s", error->message);
+			g_error_free (error);
+		}
+	}
+
+out:
+	/* kill ourselves */
+	egg_debug ("Retrying SIGINT");
+	kill (getpid (), SIGINT);
+}
+
+/**
  * main:
  **/
 int
@@ -604,6 +634,9 @@ main (int argc, char *argv[])
 	if (argv[1] == NULL)
 		goto out;
 
+	/* do stuff on ctrl-c */
+	signal (SIGINT, pk_cnf_sigint_handler);
+
 	/* get policy config */
 	config = pk_cnf_get_config ();
 
commit 95e6737eab95abb2b8aa35baa50df2589cdeec84
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 10:15:11 2009 +0100

    cnf: show status rather than just hanging for a long time without any output

diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index 0704c65..f6e2c56 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -331,6 +331,41 @@ pk_cnf_find_alternatives (const gchar *cmd, guint len)
 }
 
 /**
+ * pk_cnf_status_changed_cb:
+ **/
+static void
+pk_cnf_status_changed_cb (PkClient *client, PkStatusEnum status, gpointer data)
+{
+	const gchar *text = NULL;
+
+	switch (status) {
+	case PK_STATUS_ENUM_DOWNLOAD_REPOSITORY:
+		/* TRANSLATORS: downloading repo data so we can search */
+		text = _("Downloading details about the software sources.");
+		break;
+	case PK_STATUS_ENUM_DOWNLOAD_FILELIST:
+		/* TRANSLATORS: downloading file lists so we can search */
+		text = _("Downloading filelists (this may take some time to complete).");
+		break;
+	case PK_STATUS_ENUM_WAITING_FOR_LOCK:
+		/* TRANSLATORS: waiting for native lock */
+		text = _("Waiting for package manager lock.");
+		break;
+	case PK_STATUS_ENUM_LOADING_CACHE:
+		/* TRANSLATORS: loading package cache so we can search */
+		text = _("Loading list of packages.");
+		break;
+	default:
+		/* no need to print */
+		text = NULL;
+	}
+
+	/* print to screen, still one line */
+	if (text != NULL)
+		g_print ("\n * %s.. ", text);
+}
+
+/**
  * pk_cnf_find_available:
  *
  * Find software we could install
@@ -353,6 +388,9 @@ pk_cnf_find_available (GPtrArray *array, const gchar *prefix, const gchar *cmd)
 	client = pk_client_new ();
 	pk_client_set_synchronous (client, TRUE, NULL);
 	pk_client_set_use_buffer (client, TRUE, NULL);
+	g_signal_connect (client, "status-changed",
+			  G_CALLBACK (pk_cnf_status_changed_cb), NULL);
+
 	roles = pk_control_get_actions (control, NULL);
 
 	/* can we search the repos */
commit 4dd5a517d4d2849adceab0376935ff5722b93dc4
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 27 10:01:22 2009 +0100

    cnf: Search other directories that commands can be found in, not just /usr/bin

diff --git a/contrib/command-not-found/CommandNotFound.conf b/contrib/command-not-found/CommandNotFound.conf
index 0f52570..a6ff9fa 100644
--- a/contrib/command-not-found/CommandNotFound.conf
+++ b/contrib/command-not-found/CommandNotFound.conf
@@ -2,23 +2,30 @@
 
 [CommandNotFound]
 
-# This policy controls what to do when a single match is found for a typo.
-# For instance, gnome-power-staatistics is matched to gnome-power-statistics
+# Controls what locations are searched for missing files
+#
+# Entries are separated with ';'
+#
+# default=/usr/bin;/usr/sbin;/bin;/sbin
+SearchLocations=/usr/bin;/usr/sbin;/bin;/sbin
+
+# Controls what to do when a single match is found for a typo.
+# For instance, 'gnome-power-staatistics' is matched to 'gnome-power-statistics'
 #
 # Allowed values are 'ignore', 'run', 'ask' or 'warn'
 #
 # default=warn
 SingleMatch=warn
 
-# This policy controls what to do when multiple matches are found for a typo.
-# For instance, dmesgg is matched to mesg and dmesg
+# Controls what to do when multiple matches are found for a typo.
+# For instance, 'dmesgg' is matched to 'mesg' and 'dmesg'
 #
 # Allowed values are 'ignore', 'ask' or 'warn'
 #
 # default=warn
 MultipleMatch=warn
 
-# This policy controls if the tool should search for packages in remote
+# Controls if the tool should search for packages in remote
 # software sources. This may introduce a non-trivial delay if the sources
 # have not been recently refreshed.
 #
@@ -27,18 +34,18 @@ MultipleMatch=warn
 # default=true
 SoftwareSourceSearch=true
 
-# This policy controls what to do when a single package install is found for
+# Controls what to do when a single package install is found for
 # a missing command.
-# For instance, make prompts the user to install automake-1.8
+# For instance, 'make' prompts the user to install automake-1.8
 #
 # Allowed values are 'ignore', 'install', 'ask' or 'warn'
 #
 # default=ask
 SingleInstall=ask
 
-# This policy controls what to do when a more than one possible package
+# Controls what to do when a more than one possible package
 # is found for a missing command.
-# For instance, make prompts the user to install automake-1.8 or automake-1.10.
+# For instance, 'make' prompts the user to install automake-1.8 or automake-1.10.
 #
 # Allowed values are 'ignore', 'ask' or 'warn'
 #
diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index 23bbdb0..0704c65 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -48,6 +48,7 @@ typedef struct {
 	PkCnfPolicy	 single_install;
 	PkCnfPolicy	 multiple_install;
 	gboolean	 software_source_search;
+	gchar		**locations;
 } PkCnfPolicyConfig;
 
 /**
@@ -334,8 +335,8 @@ pk_cnf_find_alternatives (const gchar *cmd, guint len)
  *
  * Find software we could install
  **/
-static GPtrArray *
-pk_cnf_find_available (const gchar *cmd)
+static gboolean
+pk_cnf_find_available (GPtrArray *array, const gchar *prefix, const gchar *cmd)
 {
 	PkClient *client;
 	PkControl *control;
@@ -343,7 +344,6 @@ pk_cnf_find_available (const gchar *cmd)
 	PkBitfield roles;
 	PkBitfield filters;
 	gboolean ret;
-	GPtrArray *array;
 	guint i, len;
 	PkPackageList *list = NULL;
 	const PkPackageObj *obj;
@@ -354,7 +354,6 @@ pk_cnf_find_available (const gchar *cmd)
 	pk_client_set_synchronous (client, TRUE, NULL);
 	pk_client_set_use_buffer (client, TRUE, NULL);
 	roles = pk_control_get_actions (control, NULL);
-	array = g_ptr_array_new ();
 
 	/* can we search the repos */
 	if (!pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_FILE)) {
@@ -362,8 +361,17 @@ pk_cnf_find_available (const gchar *cmd)
 		goto out;
 	}
 
+	/* reset instance */
+	ret = pk_client_reset (client, &error);
+	if (!ret) {
+		/* TRANSLATORS: we failed to reset the client, this shouldn't happen */
+		egg_warning ("%s: %s", _("Failed to reset client"), error->message);
+		g_error_free (error);
+		goto out;
+	}
+
 	/* do search */
-	path = g_strdup_printf ("/usr/bin/%s", cmd);
+	path = g_build_filename (prefix, cmd, NULL);
 	egg_debug ("searching for %s", path);
 	filters = pk_bitfield_from_enums (PK_FILTER_ENUM_NOT_INSTALLED, PK_FILTER_ENUM_NEWEST, -1);
 	ret = pk_client_search_file (client, filters, path, &error);
@@ -378,6 +386,7 @@ pk_cnf_find_available (const gchar *cmd)
 	list = pk_client_get_package_list (client);
 	if (list == NULL) {
 		egg_warning ("failed to get list");
+		ret = FALSE;
 		goto out;
 	}
 
@@ -399,7 +408,7 @@ out:
 	g_object_unref (client);
 	g_free (path);
 
-	return array;
+	return ret;
 }
 
 /**
@@ -445,13 +454,17 @@ pk_cnf_get_policy_from_file (GKeyFile *file, const gchar *key)
 /**
  * pk_cnf_get_config:
  **/
-static gboolean
-pk_cnf_get_config (PkCnfPolicyConfig *config)
+static PkCnfPolicyConfig *
+pk_cnf_get_config (void)
 {
 	GKeyFile *file;
 	gchar *path;
 	gboolean ret;
 	GError *error = NULL;
+	PkCnfPolicyConfig *config;
+
+	/* create */
+	config = g_new0 (PkCnfPolicyConfig, 1);
 
 	/* set defaults if the conf file is not found */
 	config->single_match = PK_CNF_POLICY_UNKNOWN;
@@ -459,6 +472,7 @@ pk_cnf_get_config (PkCnfPolicyConfig *config)
 	config->single_install = PK_CNF_POLICY_UNKNOWN;
 	config->multiple_install = PK_CNF_POLICY_UNKNOWN;
 	config->software_source_search = FALSE;
+	config->locations = NULL;
 
 	/* load file */
 	file = g_key_file_new ();
@@ -476,10 +490,17 @@ pk_cnf_get_config (PkCnfPolicyConfig *config)
 	config->single_install = pk_cnf_get_policy_from_file (file, "SingleInstall");
 	config->multiple_install = pk_cnf_get_policy_from_file (file, "MultipleInstall");
 	config->software_source_search = g_key_file_get_boolean (file, "CommandNotFound", "SoftwareSourceSearch", NULL);
+	config->locations = g_key_file_get_string_list (file, "CommandNotFound", "SearchLocations", NULL, NULL);
+
+	/* fallback */
+	if (config->locations == NULL) {
+		egg_warning ("not found SearchLocations, using fallback");
+		config->locations = g_strsplit ("/usr/bin;/usr/sbin", ";", -1);
+	}
 out:
 	g_free (path);
 	g_key_file_free (file);
-	return ret;
+	return config;
 }
 
 /**
@@ -510,7 +531,7 @@ main (int argc, char *argv[])
 	GOptionContext *context;
 	GPtrArray *array = NULL;
 	GPtrArray *available = NULL;
-	PkCnfPolicyConfig config;
+	PkCnfPolicyConfig *config = NULL;
 	guint i;
 	guint len;
 	gchar *text;
@@ -546,7 +567,7 @@ main (int argc, char *argv[])
 		goto out;
 
 	/* get policy config */
-	pk_cnf_get_config (&config);
+	config = pk_cnf_get_config ();
 
 	/* get length */
 	len = egg_strlen (argv[1], 1024);
@@ -562,16 +583,16 @@ main (int argc, char *argv[])
 	/* one exact possibility */
 	if (array->len == 1) {
 		possible = g_ptr_array_index (array, 0);
-		if (config.single_match == PK_CNF_POLICY_WARN) {
+		if (config->single_match == PK_CNF_POLICY_WARN) {
 			/* TRANSLATORS: tell the user what we think the command is */
 			g_print ("%s '%s'\n", _("Similar command is:"), possible);
 
 		/* run */
-		} else if (config.single_match == PK_CNF_POLICY_RUN) {
+		} else if (config->single_match == PK_CNF_POLICY_RUN) {
 			pk_cnf_spawn_command (possible);
 
 		/* ask */
-		} else if (config.single_match == PK_CNF_POLICY_ASK) {
+		} else if (config->single_match == PK_CNF_POLICY_ASK) {
 			/* TRANSLATORS: Ask the user if we should run the similar command */
 			text = g_strdup_printf ("%s %s", _("Run similar command:"), possible);
 			ret = pk_console_get_prompt (text, TRUE);
@@ -583,7 +604,7 @@ main (int argc, char *argv[])
 
 	/* multiple choice */
 	} else if (array->len > 1) {
-		if (config.multiple_match == PK_CNF_POLICY_WARN) {
+		if (config->multiple_match == PK_CNF_POLICY_WARN) {
 			/* TRANSLATORS: show the user a list of commands that they could have meant */
 			g_print ("%s:\n", _("Similar commands are:"));
 			for (i=0; i<array->len; i++) {
@@ -592,7 +613,7 @@ main (int argc, char *argv[])
 			}
 
 		/* ask */
-		} else if (config.multiple_match == PK_CNF_POLICY_ASK) {
+		} else if (config->multiple_match == PK_CNF_POLICY_ASK) {
 			/* TRANSLATORS: show the user a list of commands we could run */
 			g_print ("%s:\n", _("Similar commands are:"));
 			for (i=0; i<array->len; i++) {
@@ -610,16 +631,20 @@ main (int argc, char *argv[])
 		goto out;
 
 	/* only search using PackageKit if configured to do so */
-	} else if (config.software_source_search) {
-		available = pk_cnf_find_available (argv[1]);
+	} else if (config->software_source_search) {
+		available = g_ptr_array_new ();
+		pk_cnf_find_available (available, "/usr/bin", argv[1]);
+		pk_cnf_find_available (available, "/usr/sbin", argv[1]);
+		pk_cnf_find_available (available, "/bin", argv[1]);
+		pk_cnf_find_available (available, "/sbin", argv[1]);
 		if (available->len == 1) {
 			possible = g_ptr_array_index (available, 0);
-			if (config.single_install == PK_CNF_POLICY_WARN) {
+			if (config->single_install == PK_CNF_POLICY_WARN) {
 				/* TRANSLATORS: tell the user what package provides the command */
 				g_print ("%s '%s'\n", _("The package providing this file is:"), possible);
 
 			/* ask */
-			} else if (config.single_install == PK_CNF_POLICY_ASK) {
+			} else if (config->single_install == PK_CNF_POLICY_ASK) {
 				/* TRANSLATORS: as the user if we want to install a package to provide the command */
 				text = g_strdup_printf (_("Install package '%s' to provide command '%s'?"), possible, argv[1]);
 				ret = pk_console_get_prompt (text, FALSE);
@@ -633,14 +658,14 @@ main (int argc, char *argv[])
 				}
 
 			/* install */
-			} else if (config.single_install == PK_CNF_POLICY_INSTALL) {
+			} else if (config->single_install == PK_CNF_POLICY_INSTALL) {
 				text = g_strdup_printf ("pkcon install %s", possible);
 				pk_cnf_spawn_command (text);
 				g_free (text);
 			}
 			goto out;
 		} else if (available->len > 1) {
-			if (config.multiple_install == PK_CNF_POLICY_WARN) {
+			if (config->multiple_install == PK_CNF_POLICY_WARN) {
 				/* TRANSLATORS: Show the user a list of packages that provide this command */
 				g_print ("%s:\n", _("Packages providing this file are:"));
 				for (i=0; i<available->len; i++) {
@@ -649,7 +674,7 @@ main (int argc, char *argv[])
 				}
 
 			/* ask */
-			} else if (config.multiple_install == PK_CNF_POLICY_ASK) {
+			} else if (config->multiple_install == PK_CNF_POLICY_ASK) {
 				/* TRANSLATORS: Show the user a list of packages that they can install to provide this command */
 				g_print ("%s:\n", _("Suitable packages are:"));
 				for (i=0; i<available->len; i++) {
@@ -676,6 +701,10 @@ main (int argc, char *argv[])
 	g_print ("\n");
 
 out:
+	if (config != NULL) {
+		g_strfreev (config->locations);
+		g_free (config);
+	}
 	if (array != NULL) {
 		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
 		g_ptr_array_free (array, TRUE);
commit 471e9f6ca515b2e24815bfa3ac0047e94a86dc8a
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Jul 26 19:42:48 2009 +0100

    Raise the limit of TransactionCreateCommitTimeout to 5 minutes

diff --git a/etc/PackageKit.conf.in b/etc/PackageKit.conf.in
index eb1de79..c40aa88 100644
--- a/etc/PackageKit.conf.in
+++ b/etc/PackageKit.conf.in
@@ -202,8 +202,8 @@ MaximumPackagesToProcess=2500
 # number of authentication requests, but setting this shorter will reduce the
 # amount of time the user has to authenticate.
 #
-# default=30
-TransactionCreateCommitTimeout=30
+# default=300
+TransactionCreateCommitTimeout=300
 
 # How long the transaction should be queriable after it is finished, in seconds
 #
commit e5f6d60ea510a2318a5ed0e89c40b01509320d22
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Jul 26 19:40:30 2009 +0100

    Add the package name in the authentication details

diff --git a/src/pk-polkit-action-lookup.c b/src/pk-polkit-action-lookup.c
index ce4db8c..604987e 100644
--- a/src/pk-polkit-action-lookup.c
+++ b/src/pk-polkit-action-lookup.c
@@ -235,6 +235,43 @@ out:
 }
 
 /**
+ * pk_action_lookup_package_ids_to_string:
+ **/
+static gchar *
+pk_action_lookup_package_ids_to_string (gchar **package_ids)
+{
+	PkPackageId *id;
+	GPtrArray *array = NULL;
+	gchar **names = NULL;
+	gchar *names_str = NULL;
+	guint i;
+
+	/* invalid */
+	if (package_ids == NULL)
+		goto out;
+
+	/* create array of name-version */
+	array = g_ptr_array_new ();
+	for (i=0; package_ids[i] != NULL; i++) {
+		id = pk_package_id_new_from_string (package_ids[i]);
+		names_str = g_strdup_printf ("%s-%s", id->name, id->version);
+		g_ptr_array_add (array, names_str);
+		pk_package_id_free (id);
+	}
+
+	/* create string */
+	names = pk_ptr_array_to_strv (array);
+	names_str = g_strjoinv (", ", names);
+out:
+	if (array != NULL) {
+		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+		g_ptr_array_free (array, TRUE);
+	}
+	g_strfreev (names);
+	return names_str;
+}
+
+/**
  * pk_action_lookup_get_details:
  **/
 static PolkitDetails *
@@ -242,6 +279,10 @@ pk_action_lookup_get_details (PolkitBackendActionLookup *lookup, const gchar *ac
 			      PolkitDetails *action_details, PolkitActionDescription *action_description)
 {
 	const gchar *str;
+	const gchar *title;
+	gchar **package_ids;
+	gchar *text;
+	guint len;
 	PolkitDetails *details;
 
 	if (!g_str_has_prefix (action_id, "org.freedesktop.packagekit."))
@@ -263,13 +304,28 @@ pk_action_lookup_get_details (PolkitBackendActionLookup *lookup, const gchar *ac
 		polkit_details_insert (details, _("Only trusted"), str);
 	}
 
-	/* only-trusted */
+	/* command line */
 	str = polkit_details_lookup (action_details, "cmdline");
 	if (str != NULL) {
 		/* TRANSLATORS: the command line of the thing that wants the authentication */
 		polkit_details_insert (details, _("Command line"), str);
 	}
 
+	/* packages */
+	str = polkit_details_lookup (action_details, "package_ids");
+	if (str != NULL) {
+		package_ids = pk_package_ids_from_text (str);
+		text = pk_action_lookup_package_ids_to_string (package_ids);
+		len = g_strv_length (package_ids);
+
+		/* TRANSLATORS: title, the names of the packages that the method is processing */
+		title = ngettext ("Package", "Packages", len);
+		polkit_details_insert (details, title, text);
+
+		g_strfreev (package_ids);
+		g_free (text);
+	}
+
 	return details;
 }
 
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 2a7cb60..5db6bf5 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -129,7 +129,6 @@ struct PkTransactionPrivate
 	gchar			*cached_package_id;
 	gchar			**cached_package_ids;
 	gchar			*cached_transaction_id;
-	gchar			*cached_full_path;
 	gchar			**cached_full_paths;
 	PkBitfield		 cached_filters;
 	gchar			*cached_search;
@@ -1314,7 +1313,6 @@ pk_transaction_set_running (PkTransaction *transaction)
 	pk_store_set_strv (store, "full_paths", priv->cached_full_paths);
 	pk_store_set_string (store, "package_id", priv->cached_package_id);
 	pk_store_set_string (store, "transaction_id", priv->cached_transaction_id);
-	pk_store_set_string (store, "full_path", priv->cached_full_path);
 	pk_store_set_string (store, "search", priv->cached_search);
 	pk_store_set_string (store, "repo_id", priv->cached_repo_id);
 	pk_store_set_string (store, "key_id", priv->cached_key_id);
@@ -1777,6 +1775,7 @@ pk_transaction_obtain_authorization (PkTransaction *transaction, gboolean only_t
 	PolkitDetails *details;
 	const gchar *action_id;
 	gboolean ret = FALSE;
+	gchar *package_ids = NULL;
 
 	g_return_val_if_fail (transaction->priv->sender != NULL, FALSE);
 
@@ -1810,6 +1809,16 @@ pk_transaction_obtain_authorization (PkTransaction *transaction, gboolean only_t
 	details = polkit_details_new ();
 	polkit_details_insert (details, "role", pk_role_enum_to_text (transaction->priv->role));
 	polkit_details_insert (details, "only-trusted", transaction->priv->cached_only_trusted ? "true" : "false");
+
+	/* do we have package details? */
+	if (transaction->priv->cached_package_id != NULL)
+		package_ids = g_strdup (transaction->priv->cached_package_id);
+	else if (transaction->priv->cached_package_ids != NULL)
+		package_ids = pk_package_ids_to_text (transaction->priv->cached_package_ids);
+
+	/* save optional stuff */
+	if (package_ids != NULL)
+		polkit_details_insert (details, "package_ids", package_ids);
 	if (transaction->priv->cmdline != NULL)
 		polkit_details_insert (details, "cmdline", transaction->priv->cmdline);
 
@@ -1829,6 +1838,7 @@ pk_transaction_obtain_authorization (PkTransaction *transaction, gboolean only_t
 	/* assume success, as this is async */
 	ret = TRUE;
 out:
+	g_free (package_ids);
 	return ret;
 }
 
@@ -4432,7 +4442,6 @@ pk_transaction_init (PkTransaction *transaction)
 	transaction->priv->cached_package_id = NULL;
 	transaction->priv->cached_package_ids = NULL;
 	transaction->priv->cached_transaction_id = NULL;
-	transaction->priv->cached_full_path = NULL;
 	transaction->priv->cached_full_paths = NULL;
 	transaction->priv->cached_filters = PK_FILTER_ENUM_NONE;
 	transaction->priv->cached_search = NULL;
commit 4266e060781730c00bfb9cfb455d49af2becdcbd
Author: nazgul <nazgul at fedoraproject.org>
Date:   Thu Jul 23 21:47:03 2009 +0000

    Sending translation for German

diff --git a/po/de.po b/po/de.po
index 0b9ff92..a708fcb 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,23 +1,28 @@
 # German translation of policycoreutils.
 # Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
-#
+# #
+# # package - Paket
+# # service pack - Service-Pack
+# #
 # Holger Wansing <linux at wansing-online.de>, 2006.
 # Timo Trinks <ttrinks at redhat.com>, 2006, 2007.
 # Michael Schönitzer <michael at schoenitzer.de>, 2007.
-# Fabian Affolter <fab at fedoraproject.org>, 2008-2009.
+# Fabian Affolter <fab at fedoraproject.org>, 2008.
 # Timo Trinks <ttrinks at redhat.com>, 2008.
 # Thomas Spura <tomspur at fedoraproject.org>, 2008.
 # Daniela Kugelmann <dkugelma at redhat.com >, 2008.
 # Stefan Posdzich <cheekyboinc at foresightlinux.org>, 2008.
-#
+# Fabian Affolter <fab at fedoraproject.org>, 2009.
+# Christian Kirbach <Christian.Kirbach at googlemail.com>, 2009.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.de\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-16 20:08+0000\n"
-"PO-Revision-Date: 2009-04-16 22:15+0100\n"
-"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
+"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
+"product=PackageKit&component=General\n"
+"POT-Creation-Date: 2009-07-21 03:24+0000\n"
+"PO-Revision-Date: 2009-07-15 22:15+0200\n"
+"Last-Translator: Christian Kirbach <Christian.Kirbach at googlemail.com>\n"
 "Language-Team: German <gnome-de at gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,708 +30,719 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:234
+#: ../client/pk-console.c:231
 msgid "Transaction"
 msgstr "Transaktion"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:236
+#: ../client/pk-console.c:233
 msgid "System time"
 msgstr "Systemzeit"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:238
+#: ../client/pk-console.c:235
 msgid "Succeeded"
 msgstr "Erfolgreich"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:238
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:235 ../client/pk-console.c:402
 msgid "True"
 msgstr "Wahr"
 
-#: ../client/pk-console.c:238
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:235 ../client/pk-console.c:402
 msgid "False"
 msgstr "Falsch"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
-#: ../client/pk-console.c:240
+#. TRANSLATORS: the trasaction role, e.g. update-system
+#: ../client/pk-console.c:237 ../src/pk-polkit-action-lookup.c:256
 msgid "Role"
 msgstr "Rolle"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:245
+#: ../client/pk-console.c:242
 msgid "Duration"
 msgstr "Dauer"
 
-#: ../client/pk-console.c:245
+#: ../client/pk-console.c:242
 msgid "(seconds)"
 msgstr "(Sekunden)"
 
 #. TRANSLATORS: this is The command line used to do the action
-#: ../client/pk-console.c:249
+#. TRANSLATORS: the command line of the thing that wants the authentication
+#: ../client/pk-console.c:246 ../src/pk-polkit-action-lookup.c:270
 msgid "Command line"
 msgstr "Befehlszeile"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:251
+#: ../client/pk-console.c:248
 msgid "User ID"
-msgstr "Benutzer-ID"
+msgstr "Benutzerkennung"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:258
+#: ../client/pk-console.c:255
 msgid "Username"
 msgstr "Benutzername"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:262
+#: ../client/pk-console.c:259
 msgid "Real name"
 msgstr "Echter Name"
 
-#: ../client/pk-console.c:270
+#: ../client/pk-console.c:267
 msgid "Affected packages:"
 msgstr "Beteiligte Pakete:"
 
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:269
 msgid "Affected packages: None"
 msgstr "Beteilige Pakete: Keine"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:297
+#: ../client/pk-console.c:294
 msgid "Distribution"
 msgstr "Distribution"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:299
+#: ../client/pk-console.c:296
 msgid "Type"
 msgstr "Typ"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:301
-#: ../client/pk-console.c:324
+#: ../client/pk-console.c:298 ../client/pk-console.c:321
 msgid "Summary"
 msgstr "Zusammenfassung"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:313
+#: ../client/pk-console.c:310
 msgid "Category"
 msgstr "Kategorie"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:312
 msgid "ID"
-msgstr "ID"
+msgstr "Kennung"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:318
+#: ../client/pk-console.c:315
 msgid "Parent"
 msgstr "Elternteil"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:321
+#: ../client/pk-console.c:318
 msgid "Name"
 msgstr "Name"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:327
+#: ../client/pk-console.c:324
 msgid "Icon"
 msgstr "Symbol"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:342
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
-msgstr "Details über die Aktualisierung"
+msgstr "Details zur Aktualisierung:"
 
 #. TRANSLATORS: details about the update, package name and version
-#: ../client/pk-console.c:344
+#: ../client/pk-console.c:341
 msgid "Package"
 msgstr "Paket"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:347
+#: ../client/pk-console.c:344
 msgid "Updates"
 msgstr "Aktualisierungen"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:351
+#: ../client/pk-console.c:348
 msgid "Obsoletes"
 msgstr "Veraltete"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:355
+#: ../client/pk-console.c:352
 msgid "Vendor"
 msgstr "Hersteller"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:359
+#: ../client/pk-console.c:356
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:363
+#: ../client/pk-console.c:360
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:367
+#: ../client/pk-console.c:364
 msgid "Restart"
 msgstr "Neustart"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:371
+#: ../client/pk-console.c:368
 msgid "Update text"
-msgstr "Aktualisierungsbescheibung"
+msgstr "Text aktualisieren"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:375
+#: ../client/pk-console.c:372
 msgid "Changes"
 msgstr "Änderungen"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:379
+#: ../client/pk-console.c:376
 msgid "State"
 msgstr "Status"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:381
 msgid "Issued"
 msgstr "Veröffentlicht"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:389
+#: ../client/pk-console.c:386
 msgid "Updated"
-msgstr "Aktualisierungsdatum"
+msgstr "Aktualisiert"
 
-#: ../client/pk-console.c:476
-#: ../client/pk-console.c:478
+#: ../client/pk-console.c:473 ../client/pk-console.c:475
 msgid "Percentage"
 msgstr "Prozentsatz"
 
-#: ../client/pk-console.c:478
+#: ../client/pk-console.c:475
 msgid "Unknown"
 msgstr "Unbekannt"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:529
+#: ../client/pk-console.c:517
 msgid "System restart required by:"
-msgstr "Ein Neustart ist erforderlich durch:"
+msgstr "Ein Neustart wird erfordert von:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:532
+#: ../client/pk-console.c:520
 msgid "Session restart required:"
 msgstr "Ein Neustart der Sitzung ist erforderlich:"
 
+#. TRANSLATORS: a package requires the system to be restarted due to a security update
+#: ../client/pk-console.c:523
+msgid "System restart (security) required by:"
+msgstr "Ein Neustart (zur Verbesserung der Sicherheit) wird erfordert von:"
+
+#. TRANSLATORS: a package requires the session to be restarted due to a security update
+#: ../client/pk-console.c:526
+msgid "Session restart (security) required:"
+msgstr ""
+"Ein Neustart der Sitzung (zur Verbesserung der Sicherheit) ist erforderlich:"
+
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:535
+#: ../client/pk-console.c:529
 msgid "Application restart required by:"
 msgstr "Ein Programm-Neustart wird benötigt von:"
 
-#. TRANSLATORS: a package needs to restart they system
-#: ../client/pk-console.c:572
+#. TRANSLATORS: a package needs to restart their system
+#: ../client/pk-console.c:584
 msgid "Please restart the computer to complete the update."
 msgstr "Bitte starten Sie den Computer neu, um das Update abzuschließen."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:575
+#: ../client/pk-console.c:587
 msgid "Please logout and login to complete the update."
-msgstr "Bitte erneut einloggen um das Update abzuschließen."
+msgstr "Bitte erneut anmelden, um die Aktualisierung abzuschließen."
 
 #. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:578
+#: ../client/pk-console.c:590
 msgid "Please restart the application as it is being used."
 msgstr "Starten Sie die Anwendung neu, da sie benutzt wird."
 
+#. TRANSLATORS: a package needs to restart their system (due to security)
+#: ../client/pk-console.c:593
+msgid ""
+"Please restart the computer to complete the update as important security "
+"updates have been installed."
+msgstr ""
+"Bitte starten Sie den Computer neu, um die Aktualisierung abzuschließen, "
+"denn es sind wichtige Sicherheitsaktualisierungen installiert worden."
+
+#. TRANSLATORS: a package needs to restart the session (due to security)
+#: ../client/pk-console.c:596
+msgid ""
+"Please logout and login to complete the update as important security updates "
+"have been installed."
+msgstr ""
+"Bitte erneut anmelden, um die Aktualisierung abzuschließen, denn es sind "
+"wichtige Sicherheitsaktualisierungen installiert worden."
+
 #. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:691
+#: ../client/pk-console.c:723
 #, c-format
 msgid "The package %s is already installed"
-msgstr "Das Paket %s ist bereits installiert"
+msgstr "Das Paket »%s« ist bereits installiert"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:699
+#: ../client/pk-console.c:731
 #, c-format
 msgid "The package %s could not be installed: %s"
-msgstr "Das Paket %s konnte nicht installiert werden: %s"
+msgstr "Das Paket »%s« konnte nicht installiert werden: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:724
-#: ../client/pk-console.c:751
-#: ../client/pk-console.c:847
-#: ../client/pk-console.c:964
-#: ../client/pk-tools-common.c:62
-#: ../client/pk-tools-common.c:81
+#: ../client/pk-console.c:756 ../client/pk-console.c:779
+#: ../client/pk-console.c:875 ../client/pk-console.c:992
+#: ../client/pk-tools-common.c:62 ../client/pk-tools-common.c:81
 #: ../client/pk-tools-common.c:89
 #, c-format
 msgid "Internal error: %s"
 msgstr "Interner Fehler: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:732
-#: ../client/pk-console.c:1360
+#: ../client/pk-console.c:764 ../client/pk-console.c:1388
 #, c-format
 msgid "This tool could not install the packages: %s"
-msgstr "Konnte folgende Pakete nicht installieren: %s"
+msgstr "Folgende Pakete konnten nicht installiert werden: %s"
 
 #. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:759
+#: ../client/pk-console.c:787
 #, c-format
 msgid "This tool could not install the files: %s"
-msgstr "Die Dateien konnten nicht installieren werden: %s"
+msgstr "Folgende Dateien konnten nicht installiert werden: %s"
 
 #. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:815
+#: ../client/pk-console.c:843
 #, c-format
 msgid "This tool could not remove %s: %s"
-msgstr "Dieses Werkzeug konnte %s nicht entfernen: %s"
+msgstr "»%s« konnte nicht entfernt werden: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:838
-#: ../client/pk-console.c:876
-#: ../client/pk-console.c:909
+#: ../client/pk-console.c:866 ../client/pk-console.c:904
+#: ../client/pk-console.c:937
 #, c-format
 msgid "This tool could not remove the packages: %s"
-msgstr "Konnte folgende Pakete nicht entfernen: %s"
+msgstr "Folgende Pakete konnten nicht entfernt werden: %s"
 
 #. TRANSLATORS: When removing, we might have to remove other dependencies
-#: ../client/pk-console.c:888
+#: ../client/pk-console.c:916
 msgid "The following packages have to be removed:"
 msgstr "Die folgenden Pakete müssen entfernt werden:"
 
 #. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:895
+#: ../client/pk-console.c:923
 msgid "Proceed removing additional packages?"
 msgstr "Sollen die zusätzlichen Pakete entfernt werden?"
 
 #. TRANSLATORS: We did not remove any packages
-#: ../client/pk-console.c:900
+#: ../client/pk-console.c:928
 msgid "The package removal was canceled!"
-msgstr "Die Entfernung der Pakete wurde abgebrochen!"
+msgstr "Das Entfernen der Pakete wurde abgebrochen!"
 
 #. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:941
+#: ../client/pk-console.c:969
 #, c-format
 msgid "This tool could not download the package %s as it could not be found"
-msgstr "Dieses Werkzeug konnte das Paket %s nicht finden und herunterladen"
+msgstr ""
+"Das Paket »%s« konnte nicht heruntergeladen werden, weil es nicht gefunden "
+"wurde"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:972
+#: ../client/pk-console.c:1000
 #, c-format
 msgid "This tool could not download the packages: %s"
-msgstr "Konnte folgende Pakete nicht herunterladen: %s"
+msgstr "Folgende Pakete konnten nicht heruntergeladen werden: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:999
-#: ../client/pk-console.c:1008
+#: ../client/pk-console.c:1027 ../client/pk-console.c:1036
 #, c-format
 msgid "This tool could not update %s: %s"
-msgstr "Dieses Werkzeug konnte %s nicht aktualisieren: %s"
+msgstr "»%s« konnte nicht aktualisiert werden: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1030
-#: ../client/pk-console.c:1038
+#: ../client/pk-console.c:1058 ../client/pk-console.c:1066
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
-msgstr "Dieses Werkzeug konnte die Voraussetzungen %s nicht beziehen: %s"
+msgstr "Die Dateiliste für »%s« konnte nicht ermittelt werden: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1088 ../client/pk-console.c:1096
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
-msgstr "Dieses Werkzeug konnte keine Abhängigkeiten für %s beziehen: %s"
+msgstr "Die Abhängigkeiten für »%s« konnte nicht ermittelt werden: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1090
-#: ../client/pk-console.c:1098
+#: ../client/pk-console.c:1118 ../client/pk-console.c:1126
 #, c-format
 msgid "This tool could not get package details for %s: %s"
-msgstr "Dieses Werkzeug konnte die Paketdetails für %s beziehen: %s"
+msgstr "Die Detailinformationen für »%s« konnten nicht ermittelt werden: %s"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1120
+#: ../client/pk-console.c:1148
 #, c-format
 msgid "This tool could not find the files for %s: %s"
-msgstr "Dieses Werkzeug konnte keine Dateien für %s finden: %s"
+msgstr "Die Dateien für »%s« konnten nicht gefunden werden: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1128
+#: ../client/pk-console.c:1156
 #, c-format
 msgid "This tool could not get the file list for %s: %s"
-msgstr "Dieses Werkzeug konnte die Datei-Liste für %s nicht erstellen: %s"
+msgstr "Die Dateiliste für »%s« konnte nicht ermittelt werden: %s"
 
 #. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1150
+#: ../client/pk-console.c:1178
 #, c-format
 msgid "File already exists: %s"
-msgstr "Datei bereits vorhanden: %s"
+msgstr "Datei ist bereits vorhanden: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1155
-#: ../client/pk-console.c:1211
-#: ../client/pk-console.c:1286
+#: ../client/pk-console.c:1183 ../client/pk-console.c:1239
+#: ../client/pk-console.c:1314
 msgid "Getting package list"
-msgstr "Beziehe Paket-Liste"
+msgstr "Paketliste wird geholt"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1161
-#: ../client/pk-console.c:1217
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1189 ../client/pk-console.c:1245
+#: ../client/pk-console.c:1320
 #, c-format
 msgid "This tool could not get package list: %s"
-msgstr "Konnte folgende Pakete nicht beziehen: %s"
+msgstr "Folgende Paketliste konnte nicht geholt werden: %s"
 
 #. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1172
+#: ../client/pk-console.c:1200
 #, c-format
 msgid "Failed to save to disk"
-msgstr "Speicher auf die Festplatte fehlgeschlagen"
+msgstr "Speichern auf dem Datenträger ist fehlgeschlagen"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1206
-#: ../client/pk-console.c:1281
+#: ../client/pk-console.c:1234 ../client/pk-console.c:1309
 #, c-format
 msgid "File does not exist: %s"
 msgstr "Datei nicht vorhanden: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1238
+#: ../client/pk-console.c:1266
 msgid "Packages to add"
-msgstr "Paket zum Hinzufügen"
+msgstr "Hinzuzufügende Pakete"
 
 #. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1246
+#: ../client/pk-console.c:1274
 msgid "Packages to remove"
-msgstr "Pakete zum Entfernen"
+msgstr "Zu entfernende Pakete"
 
 #. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1314
+#: ../client/pk-console.c:1342
 #, c-format
 msgid "No new packages need to be installed"
-msgstr "Keine neuen Pakete müssen installiert werden"
+msgstr "Es müssen keine neuen Pakete installiert werden"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1320
+#: ../client/pk-console.c:1348
 msgid "To install"
-msgstr "ZUm Installieren"
+msgstr "Zum Installieren"
 
 #. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1332
+#: ../client/pk-console.c:1360
 msgid "Searching for package: "
 msgstr "Suche nach Paket:"
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1336
+#: ../client/pk-console.c:1364
 msgid "not found."
 msgstr "nicht gefunden."
 
 #. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1347
+#: ../client/pk-console.c:1375
 #, c-format
 msgid "No packages can be found to install"
-msgstr "Keine Pakete zum Installieren gefunden"
+msgstr "Es können keine Pakete zum Installieren gefunden werden"
 
 #. TRANSLATORS: installing new packages from package list
-#: ../client/pk-console.c:1353
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#: ../client/pk-console.c:1381
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:868
+#, c-format
 msgid "Installing packages"
-msgstr "Installiere Pakete"
+msgstr "Pakete werden installiert"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1389
+#: ../client/pk-console.c:1417
 #, c-format
 msgid "This tool could not find the update details for %s: %s"
-msgstr "Dieses Werkzeug konnte für %s keine Aktualisierungsdetails finden: %s"
+msgstr ""
+"Die Aktualisierungsinformationen für »%s« konnten nicht gefunden werden: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1397
+#: ../client/pk-console.c:1425
 #, c-format
 msgid "This tool could not get the update details for %s: %s"
-msgstr "Dieses Werkzeug konnte keine Aktualisierungsdetails für %s finden: %s"
+msgstr ""
+"Die Aktualisierungsinformationen für »%s« konnten nicht ermittelt werden: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1443
+#: ../client/pk-console.c:1456
 msgid "Error:"
 msgstr "Fehler:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1457
+#: ../client/pk-console.c:1470
 msgid "Package description"
 msgstr "Paketbeschreibung"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:1473
+#: ../client/pk-console.c:1486
 msgid "Message:"
-msgstr "Nachricht:"
+msgstr "Hinweis:"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1501
+#: ../client/pk-console.c:1514
 msgid "Package files"
-msgstr "Paket-Dateien"
+msgstr "Paketdateien"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1509
+#: ../client/pk-console.c:1522
 msgid "No files"
 msgstr "Keine Dateien"
 
 #. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1532
+#: ../client/pk-console.c:1545
 msgid "Repository signature required"
-msgstr "Signatur der Paketquellen benötigt"
+msgstr "Signatur des Paketdepots wird benötigt"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1542
+#: ../client/pk-console.c:1555
 msgid "Do you accept this signature?"
 msgstr "Akzeptieren Sie diese Signatur?"
 
 #. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1546
+#: ../client/pk-console.c:1559
 msgid "The signature was not accepted."
 msgstr "Diese Signatur wurde nicht akzeptiert."
 
 #. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1580
+#: ../client/pk-console.c:1593
 msgid "End user license agreement required"
-msgstr "Endbenutzer Lizenzvereinbarung benötigt"
+msgstr "Lizenzvereinbarung für Endbenutzer ist erforderlich"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1587
+#: ../client/pk-console.c:1600
 msgid "Do you agree to this license?"
 msgstr "Sind Sie mit dieser Lizenz einverstanden?"
 
 #. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1591
+#: ../client/pk-console.c:1604
 msgid "The license was refused."
 msgstr "Die Lizenz wurde zurückgewiesen."
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1620
+#: ../client/pk-console.c:1633
 msgid "The daemon crashed mid-transaction!"
 msgstr "Der Dämon stürzte während der Transaktion ab!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1673
+#: ../client/pk-console.c:1686
 msgid "PackageKit Console Interface"
-msgstr "PackageKit-Konsolen-Interface"
+msgstr "Schnittstelle zur PackageKit-Konsole"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1675
+#: ../client/pk-console.c:1688
 msgid "Subcommands:"
 msgstr "Unterbefehle:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1767
-#: ../client/pk-generate-pack.c:185
-#: ../client/pk-monitor.c:125
-#: ../contrib/command-not-found/pk-command-not-found.c:518
-#: ../src/pk-main.c:199
+#: ../client/pk-console.c:1781 ../client/pk-generate-pack.c:185
+#: ../client/pk-monitor.c:128
+#: ../contrib/command-not-found/pk-command-not-found.c:521
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:532
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
-msgstr "Zeige extra Debug-Informationen"
+msgstr "Erweiterte Fehlerdiagnose-Informationen anzeigen"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1770
-#: ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1784 ../client/pk-monitor.c:130
 msgid "Show the program version and exit"
-msgstr "Zeige Programm-Version und beende"
+msgstr "Programm-Version anzeigen und beenden"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1773
+#: ../client/pk-console.c:1787
 msgid "Set the filter, e.g. installed"
-msgstr "Setze den Filter, z.B. installiert"
+msgstr "Den Filter setzen, z.B. »installiert«"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1776
+#: ../client/pk-console.c:1790
 msgid "Exit without waiting for actions to complete"
-msgstr "Beende, ohne auf Beendigung der Aktionen zu warten"
+msgstr "Beenden, ohne auf Beendigung der Aktionen zu warten"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1803
+#: ../client/pk-console.c:1817
 msgid "This tool could not connect to system DBUS."
-msgstr "Dieses Werkzeug konnte nicht zum System-DBUS verbinden."
+msgstr "Es konnte keine Verbindung zum System-DBUS aufgebaut werden."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1894
+#: ../client/pk-console.c:1907
 msgid "The filter specified was invalid"
 msgstr "Der angegebene Filter war ungültig"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1912
+#: ../client/pk-console.c:1926
 msgid "A search type is required, e.g. name"
-msgstr "Ein Suchtyp ist nötig, z.B. Name"
+msgstr "Eine Suchart ist nötig, z.B. »Name«"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1918
-#: ../client/pk-console.c:1926
-#: ../client/pk-console.c:1934
-#: ../client/pk-console.c:1942
+#: ../client/pk-console.c:1933 ../client/pk-console.c:1942
+#: ../client/pk-console.c:1951 ../client/pk-console.c:1960
 msgid "A search term is required"
-msgstr "Einen Suchterm wird benötigt"
+msgstr "Ein Suchbegriff ist erforderlich"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1948
+#: ../client/pk-console.c:1967
 msgid "Invalid search type"
-msgstr "Ungültiger Suchtyp"
+msgstr "Ungültige Suchart"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1954
+#: ../client/pk-console.c:1973
 msgid "A package name or filename to install is required"
 msgstr "Ein Paket- oder Dateiname ist zur Installation nötig"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1962
-#, fuzzy
+#: ../client/pk-console.c:1982
 msgid "A type, key_id and package_id are required"
-msgstr "Sie müssen einen Typ, Schlüssel_id und Paket_id auswählen"
+msgstr "Ein Typ, Schlüsselkennung und Paketkennung sind nötig"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1970
+#: ../client/pk-console.c:1991
 msgid "A package name to remove is required"
-msgstr "Der Name eines Pakets wird benötigt, das entfernt werden soll."
+msgstr "Zum Entfernen wird ein Paketname benötigt"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1977
-msgid "A destination directory and then the package names to download are required"
-msgstr "Sie müssen ein Zielverzeichnis und dann die Pakete zum Herunterladen angeben"
+#: ../client/pk-console.c:1999
+#, fuzzy
+#| msgid ""
+#| "A destination directory and then the package names to download are "
+#| "required"
+msgid "A destination directory and the package names to download are required"
+msgstr "Es sind ein Zielordner und dann ein Paketname zum Herunterladen nötig"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1983
+#: ../client/pk-console.c:2006
 msgid "Directory not found"
-msgstr "Verzeichnis nicht gefunden"
+msgstr "Ordner nicht gefunden"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1990
-#, fuzzy
+#: ../client/pk-console.c:2014
 msgid "A licence identifier (eula-id) is required"
-msgstr "Sie müssen eine Lizenz (eula-id) angeben"
+msgstr "Eine Lizenzbezeichnung (eula-id) ist erforderlich"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1999
-#, fuzzy
+#: ../client/pk-console.c:2024
 msgid "A transaction identifier (tid) is required"
-msgstr "Ein Programm-Neustart wird benötigt"
+msgstr "Eine Transaktionsbezeichnung (tid) ist erforderlich"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2015
-#, fuzzy
+#: ../client/pk-console.c:2041
 msgid "A package name to resolve is required"
-msgstr "Ein Programm-Neustart wird benötigt"
+msgstr "Ein Paketname ist zur Auflösung erforderlich"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2023
-#: ../client/pk-console.c:2031
-#, fuzzy
+#: ../client/pk-console.c:2050 ../client/pk-console.c:2059
 msgid "A repository name is required"
-msgstr "Signatur der Paketquellen benötigt"
+msgstr "Ein Depotname wird benötigt"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2039
-#, fuzzy
+#: ../client/pk-console.c:2068
 msgid "A repo name, parameter and value are required"
-msgstr "Sie müssen einen Repositorynamen/Parameter und Wert angeben"
+msgstr "Ein Depotname, Parameter und Wert sind erforderlich"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2052
-#, fuzzy
+#: ../client/pk-console.c:2082
 msgid "An action, e.g. 'update-system' is required"
-msgstr "Ein Programm-Neustart wird benötigt"
+msgstr "Ein Vorgang, z.B. »update-system«, wird benötigt"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2058
-#, fuzzy
+#: ../client/pk-console.c:2089
 msgid "A correct role is required"
-msgstr "Ein Programm-Neustart wird benötigt"
+msgstr "Eine korrekte Rolle wird benötigt"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2064
+#: ../client/pk-console.c:2096
 msgid "Failed to get the time since this action was last completed"
-msgstr "Es war nicht möglich, die Zeit seit der letzten Fertigstellung festzustellen"
+msgstr ""
+"Es war nicht möglich, die Zeit seit der letzten Fertigstellung festzustellen"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2073
-#: ../client/pk-console.c:2084
-#: ../client/pk-console.c:2092
-#: ../client/pk-console.c:2108
-#: ../client/pk-console.c:2116
-#: ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:2106 ../client/pk-console.c:2118
+#: ../client/pk-console.c:2127 ../client/pk-console.c:2145
+#: ../client/pk-console.c:2154 ../client/pk-generate-pack.c:241
 msgid "A package name is required"
 msgstr "Ein Paketname wird benötigt"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2100
-#, fuzzy
+#: ../client/pk-console.c:2136
 msgid "A package provide string is required"
-msgstr "Ein Programm-Neustart wird benötigt"
+msgstr "Die Zeichenkette »Stellt bereit« wird benötigt"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2124
-#, fuzzy
+#: ../client/pk-console.c:2163
 msgid "A list file name to create is required"
-msgstr "Ein Neustart ist erforderlich"
+msgstr "Ein Dateiname ist zur Erstellung der Liste erforderlich"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2133
-#: ../client/pk-console.c:2142
-#, fuzzy
+#: ../client/pk-console.c:2173 ../client/pk-console.c:2183
 msgid "A list file to open is required"
-msgstr "Ein Aus- und Einloggen ist erforderlich"
+msgstr "Ein Dateiname ist zum Öffnen der Liste erforderlich"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2195
+#: ../client/pk-console.c:2237
 #, c-format
 msgid "Option '%s' is not supported"
-msgstr "Option '%s' wird nicht unterstützt"
+msgstr "Option »%s« wird nicht unterstützt"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2208
+#: ../client/pk-console.c:2250
 msgid "Incorrect privileges for this operation"
-msgstr "Sie haben nicht die notwendigen Privilegien für diese Operation"
+msgstr "Sie haben nicht die notwendigen Rechte für diese Operation"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2211
+#: ../client/pk-console.c:2253
 msgid "Command failed"
-msgstr "Befehl fehlgeschlagen"
+msgstr "Ausführung des Befehls fehlgeschlagen"
 
 #. TRANSLATORS: This is the state of the transaction
 #: ../client/pk-generate-pack.c:101
 msgid "Downloading"
-msgstr "Lade herunter"
+msgstr "Es wird heruntergeladen"
 
 #. TRANSLATORS: This is when the main packages are being downloaded
 #: ../client/pk-generate-pack.c:121
 msgid "Downloading packages"
-msgstr "Lade Pakete herunter"
+msgstr "Pakete werden heruntergeladen"
 
 #. TRANSLATORS: This is when the dependency packages are being downloaded
 #: ../client/pk-generate-pack.c:126
 msgid "Downloading dependencies"
-msgstr "Lade Abhängihkeiten herunter"
+msgstr "Abhängigkeiten werden heruntergeladen"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
 #: ../client/pk-generate-pack.c:188
 msgid "Set the file name of dependencies to be excluded"
-msgstr "Setze den Dateiname der Abhängigkeiten, die ausgeschlossen werden"
+msgstr "Den Dateinamen der Abhängigkeiten festlegen, die ausgeschlossen werden"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:191
-msgid "The output file or directory (the current directory is used if ommitted)"
-msgstr "Das Ausgabe-Verzeichnis (Das aktuelle Verzeichnis wird als Standard benutzt.)"
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
+msgstr ""
+"Die Ausgabedatei oder der Ausgabeordner (falls leer, wird der aktuelle "
+"Ordner verwendet)"
 
 #. TRANSLATORS: put a list of packages in the pack
 #: ../client/pk-generate-pack.c:194
 msgid "The package to be put into the service pack"
-msgstr "Das Paket in das Service-Pack integrieren"
+msgstr "Das Paket zum Hinzufügen in das Service-Pack"
 
 #. TRANSLATORS: put all pending updates in the pack
 #: ../client/pk-generate-pack.c:197
 msgid "Put all updates available in the service pack"
-msgstr "Füge alle Aktualisierungen dem Service-Pack hinzu"
+msgstr "Alle verfügbaren Aktualisierungen zum Service-Pack hinzufügen"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
 #: ../client/pk-generate-pack.c:225
 msgid "Neither --package or --updates option selected."
-msgstr "Weder --package noch --updates wurden als Option gewählt."
+msgstr "Weder »--package« noch »--updates« wurden als Option gewählt."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
 #: ../client/pk-generate-pack.c:233
@@ -736,73 +752,88 @@ msgstr "Beide Optionen ausgewählt."
 #. TRANSLATORS: This is when the user fails to supply the output
 #: ../client/pk-generate-pack.c:249
 msgid "A output directory or file name is required"
-msgstr "Ein Ausgabeverzeichnis oder ein Dateiname ist erforderlich"
+msgstr "Ein Ausgabeordner oder Dateiname ist erforderlich"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:267
-#: ../client/pk-generate-pack.c:273
+#: ../client/pk-generate-pack.c:267 ../client/pk-generate-pack.c:273
 msgid "The package manager cannot perform this type of operation."
-msgstr "Der Paket-Verwalter kann diesen Typ von Aufgabe nicht ausführen."
+msgstr "Die Paketverwaltung kann diesen Aufgabentyp nicht ausführen."
+
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:280
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+"Service-Packs können nicht erstellt werden, weil PackageKit ohne "
+"Unterstützung für »libarchive« erstellt wurde."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:291
 msgid "If specifying a file, the service pack name must end with"
-msgstr "Wenn Sie eine Datei angeben, muss der Service-Pack-Name Enden mit"
+msgstr ""
+"Wenn Sie eine Datei angeben, dann muss der Name des Service-Packs enden mit"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:301
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
-msgstr "Ein Pack mit dem selben Namen existiert bereits, möchten Sie es überschreiben?"
+msgstr ""
+"Ein Service-Pack mit dem selben Namen existiert bereits, soll es "
+"überschrieben werden?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:304
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
-msgstr "Das Pack wurde nicht überschrieben."
+msgstr "Das Service-Pack wurde nicht überschrieben."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:317
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
-msgstr "Verzeichnis konnte nicht erstellt werden:"
+msgstr "Ordner konnte nicht erstellt werden:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:327
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
-msgstr "Konnte Paketliste nicht öffnen."
+msgstr "Paketliste konnte nicht geöffnet werden."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:338
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
-msgstr "Suche Paketname."
+msgstr "Paketnamen werden gesucht."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
-msgstr "Paket '%s' konnte nicht gefunden werden: %s"
+msgstr "Paket »%s« konnte nicht gefunden werden: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
-msgstr "Erstelle Servicepack ..."
+msgstr "Service-Pack wird erstellt …"
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
-msgstr "Servicepack erstellt '%s'"
+msgstr "Service-Pack »%s« wurde erstellt"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:371
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
-msgstr "Erzeugen von '%s' fehlgeschlagen: %s"
+msgstr "Erzeugen von »%s« ist fehlgeschlagen: %s"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:143
+#: ../client/pk-monitor.c:146
 msgid "PackageKit Monitor"
 msgstr "PackageKit-Monitor"
 
+#: ../client/pk-monitor.c:183
+msgid "Cannot show the list of transactions"
+msgstr ""
+
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:118
 #, c-format
@@ -812,12 +843,12 @@ msgstr "Das Paket konnte nicht gefunden werden"
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
 #: ../client/pk-tools-common.c:130
 msgid "More than one package matches:"
-msgstr "Es passen mehr als ein Pakete:"
+msgstr "Es passt mehr als ein Paket:"
 
 #. TRANSLATORS: This finds out which package in the list to use
 #: ../client/pk-tools-common.c:137
 msgid "Please choose the correct package: "
-msgstr "Bitte wählen Sie das korrekte Paket: "
+msgstr "Bitte wählen Sie das richtige Paket: "
 
 #: ../client/pk-tools-common.c:162
 #, c-format
@@ -825,127 +856,317 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "Bitte geben Sie eine Zahl zwischen 1 und %i ein: "
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:369
+#: ../contrib/command-not-found/pk-command-not-found.c:372
 msgid "Failed to search for file"
-msgstr "Dateisuche fehlgeschlagen"
+msgstr "Die Suche nach der Datei ist fehlgeschlagen"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:493
+#: ../contrib/command-not-found/pk-command-not-found.c:496
 msgid "Failed to launch:"
-msgstr "Konnte nicht ausgeführt werden:"
+msgstr "Start ist fehlgeschlagen:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:537
 msgid "PackageKit Command Not Found"
-msgstr "PackageKit Befehl nicht gefunden"
+msgstr "PackageKit-Befehl wurde nicht gefunden"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:557
+#: ../contrib/command-not-found/pk-command-not-found.c:560
 msgid "Command not found."
-msgstr "Befehl nicht gefunden."
+msgstr "Befehl wurde nicht gefunden."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:564
+#: ../contrib/command-not-found/pk-command-not-found.c:567
 msgid "Similar command is:"
-msgstr "Ähnlicher Befehl:"
+msgstr "Ein ähnlicher Befehl lautet:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:573
+#: ../contrib/command-not-found/pk-command-not-found.c:576
 msgid "Run similar command:"
 msgstr "Ähnlichen Befehl ausführen:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:585
-#: ../contrib/command-not-found/pk-command-not-found.c:594
+#: ../contrib/command-not-found/pk-command-not-found.c:588
+#: ../contrib/command-not-found/pk-command-not-found.c:597
 msgid "Similar commands are:"
-msgstr "Ähnliche Befehle:"
+msgstr "Ähnliche Befehle sind:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:601
+#: ../contrib/command-not-found/pk-command-not-found.c:604
 msgid "Please choose a command to run"
-msgstr "Bitte wählen Sie einen Befehl zum Ausfüühren"
+msgstr "Bitte wählen Sie einen Befehl zum Ausführen"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:616
+#: ../contrib/command-not-found/pk-command-not-found.c:619
 msgid "The package providing this file is:"
-msgstr "Das Paket, das diese Datei zur Verfügung stellt, ist:"
+msgstr "Das folgende Paket stellt diese Datei bereit:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:621
+#: ../contrib/command-not-found/pk-command-not-found.c:624
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
-msgstr "Installiere das Paket '%s', das den Befehl '%s' anbietet?"
+msgstr ""
+"Soll das Paket »%s« installiert werden, welches den Befehl »%s« bereitstellt?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:642
+#: ../contrib/command-not-found/pk-command-not-found.c:645
 msgid "Packages providing this file are:"
-msgstr "Pakete, die diese Datei anbieten sind:"
+msgstr "Pakete, die diese Datei bereitstellen, sind:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:651
+#: ../contrib/command-not-found/pk-command-not-found.c:654
 msgid "Suitable packages are:"
 msgstr "Passende Pakete sind:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:659
+#: ../contrib/command-not-found/pk-command-not-found.c:662
 msgid "Please choose a package to install"
 msgstr "Bitte wählen Sie ein Paket zum Installieren"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/src/contents.cpp:298
+#: ../contrib/browser-plugin/pk-plugin-install.c:433
 msgid "Getting package information..."
-msgstr "Erhalte Paket-Informationen ..."
+msgstr "Paket-Informationen werden gelesen …"
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/src/contents.cpp:304
+#: ../contrib/browser-plugin/pk-plugin-install.c:439
 #, c-format
 msgid "Run %s"
-msgstr "Starte %s"
+msgstr "%s starten"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/src/contents.cpp:310
+#: ../contrib/browser-plugin/pk-plugin-install.c:445
 msgid "Installed version"
 msgstr "Installierte Version"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:318
+#: ../contrib/browser-plugin/pk-plugin-install.c:453
 #, c-format
 msgid "Run version %s now"
-msgstr "Starte Version %s jetzt"
+msgstr "Jetzt Version %s starten"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:324
+#: ../contrib/browser-plugin/pk-plugin-install.c:459
 msgid "Run now"
-msgstr "Starte jetzt"
+msgstr "Jetzt ausführen"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:330
+#: ../contrib/browser-plugin/pk-plugin-install.c:465
 #, c-format
 msgid "Update to version %s"
-msgstr "Aktualisiere auf Version %s"
+msgstr "Aktualisierung auf Version %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/src/contents.cpp:336
+#: ../contrib/browser-plugin/pk-plugin-install.c:471
 #, c-format
 msgid "Install %s now"
-msgstr "Installiere %s jetzt"
+msgstr "%s jetzt installieren"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:339
+#: ../contrib/browser-plugin/pk-plugin-install.c:474
 msgid "Version"
 msgstr "Version"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/src/contents.cpp:344
+#: ../contrib/browser-plugin/pk-plugin-install.c:479
 msgid "No packages found for your system"
 msgstr "Keine Pakete für Ihr System gefunden"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/src/contents.cpp:349
+#: ../contrib/browser-plugin/pk-plugin-install.c:484
 msgid "Installing..."
-msgstr "Installieren ..."
+msgstr "Es wird installiert …"
+
+#. TRANSLATORS: we are starting to install the packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:186
+msgid "Starting install"
+msgstr "Installation wird begonnen"
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:379
+#, c-format
+msgid "Failed to find the package %s, or already installed: %s"
+msgstr ""
+"Das Paket »%s« konnte nicht gefunden werden, oder es ist bereits installiert: "
+"%s"
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:535
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
+msgstr ""
+"Keine Pakete tatsächlich installieren, sondern nur die Installation "
+"simulieren"
+
+#. command line argument, do we skip packages that depend on the ones specified
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:538
+msgid "Do not install dependencies of the core packages"
+msgstr "Keine Abhängigkeiten der Grundpakete installieren"
+
+#. command line argument, do we operate quietly
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:541
+msgid "Do not display information or progress"
+msgstr "Keine Informationen oder Fortschritt anzeigen"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:559
+msgid "PackageKit Debuginfo Installer"
+msgstr "PackageKit Fehlerdiagnose-Installation"
+
+#. TRANSLATORS: the use needs to specify a list of package names on the command line
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:571
+#, c-format
+msgid "ERROR: Specify package names to install."
+msgstr "FEHLER: Sie müssen Paketnamen zum Installieren angeben."
+
+#. TRANSLATORS: we are getting the list of repositories
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:605
+#, c-format
+msgid "Getting sources list"
+msgstr "Quellenliste wird geholt"
+
+#. TRANSLATORS: all completed 100%
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:623
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:663
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:698
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:782
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:893
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:937
+#, c-format
+msgid "OK."
+msgstr "OK."
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:626
+#, c-format
+msgid "Found %i enabled and %i disabled sources."
+msgstr "Es wurden %i aktivierte und %i deaktivierte Quellen gefunden."
+
+#. TRANSLATORS: we're finding repositories that match out pattern
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:633
+#, c-format
+msgid "Finding debugging sources"
+msgstr "Fehlerdiagnose-Quellen werden gesucht"
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:666
+#, c-format
+msgid "Found %i disabled debuginfo repos."
+msgstr "Es wurden %i deaktivierte Fehlerdiagnose-Depots gefunden."
+
+#. TRANSLATORS: we're now enabling all the debug sources we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:673
+#, c-format
+msgid "Enabling debugging sources"
+msgstr "Fehlerdiagnose-Quellen werden aktiviert"
+
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:683
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:767
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:811
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:878
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:922
+msgid "FAILED."
+msgstr "FEHLGESCHLAGEN."
+
+#. TRANSLATORS: tell the user how many we enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:701
+#, c-format
+msgid "Enabled %i debugging sources."
+msgstr "%i Fehlerdiagnose-Quellen wurden aktiviert."
+
+#. TRANSLATORS: we're now finding packages that match in all the repos
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:708
+#, c-format
+msgid "Finding debugging packages"
+msgstr "Fehlerdiagnose-Pakete werden gesucht."
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:720
+#, c-format
+msgid "Failed to find the package %s: %s"
+msgstr "Das Paket »%s« konnte nicht gefunden werden: %s"
+
+#. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:743
+#, c-format
+msgid "Failed to find the debuginfo package %s: %s"
+msgstr "Das Fehlerdiagnose-Paket »%s« konnte nicht gefunden werden: %s"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:771
+#, c-format
+msgid "Found no packages to install."
+msgstr "Es wurden keine Pakete zum Installieren gefunden."
+
+#. TRANSLATORS: tell the user we found some packages, and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#, c-format
+msgid "Found %i packages:"
+msgstr "Es wurden %i Pakete gefunden:"
+
+#. TRANSLATORS: tell the user we are searching for deps
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:801
+#, c-format
+msgid "Finding packages that depend on these packages"
+msgstr "Es werden Pakete gesucht, die von diesen Paketen abhängen"
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:814
+#, c-format
+msgid "Could not find dependant packages: %s"
+msgstr "Es konnten keine abhängigen Pakete gefunden werden: %s"
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
+#, c-format
+msgid "Found %i extra packages."
+msgstr "Es wurden %i zusätzliche Pakete gefunden."
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:834
+#, c-format
+msgid "No extra packages required."
+msgstr "Es werden keine zusätzlichen Pakete benötigt."
+
+#. TRANSLATORS: tell the user we found some packages (and deps), and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:843
+#, c-format
+msgid "Found %i packages to install:"
+msgstr "Es wurden %i Pakete zum Installieren gefunden:"
+
+#. TRANSLATORS: simulate mode is a testing mode where we quit before the action
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:856
+#, c-format
+msgid "Not installing packages in simulate mode"
+msgstr "Es werden im Simulationsmodus keine Pakete installiert"
+
+#. TRANSLATORS: coul dnot install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:881
+#, c-format
+msgid "Could not install packages: %s"
+msgstr "Die Pakete konnten nicht installiert werden: %s"
+
+#. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:913
+#, c-format
+msgid "Disabling sources previously enabled"
+msgstr "Zuvor aktivierte Quellen werden deaktiviert"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:925
+#, c-format
+msgid "Could not disable the debugging sources: %s"
+msgstr "Die Fehlerdiagnose-Quellen konnten nicht deaktiviert werden: %s"
+
+#. TRANSLATORS: we disabled all the debugging repos that we enabled before
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:940
+#, c-format
+msgid "Disabled %i debugging sources."
+msgstr "%i Fehlerdiagnose-Quellen wurden deaktiviert."
 
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
@@ -959,98 +1180,176 @@ msgstr "PackageKit-Paketliste"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit Service-Pack"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
+#. SECURITY:
+#. - Normal users do not require admin authentication to accept new
+#. licence agreements.
+#. - Change this to 'auth_admin' for environments where users should not
+#. be given the option to make legal decisions.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:7
 msgid "Accept EULA"
-msgstr "EULA akzeptieren"
+msgstr "EULA annehmen"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
 msgid "Authentication is required to accept a EULA"
-msgstr "Authentifizierung wird benötigt, um die EULA zu Akzeptieren"
+msgstr "Legitimation ist zum Annehmen der EULA erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to cancel a task that was not started by yourself"
-msgstr "Authentifizierung wird benötigt, um eine Aufgabe abzubrechen, die nicht von Ihnen geordert wurde"
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr ""
+"Legitimation ist zum Abbrechen einer Aufgabe erforderlich, die nicht von "
+"Ihnen initiiert wurde"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
 msgstr ""
+"Legitimation ist zur Änderung der Einstellungen zu den Softwarequellen "
+"erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to consider a key used for signing packages as trusted"
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
 msgstr ""
+"Legitimation ist zum Vertrauen eines Paketsignaturschlüssels erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
 msgid "Authentication is required to install a signed package"
-msgstr "Authentifizierung wird benötigt, um ein signiertes Paket zu Installieren"
+msgstr ""
+"Legitimation ist zum Installieren eines signierten Paketes erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Authentication is required to install an untrusted package"
-msgstr "Authentifizierung wird benötigt, um ein nicht-vertrauenswürdiges Paket zu Installieren"
+msgstr ""
+"Legitimation ist zum Installieren eines nicht vertrauenswürdigen Paketes "
+"erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
 msgid "Authentication is required to refresh the system sources"
-msgstr ""
+msgstr "Legitimation ist zum Aktualisieren der Systemressourcen erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
 msgid "Authentication is required to remove packages"
-msgstr "Authentifizierung wird benötigt, um Pakete zu entfernen"
+msgstr "Legitimation ist zum Entfernen eines Paketes erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to rollback a transaction"
-msgstr ""
+msgstr "Legitimation ist zum Revidieren einer Transaktion erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to set the network proxy used for downloading packages"
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
 msgstr ""
+"Legitimation ist zum Festlegen eines Netzwerk-Proxys zum Herunterladen von "
+"Paketen erforderlich"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
 msgid "Authentication is required to update packages"
-msgstr "Authentifizierung wird benötigt, um Pakete zu Aktualisieren"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+msgstr "Legitimation ist zum Aktualisieren von Paketen erforderlich"
+
+#. SECURITY:
+#. - Normal users are allowed to cancel their own task without
+#. authentication, but a different user id needs the admin password
+#. to cancel another users task.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:24
 msgid "Cancel foreign task"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+msgstr "Externe Aufgabe abbrechen"
+
+#. SECURITY:
+#. - Normal users require admin authentication to enable or disable
+#. software sources as this can be used to enable new updates or
+#. install different versions of software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:30
 msgid "Change software source parameters"
-msgstr "Software-Quellen-Parameter ändern"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+msgstr "Einstellungen der Depotquelle ändern"
+
+#. SECURITY:
+#. - Normal users do not need authentication to install signed packages
+#. from signed repositories, as this cannot exploit a system.
+#. - Paranoid users (or parents!) can change this to 'auth_admin' or
+#. 'auth_admin_keep'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:37
 msgid "Install signed package"
-msgstr "Sigiertes Paket wird installiert"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+msgstr "Signierte Pakete installieren"
+
+#. SECURITY:
+#. - Normal users require admin authentication to install untrusted or
+#. unrecognised packages, as allowing users to do this without a
+#. password would be a massive security hole.
+#. - This is not retained as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:44
 msgid "Install untrusted local file"
-msgstr "Nicht-vertrauenswürdige, lokale Datei wird installiert"
+msgstr "Nicht vertrauenswürdige lokale Datei installieren"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+#. SECURITY:
+#. - Normal users do not require admin authentication to refresh the
+#. cache, as this doesn't actually install or remove software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:49
 msgid "Refresh system sources"
-msgstr "Aktualisiere System-Quellen"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+msgstr "Systemressourcen aktualisieren"
+
+#. SECURITY:
+#. - Normal users require admin authentication to remove packages as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#. - Be sure to close the tool used to remove the packages after the
+#. admin authentication has been obtained, otherwise packages can still
+#. be removed. If this is not possible, change this authentication to
+#. 'auth_admin'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Remove package"
-msgstr "Paket wird entfernt"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
+msgstr "Paket entfernen"
+
+#. SECURITY:
+#. - Normal users require admin authentication to rollback system state
+#. as this will change a large number of packages, and could expose the
+#. system to previously patched security vulnerabilities.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:65
 msgid "Rollback to a previous transaction"
-msgstr ""
+msgstr "Eine vorhergehende Transaktion revidieren"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
+#. SECURITY:
+#. - Normal users do not require admin authentication to set the proxy
+#. used for downloading packages.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:70
 msgid "Set network proxy"
-msgstr "Netzwerk-Proxy angeben"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgstr "Netwerk-Proxy festlegen"
+
+#. SECURITY:
+#. - Normal users require admin authentication to add signing keys.
+#. - This implies adding an explicit trust, and should not be granted
+#. without a secure authentication.
+#. - This is not kept as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Trust a key used for signing packages"
-msgstr "Einem Schlüssel, um Pakete zu signieren, vertrauen"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:22
+msgstr "Einem Schlüssel zum Signieren von Paketen vertrauen"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to update the
+#. system as the packages will be signed, and the action is required
+#. to update the system when unattended.
+#. - Changing this to anything other than 'yes' will break unattended
+#. updates.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:85
 msgid "Update packages"
-msgstr "Paket wird aktualisiert"
+msgstr "Pakete aktualisieren"
 
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
-msgstr "Startfehler wegen Sicherheitseinstellungen auf diesem Rechner"
+msgstr "Startfehler wegen Sicherheitsrichtlinien auf diesem Rechner"
 
 #. TRANSLATORS: only two ways this can fail...
 #: ../src/pk-main.c:89
@@ -1060,62 +1359,101 @@ msgstr "Dies kann aus zwei Gründen passieren:"
 #. TRANSLATORS: only allowed to be owned by root
 #: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
-msgstr "Der korrekte Benutzer führt nicht das Programm aus (normalerweise root)"
+msgstr ""
+"Der korrekte Benutzer führt nicht das Programm aus (normalerweise root)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
-msgstr "Die org.freedesktop.PackageKit.conf-Datei ist nicht auf Ihrem Rechner im system-Verzeichnis:"
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr ""
+"Die org.freedesktop.PackageKit.conf-Datei ist nicht auf Ihrem Rechner im "
+"Systemordner installiert:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:193
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
-msgstr "Verwende Packaging-Backend z.B. dummy"
+msgstr "Zu verwendendes Packaging-Backend, z.B. dummy"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:196
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
-msgstr "Dämonisiere und löse vom Terminal ab"
+msgstr "In Dienst umwandeln und vom Terminal ablösen"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
-msgstr "Deaktiviere Idle-Timer"
+msgstr "Den Bereitschaftszähler deaktivieren"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
-msgstr "Zeige Version und beende"
+msgstr "Version zeigen und beenden"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:208
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
-msgstr "Beende nach kurzer Verzögerung"
+msgstr "Nach kurzer Verzögerung beenden"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:211
-#, fuzzy
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
-msgstr "Beende, nachdem der Kern geladen wurde"
+msgstr "Nach Laden des Kerns beenden"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "PackageKit-Dienst"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:263
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
-msgstr "Konnte nicht zum System-Bus verbinden"
+msgstr "Verbindung zum System-Bus konnte nicht hergestellt werden"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason
-#: ../src/pk-main.c:313
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
-msgstr "Fehler beim Starten von:"
+msgstr "Fehler beim Startversuch:"
+
+#: ../src/pk-polkit-action-lookup.c:143
+msgid "To install debugging packages, extra sources need to be enabled"
+msgstr ""
+"Zur Installation von Fehlerdiagnose-Paketen müssen zusätzliche Quellen "
+"aktiviert werden"
+
+#. TRANSLATORS: is not GPG signed
+#: ../src/pk-polkit-action-lookup.c:156 ../src/pk-polkit-action-lookup.c:175
+msgid "The software is not from a trusted source."
+msgstr "Sie Software stammt nicht aus einer vertrauenswürdigen Quelle."
+
+#. TRANSLATORS: user has to trust provider -- I know, this sucks
+#: ../src/pk-polkit-action-lookup.c:160
+msgid "Do not update this package unless you are sure it is safe to do so."
+msgstr ""
+"Aktualisieren Sie dieses Paket nur, wenn Sie überzeugt sind, dass dies "
+"sicher ist."
+
+#. TRANSLATORS: warn the user that all bets are off
+#: ../src/pk-polkit-action-lookup.c:164 ../src/pk-polkit-action-lookup.c:183
+msgid "Malicious software can damage your computer or cause other harm."
+msgstr ""
+"Bösartige Software kann Ihren Computer beschädigen oder anderen Schaden "
+"anrichten."
+
+#. TRANSLATORS: user has to trust provider -- I know, this sucks
+#: ../src/pk-polkit-action-lookup.c:179
+msgid "Do not install this package unless you are sure it is safe to do so."
+msgstr "Installieren Sie dieses Paket nur, wenn Sie dies für sicher halten."
+
+#. TRANSLATORS: if the transaction is forced to install only trusted packages
+#: ../src/pk-polkit-action-lookup.c:263
+msgid "Only trusted"
+msgstr "Nur vertrauenswürdige"
 
 #~ msgid "The action, one of 'create', 'add', or 'remove'"
 #~ msgstr "Aktion ('create', 'add' oder 'remove')"
+
 #~ msgid "Main cache file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Hauptzwischenspeicher-Datei (wenn nicht genannt, wird die Standarddatei "
@@ -1125,8 +1463,10 @@ msgstr "Fehler beim Starten von:"
 #~ msgid "Source cache file to add to the main database"
 #~ msgstr ""
 #~ "Quellen-Zwischenspeicher, der zur Hauptdatenbank hinzugefügt werden soll"
+
 #~ msgid "Icon directory"
 #~ msgstr "Symbol-Verzeichnis"
+
 #~ msgid "Name of the remote repo"
 #~ msgstr "Name der entfernten Quelle"
 
@@ -1138,80 +1478,108 @@ msgstr "Fehler beim Starten von:"
 #~ msgid "Main database file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Hauptdatenbank-Datei (wenn nicht genannt, wird die Standard-Datei benutzt)"
+
 #~ msgid "You need to specify a search type, e.g. name"
 #~ msgstr "Sie müssen einen Suchtyp angeben, z.B. einen Namen"
+
 #~ msgid "You need to specify a search term"
 #~ msgstr "Sie müssen einen Suchwert angeben"
-#~ msgid "You need to specify a package or file to install"
-#~ msgstr "Sie müssen ein Paket oder eine Datei zum installieren angeben"
+
 #~ msgid "You need to specify a package to remove"
 #~ msgstr "Sie müssen ein Paket zum Löschen angeben"
+
 #~ msgid "You need to specify a package name to resolve"
 #~ msgstr "Sie müssen einen Paketnamen zum Auflösen angeben"
+
 #~ msgid "You need to specify a repository name"
 #~ msgstr "Sie müssen einen Repository-Namen angeben"
+
 #~ msgid "You need to specify an action, e.g. 'update-system'"
 #~ msgstr "Sie müssen eine Aktion angeben, z.B. 'update-system'"
+
 #~ msgid "You need to specify a correct role"
 #~ msgstr "Sie müssen eine korrekte Rolle angeben"
+
 #~ msgid "You need to specify a package to find the details for"
 #~ msgstr "Sie müssen ein Paket, für das nach Details gesucht wird, angeben"
+
 #~ msgid "You need to specify a package to find the files for"
 #~ msgstr "Sie müssen ein Paket, für das nach Dateien gesucht wird, angeben"
+
 #~ msgid "You need to specify a list file to create"
 #~ msgstr "Sie müssen eine Dateiliste zum Erzeugen angeben"
+
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Sie müssen eine Dateiliste zum Öffnen angeben"
+
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "Dieser Werkzeug konnte das Paket nicht entfernen: '%s'"
+
 #~ msgid "Could not find package to remove"
 #~ msgstr "Packet zum Löschen konnte nicht gefunden werden"
+
 #~ msgid "Cancelled!"
 #~ msgstr "Abbruch!"
+
 #~ msgid "Could not find package to download"
 #~ msgstr "Das Packet zum Herunterladen konnte nicht gefunden werden"
+
 #~ msgid "Could not find package to update"
 #~ msgstr "Das Packet zum Aktualisieren konnte nicht gefunden werden"
+
 #~ msgid "Could not find what packages require"
 #~ msgstr "Konnte nicht herausfinden, was die Packete benötigen"
+
 #~ msgid "Could not find details for"
 #~ msgstr "Konnte keine Details finden für"
+
 #~ msgid "Okay to import key?"
 #~ msgstr "Soll der Schlüssel importiert werden?"
+
 #~ msgid "Did not import key"
 #~ msgstr "Schlüssel wurde nicht importiert"
+
 #~ msgid "Did not agree to licence, task will fail"
 #~ msgstr "Sie stimmten der Lizenz nicht zu, die Aufgabe wird fehlschlagen"
-#~ msgid "Could not find a package match"
-#~ msgstr "Es konnte kein Packet gefunden werden"
+
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr ""
 #~ "Herunterladen fehlgeschlagen: Ungültige package_id und/oder ungültiges "
 #~ "Verzeichnis"
+
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "Eine gültige Metadata–Datei konnte nicht gefunden werden"
+
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Möchten Sie die zusätzlichen Packete herunterladen"
+
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Sie müssen einen Packnamen und Packete zum Packen angeben\n"
+
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Ungültiger Name für ein Service Pack, geben Sie einen Namen an mit ."
 #~ "servicepack als Endung\n"
+
 #~ msgid "Could not set database readonly"
 #~ msgstr "Datenbank konnte nicht nur-lesbar gesetzt werden"
+
 #~ msgid "Could not open database: %s"
 #~ msgstr "Datenbank %s konnte nicht geöffnet werden"
+
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Sie sollten dieses Programm vermutlich als Benutzer root ausführen"
+
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>%s wird ausgeführt</"
 #~ "span>"
+
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
@@ -1219,27 +1587,30 @@ msgstr "Fehler beim Starten von:"
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Version %s wird jetzt ausgeführt</"
 #~ "span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Wird jetzt ausgeführt</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Aktualisiere zu Version %s</span>"
+
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>%s wird jetzt "
 #~ "installiert</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
-
commit 88b1322785a14189267b7f3db866101e3e0136f6
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 20:14:09 2009 +0100

    yum: Ensure selectGroup() returns a list of packages by forcing deselectGroup()

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 8d29091..b26ba0c 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1518,6 +1518,10 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                     self.error(ERROR_PACKAGE_ALREADY_INSTALLED, "This Group %s is already installed" % grp.groupid, exit=False)
                     return
                 try:
+                    # I'm not sure why we have to deselectGroup() before we selectGroup(), but if we don't
+                    # then selectGroup returns no packages. I've already made sure that any selectGroup
+                    # invokations do deselectGroup, so I'm not sure what's going on...
+                    self.yumbase.deselectGroup(grp.groupid)
                     txmbr = self.yumbase.selectGroup(grp.groupid)
                     if not txmbr:
                         self.error(ERROR_GROUP_NOT_FOUND, "No packages were found in the %s group for %s." % (grp.groupid, _format_package_id(package_id)));
commit 2b024b32a453e14da1153e64f6c30e72991e2a5d
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 20:08:39 2009 +0100

    yum: Detect when the group that is not installed contains no packages

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 67f8a0e..8d29091 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1511,19 +1511,21 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         else:
             self.yumbase.conf.gpgcheck = 0
 
-        for package in package_ids:
-            grp = self._is_meta_package(package)
+        for package_id in package_ids:
+            grp = self._is_meta_package(package_id)
             if grp:
                 if grp.installed:
                     self.error(ERROR_PACKAGE_ALREADY_INSTALLED, "This Group %s is already installed" % grp.groupid, exit=False)
                     return
                 try:
                     txmbr = self.yumbase.selectGroup(grp.groupid)
+                    if not txmbr:
+                        self.error(ERROR_GROUP_NOT_FOUND, "No packages were found in the %s group for %s." % (grp.groupid, _format_package_id(package_id)));
                 except Exception, e:
                     self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
                 txmbrs.extend(txmbr)
             else:
-                pkg, inst = self._findPackage(package)
+                pkg, inst = self._findPackage(package_id)
                 if pkg and not inst:
                     txmbr = self.yumbase.install(po=pkg)
                     txmbrs.extend(txmbr)
commit c5c9fd55781bed7604473bec2d7a636a8d2be175
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 20:07:25 2009 +0100

    yum: use a better error enum when all packages are already installed

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 6640e42..67f8a0e 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1543,7 +1543,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             except PkError, e:
                 self.error(e.code, e.details, exit=False)
         else:
-            self.error(ERROR_PACKAGE_ALREADY_INSTALLED, "The packages failed to be installed", exit=False)
+            self.error(ERROR_ALL_PACKAGES_ALREADY_INSTALLED, "The packages are already all installed", exit=False)
 
     def _checkForNewer(self, po):
         pkgs = None
commit a0ee530d3dc996cb8c5f975a8bd8814e45384506
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 20:06:22 2009 +0100

    yum: unselect groups we previously selected when we get package deps

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 46c5247..6640e42 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1224,6 +1224,11 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                         self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
                     for txmbr in self.yumbase.tsInfo:
                         deps_list.append(txmbr.po)
+                    # unselect what we previously selected
+                    try:
+                        self.yumbase.deselectGroup(grp.groupid)
+                    except Exception, e:
+                        self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
             else:
                 pkg, inst = self._findPackage(package_id)
                 # This simulates the addition of the package
commit 7f689b39ee505c25c65ddb76f23a0de83af89528
Author: logan <logan at fedoraproject.org>
Date:   Thu Jul 23 18:19:53 2009 +0000

    Sending translation for Spanish

diff --git a/po/es.po b/po/es.po
index fd16fc9..862cc10 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-15 10:32+0000\n"
-"PO-Revision-Date: 2009-07-15 09:58-0300\n"
+"POT-Creation-Date: 2009-07-23 14:41+0000\n"
+"PO-Revision-Date: 2009-07-23 15:11-0300\n"
 "Last-Translator: Héctor Daniel Cabrera <h.daniel.cabrera at gmail.com>\n"
 "Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -537,9 +537,9 @@ msgstr "Subcomandos:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1780
+#: ../client/pk-console.c:1781
 #: ../client/pk-generate-pack.c:185
-#: ../client/pk-monitor.c:125
+#: ../client/pk-monitor.c:128
 #: ../contrib/command-not-found/pk-command-not-found.c:521
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:532
 #: ../src/pk-main.c:211
@@ -547,155 +547,155 @@ msgid "Show extra debugging information"
 msgstr "Mostrar información extra de depuración"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1783
-#: ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1784
+#: ../client/pk-monitor.c:130
 msgid "Show the program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1786
+#: ../client/pk-console.c:1787
 msgid "Set the filter, e.g. installed"
 msgstr "Establecer el filtro, ej. instalado"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1789
+#: ../client/pk-console.c:1790
 msgid "Exit without waiting for actions to complete"
 msgstr "Salir sin esperar que las acciones se completen"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1816
+#: ../client/pk-console.c:1817
 msgid "This tool could not connect to system DBUS."
 msgstr "Esta herramienta no se pudo conectar al DBUS del sistema."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1905
+#: ../client/pk-console.c:1907
 msgid "The filter specified was invalid"
 msgstr "El filtro especificado fue inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1923
+#: ../client/pk-console.c:1926
 msgid "A search type is required, e.g. name"
 msgstr "Se necesita un tipo de búsqueda, por ejemplo, nombre"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1929
-#: ../client/pk-console.c:1937
-#: ../client/pk-console.c:1945
-#: ../client/pk-console.c:1953
+#: ../client/pk-console.c:1933
+#: ../client/pk-console.c:1942
+#: ../client/pk-console.c:1951
+#: ../client/pk-console.c:1960
 msgid "A search term is required"
 msgstr "Se necesita un término de búsqueda"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1959
+#: ../client/pk-console.c:1967
 msgid "Invalid search type"
 msgstr "Tipo de búsqueda inválido"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1965
+#: ../client/pk-console.c:1973
 msgid "A package name or filename to install is required"
 msgstr "Se requiere un nombre de paquete o nombre de archivo para instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1973
+#: ../client/pk-console.c:1982
 msgid "A type, key_id and package_id are required"
 msgstr "Se necesita un tipo, key_id y package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1981
+#: ../client/pk-console.c:1991
 msgid "A package name to remove is required"
 msgstr "Necesita un nombre de paquete para eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1988
-msgid "A destination directory and then the package names to download are required"
-msgstr "Se debe especificar el directorio destino y luego los nombres paquetes para descargar"
+#: ../client/pk-console.c:1999
+msgid "A destination directory and the package names to download are required"
+msgstr "Se necesita un directorio de destino y los nombres de los paquetes a descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1994
+#: ../client/pk-console.c:2006
 msgid "Directory not found"
 msgstr "Directorio no encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2001
+#: ../client/pk-console.c:2014
 msgid "A licence identifier (eula-id) is required"
 msgstr "Se necesita un identificador de licencia (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2010
+#: ../client/pk-console.c:2024
 msgid "A transaction identifier (tid) is required"
 msgstr "Se necesita un identificador de transacción (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2026
+#: ../client/pk-console.c:2041
 msgid "A package name to resolve is required"
 msgstr "Se necesita un nombre de paquete para resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2034
-#: ../client/pk-console.c:2042
+#: ../client/pk-console.c:2050
+#: ../client/pk-console.c:2059
 msgid "A repository name is required"
 msgstr "Se necesita un nombre de repositorio"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2050
+#: ../client/pk-console.c:2068
 msgid "A repo name, parameter and value are required"
 msgstr "Debe especificar un nombre de repositorio, parámetro y valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2063
+#: ../client/pk-console.c:2082
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Debe especificar una acción, por ejemplo, «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2069
+#: ../client/pk-console.c:2089
 msgid "A correct role is required"
 msgstr "Se necesita un rol correcto"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2075
+#: ../client/pk-console.c:2096
 msgid "Failed to get the time since this action was last completed"
 msgstr "Falló al obtener la hora de la última vez que se completó esta acción"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2084
-#: ../client/pk-console.c:2095
-#: ../client/pk-console.c:2103
-#: ../client/pk-console.c:2119
+#: ../client/pk-console.c:2106
+#: ../client/pk-console.c:2118
 #: ../client/pk-console.c:2127
+#: ../client/pk-console.c:2145
+#: ../client/pk-console.c:2154
 #: ../client/pk-generate-pack.c:241
 msgid "A package name is required"
 msgstr "Se necesita un nombre de paquete"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2111
+#: ../client/pk-console.c:2136
 msgid "A package provide string is required"
 msgstr "Se necesita la cadena de lo que proporciona el paquete"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2135
+#: ../client/pk-console.c:2163
 msgid "A list file name to create is required"
 msgstr "Se necesita un nombre de archivo de la lista"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2144
-#: ../client/pk-console.c:2153
+#: ../client/pk-console.c:2173
+#: ../client/pk-console.c:2183
 msgid "A list file to open is required"
 msgstr "Se necesita un archivo de lista para abrir"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2206
+#: ../client/pk-console.c:2237
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "La opción «%s» no está soportada"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2219
+#: ../client/pk-console.c:2250
 msgid "Incorrect privileges for this operation"
 msgstr "Privilegios incorrectos para esta operación"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2222
+#: ../client/pk-console.c:2253
 msgid "Command failed"
 msgstr "Falló el comando"
 
@@ -815,10 +815,14 @@ msgid "Failed to create '%s': %s"
 msgstr "Falló al crear «%s»: %s"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:143
+#: ../client/pk-monitor.c:146
 msgid "PackageKit Monitor"
 msgstr "Monitor de PackageKit"
 
+#: ../client/pk-monitor.c:183
+msgid "Cannot show the list of transactions"
+msgstr "No es posible mostrar la lista de transacciones"
+
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:118
 #, c-format
@@ -910,56 +914,56 @@ msgid "Please choose a package to install"
 msgstr "Elija un paquete para instalar"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:461
+#: ../contrib/browser-plugin/pk-plugin-install.c:433
 msgid "Getting package information..."
 msgstr "Extrayendo información del paquete..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:467
+#: ../contrib/browser-plugin/pk-plugin-install.c:439
 #, c-format
 msgid "Run %s"
 msgstr "Ejecutar %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:473
+#: ../contrib/browser-plugin/pk-plugin-install.c:445
 msgid "Installed version"
 msgstr "Versión instalada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:481
+#: ../contrib/browser-plugin/pk-plugin-install.c:453
 #, c-format
 msgid "Run version %s now"
 msgstr "Ejecutar la versión %s ahora"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:487
+#: ../contrib/browser-plugin/pk-plugin-install.c:459
 msgid "Run now"
 msgstr "Ejecutar ahora"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:493
+#: ../contrib/browser-plugin/pk-plugin-install.c:465
 #, c-format
 msgid "Update to version %s"
 msgstr "Actualizar a la versión %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:499
+#: ../contrib/browser-plugin/pk-plugin-install.c:471
 #, c-format
 msgid "Install %s now"
 msgstr "Instalar %s ahora"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:502
+#: ../contrib/browser-plugin/pk-plugin-install.c:474
 msgid "Version"
 msgstr "Versión"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:507
+#: ../contrib/browser-plugin/pk-plugin-install.c:479
 msgid "No packages found for your system"
 msgstr "No se encontró ningún paquete para su sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:512
+#: ../contrib/browser-plugin/pk-plugin-install.c:484
 msgid "Installing..."
 msgstr "Instalando..."
 
commit 57f266b6d7bbee59e7e2feeba1ff0d2559fc5d9d
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 16:52:17 2009 +0100

    yum: trivial fix to the last commit

diff --git a/backends/yum/yumFilter.py b/backends/yum/yumFilter.py
index d4f95ad..47ed24f 100644
--- a/backends/yum/yumFilter.py
+++ b/backends/yum/yumFilter.py
@@ -35,7 +35,7 @@ class YumFilter(PackagekitFilter):
         if basearch == 'i386':
             self.basearch_list = ['i386', 'i486', 'i586', 'i686']
         else:
-            self.basearch_list = (basearch)
+            self.basearch_list = [basearch]
         self.basearch_list.append('noarch')
 
     def _is_main_package(self, repo):
commit 1a12026420f4afcef1010e0870c60e41a30e9320
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 16:49:41 2009 +0100

    yum: cope with i386, i486, i686, noarch in the filter code

diff --git a/backends/yum/yumFilter.py b/backends/yum/yumFilter.py
index 7a20cd8..d4f95ad 100644
--- a/backends/yum/yumFilter.py
+++ b/backends/yum/yumFilter.py
@@ -32,8 +32,11 @@ class YumFilter(PackagekitFilter):
     def __init__(self, fltlist="none"):
         PackagekitFilter.__init__(self, fltlist)
         basearch = rpmUtils.arch.getBaseArch()
-        # TODO: cope with i386, i486, i686 etc..
-        self.basearch_list = (basearch)
+        if basearch == 'i386':
+            self.basearch_list = ['i386', 'i486', 'i586', 'i686']
+        else:
+            self.basearch_list = (basearch)
+        self.basearch_list.append('noarch')
 
     def _is_main_package(self, repo):
         if repo.endswith('-debuginfo'):
commit 65565b071251bc4f3bb33003884278e2e735735e
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 17:43:47 2009 +0100

    yum: add arch filtering support. This was easier than I thought...

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index ef0680c..3ff4d1e 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -122,6 +122,7 @@ backend_get_filters (PkBackend *backend)
 		PK_FILTER_ENUM_BASENAME,
 		PK_FILTER_ENUM_FREE,
 		PK_FILTER_ENUM_NEWEST,
+		PK_FILTER_ENUM_ARCH,
 		-1);
 }
 
diff --git a/backends/yum/yumFilter.py b/backends/yum/yumFilter.py
index 84baddc..7a20cd8 100644
--- a/backends/yum/yumFilter.py
+++ b/backends/yum/yumFilter.py
@@ -29,6 +29,12 @@ GUI_KEYS = re.compile(r'(qt)|(gtk)')
 
 class YumFilter(PackagekitFilter):
 
+    def __init__(self, fltlist="none"):
+        PackagekitFilter.__init__(self, fltlist)
+        basearch = rpmUtils.arch.getBaseArch()
+        # TODO: cope with i386, i486, i686 etc..
+        self.basearch_list = (basearch)
+
     def _is_main_package(self, repo):
         if repo.endswith('-debuginfo'):
             return False
@@ -157,6 +163,14 @@ class YumFilter(PackagekitFilter):
                 return True
         return False
 
+    def _pkg_is_arch(self, pkg):
+        '''
+        Return if the package is native arch.
+        '''
+        if pkg.arch in self.basearch_list:
+            return True
+        return False
+
     def _pkg_is_free(self, pkg):
         '''
         Return if the package is free software.
commit 131316e533386d0074cfe121985b238f78f6e0ee
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 17:42:57 2009 +0100

    Add arch filtering to the generic python filter helper

diff --git a/lib/python/packagekit/filter.py b/lib/python/packagekit/filter.py
index b2df0c1..34f00bb 100644
--- a/lib/python/packagekit/filter.py
+++ b/lib/python/packagekit/filter.py
@@ -68,6 +68,9 @@ class PackagekitFilter(object, PackagekitPackage):
             elif flt in (FILTER_FREE, FILTER_NOT_FREE):
                 if not self._do_free_filtering(flt, pkg):
                     return False
+            elif flt in (FILTER_ARCH, FILTER_NOT_ARCH):
+                if not self._do_arch_filtering(flt, pkg):
+                    return False
         return True
 
     def post_process(self):
@@ -119,6 +122,13 @@ class PackagekitFilter(object, PackagekitPackage):
         '''
         return True
 
+    def _pkg_is_arch(self, pkg):
+        '''
+        Return if the package is the same architecture as the machine.
+        Needed to be implemented in a sub class
+        '''
+        return True
+
     def _do_installed_filtering(self, flt, pkg):
         is_installed = self._pkg_is_installed(pkg)
         if flt == FILTER_INSTALLED:
@@ -151,3 +161,11 @@ class PackagekitFilter(object, PackagekitPackage):
             want_free = False
         return is_free == want_free
 
+    def _do_arch_filtering(self, flt, pkg):
+        is_arch = self._pkg_is_arch(pkg)
+        if flt == FILTER_ARCH:
+            want_arch = True
+        else:
+            want_arch = False
+        return is_arch == want_arch
+
commit fa39f03fa0923608495c25f8717dd6b9c3fbeda5
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 17:15:33 2009 +0100

    Package arch should be taken into account for newest filtering. Fixes rh#472876

diff --git a/backends/yum/yumFilter.py b/backends/yum/yumFilter.py
index 5d33999..84baddc 100644
--- a/backends/yum/yumFilter.py
+++ b/backends/yum/yumFilter.py
@@ -89,7 +89,7 @@ class YumFilter(PackagekitFilter):
         for pkg, state in pkglist:
             # only key on name and not arch
             inst = self._pkg_is_installed(pkg)
-            key = (pkg.name, inst)
+            key = (pkg.name, pkg.arch, inst)
 
             # we've already come across this package
             if key in newest:
commit a268d02b271d2f47c835e8d39d10ad32494d8717
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 15:14:49 2009 +0100

    yum: When we're waiting for a crashed instance of ourselves, kill the process with SIGQUIT

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 8525f04..46c5247 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -287,6 +287,11 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                 if not cmdline:
                     cmdline = _get_cmdline_for_pid(e.pid)
 
+                # if it's us, kill it as it's from another instance where the daemon crashed
+                if cmdline.find("yumBackend.py") != -1:
+                    self.message(MESSAGE_BACKEND_ERROR, "killing pid %i, as old instance" % e.pid)
+                    os.kill(e.pid, signal.SIGQUIT)
+
                 # wait a little time, and try again
                 time.sleep(2)
                 retries += 1
commit 9ac5fa6c71ab65aef00c84c0b25451220a6e9f62
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 15:14:08 2009 +0100

    When we fail to get the lock, print the process information in the error details. Fixes rh#513376

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 8408081..8525f04 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -178,6 +178,13 @@ def _format_msgs(msgs):
     text = text.replace(" (installed)", "")
     return text
 
+def _get_cmdline_for_pid(pid):
+    if not pid:
+        return "invalid"
+    cmdlines = open("/proc/%d/cmdline" % pid).read().split('\0')
+    cmdline = " ".join(cmdlines).strip(' ')
+    return cmdline
+
 class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
 
     # Packages there require a reboot
@@ -266,6 +273,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
     def doLock(self):
         ''' Lock Yum'''
         retries = 0
+        cmdline = None
         while not self.isLocked():
             try: # Try to lock yum
                 self.yumbase.doLock(YUM_PID_FILE)
@@ -274,10 +282,19 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             except yum.Errors.LockError, e:
                 self.allow_cancel(True)
                 self.status(STATUS_WAITING_FOR_LOCK)
+
+                # get the command line of the other thing
+                if not cmdline:
+                    cmdline = _get_cmdline_for_pid(e.pid)
+
+                # wait a little time, and try again
                 time.sleep(2)
                 retries += 1
+
+                # give up, and print process information
                 if retries > 100:
-                    self.error(ERROR_CANNOT_GET_LOCK, 'Yum is locked by another application. details: %s' % _to_unicode(e))
+                    msg = "The other process has the command line '%s' (PID %i)" % (cmdline, e.pid)
+                    self.error(ERROR_CANNOT_GET_LOCK, "Yum is locked by another application. %s" % msg)
 
     def unLock(self):
         ''' Unlock Yum'''
commit 9c7e879c443fcdbb29e7ed5bcfe2945bcedf3b8e
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 12:34:24 2009 +0100

    trivial: Fix up the PackageKit catalog file with the new deps

diff --git a/contrib/PackageKit.catalog b/contrib/PackageKit.catalog
index b13169f..88678c8 100644
--- a/contrib/PackageKit.catalog
+++ b/contrib/PackageKit.catalog
@@ -4,7 +4,7 @@
 InstallPackages=autoconf;automake;intltool;libtool;pkgconfig
 
 # Fedora
-InstallPackages(fedora)=glib2-devel;dbus-devel;dbus-glib-devel;pam-devel;libX11-devel;libsexy-devel;xmlto;sqlite-devel;NetworkManager-glib-devel;PolicyKit-devel;docbook-utils;gnome-doc-utils;python-devel;perl(XML::Parser);gettext;xulrunner-devel;libarchive-devel;gstreamer-devel;gstreamer-plugins-base-devel;qt4-devel;cppunit-devel;pango-devel;fontconfig-devel
+InstallPackages(fedora)=glib2-devel;dbus-devel;dbus-glib-devel;pam-devel;libX11-devel;libsexy-devel;xmlto;sqlite-devel;NetworkManager-glib-devel;polkit-devel;docbook-utils;gnome-doc-utils;python-devel;perl(XML::Parser);gettext;xulrunner-devel;libarchive-devel;gstreamer-devel;gstreamer-plugins-base-devel;qt4-devel;cppunit-devel;pango-devel;fontconfig-devel;gcc-c++
 
 # Pardus
 InstallPackages(pardus)=NetworkManager-devel;PolicyKit-devel;autoconf;automake;dbus-devel;dbus-glib-devel;docbook-to-man;gettext-devel;glib2-devel;gtk-doc;poldek-devel;python-devel;readline-devel;rpm-pythonprov;sqlite3-devel
commit 302034948861d16684b42dc581de6830fe5e3d93
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jul 23 12:33:48 2009 +0100

    Fix up a couple of trivial error details

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index aacbeee..2a7cb60 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1656,7 +1656,7 @@ pk_transaction_action_obtain_authorization_finished_cb (GObject *source_object,
 
 		/* emit an ::StatusChanged, ::ErrorCode() and then ::Finished() */
 		pk_transaction_status_changed_emit (transaction, PK_STATUS_ENUM_FINISHED);
-		message = g_strdup_printf ("failed to check for authentication: %s", error->message);
+		message = g_strdup_printf ("Failed to check for authentication: %s", error->message);
 		pk_transaction_error_code_emit (transaction, PK_ERROR_ENUM_NOT_AUTHORIZED, message);
 		pk_transaction_finished_emit (transaction, PK_EXIT_ENUM_FAILED, 0);
 		g_error_free (error);
@@ -1670,7 +1670,7 @@ pk_transaction_action_obtain_authorization_finished_cb (GObject *source_object,
 		/* emit an ::StatusChanged, ::ErrorCode() and then ::Finished() */
 		pk_transaction_status_changed_emit (transaction, PK_STATUS_ENUM_FINISHED);
 		pk_transaction_error_code_emit (transaction, PK_ERROR_ENUM_NOT_AUTHORIZED,
-						"failed to obtain authentication");
+						"Failed to obtain authentication.");
 		pk_transaction_finished_emit (transaction, PK_EXIT_ENUM_FAILED, 0);
 
 		pk_syslog_add (transaction->priv->syslog, PK_SYSLOG_TYPE_AUTH, "uid %i failed to obtain auth", transaction->priv->uid);
commit 5c0afe6411098ba6cb263730839231f6322ffe25
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jul 21 12:20:19 2009 +0100

    Add a 'status' property to PkClient

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index 2f333bf..3958d86 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -91,7 +91,7 @@ struct _PkClientPrivate
 	PkConnection		*pconnection;
 	gulong			 pconnection_signal_id;
 	PkRestartEnum		 require_restart;
-	PkStatusEnum		 last_status;
+	PkStatusEnum		 status;
 	PkRoleEnum		 role;
 	gboolean		 cached_force;
 	gboolean		 cached_allow_deps;
@@ -139,6 +139,7 @@ enum {
 enum {
 	PROP_0,
 	PROP_ROLE,
+	PROP_STATUS,
 	PROP_LAST,
 };
 
@@ -590,7 +591,7 @@ pk_client_change_status (PkClient *client, PkStatusEnum status)
 {
 	egg_debug ("emit status-changed %s", pk_status_enum_to_text (status));
 	g_signal_emit (client , signals [SIGNAL_STATUS_CHANGED], 0, status);
-	client->priv->last_status = status;
+	client->priv->status = status;
 }
 
 /**
@@ -1036,6 +1037,12 @@ pk_client_message_cb (DBusGProxy  *proxy, const gchar *message_text, const gchar
  * Gets the status of a transaction.
  * A transaction has one roles in it's lifetime, but many values of status.
  *
+ * Reading the property "status" is quicker than contacting the daemon, but this
+ * only works when the transaction was created by the application, and not when
+ * using pk_client_set_tid() in a client program.
+ *
+ * TODO: deprecate
+ *
  * Return value: %TRUE if we found the status successfully
  **/
 gboolean
@@ -3908,7 +3915,7 @@ pk_client_requeue (PkClient *client, GError **error)
 	/* clear enough data of the client to allow us to requeue */
 	g_free (client->priv->tid);
 	client->priv->tid = NULL;
-	client->priv->last_status = PK_STATUS_ENUM_UNKNOWN;
+	client->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	client->priv->is_finished = FALSE;
 
 	/* clear package list */
@@ -4115,6 +4122,9 @@ pk_client_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
 	case PROP_ROLE:
 		g_value_set_uint (value, client->priv->role);
 		break;
+	case PROP_STATUS:
+		g_value_set_uint (value, client->priv->status);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -4156,6 +4166,14 @@ pk_client_class_init (PkClientClass *klass)
 	g_object_class_install_property (object_class, PROP_ROLE, pspec);
 
 	/**
+	 * PkClient:status:
+	 */
+	pspec = g_param_spec_uint ("status", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_STATUS, pspec);
+
+	/**
 	 * PkClient::status-changed:
 	 * @client: the #PkClient instance that emitted the signal
 	 * @status: the #PkStatusEnum type, e.g. PK_STATUS_ENUM_REMOVE
@@ -4602,7 +4620,7 @@ pk_client_reset (PkClient *client, GError **error)
 	client->priv->cached_package_ids = NULL;
 	client->priv->cached_directory = NULL;
 	client->priv->cached_filters = PK_FILTER_ENUM_UNKNOWN;
-	client->priv->last_status = PK_STATUS_ENUM_UNKNOWN;
+	client->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	client->priv->role = PK_ROLE_ENUM_UNKNOWN;
 	client->priv->is_finished = FALSE;
 	client->priv->timeout = -1;
@@ -4631,7 +4649,7 @@ pk_client_init (PkClient *client)
 	client->priv->loop = g_main_loop_new (NULL, FALSE);
 	client->priv->use_buffer = FALSE;
 	client->priv->synchronous = FALSE;
-	client->priv->last_status = PK_STATUS_ENUM_UNKNOWN;
+	client->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	client->priv->require_restart = PK_RESTART_ENUM_NONE;
 	client->priv->role = PK_ROLE_ENUM_UNKNOWN;
 	client->priv->is_finished = FALSE;
commit 4e8f4b7f73a4792b364cffb345ff41da270b0980
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu Jul 23 12:44:32 2009 +0200

    portage: manage only_trusted (show error) for {install,update}-packages
    and update-system

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 1b12885..3ca49f2 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1014,7 +1014,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         # can't install an already installed packages
         # even if it happens to be needed in Gentoo but probably not this API
 
-        # TODO: manage only_trusted
         # TODO: manage errors
         # TODO: manage config file updates
 
@@ -1039,6 +1038,13 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
             cpv_list.append('=' + cpv)
 
+        # only_trusted isn't supported
+        # but better to show it after important errors
+        if only_trusted:
+            self.error(ERROR_MISSING_GPG_SIGNATURE,
+                    "Portage backend does not support GPG signature")
+            return
+
         # creating installation depgraph
         myopts = {}
         favorites = []
@@ -1403,7 +1409,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         self.percentage(100)
 
     def update_packages(self, only_trusted, pkgs):
-        # TODO: manage only_trusted
         # TODO: manage errors
         # TODO: manage config file updates
 
@@ -1423,6 +1428,13 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
             cpv_list.append('=' + cpv)
 
+        # only_trusted isn't supported
+        # but better to show it after important errors
+        if only_trusted:
+            self.error(ERROR_MISSING_GPG_SIGNATURE,
+                    "Portage backend does not support GPG signature")
+            return
+
         # creating update depgraph
         myopts = {}
         favorites = []
@@ -1449,12 +1461,15 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.unblock_output()
 
     def update_system(self, only_trusted):
-        # TODO: only_trusted
-
         self.status(STATUS_RUNNING)
         self.allow_cancel(True)
         self.percentage(None)
 
+        if only_trusted:
+            self.error(ERROR_MISSING_GPG_SIGNATURE,
+                    "Portage backend does not support GPG signature")
+            return
+
         # inits
         myopts = {}
         myopts.pop("--deep", None)
commit d4774e931a7528cabc72d47f6738b090fac55251
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu Jul 23 00:03:47 2009 +0200

    portage: update update-system to work with svn version of portage

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index ad0c2cc..1b12885 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1450,6 +1450,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
     def update_system(self, only_trusted):
         # TODO: only_trusted
+
         self.status(STATUS_RUNNING)
         self.allow_cancel(True)
         self.percentage(None)
@@ -1465,12 +1466,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
         spinner = ""
         favorites = []
-        settings, trees, mtimedb = _emerge.load_emerge_config()
-        myparams = _emerge.create_depgraph_params(myopts, "")
-        spinner = _emerge.stdout_spinner()
+        settings, trees, mtimedb = _emerge.actions.load_emerge_config()
+        myparams = _emerge.create_depgraph_params.create_depgraph_params(myopts, "")
+        spinner = _emerge.stdout_spinner.stdout_spinner()
 
-        depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
-        retval, favorites = depgraph.select_files(["system", "world"])
+        depgraph = _emerge.depgraph.depgraph(settings, trees, myopts, myparams, spinner)
+        retval, favorites = depgraph.select_files(["@system", "@world"])
         if not retval:
             self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
             return
@@ -1486,7 +1487,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         mtimedb["resume"]["myopts"] = myopts.copy()
         mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
 
-        mergetask = _emerge.Scheduler(settings, trees, mtimedb,
+        mergetask = _emerge.Scheduler.Scheduler(settings, trees, mtimedb,
                 myopts, spinner, depgraph.altlist(),
                 favorites, depgraph.schedulerGraph())
         mergetask.merge()
commit 2483c6dd82ec4fdc044c9e4beaed641612647434
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jul 22 23:40:11 2009 +0200

    portage: improve update-packages, very similar to install-packages

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index ea8c485..ad0c2cc 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1403,8 +1403,50 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         self.percentage(100)
 
     def update_packages(self, only_trusted, pkgs):
-        # TODO: add some checks ?
-        self.install_packages(only_trusted, pkgs)
+        # TODO: manage only_trusted
+        # TODO: manage errors
+        # TODO: manage config file updates
+
+        self.status(STATUS_RUNNING)
+        self.allow_cancel(True)
+        self.percentage(None)
+
+        cpv_list = []
+
+        for pkg in pkgs:
+            cpv = id_to_cpv(pkg)
+
+            if not self.is_cpv_valid(cpv):
+                self.error(ERROR_UPDATE_NOT_FOUND,
+                        "Package %s was not found" % pkg)
+                continue
+
+            cpv_list.append('=' + cpv)
+
+        # creating update depgraph
+        myopts = {}
+        favorites = []
+        settings, trees, mtimedb = _emerge.actions.load_emerge_config()
+        myparams = _emerge.create_depgraph_params.create_depgraph_params(
+                myopts, "")
+
+        depgraph = _emerge.depgraph.depgraph(settings, trees,
+                myopts, myparams, None)
+        retval, favorites = depgraph.select_files(cpv_list)
+        if not retval:
+            self.error(ERROR_INTERNAL_ERROR,
+                    "Wasn't able to get dependency graph")
+            return
+
+        try:
+            self.block_output()
+            # compiling/installing
+            mergetask = _emerge.Scheduler.Scheduler(settings, trees, mtimedb,
+                    myopts, None, depgraph.altlist(),
+                    favorites, depgraph.schedulerGraph())
+            mergetask.merge()
+        finally:
+            self.unblock_output()
 
     def update_system(self, only_trusted):
         # TODO: only_trusted
commit b7c2f99bda9ce3b93ddc5dd70438988819b8bf8a
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jul 22 23:00:02 2009 +0200

    portage: improve install-packages to let install many packages
    and filter output

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 4c14957..ea8c485 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1010,54 +1010,59 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
                     self.package(cpv, INFO_NORMAL)
 
     def install_packages(self, only_trusted, pkgs):
+        # NOTES:
+        # can't install an already installed packages
+        # even if it happens to be needed in Gentoo but probably not this API
+
+        # TODO: manage only_trusted
+        # TODO: manage errors
+        # TODO: manage config file updates
+
         self.status(STATUS_RUNNING)
-        self.allow_cancel(True) # TODO: sure ?
+        self.allow_cancel(True)
         self.percentage(None)
 
-        # FIXME: use only_trusted
+        cpv_list = []
 
         for pkg in pkgs:
-            # check for installed is not mandatory as there are a lot of reason
-            # to re-install a package (USE/{LD,C}FLAGS change for example) (or live)
-            # TODO: keep a final position
             cpv = id_to_cpv(pkg)
 
-            # is cpv valid
-            if not portage.portdb.cpv_exists(cpv):
-                self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkg)
+            if not self.is_cpv_valid(cpv):
+                self.error(ERROR_PACKAGE_NOT_FOUND,
+                        "Package %s was not found" % pkg)
                 continue
 
-            # inits
-            myopts = {} # TODO: --nodepends ?
-            spinner = ""
-            favorites = []
-            settings, trees, mtimedb = _emerge.load_emerge_config()
-            myparams = _emerge.create_depgraph_params(myopts, "")
-            spinner = _emerge.stdout_spinner()
-
-            depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
-            retval, favorites = depgraph.select_files(["="+cpv])
-            if not retval:
-                self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
+            if self.is_installed(cpv):
+                self.error(ERROR_PACKAGE_ALREADY_INSTALLED,
+                        "Package %s is already installed" % pkg)
                 continue
 
-            if "resume" in mtimedb and \
-            "mergelist" in mtimedb["resume"] and \
-            len(mtimedb["resume"]["mergelist"]) > 1:
-                mtimedb["resume_backup"] = mtimedb["resume"]
-                del mtimedb["resume"]
-                mtimedb.commit()
+            cpv_list.append('=' + cpv)
 
-            mtimedb["resume"] = {}
-            mtimedb["resume"]["myopts"] = myopts.copy()
-            mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
+        # creating installation depgraph
+        myopts = {}
+        favorites = []
+        settings, trees, mtimedb = _emerge.actions.load_emerge_config()
+        myparams = _emerge.create_depgraph_params.create_depgraph_params(
+                myopts, "")
 
-            # TODO: check for writing access before calling merge ?
+        depgraph = _emerge.depgraph.depgraph(settings, trees,
+                myopts, myparams, None)
+        retval, favorites = depgraph.select_files(cpv_list)
+        if not retval:
+            self.error(ERROR_INTERNAL_ERROR,
+                    "Wasn't able to get dependency graph")
+            return
 
-            mergetask = _emerge.Scheduler(settings, trees, mtimedb,
-                    myopts, spinner, depgraph.altlist(),
+        try:
+            self.block_output()
+            # compiling/installing
+            mergetask = _emerge.Scheduler.Scheduler(settings, trees, mtimedb,
+                    myopts, None, depgraph.altlist(),
                     favorites, depgraph.schedulerGraph())
             mergetask.merge()
+        finally:
+            self.unblock_output()
 
     def refresh_cache(self, force):
         # NOTES: can't manage progress even if it could be better
commit 84adbd9de4a8a0b30ac8607ccf6f2702605a22df
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jul 22 18:09:07 2009 +0200

    portage: remove-packages breaks if a candidate is in the system set

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 3b0ace1..4c14957 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1090,8 +1090,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
     def remove_packages(self, allowdep, autoremove, pkgs):
-        # TODO: system packages should prompt an error or a warning
-
         self.status(STATUS_RUNNING)
         self.allow_cancel(True)
         self.percentage(None)
@@ -1099,10 +1097,17 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         cpv_list = []
         packages = []
         required_packages = []
+        system_packages = []
 
         settings, trees, mtimedb = _emerge.actions.load_emerge_config()
         root_config = trees[self.portage_settings["ROOT"]]["root_config"]
 
+        # get system packages
+        set = portage.sets.base.InternalPackageSet(
+                initial_atoms=root_config.setconfig.getSetAtoms("system"))
+        for atom in set:
+            system_packages.append(atom.cp)
+
         # create cpv_list
         for pkg in pkgs:
             cpv = id_to_cpv(pkg)
@@ -1117,6 +1122,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
                         "Package %s is not installed" % pkg)
                 continue
 
+            # stop removal if a package is in the system set
+            if portage.pkgsplit(cpv)[0] in system_packages:
+                self.error(ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE,
+                        "Package %s is a system package. If you really want to remove it, please use portage" % pkg)
+                continue
+
             cpv_list.append(cpv)
 
         # backend do not implement autoremove
commit 5dd3bab94d7aaa63e246506bbc1b12f282ad7665
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jul 22 17:25:35 2009 +0200

    portage: remove-packages now removes alse required packages

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index d906ea4..3b0ace1 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1090,8 +1090,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
     def remove_packages(self, allowdep, autoremove, pkgs):
-        # TODO: implement allowdep
-        # can't use allowdep: never removing dep
+        # TODO: system packages should prompt an error or a warning
 
         self.status(STATUS_RUNNING)
         self.allow_cancel(True)
@@ -1099,6 +1098,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
         cpv_list = []
         packages = []
+        required_packages = []
 
         settings, trees, mtimedb = _emerge.actions.load_emerge_config()
         root_config = trees[self.portage_settings["ROOT"]]["root_config"]
@@ -1124,7 +1124,29 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.message(MESSAGE_AUTOREMOVE_IGNORED,
                     "Portage backend do not implement autoremove option")
 
-        # create packages list
+        # get packages needing candidates for removal
+        required_packages = self.get_packages_required(cpv_list,
+                settings, trees, recursive=True)
+
+        # if there are required packages, allowdep must be on
+        if required_packages and not allowdep:
+            self.error(ERROR_DEP_RESOLUTION_FAILED,
+                    "Could not perform remove operation has packages are needed by other packages")
+            return
+
+        # first, we add required packages
+        for p in required_packages:
+            package = _emerge.Package.Package(
+                    type_name=p.type_name,
+                    built=p.built,
+                    installed=p.installed,
+                    root_config=p.root_config,
+                    cpv=p.cpv,
+                    metadata=p.metadata,
+                    operation='uninstall')
+            packages.append(package)
+
+        # and now, packages we want really to remove
         db_keys = list(portage.portdb._aux_cache_keys)
         for cpv in cpv_list:
             metadata = self.get_metadata(cpv, db_keys, in_dict=True)
commit b78bd47dfc1857522eb59f38c33aa1edbf5bb7ad
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jul 22 16:41:53 2009 +0200

    portage: create get_packages_required and use it for get_requires

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 2e46e6b..d906ea4 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -525,6 +525,57 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
         return get_package_id(package, version, ' '.join(keywords), repo)
 
+    def get_packages_required(self, cpv_input, settings, trees, recursive):
+        '''
+        Get a list of cpv, portage settings and tree and recursive parameter
+        And returns the list of packages required for cpv list
+        '''
+        # TODO: should see if some cpv in the input list is not a dep of another
+        packages_list = []
+
+        myopts = {}
+        myopts["--selective"] = True
+        myopts["--deep"] = True
+
+        myparams = _emerge.create_depgraph_params.create_depgraph_params(
+                myopts, "remove")
+        depgraph = _emerge.depgraph.depgraph(settings, trees, myopts,
+                myparams, None)
+
+        # TODO: atm, using FILTER_INSTALLED because it's quicker
+        # and we don't want to manage non-installed packages
+        for cp in self.get_all_cp([FILTER_INSTALLED]):
+            for cpv in self.get_all_cpv(cp, [FILTER_INSTALLED]):
+                depgraph._dynamic_config._dep_stack.append(
+                        _emerge.Dependency.Dependency(
+                            atom=portage.dep.Atom('=' + cpv),
+                            root=portage.settings["ROOT"], parent=None))
+
+        if not depgraph._complete_graph():
+            self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
+            return
+
+        def _add_children_to_list(packages_list, node):
+            for n in depgraph._dynamic_config.digraph.parent_nodes(node):
+                if n not in packages_list \
+                        and not isinstance(n, _emerge.SetArg.SetArg):
+                    packages_list.append(n)
+                    _add_children_to_list(packages_list, n)
+
+        for node in depgraph._dynamic_config.digraph.__iter__():
+            if isinstance(node, _emerge.SetArg.SetArg):
+                continue
+            if node.cpv in cpv_input:
+                if recursive:
+                    _add_children_to_list(packages_list, node)
+                else:
+                    for n in \
+                            depgraph._dynamic_config.digraph.parent_nodes(node):
+                        if not isinstance(n, _emerge.SetArg.SetArg):
+                            packages_list.append(n)
+
+        return packages_list
+
     def package(self, cpv, info=None):
         desc = self.get_metadata(cpv, ["DESCRIPTION"])[0]
         if not info:
@@ -783,52 +834,16 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
             cpv_input.append(cpv)
 
-        myopts = {}
-        myopts["--selective"] = True
-        myopts["--deep"] = True
-        # TODO: keep remove ?
         settings, trees, _ = _emerge.actions.load_emerge_config()
-        myparams = _emerge.create_depgraph_params.create_depgraph_params(
-                myopts, "remove")
-
-        depgraph = _emerge.depgraph.depgraph(settings, trees, myopts,
-                myparams, None)
-
-        # TODO: atm, using FILTER_INSTALLED because it's quicker
-        # and we don't want to manage non-installed packages
-        for cp in self.get_all_cp([FILTER_INSTALLED]):
-            for cpv in self.get_all_cpv(cpv, [FILTER_INSTALLED]):
-                depgraph._dynamic_config._dep_stack.append(
-                        _emerge.Dependency.Dependency(atom=portage.dep.Atom('=' + cpv),
-                            root=portage.settings["ROOT"], parent=None))
-
-        if not depgraph._complete_graph():
-            self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
-            return
 
-        def _add_children_to_list(cpv_list, node):
-            for n in depgraph._dynamic_config.digraph.parent_nodes(node):
-                if n not in cpv_list and not isinstance(n, _emerge.SetArg.SetArg):
-                    cpv_list.append(n)
-                    _add_children_to_list(cpv_list, n)
+        packages_list = self.get_packages_required(cpv_input,
+                settings, trees, recursive)
 
-        for node in depgraph._dynamic_config.digraph.__iter__():
-            if isinstance(node, _emerge.SetArg.SetArg):
-                continue
-            if node.cpv in cpv_input:
-                if recursive:
-                    _add_children_to_list(cpv_list, node)
-                else:
-                    for n in depgraph._dynamic_config.digraph.parent_nodes(node):
-                        if not isinstance(n, _emerge.SetArg.SetArg):
-                            cpv_list.append(n)
-
-        # now we can change cpv_list to a real cpv list
-        tmp_list = cpv_list[:]
+        # now we can populate cpv_list
         cpv_list = []
-        for x in tmp_list:
-            cpv_list.append(x[2])
-        del tmp_list
+        for p in packages_list:
+            cpv_list.append(p.cpv)
+        del packages_list
 
         # free filter
         cpv_list = self.filter_free(cpv_list, fltlist)
commit 21e2b91107dbf471b7c074a33b02d963fbb9f171
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Jul 22 07:48:51 2009 +0100

    Fedora: fix up the packagekit-qt package summary. Fixes rh#513091

diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index 9439b2c..ec65785 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -154,13 +154,13 @@ Provides: PackageKit-devel = %{version}-%{release}
 GLib headers and libraries for PackageKit.
 
 %package qt-devel
-Summary: QT Libraries and headers for PackageKit
+Summary: Qt Libraries and headers for PackageKit
 Group: Development/Libraries
 Requires: %{name}-qt = %{version}-%{release}
 Requires: pkgconfig
 
 %description qt-devel
-QT headers and libraries for PackageKit.
+Qt headers and libraries for PackageKit.
 
 %package backend-devel
 Summary: Headers to compile out of tree PackageKit backends
commit afcd95a8e71273c3d079a03f6b77247f766c1832
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 22:09:45 2009 +0200

    portage: fix a small bug in get-requires

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 271cff8..2e46e6b 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -820,7 +820,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
                     _add_children_to_list(cpv_list, node)
                 else:
                     for n in depgraph._dynamic_config.digraph.parent_nodes(node):
-                        cpv_list.append(n)
+                        if not isinstance(n, _emerge.SetArg.SetArg):
+                            cpv_list.append(n)
 
         # now we can change cpv_list to a real cpv list
         tmp_list = cpv_list[:]
commit 95adf5c031ee8d3bf9cbd728fe15f20cbb0a627e
Author: raven <raven at fedoraproject.org>
Date:   Tue Jul 21 18:35:30 2009 +0000

    Sending translation for Polish

diff --git a/po/pl.po b/po/pl.po
index 97230e8..fd2a08a 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,8 +5,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-12 16:41+0000\n"
-"PO-Revision-Date: 2009-07-12 21:31+0200\n"
+"POT-Creation-Date: 2009-07-21 14:37+0000\n"
+"PO-Revision-Date: 2009-07-21 20:34+0200\n"
 "Last-Translator: Piotr DrÄ…g <piotrdrag at gmail.com>\n"
 "Language-Team: Polish <pl at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -208,8 +208,7 @@ msgstr "Wymagane jest ponowne uruchomienie sesji:"
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
 #: ../client/pk-console.c:523
 msgid "System restart (security) required by:"
-msgstr ""
-"Ponowne uruchomienie systemu jest wymagane przez:"
+msgstr "Ponowne uruchomienie systemu jest wymagane przez:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
 #: ../client/pk-console.c:526
@@ -523,8 +522,8 @@ msgstr "Podpolecenia:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1780 ../client/pk-generate-pack.c:185
-#: ../client/pk-monitor.c:125
+#: ../client/pk-console.c:1781 ../client/pk-generate-pack.c:185
+#: ../client/pk-monitor.c:128
 #: ../contrib/command-not-found/pk-command-not-found.c:521
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:532
 #: ../src/pk-main.c:211
@@ -532,149 +531,148 @@ msgid "Show extra debugging information"
 msgstr "Wyświetla dodatkowe informacje o debugowaniu"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1783 ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1784 ../client/pk-monitor.c:130
 msgid "Show the program version and exit"
 msgstr "Wyświetla wersję programu i wyłącza"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1786
+#: ../client/pk-console.c:1787
 msgid "Set the filter, e.g. installed"
 msgstr "Ustawia filtr, np. zainstalowane"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1789
+#: ../client/pk-console.c:1790
 msgid "Exit without waiting for actions to complete"
 msgstr "Wyłącza bez oczekiwania na zakończenie działań"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1816
+#: ../client/pk-console.c:1817
 msgid "This tool could not connect to system DBUS."
 msgstr "To narzędzie nie może połączyć się z systemowym D-Bus."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1905
+#: ../client/pk-console.c:1907
 msgid "The filter specified was invalid"
 msgstr "Podany filtr jest nieprawidłowy"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1923
+#: ../client/pk-console.c:1926
 msgid "A search type is required, e.g. name"
 msgstr "Wymagany jest typ wyszukiwania, np. nazwa"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1929 ../client/pk-console.c:1937
-#: ../client/pk-console.c:1945 ../client/pk-console.c:1953
+#: ../client/pk-console.c:1933 ../client/pk-console.c:1942
+#: ../client/pk-console.c:1951 ../client/pk-console.c:1960
 msgid "A search term is required"
 msgstr "Wymagany jest wyszukiwany termin"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1959
+#: ../client/pk-console.c:1967
 msgid "Invalid search type"
 msgstr "Nieprawidłowy typ wyszukiwania"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1965
+#: ../client/pk-console.c:1973
 msgid "A package name or filename to install is required"
 msgstr "Wymagana jest nazwa pakietu lub pliku do zainstalowania"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1973
+#: ../client/pk-console.c:1982
 msgid "A type, key_id and package_id are required"
 msgstr "Wymagany jest typ, key_id i package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1981
+#: ../client/pk-console.c:1991
 msgid "A package name to remove is required"
 msgstr "Wymagana jest nazwa pakietu do usunięcia"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1988
-msgid ""
-"A destination directory and then the package names to download are required"
-msgstr "Wymagany jest katalog docelowy, a następnie nazwy pakietów do pobrania"
+#: ../client/pk-console.c:1999
+msgid "A destination directory and the package names to download are required"
+msgstr "Wymagany jest katalog docelowy i nazwy pakietów do pobrania"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1994
+#: ../client/pk-console.c:2006
 msgid "Directory not found"
 msgstr "Nie znaleziono katalogu"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2001
+#: ../client/pk-console.c:2014
 msgid "A licence identifier (eula-id) is required"
 msgstr "Wymagany jest identyfikator licencji (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2010
+#: ../client/pk-console.c:2024
 msgid "A transaction identifier (tid) is required"
 msgstr "Wymagany jest identyfikator transakcji (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2026
+#: ../client/pk-console.c:2041
 msgid "A package name to resolve is required"
 msgstr "Wymagana jest nazwa pakietu do rozwiÄ…zania"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2034 ../client/pk-console.c:2042
+#: ../client/pk-console.c:2050 ../client/pk-console.c:2059
 msgid "A repository name is required"
 msgstr "Wymagana jest nazwa repozytorium"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2050
+#: ../client/pk-console.c:2068
 msgid "A repo name, parameter and value are required"
 msgstr "Wymagana jest nazwa, parametr i wartość repozytorium"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2063
+#: ../client/pk-console.c:2082
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Wymagane jest działanie, np. \"update-system\""
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2069
+#: ../client/pk-console.c:2089
 msgid "A correct role is required"
 msgstr "Wymagana jest bieżąca rola"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2075
+#: ../client/pk-console.c:2096
 msgid "Failed to get the time since this action was last completed"
 msgstr ""
 "Uzyskanie czasu od ostatniego zakończenia tego działania nie powiodło się"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2084 ../client/pk-console.c:2095
-#: ../client/pk-console.c:2103 ../client/pk-console.c:2119
-#: ../client/pk-console.c:2127 ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:2106 ../client/pk-console.c:2118
+#: ../client/pk-console.c:2127 ../client/pk-console.c:2145
+#: ../client/pk-console.c:2154 ../client/pk-generate-pack.c:241
 msgid "A package name is required"
 msgstr "Wymagana jest nazwa pakietu"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2111
+#: ../client/pk-console.c:2136
 msgid "A package provide string is required"
 msgstr "Wymagany jest łańcuch dostarczania pakietu"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2135
+#: ../client/pk-console.c:2163
 msgid "A list file name to create is required"
 msgstr "Wymagana jest lista nazw plików do utworzenia"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2144 ../client/pk-console.c:2153
+#: ../client/pk-console.c:2173 ../client/pk-console.c:2183
 msgid "A list file to open is required"
 msgstr "Wymagana jest lista plików do otwarcia"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2206
+#: ../client/pk-console.c:2237
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Opcja \"%s\" nie jest obsługiwana"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2219
+#: ../client/pk-console.c:2250
 msgid "Incorrect privileges for this operation"
 msgstr "Niepoprawne uprawnienia dla tego działania"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2222
+#: ../client/pk-console.c:2253
 msgid "Command failed"
 msgstr "Polecenie nie powiodło się"
 
@@ -800,10 +798,14 @@ msgid "Failed to create '%s': %s"
 msgstr "Utworzenie \"%s\" nie powiodło się: %s"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:143
+#: ../client/pk-monitor.c:146
 msgid "PackageKit Monitor"
 msgstr "Monitor PackageKit"
 
+#: ../client/pk-monitor.c:183
+msgid "Cannot show the list of transactions"
+msgstr "Nie można wyświetlić listy transakcji"
+
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:118
 #, c-format
@@ -895,56 +897,56 @@ msgid "Please choose a package to install"
 msgstr "Proszę wybrać pakiet do zainstalowania"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/src/contents.cpp:299
+#: ../contrib/browser-plugin/pk-plugin-install.c:433
 msgid "Getting package information..."
 msgstr "Pobieranie informacji o pakiecie..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/src/contents.cpp:305
+#: ../contrib/browser-plugin/pk-plugin-install.c:439
 #, c-format
 msgid "Run %s"
 msgstr "Uruchom %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/src/contents.cpp:311
+#: ../contrib/browser-plugin/pk-plugin-install.c:445
 msgid "Installed version"
 msgstr "Zainstalowana wersja"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:319
+#: ../contrib/browser-plugin/pk-plugin-install.c:453
 #, c-format
 msgid "Run version %s now"
 msgstr "Uruchom wersjÄ™ %s"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:325
+#: ../contrib/browser-plugin/pk-plugin-install.c:459
 msgid "Run now"
 msgstr "Uruchom teraz"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:331
+#: ../contrib/browser-plugin/pk-plugin-install.c:465
 #, c-format
 msgid "Update to version %s"
 msgstr "Zaktualizuj do wersji %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/src/contents.cpp:337
+#: ../contrib/browser-plugin/pk-plugin-install.c:471
 #, c-format
 msgid "Install %s now"
 msgstr "Zainstaluj %s"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:340
+#: ../contrib/browser-plugin/pk-plugin-install.c:474
 msgid "Version"
 msgstr "Wersja"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/src/contents.cpp:345
+#: ../contrib/browser-plugin/pk-plugin-install.c:479
 msgid "No packages found for your system"
 msgstr "Nie znaleziono pakietów dla systemu"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/src/contents.cpp:350
+#: ../contrib/browser-plugin/pk-plugin-install.c:484
 msgid "Installing..."
 msgstr "Instalowanie..."
 
@@ -1145,27 +1147,33 @@ msgstr "Lista pakietów PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Pakiet serwisowy PackageKit"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
+#. SECURITY:
+#. - Normal users do not require admin authentication to accept new
+#. licence agreements.
+#. - Change this to 'auth_admin' for environments where users should not
+#. be given the option to make legal decisions.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:7
 msgid "Accept EULA"
 msgstr "Akceptacja licencji"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
 msgid "Authentication is required to accept a EULA"
 msgstr "Wymagane jest uwierzytelnienie, aby zaakceptować licencję"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
 msgid ""
 "Authentication is required to cancel a task that was not started by yourself"
 msgstr ""
 "Wymagane jest uwierzytelnienie, aby anulować zadanie nie rozpoczęte przez "
 "bieżącego użytkownika"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
 msgstr ""
 "Wymagane jest uwierzytelnienie, aby zmienić parametry źródeł oprogramowania"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
 msgid ""
 "Authentication is required to consider a key used for signing packages as "
 "trusted"
@@ -1173,27 +1181,27 @@ msgstr ""
 "Wymagane jest uwierzytelnienie, aby oznaczyć klucz używany do podpisywania "
 "pakietów jako zaufany"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
 msgid "Authentication is required to install a signed package"
 msgstr "Wymagane jest uwierzytelnienie, aby zainstalować podpisany pakiet"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Authentication is required to install an untrusted package"
 msgstr "Wymagane jest uwierzytelnienie, aby zainstalować niezaufany pakiet"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
 msgid "Authentication is required to refresh the system sources"
 msgstr "Wymagane jest uwierzytelnienie, aby odświeżyć źródła systemu"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
 msgid "Authentication is required to remove packages"
 msgstr "Wymagane jest uwierzytelnienie, aby usunąć pakiety"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to rollback a transaction"
 msgstr "Wymagane jest uwierzytelnienie, aby przywrócić transakcję"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
 msgid ""
 "Authentication is required to set the network proxy used for downloading "
 "packages"
@@ -1201,47 +1209,104 @@ msgstr ""
 "Wymagane jest uwierzytelnienie, aby ustawić pośrednika sieciowego używanego "
 "do pobierania pakietów"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
 msgid "Authentication is required to update packages"
 msgstr "Wymagane jest uwierzytelnienie, aby zaktualizować pakiety"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+#. SECURITY:
+#. - Normal users are allowed to cancel their own task without
+#. authentication, but a different user id needs the admin password
+#. to cancel another users task.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:24
 msgid "Cancel foreign task"
 msgstr "Anulowanie obcego zadania"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+#. SECURITY:
+#. - Normal users require admin authentication to enable or disable
+#. software sources as this can be used to enable new updates or
+#. install different versions of software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:30
 msgid "Change software source parameters"
 msgstr "Zmiana parametrów źródła oprogramowania"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+#. SECURITY:
+#. - Normal users do not need authentication to install signed packages
+#. from signed repositories, as this cannot exploit a system.
+#. - Paranoid users (or parents!) can change this to 'auth_admin' or
+#. 'auth_admin_keep'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:37
 msgid "Install signed package"
 msgstr "Instalacja podpisanego pakietu"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+#. SECURITY:
+#. - Normal users require admin authentication to install untrusted or
+#. unrecognised packages, as allowing users to do this without a
+#. password would be a massive security hole.
+#. - This is not retained as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:44
 msgid "Install untrusted local file"
 msgstr "Instalacja niezaufanego lokalnego pliku"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+#. SECURITY:
+#. - Normal users do not require admin authentication to refresh the
+#. cache, as this doesn't actually install or remove software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:49
 msgid "Refresh system sources"
 msgstr "Odświeżenie źródeł systemu"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+#. SECURITY:
+#. - Normal users require admin authentication to remove packages as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#. - Be sure to close the tool used to remove the packages after the
+#. admin authentication has been obtained, otherwise packages can still
+#. be removed. If this is not possible, change this authentication to
+#. 'auth_admin'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Remove package"
 msgstr "Usunięcie pakietu"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
+#. SECURITY:
+#. - Normal users require admin authentication to rollback system state
+#. as this will change a large number of packages, and could expose the
+#. system to previously patched security vulnerabilities.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:65
 msgid "Rollback to a previous transaction"
 msgstr "Przywrócenie poprzedniej transakcji"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
+#. SECURITY:
+#. - Normal users do not require admin authentication to set the proxy
+#. used for downloading packages.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:70
 msgid "Set network proxy"
 msgstr "Ustawienie pośrednika sieciowego"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+#. SECURITY:
+#. - Normal users require admin authentication to add signing keys.
+#. - This implies adding an explicit trust, and should not be granted
+#. without a secure authentication.
+#. - This is not kept as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Trust a key used for signing packages"
 msgstr "Oznaczenie klucza używanego do podpisywania pakietów jako zaufanego"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:22
+#. SECURITY:
+#. - Normal users do not require admin authentication to update the
+#. system as the packages will be signed, and the action is required
+#. to update the system when unattended.
+#. - Changing this to anything other than 'yes' will break unattended
+#. updates.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:85
 msgid "Update packages"
 msgstr "Aktualizacja pakietów"
 
commit 689213022c483c0b05e28707cb54bc51a3275a0b
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 19:08:34 2009 +0200

    portage: show a message if try to use remove-packages with autoremove=True

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 2302d14..271cff8 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1074,7 +1074,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
     def remove_packages(self, allowdep, autoremove, pkgs):
-        # TODO: add a message or an error with allowdep
+        # TODO: implement allowdep
         # can't use allowdep: never removing dep
 
         self.status(STATUS_RUNNING)
@@ -1103,6 +1103,11 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
             cpv_list.append(cpv)
 
+        # backend do not implement autoremove
+        if autoremove:
+            self.message(MESSAGE_AUTOREMOVE_IGNORED,
+                    "Portage backend do not implement autoremove option")
+
         # create packages list
         db_keys = list(portage.portdb._aux_cache_keys)
         for cpv in cpv_list:
commit a0b27f053d345b40fb6790a4ff5e80a8a410960b
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 18:54:45 2009 +0200

    Add MESSAGE_AUTOREMOVE_IGNORED in packagekit-glib
    and MessageAutoremoveIgnored in packagekit-qt

diff --git a/lib/packagekit-glib/pk-enum.c b/lib/packagekit-glib/pk-enum.c
index 3a8a15e..e9ab344 100644
--- a/lib/packagekit-glib/pk-enum.c
+++ b/lib/packagekit-glib/pk-enum.c
@@ -212,6 +212,7 @@ static const PkEnumMatch enum_message[] = {
 	{PK_MESSAGE_ENUM_COULD_NOT_FIND_PACKAGE,	"could-not-find-package"},
 	{PK_MESSAGE_ENUM_CONFIG_FILES_CHANGED,	"config-files-changed"},
 	{PK_MESSAGE_ENUM_PACKAGE_ALREADY_INSTALLED, "package-already-installed"},
+	{PK_MESSAGE_ENUM_AUTOREMOVE_IGNORED, "autoremove-ignored"},
 	{0, NULL}
 };
 
diff --git a/lib/packagekit-glib/pk-enum.h b/lib/packagekit-glib/pk-enum.h
index 6ccf65f..7f9e283 100644
--- a/lib/packagekit-glib/pk-enum.h
+++ b/lib/packagekit-glib/pk-enum.h
@@ -238,6 +238,7 @@ typedef enum {
 	PK_MESSAGE_ENUM_COULD_NOT_FIND_PACKAGE,
 	PK_MESSAGE_ENUM_CONFIG_FILES_CHANGED,
 	PK_MESSAGE_ENUM_PACKAGE_ALREADY_INSTALLED,
+	PK_MESSAGE_ENUM_AUTOREMOVE_IGNORED,
 	PK_MESSAGE_ENUM_UNKNOWN
 } PkMessageEnum;
 
diff --git a/lib/packagekit-qt/src/client.h b/lib/packagekit-qt/src/client.h
index 29973bc..3c91d5b 100644
--- a/lib/packagekit-qt/src/client.h
+++ b/lib/packagekit-qt/src/client.h
@@ -394,6 +394,7 @@ public:
 		MessageCouldNotFindPackage,
 		MessageConfigFilesChanged,
 		MessagePackageAlreadyInstalled,
+		MessageAutoremoveIgnored,
 		UnknownMessageType
 	} MessageType;
 
commit d02a373593484f9738f9afad25ae28d426218abf
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 18:54:02 2009 +0200

    Looks like this file was missing in the previous commit...

diff --git a/lib/python/packagekit/backend.py b/lib/python/packagekit/backend.py
index 9de3e50..d3c6b33 100644
--- a/lib/python/packagekit/backend.py
+++ b/lib/python/packagekit/backend.py
@@ -393,7 +393,7 @@ class PackageKitBaseBackend:
         '''
         self.error(ERROR_NOT_SUPPORTED, "This function is not implemented in this backend", exit=False)
 
-    def remove_packages(self, allowdep, package_ids):
+    def remove_packages(self, allowdep, autoremove, package_ids):
         '''
         Implement the {backend}-remove functionality
         Needed to be implemented in a sub class
@@ -570,9 +570,10 @@ class PackageKitBaseBackend:
             self.refresh_cache(force)
             self.finished()
         elif cmd == 'remove-packages':
-            allowdeps = args[0]
-            package_ids = args[1].split(PACKAGE_IDS_DELIM)
-            self.remove_packages(allowdeps, package_ids)
+            allowdeps = _text_to_bool(args[0])
+            autoremove = _text_to_bool(args[1])
+            package_ids = args[2].split(PACKAGE_IDS_DELIM)
+            self.remove_packages(allowdeps, autoremove, package_ids)
             self.finished()
         elif cmd == 'repo-enable':
             repoid = args[0]
commit a80741984baaa6eaff1b95dad11365b8b276e17d
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 16:31:50 2009 +0200

    Change remove-packages python backend function to get autoremove value.
    Changing all backends needed to be updated.
    allow_deps and autoremove are now converted from text to bool in
    backend.py, not in backends (updating yum backend to use bool).

diff --git a/backends/apt/aptBackend.py b/backends/apt/aptBackend.py
index 3ad2a12..7a88975 100755
--- a/backends/apt/aptBackend.py
+++ b/backends/apt/aptBackend.py
@@ -788,10 +788,11 @@ class PackageKitAptBackend(PackageKitBaseBackend):
         self.percentage(100)
 
     @unlock_cache_afterwards
-    def remove_packages(self, allowdeps, ids):
+    def remove_packages(self, allowdeps, autoremove, ids):
         """
         Implement the {backend}-remove functionality
         """
+        # TODO: use autoremove
         pklog.info("Removing package(s): id %s" % ids)
         if not self._lock_cache(): return
         self.status(STATUS_REMOVE)
diff --git a/backends/apt/pk-backend-apt.c b/backends/apt/pk-backend-apt.c
index 4f2f50d..3e04189 100644
--- a/backends/apt/pk-backend-apt.c
+++ b/backends/apt/pk-backend-apt.c
@@ -268,7 +268,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, "aptBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, "aptBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/conary/conaryBackend.py b/backends/conary/conaryBackend.py
index 9574e1f..4089680 100755
--- a/backends/conary/conaryBackend.py
+++ b/backends/conary/conaryBackend.py
@@ -610,10 +610,11 @@ class PackageKitConaryBackend(PackageKitBaseBackend):
 
         
     @ExceptionHandler
-    def remove_packages(self, allowDeps, package_ids):
+    def remove_packages(self, allowDeps, autoremove, package_ids):
         '''
         Implement the {backend}-remove-packages functionality
         '''
+        # TODO: use autoremove
         self.allow_cancel(True)
         self.percentage(0)
         self.status(STATUS_RUNNING)
diff --git a/backends/conary/pk-backend-conary.c b/backends/conary/pk-backend-conary.c
index 5ac87ac..412dc69 100644
--- a/backends/conary/pk-backend-conary.c
+++ b/backends/conary/pk-backend-conary.c
@@ -205,7 +205,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, "conaryBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, "conaryBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/pisi/pisiBackend.py b/backends/pisi/pisiBackend.py
index 6bcc787..f4faee6 100755
--- a/backends/pisi/pisiBackend.py
+++ b/backends/pisi/pisiBackend.py
@@ -298,10 +298,11 @@ class PackageKitPisiBackend(PackageKitBaseBackend, PackagekitPackage):
 
         self.percentage(100)
 
-    def remove_packages(self, deps, package_ids):
+    def remove_packages(self, allowdeps, autoremove, package_ids):
         """ Removes given package from system"""
         self.allow_cancel(False)
         self.percentage(None)
+        # TODO: use autoremove
 
         package = self.get_package_from_id(package_ids[0])[0]
 
diff --git a/backends/pisi/pk-backend-pisi.c b/backends/pisi/pk-backend-pisi.c
index 8717fae..583edc0 100644
--- a/backends/pisi/pk-backend-pisi.c
+++ b/backends/pisi/pk-backend-pisi.c
@@ -228,7 +228,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, "pisiBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, "pisiBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 45a1299..1967c22 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -237,11 +237,10 @@ backend_refresh_cache (PkBackend *backend, gboolean force)
 static void
 backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
-	// TODO: autoremove ?
 	gchar *package_ids_temp;
 
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, BACKEND_FILE, "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "remove-packages", pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 468d1db..2302d14 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1073,7 +1073,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.unblock_output()
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
-    def remove_packages(self, allowdep, pkgs):
+    def remove_packages(self, allowdep, autoremove, pkgs):
         # TODO: add a message or an error with allowdep
         # can't use allowdep: never removing dep
 
diff --git a/backends/smart/pk-backend-smart.c b/backends/smart/pk-backend-smart.c
index eefb5b7..d93c327 100644
--- a/backends/smart/pk-backend-smart.c
+++ b/backends/smart/pk-backend-smart.c
@@ -299,8 +299,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	/* FIXME: Use autoremove */
-	pk_backend_spawn_helper (spawn, BACKEND("remove-packages"), pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, BACKEND("remove-packages"), pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/smart/smartBackend.py b/backends/smart/smartBackend.py
index 1b09b60..44d98b2 100755
--- a/backends/smart/smartBackend.py
+++ b/backends/smart/smartBackend.py
@@ -226,7 +226,8 @@ class PackageKitSmartBackend(PackageKitBaseBackend):
         self.ctrl.commitTransaction(trans, confirm=False)
 
     @needs_cache
-    def remove_packages(self, allow_deps, packageids):
+    def remove_packages(self, allow_deps, autoremove, packageids):
+        # TODO: use autoremove
         packages = []
         for packageid in packageids:
             ratio, results, suggestions = self._search_packageid(packageid)
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 7006147..ef0680c 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -324,7 +324,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, "yumBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	pk_backend_spawn_helper (spawn, "yumBackend.py", "remove-packages", pk_backend_bool_to_text (allow_deps), pk_backend_bool_to_text (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
 
diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 962229f..8408081 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1907,11 +1907,12 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             except Exception, e:
                 raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
 
-    def remove_packages(self, allowdep, package_ids):
+    def remove_packages(self, allowdep, autoremove, package_ids):
         '''
         Implement the {backend}-remove functionality
         Needed to be implemented in a sub class
         '''
+        # TODO: use autoremove
         try:
             self._check_init()
         except PkError, e:
@@ -1945,7 +1946,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                     self.error(ERROR_PACKAGE_NOT_INSTALLED, "The package %s is not installed" % pkg.name)
         if txmbrs:
             try:
-                if allowdep != 'yes':
+                if not allowdep:
                     self._runYumTransaction(allow_remove_deps=False)
                 else:
                     self._runYumTransaction(allow_remove_deps=True)
commit 87b1625cf6d06007498169208c4ce1a36bb5f2ea
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 15:52:10 2009 +0200

    Remove --enable-maintainer-mode from autogen conf_flags as it's not a
    valid option anymore

diff --git a/autogen.sh b/autogen.sh
index 70925ea..217750a 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -29,7 +29,7 @@ fi
 (cd $srcdir && autoreconf --force --install) || exit 1
 (cd $srcdir && intltoolize) || exit 1
 
-conf_flags="--enable-maintainer-mode --enable-gtk-doc"
+conf_flags="--enable-gtk-doc"
 
 if test x$NOCONFIGURE = x; then
   echo Running $srcdir/configure $conf_flags "$@" ...
commit 2d7f9684b3b76aa2822244b67271df1e68e7ff96
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Tue Jul 21 15:48:34 2009 +0200

    Change networkmanager, connman and service-packs description
    to "Disable foo" instead of "Enable foo" and add --disable-foo as
    command when calling ./configure -h

diff --git a/configure.ac b/configure.ac
index b26bfb7..63c1e3d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -254,8 +254,8 @@ AM_CONDITIONAL(PK_BUILD_MANAGED, test $build_managed = "yes")
 dnl ---------------------------------------------------------------------------
 dnl - Service Packs (default enabled)
 dnl ---------------------------------------------------------------------------
-AC_ARG_ENABLE(service-packs, AC_HELP_STRING([--enable-service-packs],
-							[Enable Service Packs]), enable_servicepacks=$enableval)
+AC_ARG_ENABLE(service-packs, AC_HELP_STRING([--disable-service-packs],
+							[Disable Service Packs support]), enable_servicepacks=$enableval)
 if test x$enable_servicepacks != xno; then
 	AC_CHECK_HEADERS(archive.h,
 			 HAVE_ARCHIVE_H="yes",
@@ -298,8 +298,9 @@ networking_apis="unix"
 dnl ---------------------------------------------------------------------------
 dnl - NetworkManager (default enabled)
 dnl ---------------------------------------------------------------------------
-AC_ARG_ENABLE(networkmanager, AC_HELP_STRING([--enable-networkmanager],
-							[Enable NetworkManager]), enable_networkmanager=$enableval)
+AC_ARG_ENABLE(networkmanager, AC_HELP_STRING([--disable-networkmanager],
+							[Disable NetworkManager support]),
+							enable_networkmanager=$enableval)
 if test x$enable_networkmanager != xno; then
 	PKG_CHECK_MODULES(LIBNM, libnm_glib >= $LIBNM_GLIB_REQUIRED, PK_BUILD_NETWORKMANAGER="yes", PK_BUILD_NETWORKMANAGER="no")
 	if test "x$PK_BUILD_NETWORKMANAGER" = "xyes"; then
@@ -321,8 +322,8 @@ AC_SUBST(LIBNM_LIBS)
 dnl ---------------------------------------------------------------------------
 dnl - ConnMan (default enabled)
 dnl ---------------------------------------------------------------------------
-AC_ARG_ENABLE(connman, AC_HELP_STRING([--enable-connman],
-							[Enable ConnMan]), enable_connman=$enableval)
+AC_ARG_ENABLE(connman, AC_HELP_STRING([--disable-connman],
+							[Disable ConnMan support]), enable_connman=$enableval)
 if test x$enable_connman != xno; then
 	PKG_CHECK_MODULES(CONNMAN, connman, PK_BUILD_CONNMAN="yes", PK_BUILD_CONNMAN="no")
 	if test "x$PK_BUILD_CONNMAN" = "xyes"; then
commit 93d70d070c1bae360440bcff2eddb160943abd34
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Mon Jul 20 23:37:36 2009 +0200

    Adding 'strict' option to configure to add -Werror.
    Auto-enabled in repo, auto-disabled otherwise.

diff --git a/configure.ac b/configure.ac
index 34598a0..b26bfb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,10 +74,29 @@ CPPFLAGS="$CPPFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGDK_DISABL
 CPPFLAGS="$CPPFLAGS -DGDK_MULTIHEAD_SAFE -DGTK_MULTIHEAD_SAFE"
 CPPFLAGS="$CPPFLAGS -DGSEAL_ENABLE"
 
+dnl ---------------------------------------------------------------------------
+dnl - Use strict options (default enabled for devs, disabled in releases)
+dnl ---------------------------------------------------------------------------
+
+dnl if .git directory is present, considering we are working in the repository
+if test -d ".git"; then
+	default_strict=yes
+else
+	default_strict=no
+fi
+
+AC_ARG_ENABLE(strict, AC_HELP_STRING([--enable-strict],
+							[Enable strict compilation options]), enable_strict=$enableval,
+							enable_strict=$default_strict)
+if test x$enable_strict != xno; then
+	if test "$GCC" = "yes"; then
+		WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Werror"
+	fi
+fi
+
 if test "$GCC" = "yes"; then
 	# work both in C and C++
 	WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Wall"
-	WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Werror"
 	WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Wcast-align -Wno-uninitialized"
 	WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Wmissing-declarations"
 	WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Wredundant-decls"
commit 7c12dd0afece1f0e1893a301b94580e1e0a30402
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Mon Jul 20 23:27:24 2009 +0200

    portage: clean remove-packages after portage fixes

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 3da43ef..468d1db 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1074,6 +1074,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
     def remove_packages(self, allowdep, pkgs):
+        # TODO: add a message or an error with allowdep
         # can't use allowdep: never removing dep
 
         self.status(STATUS_RUNNING)
@@ -1083,12 +1084,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         cpv_list = []
         packages = []
 
-        myopts = {} # TODO: --nodeps ?
-        #myopts['--nodeps'] = True
-        spinner = ""
-        favorites = []
         settings, trees, mtimedb = _emerge.actions.load_emerge_config()
-        spinner = _emerge.stdout_spinner.stdout_spinner()
         root_config = trees[self.portage_settings["ROOT"]]["root_config"]
 
         # create cpv_list
@@ -1123,21 +1119,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         del db_keys
 
         # now, we can remove
-        if "resume" in mtimedb and \
-        "mergelist" in mtimedb["resume"] and \
-        len(mtimedb["resume"]["mergelist"]) > 1:
-            mtimedb["resume_backup"] = mtimedb["resume"]
-            del mtimedb["resume"]
-            mtimedb.commit()
-
-        mtimedb["resume"] = {}
-        mtimedb["resume"]["myopts"] = myopts.copy()
-        mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
-
-        mergetask = _emerge.Scheduler.Scheduler(settings,
-                trees, mtimedb, myopts, spinner,
-                packages, favorites, None)
-        mergetask.merge()
+        try:
+            self.block_output()
+            mergetask = _emerge.Scheduler.Scheduler(settings,
+                    trees, mtimedb, mergelist=packages, myopts={},
+                    spinner=None, favorites=[], digraph=None)
+            mergetask.merge()
+        finally:
+            self.unblock_output()
 
     def repo_enable(self, repoid, enable):
         # NOTES: use layman API >= 1.2.3
commit 7cf111f2182c4c69bc0306f68560663d8258bdde
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jul 20 18:12:53 2009 +0100

    Fix up some trivial nits in the man pages

diff --git a/client/pkcon.xml b/client/pkcon.xml
index ce31201..49ce721 100644
--- a/client/pkcon.xml
+++ b/client/pkcon.xml
@@ -73,7 +73,7 @@ manpage.1: manpage.xml
           <option>0</option>
         </term>
         <listitem>
-          <para>Success, at least one package was installed</para>
+          <para>Success</para>
         </listitem>
       </varlistentry>
       <varlistentry>
diff --git a/client/pkmon.xml b/client/pkmon.xml
index 09ebc55..8e471e7 100644
--- a/client/pkmon.xml
+++ b/client/pkmon.xml
@@ -73,7 +73,7 @@ manpage.1: manpage.xml
           <option>0</option>
         </term>
         <listitem>
-          <para>Success, at least one package was installed</para>
+          <para>Success</para>
         </listitem>
       </varlistentry>
       <varlistentry>


More information about the PackageKit-commit mailing list