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

Richard Hughes hughsient at kemper.freedesktop.org
Thu Feb 18 06:44:57 PST 2010


 backends/conary/conaryBackend.py       |    7 
 backends/conary/pk-backend-conary.c    |   51 
 backends/entropy/TODO                  |    1 
 backends/entropy/entropyBackend.py     |    2 
 backends/portage/pk-backend-portage.c  |   13 
 backends/portage/portageBackend.py     |  788 ++++++-------
 lib/packagekit-glib2/pk-control-sync.c |   52 
 lib/packagekit-glib2/pk-control-sync.h |    3 
 lib/packagekit-glib2/pk-control.c      |  145 ++
 lib/packagekit-glib2/pk-control.h      |    7 
 po/de.po                               |  269 ++--
 po/hu.po                               |   11 
 po/id.po                               | 1983 +++++++++++++++++++++++++++++++++
 src/pk-backend-spawn.c                 |   15 
 src/pk-backend.c                       |   10 
 src/pk-backend.h                       |    1 
 src/pk-transaction.c                   |    3 
 17 files changed, 2831 insertions(+), 530 deletions(-)

New commits:
commit cd0da3084feaab29210c731f3496f3a843e50458
Author: Vincent Untz <vuntz at gnome.org>
Date:   Wed Feb 17 13:44:13 2010 +0100

    glib2: add pk_control_suggest_daemon_quit() (and async version)

diff --git a/lib/packagekit-glib2/pk-control-sync.c b/lib/packagekit-glib2/pk-control-sync.c
index feff991..7fd3dfe 100644
--- a/lib/packagekit-glib2/pk-control-sync.c
+++ b/lib/packagekit-glib2/pk-control-sync.c
@@ -144,3 +144,55 @@ pk_control_get_transaction_list (PkControl *control, GCancellable *cancellable,
 	return transaction_list;
 }
 
+/**
+ * pk_control_suggest_daemon_quit_cb:
+ **/
+static void
+pk_control_suggest_daemon_quit_cb (PkControl *control, GAsyncResult *res, PkControlHelper *helper)
+{
+	/* get the result */
+	helper->ret = pk_control_suggest_daemon_quit_finish (control, res, helper->error);
+	g_main_loop_quit (helper->loop);
+}
+
+/**
+ * pk_control_suggest_daemon_quit:
+ * @control: a valid #PkControl instance
+ * @cancellable: a #GCancellable or %NULL
+ * @error: A #GError or %NULL
+ *
+ * Suggests to the daemon that it should quit as soon as possible.
+ * Warning: this function is synchronous, and may block. Do not use it in GUI
+ * applications.
+ *
+ * Return value: %TRUE if the suggestion was sent
+ *
+ * Since: 0.6.2
+ **/
+gboolean
+pk_control_suggest_daemon_quit (PkControl *control, GCancellable *cancellable, GError **error)
+{
+	gboolean ret;
+	PkControlHelper *helper;
+
+	g_return_val_if_fail (PK_IS_CONTROL (control), FALSE);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	/* create temp object */
+	helper = g_new0 (PkControlHelper, 1);
+	helper->loop = g_main_loop_new (NULL, FALSE);
+	helper->error = error;
+
+	/* run async method */
+	pk_control_suggest_daemon_quit_async (control, cancellable, (GAsyncReadyCallback) pk_control_suggest_daemon_quit_cb, helper);
+	g_main_loop_run (helper->loop);
+
+	ret = helper->ret;
+
+	/* free temp object */
+	g_main_loop_unref (helper->loop);
+	g_free (helper);
+
+	return ret;
+}
+
diff --git a/lib/packagekit-glib2/pk-control-sync.h b/lib/packagekit-glib2/pk-control-sync.h
index 3b507d3..cb8b677 100644
--- a/lib/packagekit-glib2/pk-control-sync.h
+++ b/lib/packagekit-glib2/pk-control-sync.h
@@ -31,6 +31,9 @@ gboolean	 pk_control_get_properties		(PkControl		*control,
 gchar		**pk_control_get_transaction_list	(PkControl		*control,
 							 GCancellable		*cancellable,
 							 GError			**error);
+gboolean	 pk_control_suggest_daemon_quit		(PkControl		*control,
+							 GCancellable		*cancellable,
+							 GError			**error);
 
 #endif /* __PK_CONTROL_SYNC_H */
 
diff --git a/lib/packagekit-glib2/pk-control.c b/lib/packagekit-glib2/pk-control.c
index 1d3c288..682d9c7 100644
--- a/lib/packagekit-glib2/pk-control.c
+++ b/lib/packagekit-glib2/pk-control.c
@@ -339,6 +339,151 @@ pk_control_get_tid_finish (PkControl *control, GAsyncResult *res, GError **error
 /***************************************************************************************************/
 
 /**
+ * pk_control_suggest_daemon_quit_state_finish:
+ **/
+static void
+pk_control_suggest_daemon_quit_state_finish (PkControlState *state, const GError *error)
+{
+	/* get result */
+	if (state->ret) {
+		g_simple_async_result_set_op_res_gboolean (state->res, state->ret);
+	} else {
+		g_simple_async_result_set_from_error (state->res, error);
+	}
+
+	/* remove from list */
+	g_ptr_array_remove (state->control->priv->calls, state);
+	if (state->call != NULL)
+		egg_warning ("state array remove %p (%p)", state, state->call);
+	else
+		egg_debug ("state array remove %p", state);
+
+	/* complete */
+	g_simple_async_result_complete_in_idle (state->res);
+
+	/* deallocate */
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
+		g_object_unref (state->cancellable);
+	}
+	g_object_unref (state->res);
+	g_object_unref (state->control);
+	g_slice_free (PkControlState, state);
+}
+
+/**
+ * pk_control_suggest_daemon_quit_cb:
+ **/
+static void
+pk_control_suggest_daemon_quit_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkControlState *state)
+{
+	GError *error = NULL;
+	gchar *tid = NULL;
+	gboolean ret;
+
+	/* finished this call */
+	state->call = NULL;
+
+	/* get the result */
+	ret = dbus_g_proxy_end_call (proxy, call, &error,
+				     G_TYPE_INVALID);
+	if (!ret) {
+		egg_warning ("failed to suggest quit: %s", error->message);
+		pk_control_suggest_daemon_quit_state_finish (state, error);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* save data */
+	state->ret = TRUE;
+
+	/* we're done */
+	pk_control_suggest_daemon_quit_state_finish (state, NULL);
+out:
+	g_free (tid);
+}
+
+/**
+ * pk_control_suggest_daemon_quit_async:
+ * @control: a valid #PkControl instance
+ * @cancellable: a #GCancellable or %NULL
+ * @callback: the function to run on completion
+ * @user_data: the data to pass to @callback
+ *
+ * Suggests to the daemon that it should quit as soon as possible.
+ *
+ * Since: 0.6.2
+ **/
+void
+pk_control_suggest_daemon_quit_async (PkControl *control, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+{
+	GSimpleAsyncResult *res;
+	PkControlState *state;
+
+	g_return_if_fail (PK_IS_CONTROL (control));
+	g_return_if_fail (callback != NULL);
+
+	res = g_simple_async_result_new (G_OBJECT (control), callback, user_data, pk_control_suggest_daemon_quit_async);
+
+	/* save state */
+	state = g_slice_new0 (PkControlState);
+	state->res = g_object_ref (res);
+	state->control = g_object_ref (control);
+	if (cancellable != NULL) {
+		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
+
+	/* call D-Bus method async */
+	state->call = dbus_g_proxy_begin_call (control->priv->proxy, "SuggestDaemonQuit",
+					       (DBusGProxyCallNotify) pk_control_suggest_daemon_quit_cb, state,
+					       NULL, G_TYPE_INVALID);
+	if (state->call == NULL)
+		egg_error ("failed to setup call, maybe OOM or no connection");
+
+	/* track state */
+	g_ptr_array_add (control->priv->calls, state);
+	egg_debug ("state array add %p (%p)", state, state->call);
+
+	g_object_unref (res);
+}
+
+/**
+ * pk_control_suggest_daemon_quit_finish:
+ * @control: a valid #PkControl instance
+ * @res: the #GAsyncResult
+ * @error: A #GError or %NULL
+ *
+ * Gets the result from the asynchronous function.
+ *
+ * Return value: %TRUE if the suggestion was sent
+ *
+ * Since: 0.6.2
+ **/
+gboolean
+pk_control_suggest_daemon_quit_finish (PkControl *control, GAsyncResult *res, GError **error)
+{
+	GSimpleAsyncResult *simple;
+	gpointer source_tag;
+
+	g_return_val_if_fail (PK_IS_CONTROL (control), FALSE);
+	g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (res), FALSE);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	simple = G_SIMPLE_ASYNC_RESULT (res);
+	source_tag = g_simple_async_result_get_source_tag (simple);
+
+	g_return_val_if_fail (source_tag == pk_control_suggest_daemon_quit_async, FALSE);
+
+	if (g_simple_async_result_propagate_error (simple, error))
+		return FALSE;
+
+	return g_simple_async_result_get_op_res_gboolean (simple);
+}
+
+/***************************************************************************************************/
+
+/**
  * pk_control_get_daemon_state_state_finish:
  **/
 static void
diff --git a/lib/packagekit-glib2/pk-control.h b/lib/packagekit-glib2/pk-control.h
index 562477d..d3d14d1 100644
--- a/lib/packagekit-glib2/pk-control.h
+++ b/lib/packagekit-glib2/pk-control.h
@@ -99,6 +99,13 @@ void		 pk_control_get_tid_async		(PkControl		*control,
 gchar		*pk_control_get_tid_finish		(PkControl		*control,
 							 GAsyncResult		*res,
 							 GError			**error);
+void		 pk_control_suggest_daemon_quit_async	(PkControl		*control,
+							 GCancellable		*cancellable,
+							 GAsyncReadyCallback	 callback,
+							 gpointer		 user_data);
+gboolean	 pk_control_suggest_daemon_quit_finish	(PkControl		*control,
+							 GAsyncResult		*res,
+							 GError			**error);
 void		 pk_control_get_daemon_state_async	(PkControl		*control,
 							 GCancellable		*cancellable,
 							 GAsyncReadyCallback	 callback,
commit bf0b83a083ef3c00ee150ca38d857ec9db1b6edb
Author: kenda <kenda at fedoraproject.org>
Date:   Wed Feb 17 10:29:34 2010 +0000

    Sending translation for German

diff --git a/po/de.po b/po/de.po
index 3453dea..e2ddc0a 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,6 @@
 # # 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.
@@ -16,21 +15,22 @@
 # Stefan Posdzich <cheekyboinc at foresightlinux.org>, 2008.
 # Fabian Affolter <fab at fedoraproject.org>, 2009.
 # Christian Kirbach <Christian.Kirbach at googlemail.com>, 2009.
-# Marcus Nitzschke <kenda at fedoraproject.org>, 2009.
+# Marcus Nitzschke <kenda at fedoraproject.org>, 2009, 2010.
 # Hedda Peters <hpeters at redhat.com>, 2009.
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-08 02:28+0000\n"
-"PO-Revision-Date: 2009-12-09 10:06+1000\n"
-"Last-Translator: Hedda Peters <hpeters at redhat.com>\n"
-"Language-Team: \n"
+"POT-Creation-Date: 2010-02-17 09:10+0000\n"
+"PO-Revision-Date: 2010-02-17 11:27+0200\n"
+"Last-Translator: Marcus Nitzschke <kenda at fedoraproject.org>\n"
+"Language-Team: German <trans-de at lists.fedoraproject.org>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
+"X-Generator: Virtaal 0.5.1\n"
 
 #. TRANSLATORS: this is an atomic transaction
 #. TRANSLATORS: the role is the point of the transaction, e.g. update-system
@@ -245,7 +245,8 @@ 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:469
 msgid "Session restart (security) required:"
-msgstr "Ein Neustart der Sitzung (zur Verbesserung der Sicherheit) ist erforderlich:"
+msgstr ""
+"Ein Neustart der Sitzung (zur Verbesserung der Sicherheit) ist erforderlich:"
 
 #. TRANSLATORS: a package requires the application to be restarted
 #: ../client/pk-console.c:472
@@ -283,39 +284,40 @@ msgid "Status"
 msgstr "Status"
 
 #. TRANSLATORS: the results from the transaction
-#: ../client/pk-console.c:678
+#: ../client/pk-console.c:679
 msgid "Results:"
 msgstr "Ergebnisse:"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:685
+#: ../client/pk-console.c:686
 msgid "Fatal error"
 msgstr "Schwerwiegender Fehler"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:694
+#: ../client/pk-console.c:695
 #: ../contrib/command-not-found/pk-command-not-found.c:432
 #: ../contrib/command-not-found/pk-command-not-found.c:603
 msgid "The transaction failed"
 msgstr "Die Transaktion scheiterte"
 
 #. TRANSLATORS: print a message when there are no updates
-#: ../client/pk-console.c:721
+#: ../client/pk-console.c:726
 msgid "There are no updates available at this time."
 msgstr "Derzeit sind keine Aktualisierungen verfügbar."
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:814
 msgid "Please restart the computer to complete the update."
-msgstr "Bitte starten Sie den Computer neu, um die Aktualisierung abzuschliessen."
+msgstr ""
+"Bitte starten Sie den Computer neu, um die Aktualisierung abzuschliessen."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:811
+#: ../client/pk-console.c:817
 msgid "Please logout and login to complete the update."
 msgstr "Bitte erneut anmelden, um die Aktualisierung abzuschliessen."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:814
+#: ../client/pk-console.c:820
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -324,7 +326,7 @@ msgstr ""
 "denn es sind wichtige Sicherheitsaktualisierungen installiert worden."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:817
+#: ../client/pk-console.c:823
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -332,20 +334,30 @@ msgstr ""
 "Bitte erneut anmelden, um die Aktualisierung abzuschliessen, denn es sind "
 "wichtige Sicherheitsaktualisierungen installiert worden."
 
+#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
+#: ../client/pk-console.c:849
+#, c-format
+msgid ""
+"Extected package name, actually got file. Try using 'pkcon install-local %s' "
+"instead."
+msgstr ""
+"Paketname erwartet, aber Dateinamen erhalten. Versuchen Sie stattdessen "
+"'pkcon install-local %s'"
+
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:840
+#: ../client/pk-console.c:857
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Dieses Tool konnte keine verfügbaren Pakete finden: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:885
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Dieses Tool konnte das installierte Paket nicht finden: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:896 ../client/pk-console.c:924
+#: ../client/pk-console.c:913 ../client/pk-console.c:941
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Dieses Tool konnte das Paket nicht finden: %s"
@@ -354,229 +366,238 @@ msgstr "Dieses Tool konnte das Paket nicht finden: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:952 ../client/pk-console.c:980
-#: ../client/pk-console.c:1008 ../client/pk-console.c:1036
-#: ../client/pk-console.c:1064
+#: ../client/pk-console.c:969 ../client/pk-console.c:997
+#: ../client/pk-console.c:1025 ../client/pk-console.c:1053
+#: ../client/pk-console.c:1081
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Dieses Tool konnte nicht alle Pakete finden: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1093
+#: ../client/pk-console.c:1110
 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:1127
+#: ../client/pk-console.c:1144
 msgid "PackageKit Console Interface"
 msgstr "Schnittstelle zur PackageKit-Konsole"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1129
+#: ../client/pk-console.c:1146
 msgid "Subcommands:"
 msgstr "Unterbefehle:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:1208
+#: ../client/pk-console.c:1225
 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: command line argument, just show the version string
-#: ../client/pk-console.c:1244 ../client/pk-monitor.c:280
+#: ../client/pk-console.c:1261 ../client/pk-monitor.c:306
 msgid "Show the program version and exit"
 msgstr "Programm-Version anzeigen und beenden"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1247
+#: ../client/pk-console.c:1264
 msgid "Set the filter, e.g. installed"
 msgstr "Den Filter setzen, z.B. »installiert«"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1250
+#: ../client/pk-console.c:1267
 msgid "Exit without waiting for actions to complete"
 msgstr "Beenden, ohne auf Beendigung der Aktionen zu warten"
 
 #. command line argument, do we ask questions
-#: ../client/pk-console.c:1253
+#: ../client/pk-console.c:1270
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
 msgid "Install the packages without asking for confirmation"
 msgstr "Die Pakete ohne erneute Nachfrage installieren"
 
 #. TRANSLATORS: command line argument, this command is not a priority
-#: ../client/pk-console.c:1256
+#: ../client/pk-console.c:1273
 msgid "Run the command using idle network bandwidth and also using less power"
-msgstr "Befehl ausführen unter Verwendung ungenutzer Netzwerkbandbreite und wenig Energie"
+msgstr ""
+"Befehl ausführen unter Verwendung ungenutzer Netzwerkbandbreite und wenig "
+"Energie"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
-#: ../client/pk-console.c:1259
-msgid "Print to screen a machine readable output, rather than using animated widgets"
-msgstr "Auf dem Bildschirm computerlesbare Ausgabe ausgeben, anstatt animierte Widgets zu verwenden"
+#: ../client/pk-console.c:1276
+msgid ""
+"Print to screen a machine readable output, rather than using animated widgets"
+msgstr ""
+"Auf dem Bildschirm computerlesbare Ausgabe ausgeben, anstatt animierte "
+"Widgets zu verwenden"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1281
+#: ../client/pk-console.c:1298
 msgid "Failed to contact PackageKit"
 msgstr "PackageKit konnte nicht kontaktiert werden"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1339
+#: ../client/pk-console.c:1356
 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:1358
+#: ../client/pk-console.c:1375
 msgid "A search type is required, e.g. name"
 msgstr "Eine Suchart ist nötig, z.B. »Name«"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1365 ../client/pk-console.c:1377
-#: ../client/pk-console.c:1389 ../client/pk-console.c:1401
+#: ../client/pk-console.c:1382 ../client/pk-console.c:1394
+#: ../client/pk-console.c:1406 ../client/pk-console.c:1418
 msgid "A search term is required"
 msgstr "Ein Suchbegriff ist erforderlich"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1411
+#: ../client/pk-console.c:1428
 msgid "Invalid search type"
 msgstr "Ungültige Suchart"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1417
+#: ../client/pk-console.c:1434
 msgid "A package name to install is required"
 msgstr "Ein zu installierender Paketname ist erforderlich"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1426
+#: ../client/pk-console.c:1443
 msgid "A filename to install is required"
 msgstr "Ein zu installierender Dateiname ist erforderlich"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1438
+#: ../client/pk-console.c:1455
 msgid "A type, key_id and package_id are required"
 msgstr "Ein Typ, Schlüsselkennung und Paketkennung sind erforderlich"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1449
+#: ../client/pk-console.c:1466
 msgid "A package name to remove is required"
 msgstr "Zum Entfernen ist ein Paketname erforderlich"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1458
+#: ../client/pk-console.c:1475
 msgid "A destination directory and the package names to download are required"
-msgstr "Ein Zielverzeichnis und die Namen der Pakete zum Herunterladen sind erforderlich"
+msgstr ""
+"Ein Zielverzeichnis und die Namen der Pakete zum Herunterladen sind "
+"erforderlich"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1465
+#: ../client/pk-console.c:1482
 msgid "Directory not found"
 msgstr "Verzeichnis nicht gefunden"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1474
+#: ../client/pk-console.c:1491
 msgid "A licence identifier (eula-id) is required"
 msgstr "Eine Lizenzbezeichnung (eula-id) ist erforderlich"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1485
+#: ../client/pk-console.c:1502
 msgid "A transaction identifier (tid) is required"
 msgstr "Eine Transaktionsbezeichnung (tid) ist erforderlich"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1506
+#: ../client/pk-console.c:1523
 msgid "A package name to resolve is required"
 msgstr "Ein Paketname ist zur Auflösung erforderlich"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1517 ../client/pk-console.c:1528
+#: ../client/pk-console.c:1534 ../client/pk-console.c:1545
 msgid "A repository name is required"
 msgstr "Ein Depotname wird benötigt"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1539
+#: ../client/pk-console.c:1556
 msgid "A repo name, parameter and value are required"
 msgstr "Ein Depotname, Parameter und Wert sind erforderlich"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1556
+#: ../client/pk-console.c:1573
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Ein Vorgang, z.B. »update-system«, wird benötigt"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1563
+#: ../client/pk-console.c:1580
 msgid "A correct role is required"
 msgstr "Eine korrekte Rolle wird benötigt"
 
 #. 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:1573 ../client/pk-console.c:1588
-#: ../client/pk-console.c:1597 ../client/pk-console.c:1617
-#: ../client/pk-console.c:1626 ../client/pk-generate-pack.c:298
+#: ../client/pk-console.c:1590 ../client/pk-console.c:1605
+#: ../client/pk-console.c:1614 ../client/pk-console.c:1634
+#: ../client/pk-console.c:1643 ../client/pk-generate-pack.c:316
 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:1606
+#: ../client/pk-console.c:1623
 msgid "A package provide string is required"
 msgstr "Die Zeichenkette »Stellt bereit« wird benötigt"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1686
+#: ../client/pk-console.c:1703
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Option »%s« wird nicht unterstützt"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1696
+#: ../client/pk-console.c:1713
 msgid "Command failed"
 msgstr "Ausführung des Befehls fehlgeschlagen"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:237
+#: ../client/pk-generate-pack.c:255
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Den Dateinamen der Abhängigkeiten festlegen, die ausgeschlossen werden"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:240
-msgid "The output file or directory (the current directory is used if ommitted)"
+#: ../client/pk-generate-pack.c:258
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
 msgstr ""
 "Die Ausgabedatei oder das Ausgabeverzeichnis (falls leer, wird das aktuelle "
 "Verzeichnis verwendet)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:243
+#: ../client/pk-generate-pack.c:261
 msgid "The package to be put into the service pack"
 msgstr "Das Paket zum Hinzufügen in das Service-Pack"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:246
+#: ../client/pk-generate-pack.c:264
 msgid "Put all updates available in the service pack"
 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:282
+#: ../client/pk-generate-pack.c:300
 msgid "Neither --package or --updates option selected."
 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:290
+#: ../client/pk-generate-pack.c:308
 msgid "Both options selected."
 msgstr "Beide Optionen ausgewählt."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:306
+#: ../client/pk-generate-pack.c:324
 msgid "A output directory or file name is required"
 msgstr "Ein Ausgabeverzeichnis oder Dateiname ist erforderlich"
 
 #. TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup
-#: ../client/pk-generate-pack.c:324
+#: ../client/pk-generate-pack.c:342
 msgid "The dameon failed to startup"
 msgstr "Der Daemon konnte nicht starten"
 
 #. 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:335 ../client/pk-generate-pack.c:341
+#: ../client/pk-generate-pack.c:353 ../client/pk-generate-pack.c:359
 msgid "The package manager cannot perform this type of operation."
 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:348
+#: ../client/pk-generate-pack.c:366
 msgid ""
 "Service packs cannot be created as PackageKit was not built with libarchive "
 "support."
@@ -585,66 +606,67 @@ msgstr ""
 "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:359
+#: ../client/pk-generate-pack.c:377
 msgid "If specifying a file, the service pack name must end with"
-msgstr "Wenn Sie eine Datei angeben, dann muss der Name des Service-Packs 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:375
+#: ../client/pk-generate-pack.c:393
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 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:378
+#: ../client/pk-generate-pack.c:396
 msgid "The pack was not overwritten."
 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:391
+#: ../client/pk-generate-pack.c:409
 msgid "Failed to create directory:"
 msgstr "Verzeichnis konnte nicht erstellt werden:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:403
+#: ../client/pk-generate-pack.c:421
 msgid "Failed to open package list."
 msgstr "Paketliste konnte nicht geöffnet werden."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:412
+#: ../client/pk-generate-pack.c:430
 msgid "Finding package name."
 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:416
+#: ../client/pk-generate-pack.c:434
 #, c-format
 msgid "Failed to find package '%s': %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:424
+#: ../client/pk-generate-pack.c:442
 msgid "Creating service pack..."
 msgstr "Service-Pack wird erstellt …"
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:439
+#: ../client/pk-generate-pack.c:457
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Service-Pack »%s« wurde erstellt"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:444
+#: ../client/pk-generate-pack.c:462
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Erzeugen von »%s« ist fehlgeschlagen: %s"
 
-#: ../client/pk-monitor.c:210
+#: ../client/pk-monitor.c:236
 msgid "Failed to get daemon state"
 msgstr "Daemon-Status konnte nicht abgerufen werden"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:296
+#: ../client/pk-monitor.c:322
 msgid "PackageKit Monitor"
 msgstr "PackageKit-Monitor"
 
@@ -770,29 +792,30 @@ msgid "Please choose a command to run"
 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:766
+#: ../contrib/command-not-found/pk-command-not-found.c:764
 msgid "The package providing this file is:"
 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:771
+#: ../contrib/command-not-found/pk-command-not-found.c:769
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
-msgstr "Soll das Paket »%s« installiert werden, welches den Befehl »%s« bereitstellt?"
+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:795
+#: ../contrib/command-not-found/pk-command-not-found.c:793
 msgid "Packages providing this file are:"
 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:805
+#: ../contrib/command-not-found/pk-command-not-found.c:803
 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:814
+#: ../contrib/command-not-found/pk-command-not-found.c:812
 msgid "Please choose a package to install"
 msgstr "Bitte wählen Sie ein Paket zum Installieren"
 
@@ -811,7 +834,8 @@ msgstr ""
 
 #. command line argument, simulate what would be done, but don't actually do it
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
-msgid "Don't actually install any packages, only simulate what would be installed"
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
 msgstr ""
 "Keine Pakete tatsächlich installieren, sondern nur die Installation "
 "simulieren"
@@ -994,92 +1018,93 @@ msgid "Disabled %i debugging sources."
 msgstr "%i Fehlerdiagnose-Quellen wurden deaktiviert."
 
 #. TRANSLATORS: couldn't open device to write
-#: ../contrib/device-rebind/pk-device-rebind.c:61
+#: ../contrib/device-rebind/pk-device-rebind.c:62
 msgid "Failed to open file"
 msgstr "Das Öffnen der Datei ist fehlgeschlagen"
 
 #. TRANSLATORS: could not write to the device
-#: ../contrib/device-rebind/pk-device-rebind.c:70
+#: ../contrib/device-rebind/pk-device-rebind.c:71
 msgid "Failed to write to the file"
 msgstr "Das Schreiben in die Datei ist fehlgeschlagen"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:110
-#: ../contrib/device-rebind/pk-device-rebind.c:147
+#: ../contrib/device-rebind/pk-device-rebind.c:111
+#: ../contrib/device-rebind/pk-device-rebind.c:148
 msgid "Failed to write to device"
 msgstr "Das Schreiben auf dem Gerät ist fehlgeschlagen"
 
 #. TRANSLATORS: the device could not be found in sysfs
-#: ../contrib/device-rebind/pk-device-rebind.c:175
+#: ../contrib/device-rebind/pk-device-rebind.c:176
 msgid "Device could not be found"
 msgstr "Das Gerät konnte nicht gefunden werden"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:202
+#: ../contrib/device-rebind/pk-device-rebind.c:203
 msgid "Failed to unregister driver"
 msgstr "Treiber konnte nicht abgemeldet werden"
 
 #. TRANSLATORS: we failed to bind the old driver
-#: ../contrib/device-rebind/pk-device-rebind.c:211
+#: ../contrib/device-rebind/pk-device-rebind.c:212
 msgid "Failed to register driver"
 msgstr "Treiber konnte nicht registriert werden"
 
 #. TRANSLATORS: user did not specify a device sysfs path that exists
-#: ../contrib/device-rebind/pk-device-rebind.c:260
+#: ../contrib/device-rebind/pk-device-rebind.c:261
 msgid "Device path not found"
 msgstr "Gerätepfad nicht gefunden"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:268
+#: ../contrib/device-rebind/pk-device-rebind.c:269
 msgid "Incorrect device path specified"
 msgstr "Falschen Gerätepfad angegeben"
 
-#: ../contrib/device-rebind/pk-device-rebind.c:293
+#: ../contrib/device-rebind/pk-device-rebind.c:294
 msgid "Show extra debugging information"
 msgstr "Erweiterte Fehlerdiagnose-Informationen anzeigen"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/device-rebind/pk-device-rebind.c:296
+#: ../contrib/device-rebind/pk-device-rebind.c:297
 msgid "Don't actually touch the hardware, only simulate what would be done"
-msgstr "Keine Hardware tatsächlich anrühren, sondern nur simulieren, was gemacht wird"
+msgstr ""
+"Keine Hardware tatsächlich anrühren, sondern nur simulieren, was gemacht wird"
 
 #. TRANSLATORS: command line option: a list of files to install
-#: ../contrib/device-rebind/pk-device-rebind.c:299
+#: ../contrib/device-rebind/pk-device-rebind.c:300
 msgid "Device paths"
 msgstr "Gerätepfade"
 
 #. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
-#: ../contrib/device-rebind/pk-device-rebind.c:314
+#: ../contrib/device-rebind/pk-device-rebind.c:315
 msgid "PackageKit Device Reloader"
 msgstr "PackageKit Geräte-Aktualisierer"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:322
+#: ../contrib/device-rebind/pk-device-rebind.c:323
 msgid "You need to specify at least one valid device path"
 msgstr "Sie müssen mindestens einen korrekten Gerätepfad angeben"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:332
+#: ../contrib/device-rebind/pk-device-rebind.c:333
 msgid "This script can only be used by the root user"
 msgstr "Dieses Skript kann nur von dem Root-Benutzer verwendet werden."
 
 #. TRANSLATORS: we're going to verify the path first
-#: ../contrib/device-rebind/pk-device-rebind.c:341
+#: ../contrib/device-rebind/pk-device-rebind.c:342
 msgid "Verifying device path"
 msgstr "Gerätepfad wird geprüft"
 
 #. TRANSLATORS: user did not specify a device sysfs path that exists
-#: ../contrib/device-rebind/pk-device-rebind.c:346
+#: ../contrib/device-rebind/pk-device-rebind.c:347
 msgid "Failed to verify device path"
 msgstr "Überprüfung des Gerätepfades ist fehlgeschlagen"
 
 #. TRANSLATORS: we're going to try
-#: ../contrib/device-rebind/pk-device-rebind.c:360
+#: ../contrib/device-rebind/pk-device-rebind.c:361
 msgid "Attempting to rebind device"
 msgstr "Neu Einbinden des Gerätes wird versucht"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:365
+#: ../contrib/device-rebind/pk-device-rebind.c:366
 msgid "Failed to rebind device"
 msgstr "Neu Einbinden des Gerätes ist fehlgeschlagen"
 
@@ -1711,7 +1736,8 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Legitimation ist zum Annehmen der EULA erforderlich"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to cancel a task that was not started by yourself"
+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"
@@ -1726,11 +1752,13 @@ msgstr ""
 msgid ""
 "Authentication is required to consider a key used for signing packages as "
 "trusted"
-msgstr "Legitimation ist zum Vertrauen eines Paketsignaturschlüssels erforderlich"
+msgstr ""
+"Legitimation ist zum Vertrauen eines Paketsignaturschlüssels erforderlich"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
 msgid "Authentication is required to install a signed package"
-msgstr "Legitimation ist zum Installieren eines signierten Paketes erforderlich"
+msgstr ""
+"Legitimation ist zum Installieren eines signierten Paketes erforderlich"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Authentication is required to install an untrusted package"
@@ -1744,7 +1772,8 @@ msgstr "Legitimation ist zum Aktualisieren der Systemressourcen erforderlich"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:15
 msgid "Authentication is required to reload the device with a new driver"
-msgstr "Legitimation ist erforderlich, um das Gerät mit einem neuen Treiber zu laden"
+msgstr ""
+"Legitimation ist erforderlich, um das Gerät mit einem neuen Treiber zu laden"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to remove packages"
@@ -1887,7 +1916,8 @@ 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
@@ -2009,4 +2039,3 @@ msgstr "Optionen der Fehlerdiagnose"
 #: ../src/egg-debug.c:469
 msgid "Show debugging options"
 msgstr "Fehlerdiagnose-Optionen anzeigen"
-
commit 83cbbfff483f12bfeaa488d4fff045a15f3f24f4
Author: zodman <zodman at gnome.juglas.name>
Date:   Mon Feb 15 22:38:08 2010 +0100

    trivial: getting conary backed works again

diff --git a/backends/conary/conaryBackend.py b/backends/conary/conaryBackend.py
index 9bf022d..a43166b 100755
--- a/backends/conary/conaryBackend.py
+++ b/backends/conary/conaryBackend.py
@@ -373,24 +373,27 @@ class PackageKitConaryBackend(PackageKitBaseBackend):
         if pkg_dict is None:
             return None
         log.info("doing a resolve")
-
         filter = ConaryFilter(filters)
         trove = None
     
         trove_installed = self.conary.query( pkg_dict.get("name") )
+        log.info("end of conary query")
         if trove_installed:
             pkg = self._convert_package( trove_installed[0], pkg_dict )
             log.info( pkg)
             filter.add_installed( [ pkg ] )
-            
+        log.info("filter installed end.. doing a rq")    
         trove_available = self.conary.request_query( pkg_dict.get("name") )
+        log.info("end of conary rquery")
         if trove_available:
             pkg = self._convert_package( trove_available[0], pkg_dict )
             filter.add_available(  [ pkg ] )
 
+        log.info("filter available end")    
         package_list = filter.post_process()
         log.info("package_list %s" % package_list)
         self._show_package_list(package_list)
+	log.info("end resolve ...................")
 
     def _show_package_list(self, lst):
         """ 
diff --git a/backends/conary/pk-backend-conary.c b/backends/conary/pk-backend-conary.c
index c97dbc1..c6f945c 100644
--- a/backends/conary/pk-backend-conary.c
+++ b/backends/conary/pk-backend-conary.c
@@ -50,6 +50,7 @@ backend_destroy (PkBackend *backend)
 
 /**
  * backend_get_groups:
+*/
 static PkBitfield
 backend_get_groups (PkBackend *backend)
 {
@@ -68,7 +69,7 @@ backend_get_groups (PkBackend *backend)
 		-1);
 }
 
- */
+
 /**
  * backend_get_filters:
  */
@@ -170,8 +171,7 @@ backend_install_files (PkBackend *backend, gboolean only_trusted, const gchar *f
 	pk_backend_spawn_helper (spawn, "conaryBackend.py", "install-files", pk_backend_bool_to_string (only_trusted), full_paths, NULL);
 	g_free (package_ids_temp);
 }
- */
-
+*/
 /**
  * backend_refresh_cache:
  */
@@ -212,38 +212,49 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
  * pk_backend_search_name:
  */
 static void
-backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_name (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	gchar *filters_text;
+	gchar *search;
 	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&",values);
 	pk_backend_spawn_helper (spawn, "conaryBackend.py", "search-name", filters_text, search, NULL);
 	g_free (filters_text);
+	g_free (search);
 }
 
 /**
     pk_backend_search_groups
+*/
 static void
-backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_group (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	gchar *filters_text;
+	gchar *search;
 	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&",values);
+
 	pk_backend_spawn_helper (spawn, "conaryBackend.py", "search-group", filters_text, search, NULL);
 	g_free (filters_text);
+	g_free (search);
 }
 
 
-*/
+
 
 /**
     pk_backend_search_details
 */
 static void
-backend_search_details (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	gchar *filters_text;
+	gchar *search;
 	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&",values);
 	pk_backend_spawn_helper (spawn, "conaryBackend.py", "search-details", filters_text, search, NULL);
 	g_free (filters_text);
+	g_free (search);
 }
 
 /**
@@ -318,10 +329,14 @@ backend_get_packages (PkBackend *backend, PkBitfield filters)
  * pk_backend_search_file:
  */
 static void
-backend_search_file (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_file (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-        gchar *filters_text;
-        filters_text = pk_filter_bitfield_to_string (filters);
+	gchar *filters_text;
+	gchar *search;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&",values);
+
+
         pk_backend_spawn_helper (spawn, "conaryBackend.py", "search-file", filters_text, search, NULL);
         g_free (filters_text);
 }
@@ -340,8 +355,7 @@ backend_get_distro_upgrades (PkBackend *backend)
 /**
  * pk_backend_get_repo_list:
  */
-static void
-backend_get_repo_list (PkBackend *backend, PkBitfield filters)
+static void backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
     gchar *filters_text;
     filters_text = pk_filter_bitfield_to_string (filters);
@@ -352,11 +366,10 @@ backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 
 PK_BACKEND_OPTIONS (
 	"Conary with XMLCache",				/* description */
-	"Andres Vargas <zodman at foresightlinux.org>",
-						/* author */
+	"Andres Vargas <zodman at foresightlinux.org>", /* author */
 	backend_initialize,			/* initalize */
 	backend_destroy,			/* destroy */
-	NULL,//backend_get_groups,			/* get_groups */
+	backend_get_groups,			/* get_groups */
 	backend_get_filters,			/* get_filters */
 	NULL,					/* get_roles */
 	NULL,					/* get_mime_types */
@@ -370,8 +383,8 @@ PK_BACKEND_OPTIONS (
 	backend_get_packages,					/* get_packages */
 	backend_get_repo_list,					/* get_repo_list */
 	NULL,					/* get_requires */
-	backend_get_update_detail,              /* get_update_detail */
-	backend_get_updates,			/* get_updates */
+	NULL,//	backend_get_update_detail,              /* get_update_detail */
+	NULL,//	backend_get_updates,			/* get_updates */
 	NULL,					/* install_files */
 	backend_install_packages,		/* install_packages */
 	NULL,					/* install_signature */
@@ -383,7 +396,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* rollback */
 	backend_search_details,					/* search_details */
 	backend_search_file,					/* search_file */
-	NULL, //backend_search_group,					/* search_group */
+	backend_search_group,					/* search_group */
 	backend_search_name,			/* search_name */
 	backend_update_packages,		/* update_packages */
 	backend_update_system,			/* update_system */
@@ -391,6 +404,6 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_files */
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
-	NULL					/* simulate_update_packages */
+	NULL				/* simulate_update_packages */
 );
 
commit 80cb2da24313799e3ae5679f533ecafcfa107076
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Feb 15 18:48:21 2010 +0000

    Do not set the transaction id for all backends, it's a bad performance penalty

diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c
index 19af668..2e00c5b 100644
--- a/src/pk-backend-spawn.c
+++ b/src/pk-backend-spawn.c
@@ -621,12 +621,15 @@ pk_backend_spawn_get_envp (PkBackendSpawn *backend_spawn)
 
 	array = g_ptr_array_new_with_free_func (g_free);
 
-	/* transaction_id */
-	g_object_get (priv->backend,
-		      "transaction-id", &transaction_id,
-		      NULL);
-	line = g_strdup_printf ("%s=%s", "transaction_id", transaction_id);
-	g_ptr_array_add (array, line);
+	/* don't do this for all backends as it's a performance penalty */
+	if (FALSE) {
+		/* transaction_id */
+		g_object_get (priv->backend,
+			      "transaction-id", &transaction_id,
+			      NULL);
+		line = g_strdup_printf ("%s=%s", "transaction_id", transaction_id);
+		g_ptr_array_add (array, line);
+	}
 
 	/* accepted eulas */
 	eulas = pk_backend_get_accepted_eula_string (priv->backend);
commit 5ca1a5b5c39a6eead8d3436e04bfc80f5733c7f2
Author: snicore <snicore at fedoraproject.org>
Date:   Fri Feb 12 17:52:40 2010 +0000

    Sending translation for Hungarian

diff --git a/po/hu.po b/po/hu.po
index 72459e5..206cfdb 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,9 +8,9 @@ msgstr ""
 "Project-Id-Version: packagekit master\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-02-08 15:53+0000\n"
-"PO-Revision-Date: 2010-02-08 21:03+0100\n"
+"PO-Revision-Date: 2010-02-12 17:17+0100\n"
 "Last-Translator: Nikolas Slivka <snicore at gmail.com>\n"
-"Language-Team: Hungarian <gnome at fsf dot hu>\n"
+"Language-Team: Hungarian <fedora-trans-hu at redhat.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -407,7 +407,7 @@ msgstr "Parancsot használva kihasználatlan hálózati sávszélességet és ke
 #. TRANSLATORS: command line argument, just output without fancy formatting
 #: ../client/pk-console.c:1276
 msgid "Print to screen a machine readable output, rather than using animated widgets"
-msgstr ""
+msgstr "Gép által ovasható kimenetre írás, mint hogy az animált widgetek használata"
 
 #. TRANSLATORS: we failed to contact the daemon
 #: ../client/pk-console.c:1298
@@ -1964,12 +1964,12 @@ msgstr "Hibakeresési információk megjelenítése az összes fájlhoz"
 #. TRANSLATORS: a list of modules to debug
 #: ../src/egg-debug.c:459
 msgid "Debug these specific modules"
-msgstr ""
+msgstr "Ezek a specifikus modulok hibakeresése"
 
 #. TRANSLATORS: a list of functions to debug
 #: ../src/egg-debug.c:462
 msgid "Debug these specific functions"
-msgstr ""
+msgstr "Ezek a specifikus funkciók hibakeresése"
 
 #. TRANSLATORS: save to a log
 #: ../src/egg-debug.c:465
@@ -1986,4 +1986,3 @@ msgstr "Hibakeresési lehetőségek megjelenítése"
 
 #~ msgid "Malicious software can damage your computer or cause other harm."
 #~ msgstr "Rosszindulatú szoftver problémát vagy meghibásodást okozhat."
-
commit bf29de7a373588330a67788d63e46a56fd1624d4
Author: dichi <dichi at fedoraproject.org>
Date:   Fri Feb 12 03:13:33 2010 +0000

    Sending translation for po/id.po

diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..7420bf8
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,1983 @@
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Dichi Al Faridi <dichi at alfaridi.info>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-02-10 20:56+0000\n"
+"PO-Revision-Date: 2010-02-12 09:54+0700\n"
+"Last-Translator: Dichi Al Faridi <dichi at alfaridi.info>\n"
+"Language-Team: American English <>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.0\n"
+
+#. TRANSLATORS: this is an atomic transaction
+#. TRANSLATORS: the role is the point of the transaction, e.g. update-system
+#: ../client/pk-console.c:175 ../client/pk-console.c:597
+msgid "Transaction"
+msgstr "Transaksi"
+
+#. TRANSLATORS: this is the time the transaction was started in system timezone
+#: ../client/pk-console.c:177
+msgid "System time"
+msgstr "Waktu sistem"
+
+#. TRANSLATORS: this is if the transaction succeeded or not
+#: ../client/pk-console.c:179
+msgid "Succeeded"
+msgstr "Berhasil"
+
+#: ../client/pk-console.c:179
+msgid "True"
+msgstr "Benar"
+
+#: ../client/pk-console.c:179
+msgid "False"
+msgstr "Salah"
+
+#. TRANSLATORS: this is the transactions role, e.g. "update-system"
+#. TRANSLATORS: the trasaction role, e.g. update-system
+#: ../client/pk-console.c:181 ../src/pk-polkit-action-lookup.c:332
+msgid "Role"
+msgstr "Peran"
+
+#. TRANSLATORS: this is The duration of the transaction
+#: ../client/pk-console.c:186
+msgid "Duration"
+msgstr "Durasi"
+
+#: ../client/pk-console.c:186
+msgid "(seconds)"
+msgstr "(detik)"
+
+#. 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:190 ../src/pk-polkit-action-lookup.c:346
+msgid "Command line"
+msgstr "Command line"
+
+#. TRANSLATORS: this is the user ID of the user that started the action
+#: ../client/pk-console.c:192
+msgid "User ID"
+msgstr "User ID"
+
+#. TRANSLATORS: this is the username, e.g. hughsie
+#: ../client/pk-console.c:199
+msgid "Username"
+msgstr "Username"
+
+#. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
+#: ../client/pk-console.c:203
+msgid "Real name"
+msgstr "Nama Sebenarnya"
+
+#: ../client/pk-console.c:211
+msgid "Affected packages:"
+msgstr "Paket yang berkaitan:"
+
+#: ../client/pk-console.c:213
+msgid "Affected packages: None"
+msgstr "Terpengaruh paket: Tidak ada"
+
+#. TRANSLATORS: this is the distro, e.g. Fedora 10
+#: ../client/pk-console.c:248
+msgid "Distribution"
+msgstr "Distribusi"
+
+#. TRANSLATORS: this is type of update, stable or testing
+#: ../client/pk-console.c:250
+msgid "Type"
+msgstr "Tipe"
+
+#. TRANSLATORS: this is any summary text describing the upgrade
+#. TRANSLATORS: this is the summary of the group
+#: ../client/pk-console.c:252 ../client/pk-console.c:291
+msgid "Summary"
+msgstr "Ringkasan"
+
+#. TRANSLATORS: this is the group category name
+#: ../client/pk-console.c:280
+msgid "Category"
+msgstr "Kategori"
+
+#. TRANSLATORS: this is group identifier
+#: ../client/pk-console.c:282
+msgid "ID"
+msgstr "ID"
+
+#. TRANSLATORS: this is the parent group
+#: ../client/pk-console.c:285
+msgid "Parent"
+msgstr "Induk"
+
+#. TRANSLATORS: this is the name of the parent group
+#: ../client/pk-console.c:288
+msgid "Name"
+msgstr "Nama"
+
+#. TRANSLATORS: this is preferred icon for the group
+#: ../client/pk-console.c:294
+msgid "Icon"
+msgstr "Ikon"
+
+#. TRANSLATORS: this is a header for the package that can be updated
+#: ../client/pk-console.c:340
+msgid "Details about the update:"
+msgstr "Rincian tentang update:"
+
+#. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is being processed
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
+#. TRANSLATORS: title, the names of the packages that the method is processing
+#: ../client/pk-console.c:346 ../client/pk-console.c:616
+#: ../lib/packagekit-glib2/pk-task-text.c:126
+#: ../lib/packagekit-glib2/pk-task-text.c:208
+#: ../src/pk-polkit-action-lookup.c:357
+msgid "Package"
+msgid_plural "Packages"
+msgstr[0] "Paket"
+
+#. TRANSLATORS: details about the update, any packages that this update updates
+#: ../client/pk-console.c:349
+msgid "Updates"
+msgstr "Update"
+
+#. TRANSLATORS: details about the update, any packages that this update obsoletes
+#: ../client/pk-console.c:353
+msgid "Obsoletes"
+msgstr "Non-aktif"
+
+#. TRANSLATORS: details about the update, the vendor URLs
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:357 ../lib/packagekit-glib2/pk-task-text.c:211
+msgid "Vendor"
+msgstr "Vendor"
+
+#. TRANSLATORS: details about the update, the bugzilla URLs
+#: ../client/pk-console.c:361
+msgid "Bugzilla"
+msgstr "Bugzilla"
+
+#. TRANSLATORS: details about the update, the CVE URLs
+#: ../client/pk-console.c:365
+msgid "CVE"
+msgstr "CVE"
+
+#. TRANSLATORS: details about the update, if the package requires a restart
+#: ../client/pk-console.c:369
+msgid "Restart"
+msgstr "Restart"
+
+#. TRANSLATORS: details about the update, any description of the update
+#: ../client/pk-console.c:373
+msgid "Update text"
+msgstr "Teks update"
+
+#. TRANSLATORS: details about the update, the changelog for the package
+#: ../client/pk-console.c:377
+msgid "Changes"
+msgstr "Perubahan"
+
+#. TRANSLATORS: details about the update, the ongoing state of the update
+#: ../client/pk-console.c:381
+msgid "State"
+msgstr "Menyatakan"
+
+#. TRANSLATORS: details about the update, date the update was issued
+#: ../client/pk-console.c:385
+msgid "Issued"
+msgstr "Diterbitkan"
+
+#. TRANSLATORS: details about the update, date the update was updated
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:389 ../lib/packagekit-glib2/pk-console-shared.c:510
+msgid "Updated"
+msgstr "Diperbarui"
+
+#. TRANSLATORS: if the repo is enabled
+#: ../client/pk-console.c:425
+msgid "Enabled"
+msgstr "Diaktifkan"
+
+#. TRANSLATORS: if the repo is disabled
+#: ../client/pk-console.c:428
+msgid "Disabled"
+msgstr "Dinonaktifkan"
+
+#. TRANSLATORS: a package requires the system to be restarted
+#: ../client/pk-console.c:460
+msgid "System restart required by:"
+msgstr "Restart sistem yang diperlukan oleh:"
+
+#. TRANSLATORS: a package requires the session to be restarted
+#: ../client/pk-console.c:463
+msgid "Session restart required:"
+msgstr "Sesi restart diperlukan:"
+
+#. TRANSLATORS: a package requires the system to be restarted due to a security update
+#: ../client/pk-console.c:466
+msgid "System restart (security) required by:"
+msgstr "Sistem restart (keamanan) yang diperlukan oleh:"
+
+#. TRANSLATORS: a package requires the session to be restarted due to a security update
+#: ../client/pk-console.c:469
+msgid "Session restart (security) required:"
+msgstr "Session restart (keamanan) yang diperlukan:"
+
+#. TRANSLATORS: a package requires the application to be restarted
+#: ../client/pk-console.c:472
+msgid "Application restart required by:"
+msgstr "Restart aplikasi yang diperlukan oleh:"
+
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:507
+msgid "Package description"
+msgstr "Paket deskripsi"
+
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:538
+msgid "Message:"
+msgstr "Pesan:"
+
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:559
+msgid "No files"
+msgstr "Tidak ada file"
+
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:564
+msgid "Package files"
+msgstr "File paket"
+
+#. TRANSLATORS: the percentage complete of the transaction
+#: ../client/pk-console.c:632
+msgid "Percentage"
+msgstr "Persentasi"
+
+#. TRANSLATORS: the status of the transaction (e.g. downloading)
+#: ../client/pk-console.c:650
+msgid "Status"
+msgstr "Status"
+
+#. TRANSLATORS: the results from the transaction
+#: ../client/pk-console.c:679
+msgid "Results:"
+msgstr "Hasil:"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:686
+msgid "Fatal error"
+msgstr "Kesalahan Fatal"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:695
+#: ../contrib/command-not-found/pk-command-not-found.c:432
+#: ../contrib/command-not-found/pk-command-not-found.c:603
+msgid "The transaction failed"
+msgstr "Transaksi gagal"
+
+#. TRANSLATORS: print a message when there are no updates
+#: ../client/pk-console.c:726
+msgid "There are no updates available at this time."
+msgstr "Tidak ada pembaruan tersedia saat ini."
+
+#. TRANSLATORS: a package needs to restart their system
+#: ../client/pk-console.c:814
+msgid "Please restart the computer to complete the update."
+msgstr "Silakan restart komputer untuk menyelesaikan pembaruan."
+
+#. TRANSLATORS: a package needs to restart the session
+#: ../client/pk-console.c:817
+msgid "Please logout and login to complete the update."
+msgstr "Silahkan logout dan login untuk menyelesaikan pembaruan."
+
+#. TRANSLATORS: a package needs to restart their system (due to security)
+#: ../client/pk-console.c:820
+msgid ""
+"Please restart the computer to complete the update as important security "
+"updates have been installed."
+msgstr ""
+"Silakan restart komputer untuk menyelesaikan pembaruan karena pembaruan "
+"penting untuk keamanan telah diinstal."
+
+#. TRANSLATORS: a package needs to restart the session (due to security)
+#: ../client/pk-console.c:823
+msgid ""
+"Please logout and login to complete the update as important security updates "
+"have been installed."
+msgstr ""
+"Silakan logout dan login untuk menyelesaikan pembaruan karena pembaruan "
+"penting untuk keamanan telah diinstal."
+
+#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
+#: ../client/pk-console.c:849
+#, c-format
+msgid ""
+"Extected package name, actually got file. Try using 'pkcon install-local %s' "
+"instead."
+msgstr ""
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:857
+#, c-format
+msgid "This tool could not find any available package: %s"
+msgstr ""
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:885
+#, c-format
+msgid "This tool could not find the installed package: %s"
+msgstr ""
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:913 ../client/pk-console.c:941
+#, c-format
+msgid "This tool could not find the package: %s"
+msgstr ""
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
+#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
+#: ../client/pk-console.c:969 ../client/pk-console.c:997
+#: ../client/pk-console.c:1025 ../client/pk-console.c:1053
+#: ../client/pk-console.c:1081
+#, c-format
+msgid "This tool could not find all the packages: %s"
+msgstr ""
+
+#. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
+#: ../client/pk-console.c:1110
+msgid "The daemon crashed mid-transaction!"
+msgstr ""
+
+#. TRANSLATORS: This is the header to the --help menu
+#: ../client/pk-console.c:1144
+msgid "PackageKit Console Interface"
+msgstr ""
+
+#. these are commands we can use with pkcon
+#: ../client/pk-console.c:1146
+msgid "Subcommands:"
+msgstr ""
+
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:1225
+msgid "Failed to get the time since this action was last completed"
+msgstr ""
+
+#. TRANSLATORS: command line argument, just show the version string
+#: ../client/pk-console.c:1261 ../client/pk-monitor.c:306
+msgid "Show the program version and exit"
+msgstr ""
+
+#. TRANSLATORS: command line argument, use a filter to narrow down results
+#: ../client/pk-console.c:1264
+msgid "Set the filter, e.g. installed"
+msgstr ""
+
+#. TRANSLATORS: command line argument, work asynchronously
+#: ../client/pk-console.c:1267
+msgid "Exit without waiting for actions to complete"
+msgstr ""
+
+#. command line argument, do we ask questions
+#: ../client/pk-console.c:1270
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
+msgid "Install the packages without asking for confirmation"
+msgstr ""
+
+#. TRANSLATORS: command line argument, this command is not a priority
+#: ../client/pk-console.c:1273
+msgid "Run the command using idle network bandwidth and also using less power"
+msgstr ""
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1276
+msgid ""
+"Print to screen a machine readable output, rather than using animated widgets"
+msgstr ""
+
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1298
+msgid "Failed to contact PackageKit"
+msgstr ""
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1356
+msgid "The filter specified was invalid"
+msgstr ""
+
+#. TRANSLATORS: a search type can be name, details, file, etc
+#: ../client/pk-console.c:1375
+msgid "A search type is required, e.g. name"
+msgstr ""
+
+#. TRANSLATORS: the user needs to provide a search term
+#: ../client/pk-console.c:1382 ../client/pk-console.c:1394
+#: ../client/pk-console.c:1406 ../client/pk-console.c:1418
+msgid "A search term is required"
+msgstr ""
+
+#. TRANSLATORS: the search type was provided, but invalid
+#: ../client/pk-console.c:1428
+msgid "Invalid search type"
+msgstr ""
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1434
+msgid "A package name to install is required"
+msgstr ""
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1443
+msgid "A filename to install is required"
+msgstr ""
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1455
+msgid "A type, key_id and package_id are required"
+msgstr ""
+
+#. TRANSLATORS: the user did not specify what they wanted to remove
+#: ../client/pk-console.c:1466
+msgid "A package name to remove is required"
+msgstr ""
+
+#. TRANSLATORS: the user did not specify anything about what to download or where
+#: ../client/pk-console.c:1475
+msgid "A destination directory and the package names to download are required"
+msgstr ""
+
+#. TRANSLATORS: the directory does not exist, so we can't continue
+#: ../client/pk-console.c:1482
+msgid "Directory not found"
+msgstr ""
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1491
+msgid "A licence identifier (eula-id) is required"
+msgstr ""
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1502
+msgid "A transaction identifier (tid) is required"
+msgstr ""
+
+#. TRANSLATORS: The user did not specify a package name
+#: ../client/pk-console.c:1523
+msgid "A package name to resolve is required"
+msgstr ""
+
+#. TRANSLATORS: The user did not specify a repository (software source) name
+#: ../client/pk-console.c:1534 ../client/pk-console.c:1545
+msgid "A repository name is required"
+msgstr ""
+
+#. TRANSLATORS: The user didn't provide any data
+#: ../client/pk-console.c:1556
+msgid "A repo name, parameter and value are required"
+msgstr ""
+
+#. TRANSLATORS: The user didn't specify what action to use
+#: ../client/pk-console.c:1573
+msgid "An action, e.g. 'update-system' is required"
+msgstr ""
+
+#. TRANSLATORS: The user specified an invalid action
+#: ../client/pk-console.c:1580
+msgid "A correct role is required"
+msgstr ""
+
+#. 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:1590 ../client/pk-console.c:1605
+#: ../client/pk-console.c:1614 ../client/pk-console.c:1634
+#: ../client/pk-console.c:1643 ../client/pk-generate-pack.c:316
+msgid "A package name is required"
+msgstr ""
+
+#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
+#: ../client/pk-console.c:1623
+msgid "A package provide string is required"
+msgstr ""
+
+#. TRANSLATORS: The user tried to use an unsupported option on the command line
+#: ../client/pk-console.c:1703
+#, c-format
+msgid "Option '%s' is not supported"
+msgstr ""
+
+#. TRANSLATORS: Generic failure of what they asked to do
+#: ../client/pk-console.c:1713
+msgid "Command failed"
+msgstr ""
+
+#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
+#: ../client/pk-generate-pack.c:255
+msgid "Set the file name of dependencies to be excluded"
+msgstr ""
+
+#. TRANSLATORS: the output location
+#: ../client/pk-generate-pack.c:258
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
+msgstr ""
+
+#. TRANSLATORS: put a list of packages in the pack
+#: ../client/pk-generate-pack.c:261
+msgid "The package to be put into the service pack"
+msgstr ""
+
+#. TRANSLATORS: put all pending updates in the pack
+#: ../client/pk-generate-pack.c:264
+msgid "Put all updates available in the service pack"
+msgstr ""
+
+#. TRANSLATORS: This is when the user fails to supply the correct arguments
+#: ../client/pk-generate-pack.c:300
+msgid "Neither --package or --updates option selected."
+msgstr ""
+
+#. TRANSLATORS: This is when the user fails to supply just one argument
+#: ../client/pk-generate-pack.c:308
+msgid "Both options selected."
+msgstr ""
+
+#. TRANSLATORS: This is when the user fails to supply the output
+#: ../client/pk-generate-pack.c:324
+msgid "A output directory or file name is required"
+msgstr ""
+
+#. TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:342
+msgid "The dameon failed to startup"
+msgstr ""
+
+#. 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:353 ../client/pk-generate-pack.c:359
+msgid "The package manager cannot perform this type of operation."
+msgstr ""
+
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:366
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+
+#. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
+#: ../client/pk-generate-pack.c:377
+msgid "If specifying a file, the service pack name must end with"
+msgstr ""
+
+#. TRANSLATORS: This is when file already exists
+#: ../client/pk-generate-pack.c:393
+msgid "A pack with the same name already exists, do you want to overwrite it?"
+msgstr ""
+
+#. TRANSLATORS: This is when the pack was not overwritten
+#: ../client/pk-generate-pack.c:396
+msgid "The pack was not overwritten."
+msgstr ""
+
+#. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
+#: ../client/pk-generate-pack.c:409
+msgid "Failed to create directory:"
+msgstr ""
+
+#. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
+#: ../client/pk-generate-pack.c:421
+msgid "Failed to open package list."
+msgstr ""
+
+#. TRANSLATORS: The package name is being matched up to available packages
+#: ../client/pk-generate-pack.c:430
+msgid "Finding package name."
+msgstr ""
+
+#. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
+#: ../client/pk-generate-pack.c:434
+#, c-format
+msgid "Failed to find package '%s': %s"
+msgstr ""
+
+#. TRANSLATORS: This is telling the user we are in the process of making the pack
+#: ../client/pk-generate-pack.c:442
+msgid "Creating service pack..."
+msgstr ""
+
+#. TRANSLATORS: we succeeded in making the file
+#: ../client/pk-generate-pack.c:457
+#, c-format
+msgid "Service pack created '%s'"
+msgstr ""
+
+#. TRANSLATORS: we failed to make te file
+#: ../client/pk-generate-pack.c:462
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr ""
+
+#: ../client/pk-monitor.c:236
+msgid "Failed to get daemon state"
+msgstr ""
+
+#. TRANSLATORS: this is a program that monitors PackageKit
+#: ../client/pk-monitor.c:322
+msgid "PackageKit Monitor"
+msgstr ""
+
+#. TRANSLATORS: when we are getting data from the daemon
+#: ../contrib/browser-plugin/pk-plugin-install.c:495
+msgid "Getting package information..."
+msgstr ""
+
+#. TRANSLATORS: run an applicaiton
+#: ../contrib/browser-plugin/pk-plugin-install.c:501
+#, c-format
+msgid "Run %s"
+msgstr ""
+
+#. TRANSLATORS: show the installed version of a package
+#: ../contrib/browser-plugin/pk-plugin-install.c:507
+msgid "Installed version"
+msgstr ""
+
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/pk-plugin-install.c:515
+#, c-format
+msgid "Run version %s now"
+msgstr ""
+
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/pk-plugin-install.c:521
+msgid "Run now"
+msgstr ""
+
+#. TRANSLATORS: update to a new version of the package
+#: ../contrib/browser-plugin/pk-plugin-install.c:527
+#, c-format
+msgid "Update to version %s"
+msgstr ""
+
+#. TRANSLATORS: To install a package
+#: ../contrib/browser-plugin/pk-plugin-install.c:533
+#, c-format
+msgid "Install %s now"
+msgstr ""
+
+#. TRANSLATORS: the version of the package
+#: ../contrib/browser-plugin/pk-plugin-install.c:536
+msgid "Version"
+msgstr ""
+
+#. TRANSLATORS: noting found, so can't install
+#: ../contrib/browser-plugin/pk-plugin-install.c:541
+msgid "No packages found for your system"
+msgstr ""
+
+#. TRANSLATORS: package is being installed
+#: ../contrib/browser-plugin/pk-plugin-install.c:546
+msgid "Installing..."
+msgstr ""
+
+#. TRANSLATORS: downloading repo data so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:365
+msgid "Downloading details about the software sources."
+msgstr ""
+
+#. TRANSLATORS: downloading file lists so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:369
+msgid "Downloading filelists (this may take some time to complete)."
+msgstr ""
+
+#. TRANSLATORS: waiting for native lock
+#: ../contrib/command-not-found/pk-command-not-found.c:373
+msgid "Waiting for package manager lock."
+msgstr ""
+
+#. TRANSLATORS: loading package cache so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:377
+msgid "Loading list of packages."
+msgstr ""
+
+#. TRANSLATORS: we failed to find the package, this shouldn't happen
+#: ../contrib/command-not-found/pk-command-not-found.c:423
+msgid "Failed to search for file"
+msgstr ""
+
+#. TRANSLATORS: we failed to launch the executable, the error follows
+#: ../contrib/command-not-found/pk-command-not-found.c:566
+msgid "Failed to launch:"
+msgstr ""
+
+#. TRANSLATORS: we failed to install the package
+#: ../contrib/command-not-found/pk-command-not-found.c:594
+msgid "Failed to install packages"
+msgstr ""
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/command-not-found/pk-command-not-found.c:670
+msgid "PackageKit Command Not Found"
+msgstr ""
+
+#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
+#: ../contrib/command-not-found/pk-command-not-found.c:699
+msgid "Command not found."
+msgstr ""
+
+#. TRANSLATORS: tell the user what we think the command is
+#: ../contrib/command-not-found/pk-command-not-found.c:706
+msgid "Similar command is:"
+msgstr ""
+
+#. TRANSLATORS: Ask the user if we should run the similar command
+#: ../contrib/command-not-found/pk-command-not-found.c:716
+msgid "Run similar command:"
+msgstr ""
+
+#. 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:730
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "Similar commands are:"
+msgstr ""
+
+#. TRANSLATORS: ask the user to choose a file to run
+#: ../contrib/command-not-found/pk-command-not-found.c:746
+msgid "Please choose a command to run"
+msgstr ""
+
+#. TRANSLATORS: tell the user what package provides the command
+#: ../contrib/command-not-found/pk-command-not-found.c:764
+msgid "The package providing this file is:"
+msgstr ""
+
+#. TRANSLATORS: as the user if we want to install a package to provide the command
+#: ../contrib/command-not-found/pk-command-not-found.c:769
+#, c-format
+msgid "Install package '%s' to provide command '%s'?"
+msgstr ""
+
+#. TRANSLATORS: Show the user a list of packages that provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:793
+msgid "Packages providing this file are:"
+msgstr ""
+
+#. 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:803
+msgid "Suitable packages are:"
+msgstr ""
+
+#. get selection
+#. TRANSLATORS: ask the user to choose a file to install
+#: ../contrib/command-not-found/pk-command-not-found.c:812
+msgid "Please choose a package to install"
+msgstr ""
+
+#. TRANSLATORS: we are starting to install the packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:197
+msgid "Starting install"
+msgstr ""
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:409
+#, c-format
+msgid "Failed to find the package %s, or already installed: %s"
+msgstr ""
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
+msgstr ""
+
+#. command line argument, do we skip packages that depend on the ones specified
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:521
+msgid "Do not install dependencies of the core packages"
+msgstr ""
+
+#. command line argument, do we operate quietly
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+msgid "Do not display information or progress"
+msgstr ""
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:542
+msgid "PackageKit Debuginfo Installer"
+msgstr ""
+
+#. TRANSLATORS: the use needs to specify a list of package names on the command line
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#, c-format
+msgid "ERROR: Specify package names to install."
+msgstr ""
+
+#. TRANSLATORS: we are getting the list of repositories
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:592
+#, c-format
+msgid "Getting sources list"
+msgstr ""
+
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:602
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:677
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:805
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:872
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:916
+msgid "FAILED."
+msgstr ""
+
+#. TRANSLATORS: all completed 100%
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:617
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:692
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:776
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:820
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#, c-format
+msgid "OK."
+msgstr ""
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:620
+#, c-format
+msgid "Found %i enabled and %i disabled sources."
+msgstr ""
+
+#. TRANSLATORS: we're finding repositories that match out pattern
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:627
+#, c-format
+msgid "Finding debugging sources"
+msgstr ""
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:660
+#, c-format
+msgid "Found %i disabled debuginfo repos."
+msgstr ""
+
+#. TRANSLATORS: we're now enabling all the debug sources we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:667
+#, c-format
+msgid "Enabling debugging sources"
+msgstr ""
+
+#. TRANSLATORS: tell the user how many we enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:695
+#, c-format
+msgid "Enabled %i debugging sources."
+msgstr ""
+
+#. TRANSLATORS: we're now finding packages that match in all the repos
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:702
+#, c-format
+msgid "Finding debugging packages"
+msgstr ""
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:714
+#, c-format
+msgid "Failed to find the package %s: %s"
+msgstr ""
+
+#. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#, c-format
+msgid "Failed to find the debuginfo package %s: %s"
+msgstr ""
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:765
+#, c-format
+msgid "Found no packages to install."
+msgstr ""
+
+#. TRANSLATORS: tell the user we found some packages, and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:779
+#, c-format
+msgid "Found %i packages:"
+msgstr ""
+
+#. TRANSLATORS: tell the user we are searching for deps
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:795
+#, c-format
+msgid "Finding packages that depend on these packages"
+msgstr ""
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
+#, c-format
+msgid "Could not find dependant packages: %s"
+msgstr ""
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:824
+#, c-format
+msgid "Found %i extra packages."
+msgstr ""
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
+#, c-format
+msgid "No extra packages required."
+msgstr ""
+
+#. TRANSLATORS: tell the user we found some packages (and deps), and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:837
+#, c-format
+msgid "Found %i packages to install:"
+msgstr ""
+
+#. TRANSLATORS: simulate mode is a testing mode where we quit before the action
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:850
+#, c-format
+msgid "Not installing packages in simulate mode"
+msgstr ""
+
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:862
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#, c-format
+msgid "Installing packages"
+msgstr ""
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:875
+#, c-format
+msgid "Could not install packages: %s"
+msgstr ""
+
+#. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#, c-format
+msgid "Disabling sources previously enabled"
+msgstr ""
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:919
+#, c-format
+msgid "Could not disable the debugging sources: %s"
+msgstr ""
+
+#. TRANSLATORS: we disabled all the debugging repos that we enabled before
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:934
+#, c-format
+msgid "Disabled %i debugging sources."
+msgstr ""
+
+#. TRANSLATORS: couldn't open device to write
+#: ../contrib/device-rebind/pk-device-rebind.c:62
+msgid "Failed to open file"
+msgstr ""
+
+#. TRANSLATORS: could not write to the device
+#: ../contrib/device-rebind/pk-device-rebind.c:71
+msgid "Failed to write to the file"
+msgstr ""
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:111
+#: ../contrib/device-rebind/pk-device-rebind.c:148
+msgid "Failed to write to device"
+msgstr ""
+
+#. TRANSLATORS: the device could not be found in sysfs
+#: ../contrib/device-rebind/pk-device-rebind.c:176
+msgid "Device could not be found"
+msgstr ""
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:203
+msgid "Failed to unregister driver"
+msgstr ""
+
+#. TRANSLATORS: we failed to bind the old driver
+#: ../contrib/device-rebind/pk-device-rebind.c:212
+msgid "Failed to register driver"
+msgstr ""
+
+#. TRANSLATORS: user did not specify a device sysfs path that exists
+#: ../contrib/device-rebind/pk-device-rebind.c:261
+msgid "Device path not found"
+msgstr ""
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:269
+msgid "Incorrect device path specified"
+msgstr ""
+
+#: ../contrib/device-rebind/pk-device-rebind.c:294
+msgid "Show extra debugging information"
+msgstr ""
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/device-rebind/pk-device-rebind.c:297
+msgid "Don't actually touch the hardware, only simulate what would be done"
+msgstr ""
+
+#. TRANSLATORS: command line option: a list of files to install
+#: ../contrib/device-rebind/pk-device-rebind.c:300
+msgid "Device paths"
+msgstr ""
+
+#. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
+#: ../contrib/device-rebind/pk-device-rebind.c:315
+msgid "PackageKit Device Reloader"
+msgstr ""
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:323
+msgid "You need to specify at least one valid device path"
+msgstr ""
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:333
+msgid "This script can only be used by the root user"
+msgstr ""
+
+#. TRANSLATORS: we're going to verify the path first
+#: ../contrib/device-rebind/pk-device-rebind.c:342
+msgid "Verifying device path"
+msgstr ""
+
+#. TRANSLATORS: user did not specify a device sysfs path that exists
+#: ../contrib/device-rebind/pk-device-rebind.c:347
+msgid "Failed to verify device path"
+msgstr ""
+
+#. TRANSLATORS: we're going to try
+#: ../contrib/device-rebind/pk-device-rebind.c:361
+msgid "Attempting to rebind device"
+msgstr ""
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:366
+msgid "Failed to rebind device"
+msgstr ""
+
+#: ../data/packagekit-catalog.xml.in.h:1
+msgid "PackageKit Catalog"
+msgstr ""
+
+#: ../data/packagekit-package-list.xml.in.h:1
+msgid "PackageKit Package List"
+msgstr ""
+
+#: ../data/packagekit-servicepack.xml.in.h:1
+msgid "PackageKit Service Pack"
+msgstr ""
+
+#: ../lib/packagekit-glib2/pk-console-shared.c:59
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr ""
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:183
+msgid "More than one package matches:"
+msgstr ""
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:196
+msgid "Please choose the correct package: "
+msgstr ""
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
+msgid "Unknown state"
+msgstr ""
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
+msgid "Starting"
+msgstr ""
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
+msgid "Waiting in queue"
+msgstr ""
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
+msgid "Running"
+msgstr ""
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+msgid "Querying"
+msgstr ""
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
+msgid "Getting information"
+msgstr ""
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
+msgid "Removing packages"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading package files
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+msgid "Downloading packages"
+msgstr ""
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
+msgid "Refreshing software list"
+msgstr ""
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
+msgid "Installing updates"
+msgstr ""
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
+msgid "Cleaning up packages"
+msgstr ""
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+msgid "Obsoleting packages"
+msgstr ""
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
+msgid "Checking signatures"
+msgstr ""
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Rolling back"
+msgstr ""
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
+msgid "Testing changes"
+msgstr ""
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
+msgid "Committing changes"
+msgstr ""
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
+msgid "Requesting data"
+msgstr ""
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
+msgid "Finished"
+msgstr ""
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
+msgid "Cancelling"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
+msgid "Downloading repository information"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
+msgid "Downloading list of packages"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
+msgid "Downloading file lists"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
+msgid "Downloading lists of changes"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
+msgid "Downloading groups"
+msgstr ""
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
+msgid "Downloading update information"
+msgstr ""
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
+msgid "Repackaging files"
+msgstr ""
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
+msgid "Loading cache"
+msgstr ""
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
+msgid "Scanning applications"
+msgstr ""
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
+msgid "Generating package lists"
+msgstr ""
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
+msgid "Waiting for package manager lock"
+msgstr ""
+
+#. TRANSLATORS: transaction state, waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
+msgid "Waiting for authentication"
+msgstr ""
+
+#. TRANSLATORS: transaction state, we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:382
+msgid "Updating running applications"
+msgstr ""
+
+#. TRANSLATORS: transaction state, we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:386
+msgid "Checking applications in use"
+msgstr ""
+
+#. TRANSLATORS: transaction state, we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:390
+msgid "Checking libraries in use"
+msgstr ""
+
+#. TRANSLATORS: transaction state, we are copying package files before or after the transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:394
+msgid "Copying files"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
+msgid "Trivial"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
+msgid "Normal"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
+msgid "Important"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:424
+msgid "Security"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:428
+msgid "Bug fix "
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:432
+msgid "Enhancement"
+msgstr ""
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:436
+msgid "Blocked"
+msgstr ""
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
+msgid "Installed"
+msgstr ""
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+msgid "Available"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
+msgid "Downloading"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
+msgid "Updating"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Installing"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:476
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Removing"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:480
+msgid "Cleaning up"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:484
+msgid "Obsoleting"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:488
+msgid "Reinstalling"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:518
+msgid "Removed"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:522
+msgid "Cleaned up"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:526
+msgid "Obsoleted"
+msgstr ""
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:530
+msgid "Reinstalled"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Unknown role type"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting dependencies"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Getting update details"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Getting details"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Getting requires"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Getting updates"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
+msgid "Searching by details"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
+msgid "Searching by file"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Searching groups"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Searching by name"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Installing files"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
+msgid "Refreshing cache"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Updating packages"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Updating system"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Canceling"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting repositories"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Enabling repository"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Setting data"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Resolving"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Getting file list"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
+msgid "Getting provides"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Installing signature"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting packages"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Accepting EULA"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Getting upgrades"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Getting categories"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Getting transactions"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:672
+#: ../lib/packagekit-glib2/pk-console-shared.c:676
+msgid "Simulating install"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:680
+msgid "Simulating remove"
+msgstr ""
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:684
+msgid "Simulating update"
+msgstr ""
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:69
+msgid "Do you want to allow installing of unsigned software?"
+msgstr ""
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:74
+msgid "The unsigned software will not be installed."
+msgstr ""
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:123
+msgid "Software source signature required"
+msgstr ""
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:129
+msgid "Software source name"
+msgstr ""
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:132
+msgid "Key URL"
+msgstr ""
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:135
+msgid "Key user"
+msgstr ""
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:138
+msgid "Key ID"
+msgstr ""
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:141
+msgid "Key fingerprint"
+msgstr ""
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:144
+msgid "Key Timestamp"
+msgstr ""
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:157
+msgid "Do you accept this signature?"
+msgstr ""
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:162
+msgid "The signature was not accepted."
+msgstr ""
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:205
+msgid "End user licence agreement required"
+msgstr ""
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:214
+msgid "Agreement"
+msgstr ""
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:223
+msgid "Do you accept this agreement?"
+msgstr ""
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:228
+msgid "The agreement was not accepted."
+msgstr ""
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:267
+msgid "Media change required"
+msgstr ""
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:270
+msgid "Media type"
+msgstr ""
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:273
+msgid "Media label"
+msgstr ""
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:276
+msgid "Text"
+msgstr ""
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:282
+msgid "Please insert the correct media"
+msgstr ""
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:287
+msgid "The correct media was not inserted."
+msgstr ""
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:302
+msgid "The following packages have to be removed:"
+msgstr ""
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:307
+msgid "The following packages have to be installed:"
+msgstr ""
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:312
+msgid "The following packages have to be updated:"
+msgstr ""
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:317
+msgid "The following packages have to be reinstalled:"
+msgstr ""
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:322
+msgid "The following packages have to be downgraded:"
+msgstr ""
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:382
+msgid "Proceed with changes?"
+msgstr ""
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:387
+msgid "The transaction did not proceed."
+msgstr ""
+
+#. 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 ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+msgid "Authentication is required to accept a EULA"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+msgid "Authentication is required to change software source parameters"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+msgid "Authentication is required to install a signed package"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+msgid "Authentication is required to install an untrusted package"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+msgid "Authentication is required to refresh the system sources"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+msgid "Authentication is required to reload the device with a new driver"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+msgid "Authentication is required to remove packages"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+msgid "Authentication is required to rollback a transaction"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
+msgstr ""
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:19
+msgid "Authentication is required to update packages"
+msgstr ""
+
+#. 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:25
+msgid "Cancel foreign task"
+msgstr ""
+
+#. 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:31
+msgid "Change software source parameters"
+msgstr ""
+
+#. 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:38
+msgid "Install signed package"
+msgstr ""
+
+#. 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:45
+msgid "Install untrusted local file"
+msgstr ""
+
+#. 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:50
+msgid "Refresh system sources"
+msgstr ""
+
+#. SECURITY:
+#. - Normal users require admin authentication to rebind a driver
+#. so that it works after we install firmware.
+#. - This should not be set to 'yes' as unprivileged users could then
+#. try to rebind drivers in use, for instance security authentication
+#. devices.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:58
+msgid "Reload a device"
+msgstr ""
+
+#. 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:68
+msgid "Remove package"
+msgstr ""
+
+#. 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:74
+msgid "Rollback to a previous transaction"
+msgstr ""
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to set the proxy
+#. used for downloading packages.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:79
+msgid "Set network proxy"
+msgstr ""
+
+#. 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:86
+msgid "Trust a key used for signing packages"
+msgstr ""
+
+#. 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:94
+msgid "Update packages"
+msgstr ""
+
+#. TRANSLATORS: failed due to DBus security
+#: ../src/pk-main.c:87
+msgid "Startup failed due to security policies on this machine."
+msgstr ""
+
+#. TRANSLATORS: only two ways this can fail...
+#: ../src/pk-main.c:89
+msgid "This can happen for two reasons:"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
+#: ../src/pk-main.c:199
+msgid "Packaging backend to use, e.g. dummy"
+msgstr ""
+
+#. TRANSLATORS: if we should run in the background
+#: ../src/pk-main.c:202
+msgid "Daemonize and detach from the terminal"
+msgstr ""
+
+#. TRANSLATORS: if we should not monitor how long we are inactive for
+#: ../src/pk-main.c:205
+msgid "Disable the idle timer"
+msgstr ""
+
+#. TRANSLATORS: show version
+#: ../src/pk-main.c:208
+msgid "Show version and exit"
+msgstr ""
+
+#. TRANSLATORS: exit after we've started up, used for user profiling
+#: ../src/pk-main.c:211
+msgid "Exit after a small delay"
+msgstr ""
+
+#. TRANSLATORS: exit straight away, used for automatic profiling
+#: ../src/pk-main.c:214
+msgid "Exit after the engine has loaded"
+msgstr ""
+
+#. TRANSLATORS: describing the service that is running
+#: ../src/pk-main.c:229
+msgid "PackageKit service"
+msgstr ""
+
+#. TRANSLATORS: fatal error, dbus is not running
+#: ../src/pk-main.c:266
+msgid "Cannot connect to the system bus"
+msgstr ""
+
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:317
+msgid "Error trying to start:"
+msgstr ""
+
+#: ../src/pk-polkit-action-lookup.c:150
+msgid "To install debugging packages, extra sources need to be enabled"
+msgstr ""
+
+#. TRANSLATORS: is not GPG signed
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
+msgid "The software is not from a trusted source."
+msgstr ""
+
+#: ../src/pk-polkit-action-lookup.c:176
+msgid "Do not update this package unless you are sure it is safe to do so."
+msgstr ""
+
+#: ../src/pk-polkit-action-lookup.c:177
+msgid "Do not update these packages unless you are sure it is safe to do so."
+msgstr ""
+
+#: ../src/pk-polkit-action-lookup.c:195
+msgid "Do not install this package unless you are sure it is safe to do so."
+msgstr ""
+
+#: ../src/pk-polkit-action-lookup.c:196
+msgid "Do not install these packages unless you are sure it is safe to do so."
+msgstr ""
+
+#. TRANSLATORS: too many packages to list each one
+#: ../src/pk-polkit-action-lookup.c:273
+msgid "Many packages"
+msgstr ""
+
+#. TRANSLATORS: if the transaction is forced to install only trusted packages
+#: ../src/pk-polkit-action-lookup.c:339
+msgid "Only trusted"
+msgstr ""
+
+#. TRANSLATORS: turn on all debugging
+#: ../src/egg-debug.c:388
+msgid "Show debugging information for all files"
+msgstr ""
+
+#. TRANSLATORS: a list of modules to debug
+#: ../src/egg-debug.c:459
+msgid "Debug these specific modules"
+msgstr ""
+
+#. TRANSLATORS: a list of functions to debug
+#: ../src/egg-debug.c:462
+msgid "Debug these specific functions"
+msgstr ""
+
+#. TRANSLATORS: save to a log
+#: ../src/egg-debug.c:465
+msgid "Log debugging data to a file"
+msgstr ""
+
+#: ../src/egg-debug.c:469
+msgid "Debugging Options"
+msgstr ""
+
+#: ../src/egg-debug.c:469
+msgid "Show debugging options"
+msgstr ""
+
commit 6188e8b6b39502868abb3ea3b026ab6df70e1240
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Feb 11 12:43:56 2010 +0000

    trivial: ensure we set the role in the transaction after pk_backend_reset() has been called

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 94518c1..6f33b20 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1657,6 +1657,9 @@ pk_transaction_set_running (PkTransaction *transaction)
 	/* might have to reset again if we used the backend */
 	pk_backend_reset (transaction->priv->backend);
 
+	/* set the role again, as resetting will have cleared the value */
+	pk_backend_set_role (priv->backend, priv->role);
+
 	/* connect up the signals */
 	transaction->priv->signal_allow_cancel =
 		g_signal_connect (transaction->priv->backend, "allow-cancel",
commit 469899c293b5194bc8f42188f19b1176a1505298
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Feb 11 12:43:27 2010 +0000

    trivial: add internal function pk_backend_get_role()

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 5a8de06..1163878 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -207,6 +207,16 @@ pk_backend_get_filters (PkBackend *backend)
 }
 
 /**
+ * pk_backend_get_role:
+ **/
+PkRoleEnum
+pk_backend_get_role (PkBackend *backend)
+{
+	g_return_val_if_fail (PK_IS_BACKEND (backend), PK_ROLE_ENUM_UNKNOWN);
+	return backend->priv->role;
+}
+
+/**
  * pk_backend_get_roles:
  **/
 PkBitfield
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 6bb3b29..2a93769 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -53,6 +53,7 @@ gboolean	 pk_backend_is_eula_valid		(PkBackend	*backend,
 							 const gchar	*eula_id);
 gboolean	 pk_backend_set_role			(PkBackend	*backend,
 							 PkRoleEnum	 role);
+PkRoleEnum	 pk_backend_get_role			(PkBackend	*backend);
 gboolean	 pk_backend_set_status			(PkBackend	*backend,
 							 PkStatusEnum	 status);
 gboolean	 pk_backend_set_allow_cancel		(PkBackend	*backend,
commit 6fc6e4db4575b84a803cd2774110e9b3148b7ed6
Author: Fabio Erculiani <lxnay at sabayon.org>
Date:   Wed Feb 10 10:16:47 2010 +0100

    entropy: update TODO

diff --git a/backends/entropy/TODO b/backends/entropy/TODO
index 2fb9107..b753925 100644
--- a/backends/entropy/TODO
+++ b/backends/entropy/TODO
@@ -2,6 +2,7 @@ Entropy PackageKit backend developers' TODO:
 
     - add support for FILTER_NOT_VISIBLE, FILTER_NOT_DEVELOPMENT,
         FILTER_DEVELOPMENT, FILTER_VISIBLE
+    - implement security filter (Client.get_security_updates())
     - add what_provides, repo_set_data
     - bind get_distro_upgrades to branch hop?
     - sys-apps/entropy is a syspkg
commit e2c0db2693b598822f344baf19d0da7c401f1b07
Author: Fabio Erculiani <lxnay at sabayon.org>
Date:   Wed Feb 10 08:56:46 2010 +0100

    portage: implement PackageKitPortageBackend.get_categories()

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 61a5cb2..c98aaa5 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -149,7 +149,7 @@ backend_get_roles (PkBackend *backend)
         PK_ROLE_ENUM_GET_REPO_LIST,
         PK_ROLE_ENUM_REPO_ENABLE,
         //PK_ROLE_ENUM_REPO_SET_DATA,
-        //PK_ROLE_ENUM_GET_CATEGORIES,
+        PK_ROLE_ENUM_GET_CATEGORIES,
         //PK_ROLE_ENUM_SIMULATE_INSTALL_FILES,
         PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES,
         PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES,
@@ -170,6 +170,15 @@ backend_cancel (PkBackend *backend)
 }
 
 /**
+ * pk_backend_get_categories:
+ */
+static void
+backend_get_categories (PkBackend *backend)
+{
+    pk_backend_spawn_helper (spawn, BACKEND_FILE, "get-categories", NULL);
+}
+
+/**
  * backend_get_depends:
  */
 static void
@@ -490,7 +499,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* get_mime_types */
 	backend_cancel,				/* cancel */
 	NULL,					/* download_packages */
-	NULL,					/* get_categories */
+	backend_get_categories,			/* get_categories */
 	backend_get_depends,			/* get_depends */
 	backend_get_details,			/* get_details */
 	NULL,					/* get_distro_upgrades */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index c1a9a26..eb00ae0 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -245,6 +245,23 @@ class PackageKitPortageMixin(object):
         """
         return self.pvar.settings.categories
 
+    def _get_portage_category_description(self, category):
+
+        from xml.dom import minidom
+        data = {}
+        portdir = self.pvar.settings['PORTDIR']
+        myfile = os.path.join(portdir, category, "metadata.xml")
+        if os.access(myfile, os.R_OK) and os.path.isfile(myfile):
+            doc = minidom.parse(myfile)
+            longdescs = doc.getElementsByTagName("longdescription")
+            for longdesc in longdescs:
+                data[longdesc.getAttribute("lang").strip()] = \
+                    ' '.join([x.strip() for x in \
+                        longdesc.firstChild.data.strip().split("\n")])
+
+        # Only return in plain English since Portage doesn't support i18n/l10n
+        return data.get('en', "No description")
+
     def _get_portage_groups(self):
         """
         Return an expanded version of PortagePackageGroups
@@ -800,6 +817,29 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
                 info = INFO_AVAILABLE
         self.package(self._cpv_to_id(cpv), info, desc)
 
+    def get_categories(self):
+
+        self.status(STATUS_QUERY)
+        self.allow_cancel(True)
+
+        categories = self._get_portage_categories()
+        if not categories:
+            self.error(ERROR_GROUP_LIST_INVALID, "no package categories")
+            return
+
+        for name in categories:
+
+            summary = self._get_portage_category_description(name)
+
+            f_name = "/usr/share/pixmaps/portage/%s.png" % (name,)
+            if os.path.isfile(f_name) and os.access(f_name, os.R_OK):
+                icon = name
+            else:
+                icon = "image-missing"
+
+            cat_id = name # same thing
+            self.category("", cat_id, name, summary, icon)
+
     def get_depends(self, filters, pkgs, recursive):
         # TODO: use only myparams ?
         # TODO: improve error management / info
commit 077254f83dc3e0656cb6761255194e32b17b2391
Author: Fabio Erculiani <lxnay at sabayon.org>
Date:   Wed Feb 10 08:53:29 2010 +0100

    entropy: fix error message typo

diff --git a/backends/entropy/entropyBackend.py b/backends/entropy/entropyBackend.py
index c5b8866..1179c5a 100755
--- a/backends/entropy/entropyBackend.py
+++ b/backends/entropy/entropyBackend.py
@@ -915,7 +915,7 @@ class PackageKitEntropyBackend(PackageKitBaseBackend, PackageKitEntropyMixin):
 
         categories = self._entropy.get_package_categories()
         if not categories:
-            self.error(ERROR_GROUP_LIST_INVALID, "no package categires")
+            self.error(ERROR_GROUP_LIST_INVALID, "no package categories")
             return
 
         for name in categories:
commit e734c23088671f3f3fc25b00c09a6207e650d90a
Author: Fabio Erculiani <lxnay at sabayon.org>
Date:   Wed Feb 10 08:42:33 2010 +0100

    portage: factor out portage code from PackageKit overridden methods, several bug fixes

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 2ae8c64..c1a9a26 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -26,8 +26,9 @@ from packagekit.progress import *
 from packagekit.package import PackagekitPackage
 
 # portage imports
-# TODO: why some python app are adding try / catch around this ?
 import portage
+import portage.versions
+import portage.dep
 import _emerge.actions
 import _emerge.stdout_spinner
 import _emerge.create_depgraph_params
@@ -58,195 +59,99 @@ from itertools import izip
 # protection against signal when installing/removing
 
 # Map Gentoo categories to the PackageKit group name space
-CATEGORY_GROUP_MAP = {
-        "app-accessibility" : GROUP_ACCESSIBILITY,
-        "app-admin" : GROUP_ADMIN_TOOLS,
-        "app-antivirus" : GROUP_SYSTEM,
-        "app-arch" : GROUP_OTHER, # TODO
-        "app-backup" : GROUP_OTHER,
-        "app-benchmarks" : GROUP_OTHER,
-        "app-cdr" : GROUP_OTHER,
-        "app-crypt" : GROUP_OTHER,
-        "app-dicts" : GROUP_OTHER,
-        "app-doc" : GROUP_OTHER,
-        "app-editors" : GROUP_OTHER,
-        "app-emacs" : GROUP_OTHER,
-        "app-emulation" : GROUP_OTHER,
-        "app-forensics" : GROUP_OTHER,
-        "app-i18n" : GROUP_OTHER,
-        "app-laptop" : GROUP_OTHER,
-        "app-misc" : GROUP_OTHER,
-        "app-mobilephone" : GROUP_OTHER,
-        "app-office" : GROUP_OFFICE, # DONE
-        "app-pda" : GROUP_OTHER, # TODO
-        "app-portage" : GROUP_OTHER,
-        "app-shells" : GROUP_OTHER,
-        "app-text" : GROUP_OTHER,
-        "app-vim" : GROUP_OTHER,
-        "app-xemacs" : GROUP_OTHER,
-        "dev-ada" : GROUP_PROGRAMMING, # DONE
-        "dev-cpp" : GROUP_PROGRAMMING,
-        "dev-db" : GROUP_PROGRAMMING,
-        "dev-dotnet" : GROUP_PROGRAMMING,
-        "dev-embedded" : GROUP_PROGRAMMING,
-        "dev-games" : GROUP_PROGRAMMING,
-        "dev-haskell" : GROUP_PROGRAMMING,
-        "dev-java" : GROUP_PROGRAMMING,
-        "dev-lang" : GROUP_PROGRAMMING,
-        "dev-libs" : GROUP_PROGRAMMING,
-        "dev-lisp" : GROUP_PROGRAMMING,
-        "dev-ml" : GROUP_PROGRAMMING,
-        "dev-perl" : GROUP_PROGRAMMING,
-        "dev-php" : GROUP_PROGRAMMING,
-        "dev-php5" : GROUP_PROGRAMMING,
-        "dev-python" : GROUP_PROGRAMMING,
-        "dev-ruby" : GROUP_PROGRAMMING,
-        "dev-scheme" : GROUP_PROGRAMMING,
-        "dev-tcltk" : GROUP_PROGRAMMING,
-        "dev-tex" : GROUP_PROGRAMMING,
-        "dev-texlive" : GROUP_PROGRAMMING,
-        "dev-tinyos" : GROUP_PROGRAMMING,
-        "dev-util" : GROUP_PROGRAMMING,
-        "games-action" : GROUP_GAMES,
-        "games-arcade" : GROUP_GAMES,
-        "games-board" : GROUP_GAMES,
-        "games-emulation" : GROUP_GAMES,
-        "games-engines" : GROUP_GAMES,
-        "games-fps" : GROUP_GAMES,
-        "games-kids" : GROUP_GAMES,
-        "games-misc" : GROUP_GAMES,
-        "games-mud" : GROUP_GAMES,
-        "games-puzzle" : GROUP_GAMES,
-        "games-roguelike" : GROUP_GAMES,
-        "games-rpg" : GROUP_GAMES,
-        "games-server" : GROUP_GAMES,
-        "games-simulation" : GROUP_GAMES,
-        "games-sports" : GROUP_GAMES,
-        "games-strategy" : GROUP_GAMES,
-        "games-util" : GROUP_GAMES,
-        "gnome-base" : GROUP_DESKTOP_GNOME,
-        "gnome-extra" : GROUP_DESKTOP_GNOME,
-        "gnustep-apps" : GROUP_OTHER,   # TODO: from there
-        "gnustep-base" : GROUP_OTHER,
-        "gnustep-libs" : GROUP_OTHER,
-        "gpe-base" : GROUP_OTHER,
-        "gpe-utils" : GROUP_OTHER,
-        "java-virtuals" : GROUP_OTHER,
-        "kde-base" : GROUP_DESKTOP_KDE, # DONE from there
-        "kde-misc" : GROUP_DESKTOP_KDE,
-        "lxde-base" : GROUP_DESKTOP_OTHER,
-        "mail-client" : GROUP_NETWORK,
-        "mail-filter" : GROUP_NETWORK,
-        "mail-mta" : GROUP_NETWORK,
-        "media-fonts" : GROUP_FONTS,
-        "media-gfx" : GROUP_GRAPHICS,
-        "media-libs" : GROUP_OTHER, # TODO
-        "media-plugins" : GROUP_OTHER,
-        "media-radio" : GROUP_OTHER,
-        "media-sound" : GROUP_OTHER,
-        "media-tv" : GROUP_OTHER,
-        "media-video" : GROUP_OTHER,
-        "net-analyzer" : GROUP_OTHER,
-        "net-dialup" : GROUP_OTHER,
-        "net-dns" : GROUP_OTHER,
-        "net-firewall" : GROUP_OTHER,
-        "net-fs" : GROUP_OTHER,
-        "net-ftp" : GROUP_OTHER,
-        "net-im" : GROUP_OTHER,
-        "net-irc" : GROUP_OTHER,
-        "net-libs" : GROUP_OTHER,
-        "net-mail" : GROUP_OTHER,
-        "net-misc" : GROUP_OTHER,
-        "net-nds" : GROUP_OTHER,
-        "net-news" : GROUP_OTHER,
-        "net-nntp" : GROUP_OTHER,
-        "net-p2p" : GROUP_OTHER,
-        "net-print" : GROUP_OTHER,
-        "net-proxy" : GROUP_OTHER,
-        "net-voip" : GROUP_OTHER,
-        "net-wireless" : GROUP_OTHER,
-        "net-zope" : GROUP_OTHER,
-        "perl-core" : GROUP_OTHER,
-        "rox-base" : GROUP_DESKTOP_OTHER, #DONE from there
-        "rox-extra" : GROUP_DESKTOP_OTHER,
-        "sci-astronomy" : GROUP_SCIENCE,
-        "sci-biology" : GROUP_SCIENCE,
-        "sci-calculators" : GROUP_SCIENCE,
-        "sci-chemistry" : GROUP_SCIENCE,
-        "sci-electronics" : GROUP_ELECTRONICS,
-        "sci-geosciences" : GROUP_SCIENCE,
-        "sci-libs" : GROUP_SCIENCE,
-        "sci-mathematics" : GROUP_SCIENCE,
-        "sci-misc" : GROUP_SCIENCE,
-        "sci-physics" : GROUP_SCIENCE,
-        "sci-visualization" : GROUP_SCIENCE,
-        "sec-policy" : GROUP_SECURITY,
-        "sys-apps" : GROUP_SYSTEM,
-        "sys-auth" : GROUP_SYSTEM,
-        "sys-block" : GROUP_SYSTEM,
-        "sys-boot" : GROUP_SYSTEM,
-        "sys-cluster" : GROUP_SYSTEM,
-        "sys-devel" : GROUP_SYSTEM,
-        "sys-freebsd" : GROUP_SYSTEM,
-        "sys-fs" : GROUP_SYSTEM,
-        "sys-kernel" : GROUP_SYSTEM,
-        "sys-libs" : GROUP_SYSTEM,
-        "sys-power" : GROUP_POWER_MANAGEMENT,
-        "sys-process" : GROUP_SYSTEM,
-        "virtual" : GROUP_OTHER, # TODO: what to do ?
-        "www-apache" : GROUP_NETWORK,
-        "www-apps" : GROUP_NETWORK,
-        "www-client" : GROUP_NETWORK,
-        "www-misc" : GROUP_NETWORK,
-        "www-plugins" : GROUP_NETWORK,
-        "www-servers" : GROUP_NETWORK,
-        "x11-apps" : GROUP_OTHER, # TODO
-        "x11-base" : GROUP_OTHER,
-        "x11-drivers" : GROUP_OTHER,
-        "x11-libs" : GROUP_OTHER,
-        "x11-misc" : GROUP_OTHER,
-        "x11-plugins" : GROUP_OTHER,
-        "x11-proto" : GROUP_OTHER,
-        "x11-terms" : GROUP_OTHER,
-        "x11-themes" : GROUP_OTHER,
-        "x11-wm" : GROUP_OTHER,
-        "xfce-base" : GROUP_DESKTOP_XFCE, # DONE from there
-        "xfce-extra" : GROUP_DESKTOP_XFCE
-}
-
-
-def sigquit(signum, frame):
-    sys.exit(1)
-
-def get_group(cp):
-    ''' Return the group of the package
-    Argument could be cp or cpv. '''
-    category = portage.catsplit(cp)[0]
-    if category in CATEGORY_GROUP_MAP:
-        return CATEGORY_GROUP_MAP[category]
-
-    # TODO: add message ?
-    return GROUP_UNKNOWN
-
-def get_search_list(keys):
-    '''
-    Get a string composed of keys (separated with spaces).
-    Returns a list of compiled regular expressions.
-    '''
-    keys_list = keys.split(' ')
-    search_list = []
-
-    for k in keys_list:
-        # not done entirely by pk-transaction
-        k = re.escape(k)
-        search_list.append(re.compile(k, re.IGNORECASE))
-
-    return search_list
+class PortagePackageGroups(dict):
+    """
+    Portage Package categories group representation
+    """
+    def __init__(self):
+        dict.__init__(self)
+
+        data = {
+            'accessibility': {
+                'name': "Accessibility",
+                'description': "Accessibility applications",
+                'categories': ['app-accessibility'],
+            },
+            'office': {
+                'name': "Office",
+                'description': "Applications used in office environments",
+                'categories': ['app-office', 'app-pda', 'app-mobilephone',
+                    'app-cdr', 'app-antivirus', 'app-laptop', 'mail-',
+                ],
+            },
+            'development': {
+                'name': "Development",
+                'description': "Applications or system libraries",
+                'categories': ['dev-', 'sys-devel'],
+            },
+            'system': {
+                'name': "System",
+                'description': "System applications or libraries",
+                'categories': ['sys-'],
+            },
+            'games': {
+                'name': "Games",
+                'description': "Games, enjoy your spare time",
+                'categories': ['games-'],
+            },
+            'gnome': {
+                'name': "GNOME Desktop",
+                'description': \
+                    "Applications and libraries for the GNOME Desktop",
+                'categories': ['gnome-'],
+            },
+            'kde': {
+                'name': "KDE Desktop",
+                'description': \
+                    "Applications and libraries for the KDE Desktop",
+                'categories': ['kde-'],
+            },
+            'xfce': {
+                'name': "XFCE Desktop",
+                'description': \
+                    "Applications and libraries for the XFCE Desktop",
+                'categories': ['xfce-'],
+            },
+            'lxde': {
+                'name': "LXDE Desktop",
+                'description': \
+                    "Applications and libraries for the LXDE Desktop",
+                'categories': ['lxde-'],
+            },
+            'multimedia': {
+                'name': "Multimedia",
+                'description': \
+                    "Applications and libraries for Multimedia",
+                'categories': ['media-'],
+            },
+            'networking': {
+                'name': "Networking",
+                'description': \
+                    "Applications and libraries for Networking",
+                'categories': ['net-', 'www-'],
+            },
+            'science': {
+                'name': "Science",
+                'description': \
+                    "Scientific applications and libraries",
+                'categories': ['sci-'],
+            },
+            'security': {
+                'name': "Security",
+                'description': \
+                    "Security orientend applications",
+                'categories': ['app-antivirus', 'net-analyzer', 'net-firewall'],
+            },
+            'x11': {
+                'name': "X11",
+                'description': \
+                    "Applications and libraries for X11",
+                'categories': ['x11-'],
+            },
+        }
+
+        self.update(data)
 
-def is_repository_enabled(layman_db, repo_name):
-    if repo_name in layman_db.overlays.keys():
-        return True
-    return False
 
 class PortageBridge():
     '''
@@ -290,49 +195,111 @@ class PortageBridge():
         self.settings.lock()
 
 
-class PackageKitPortageBackend(PackageKitBaseBackend):
+class PackageKitPortageMixin(object):
 
-    def __init__(self, args):
-        signal.signal(signal.SIGQUIT, sigquit)
-        PackageKitBaseBackend.__init__(self, args)
+    def __init__(self):
+        object.__init__(self)
 
         self.pvar = PortageBridge()
-
+        # TODO: should be removed when using non-verbose function API
+        # FIXME: avoid using /dev/null, dangerous (ro fs)
+        self._dev_null = open('/dev/null', 'w')
         # TODO: atm, this stack keep tracks of elog messages
         self._elog_messages = []
         self._error_message = ""
         self._error_phase = ""
 
-        # TODO: should be removed when using non-verbose function API
-        self.orig_out = None
-        self.orig_err = None
+    # TODO: should be removed when using non-verbose function API
+    def _block_output(self):
+        sys.stdout = self._dev_null
+        sys.stderr = self._dev_null
 
-    def get_ebuild_settings(self, cpv, metadata):
-        settings = portage.config(clone=self.pvar.settings)
-        settings.setcpv(cpv, mydb=metadata)
+    # TODO: should be removed when using non-verbose function API
+    def _unblock_output(self):
+        sys.stdout = sys.__stdout__
+        sys.stderr = sys.__stderr__
 
-        return settings
+    def _is_repo_enabled(self, layman_db, repo_name):
+        if repo_name in layman_db.overlays.keys():
+            return True
+        return False
 
-    # TODO: should be removed when using non-verbose function API
-    def block_output(self):
-        null_out = open('/dev/null', 'w')
-        self.orig_out = sys.stdout
-        self.orig_err = sys.stderr
-        sys.stdout = null_out
-        sys.stderr = null_out
+    def _get_search_list(self, keys):
+        '''
+        Get a string composed of keys (separated with spaces).
+        Returns a list of compiled regular expressions.
+        '''
+        keys_list = keys.split()
+        search_list = []
 
-    # TODO: should be removed when using non-verbose function API
-    def unblock_output(self):
-        sys.stdout = self.orig_out
-        sys.stderr = self.orig_err
+        for k in keys_list:
+            # not done entirely by pk-transaction
+            k = re.escape(k)
+            search_list.append(re.compile(k, re.IGNORECASE))
 
-    def is_installed(self, cpv):
+        return search_list
+
+    def _get_portage_categories(self):
+        """
+        Return a list of available Portage categories
+        """
+        return self.pvar.settings.categories
+
+    def _get_portage_groups(self):
+        """
+        Return an expanded version of PortagePackageGroups
+        """
+        groups = PortagePackageGroups()
+        categories = self._get_portage_categories()
+
+        # expand categories
+        for data in list(groups.values()):
+
+            exp_cats = set()
+            for g_cat in data['categories']:
+                exp_cats.update([x for x in categories if x.startswith(g_cat)])
+            data['categories'] = sorted(exp_cats)
+
+        return groups
+
+    def _get_pk_group(self, cp):
+        """
+        Return PackageKit group belonging to given Portage package.
+        """
+        category = portage.versions.catsplit(cp)[0]
+        group_data = [key for key, data in self._get_portage_groups().items() \
+            if category in data['categories']]
+        try:
+            generic_group_name = group_data.pop(0)
+        except IndexError:
+            return GROUP_UNKNOWN
+
+        return PackageKitPortageBackend.GROUP_MAP[generic_group_name]
+
+    def _get_portage_group(self, pk_group):
+        """
+        Given a PackageKit group identifier, return Portage packages group.
+        """
+        group_map = PackageKitPortageBackend.GROUP_MAP
+        # reverse dict
+        group_map_reverse = dict((y, x) for x, y in group_map.items())
+        return group_map_reverse.get(pk_group, 'unknown')
+
+    def _get_ebuild_settings(self, cpv, metadata):
+        """
+        Return values of given metadata keys for given Portage CPV.
+        """
+        settings = portage.config(clone=self.pvar.settings)
+        settings.setcpv(cpv, mydb=metadata)
+        return settings
+
+    def _is_installed(self, cpv):
         if self.pvar.vardb.cpv_exists(cpv):
             return True
         return False
 
-    def is_cpv_valid(self, cpv):
-        if self.is_installed(cpv):
+    def _is_cpv_valid(self, cpv):
+        if self._is_installed(cpv):
             # actually if is_installed return True that means cpv is in db
             return True
         elif self.pvar.portdb.cpv_exists(cpv):
@@ -340,9 +307,9 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return False
 
-    def get_real_license_str(self, cpv, metadata):
+    def _get_real_license_str(self, cpv, metadata):
         # use conditionals info (w/ USE) in LICENSE and remove ||
-        ebuild_settings = self.get_ebuild_settings(cpv, metadata)
+        ebuild_settings = self._get_ebuild_settings(cpv, metadata)
         license = set(portage.flatten(portage.dep.use_reduce(
             portage.dep.paren_reduce(metadata["LICENSE"]),
             uselist=ebuild_settings.get("USE", "").split())))
@@ -351,7 +318,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return license
 
-    def send_configuration_file_message(self):
+    def _signal_config_update(self):
         result = list(portage.util.find_updated_config_files(
             self.pvar.settings['ROOT'],
             self.pvar.settings.get('CONFIG_PROTECT', '').split()))
@@ -362,7 +329,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             message += ";If you can't do that, ask your system administrator."
             self.message(MESSAGE_CONFIG_FILES_CHANGED, message)
 
-    def get_restricted_fetch_files(self, cpv, metadata):
+    def _get_restricted_fetch_files(self, cpv, metadata):
         '''
         This function checks files in SRC_URI and look if they are in DESTDIR.
         Missing files are returned. If there is no issue, None is returned.
@@ -375,7 +342,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
           so this function is a simplist fetch_check
         '''
         missing_files = []
-        ebuild_settings = self.get_ebuild_settings(cpv, metadata)
+        ebuild_settings = self._get_ebuild_settings(cpv, metadata)
 
         files = self.pvar.portdb.getFetchMap(cpv,
                 ebuild_settings['USE'].split())
@@ -390,10 +357,10 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return None
 
-    def check_fetch_restrict(self, packages_list):
+    def _check_fetch_restrict(self, packages_list):
         for p in packages_list:
             if 'fetch' in p.metadata['RESTRICT']:
-                files = self.get_restricted_fetch_files(p.cpv, p.metadata)
+                files = self._get_restricted_fetch_files(p.cpv, p.metadata)
                 if files:
                     message = "Package %s can't download some files." % p.cpv
                     message += ";Please, download manually the followonig file(s):"
@@ -401,7 +368,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                         message += ";- %s then copy it to %s" % (' '.join(x[1]), x[0])
                     self.error(ERROR_RESTRICTED_DOWNLOAD, message)
 
-    def elog_listener(self, settings, key, logentries, fulltext):
+    def _elog_listener(self, settings, key, logentries, fulltext):
         '''
         This is a listener for elog.
         It's called each time elog is emitting log messages (at end of process).
@@ -440,7 +407,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         self._elog_messages.append(message)
         self._error_message = message
 
-    def send_merge_error(self, default):
+    def _send_merge_error(self, default):
         # EAPI-2 compliant (at least)
         # 'other' phase is ignored except this one, every phase should be there
         if self._error_phase in ("setup", "unpack", "prepare", "configure",
@@ -458,8 +425,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         self.error(error_type, self._error_message)
 
-    def get_file_list(self, cpv):
-        cat, pv = portage.catsplit(cpv)
+    def _get_file_list(self, cpv):
+        cat, pv = portage.versions.catsplit(cpv)
         db = portage.dblink(cat, pv, self.pvar.settings['ROOT'],
                 self.pvar.settings, treetype="vartree",
                 vartree=self.pvar.vardb)
@@ -470,20 +437,21 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return db.getcontents().keys()
 
-    def cmp_cpv(self, cpv1, cpv2):
+    def _cmp_cpv(self, cpv1, cpv2):
         '''
         returns 1 if cpv1 > cpv2
         returns 0 if cpv1 = cpv2
         returns -1 if cpv1 < cpv2
         '''
-        return portage.pkgcmp(portage.pkgsplit(cpv1), portage.pkgsplit(cpv2))
+        return portage.versions.pkgcmp(portage.versions.pkgsplit(cpv1),
+            portage.versions.pkgsplit(cpv2))
 
-    def get_newest_cpv(self, cpv_list, installed):
+    def _get_newest_cpv(self, cpv_list, installed):
         newer = ""
 
         # get the first cpv following the installed rule
         for cpv in cpv_list:
-            if self.is_installed(cpv) == installed:
+            if self._is_installed(cpv) == installed:
                 newer = cpv
                 break
 
@@ -491,19 +459,19 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return ""
 
         for cpv in cpv_list:
-            if self.is_installed(cpv) == installed:
-                if self.cmp_cpv(cpv, newer) == 1:
+            if self._is_installed(cpv) == installed:
+                if self._cmp_cpv(cpv, newer) == 1:
                     newer = cpv
 
         return newer
 
-    def get_metadata(self, cpv, keys, in_dict = False, add_cache_keys = False):
+    def _get_metadata(self, cpv, keys, in_dict = False, add_cache_keys = False):
         '''
         This function returns required metadata.
         If in_dict is True, metadata is returned in a dict object.
         If add_cache_keys is True, cached keys are added to keys in parameter.
         '''
-        if self.is_installed(cpv):
+        if self._is_installed(cpv):
             aux_get = self.pvar.vardb.aux_get
             if add_cache_keys:
                 keys.extend(list(self.pvar.vardb._aux_cache_keys))
@@ -517,7 +485,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         else:
             return aux_get(cpv, keys)
 
-    def get_size(self, cpv):
+    def _get_size(self, cpv):
         '''
         Returns the installed size if the package is installed.
         Otherwise, the size of files needed to be downloaded.
@@ -525,15 +493,15 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         only the remaining size will be considered.
         '''
         size = 0
-        if self.is_installed(cpv):
-            size = self.get_metadata(cpv, ["SIZE"])[0]
+        if self._is_installed(cpv):
+            size = self._get_metadata(cpv, ["SIZE"])[0]
             if size == '':
                 size = 0
             else:
                 size = int(size)
         else:
             self
-            metadata = self.get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
+            metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
 
             package = _emerge.Package.Package(
                     type_name="ebuild",
@@ -550,11 +518,11 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return size
 
-    def get_cpv_slotted(self, cpv_list):
+    def _get_cpv_slotted(self, cpv_list):
         cpv_dict = {}
 
         for cpv in cpv_list:
-            slot = self.get_metadata(cpv, ["SLOT"])[0]
+            slot = self._get_metadata(cpv, ["SLOT"])[0]
             if slot not in cpv_dict:
                 cpv_dict[slot] = [cpv]
             else:
@@ -562,12 +530,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return cpv_dict
 
-    def filter_free(self, cpv_list, fltlist):
-        if len(cpv_list) == 0:
+    def _filter_free(self, cpv_list, fltlist):
+        if not cpv_list:
             return cpv_list
 
         def _has_validLicense(cpv):
-            metadata = self.get_metadata(cpv, ["LICENSE", "USE", "SLOT"], True)
+            metadata = self._get_metadata(cpv, ["LICENSE", "USE", "SLOT"], True)
             return not self.pvar.settings._getMissingLicenses(cpv, metadata)
 
         if FILTER_FREE in fltlist or FILTER_NOT_FREE in fltlist:
@@ -592,7 +560,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return cpv_list
 
-    def filter_newest(self, cpv_list, fltlist):
+    def _filter_newest(self, cpv_list, fltlist):
         if len(cpv_list) == 0:
             return cpv_list
 
@@ -603,7 +571,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             # we have one package per slot, so it's the newest
             return cpv_list
 
-        cpv_dict = self.get_cpv_slotted(cpv_list)
+        cpv_dict = self._get_cpv_slotted(cpv_list)
 
         # slots are sorted (dict), revert them to have newest slots first
         slots = cpv_dict.keys()
@@ -615,16 +583,16 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         for k in slots:
             # if not_intalled on, no need to check for newest installed
             if FILTER_NOT_INSTALLED not in fltlist:
-                newest_installed = self.get_newest_cpv(cpv_dict[k], True)
+                newest_installed = self._get_newest_cpv(cpv_dict[k], True)
                 if newest_installed != "":
                     cpv_list.append(newest_installed)
-            newest_available = self.get_newest_cpv(cpv_dict[k], False)
+            newest_available = self._get_newest_cpv(cpv_dict[k], False)
             if newest_available != "":
                 cpv_list.append(newest_available)
 
         return cpv_list
 
-    def get_all_cp(self, fltlist):
+    def _get_all_cp(self, fltlist):
         # NOTES:
         # returns a list of cp
         #
@@ -647,7 +615,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return cp_list
 
-    def get_all_cpv(self, cp, fltlist, filter_newest=True):
+    def _get_all_cpv(self, cp, fltlist, filter_newest=True):
         # NOTES:
         # returns a list of cpv
         #
@@ -663,7 +631,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             cpv_list = self.pvar.vardb.match(cp)
         elif FILTER_NOT_INSTALLED in fltlist:
             for cpv in self.pvar.portdb.match(cp):
-                if not self.is_installed(cpv):
+                if not self._is_installed(cpv):
                     cpv_list.append(cpv)
         else:
             cpv_list = self.pvar.vardb.match(cp)
@@ -672,15 +640,15 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                     cpv_list.append(cpv)
 
         # free filter
-        cpv_list = self.filter_free(cpv_list, fltlist)
+        cpv_list = self._filter_free(cpv_list, fltlist)
 
         # newest filter
         if filter_newest:
-            cpv_list = self.filter_newest(cpv_list, fltlist)
+            cpv_list = self._filter_newest(cpv_list, fltlist)
 
         return cpv_list
 
-    def id_to_cpv(self, pkgid):
+    def _id_to_cpv(self, pkgid):
         '''
         Transform the package id (packagekit) to a cpv (portage)
         '''
@@ -698,12 +666,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         return ret[0] + "-" + version
 
-    def cpv_to_id(self, cpv):
+    def _cpv_to_id(self, cpv):
         '''
         Transform the cpv (portage) to a package id (packagekit)
         '''
-        package, version, rev = portage.pkgsplit(cpv)
-        pkg_keywords, repo, slot = self.get_metadata(cpv,
+        package, version, rev = portage.versions.pkgsplit(cpv)
+        pkg_keywords, repo, slot = self._get_metadata(cpv,
                 ["KEYWORDS", "repository", "SLOT"])
 
         pkg_keywords = pkg_keywords.split()
@@ -717,7 +685,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         # if no keywords, check in package.keywords
         if not keywords:
             key_dict = self.pvar.settings.pkeywordsdict.get(
-                    portage.dep_getkey(cpv))
+                    portage.dep.dep_getkey(cpv))
             if key_dict:
                 for _, keys in key_dict.iteritems():
                     for x in keys:
@@ -725,7 +693,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         if not keywords:
             keywords.append("no keywords")
-            self.message(MESSAGE_UNKNOWN, "No keywords have been found for %s" % cpv)
+            self.message(MESSAGE_UNKNOWN,
+                "No keywords have been found for %s" % cpv)
 
         # don't want to see -r0
         if rev != "r0":
@@ -735,12 +704,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             version = version + ':' + slot
 
         # if installed, repo should be 'installed', packagekit rule
-        if self.is_installed(cpv):
+        if self._is_installed(cpv):
             repo = "installed"
 
         return get_package_id(package, version, ' '.join(keywords), repo)
 
-    def get_packages_required(self, cpv_input, recursive):
+    def _get_required_packages(self, cpv_input, recursive):
         '''
         Get a list of cpv and recursive parameter.
         Returns the list of packages required for cpv list.
@@ -758,8 +727,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         # 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]):
+        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),
@@ -792,14 +761,44 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         def filter_cpv_input(x): return x.cpv not in cpv_input
         return filter(filter_cpv_input, packages_list)
 
-    def package(self, cpv, info=None):
-        desc = self.get_metadata(cpv, ["DESCRIPTION"])[0]
+
+class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+
+    # Portage <-> PackageKit groups map
+    GROUP_MAP = {
+        'accessibility': GROUP_ACCESSIBILITY,
+        'development': GROUP_PROGRAMMING,
+        'games': GROUP_GAMES,
+        'gnome': GROUP_DESKTOP_GNOME,
+        'kde': GROUP_DESKTOP_KDE,
+        'lxde': GROUP_DESKTOP_OTHER,
+        'multimedia': GROUP_MULTIMEDIA,
+        'networking': GROUP_NETWORK,
+        'office': GROUP_OFFICE,
+        'science': GROUP_SCIENCE,
+        'system': GROUP_SYSTEM,
+        'security': GROUP_SECURITY,
+        'x11': GROUP_OTHER,
+        'xfce': GROUP_DESKTOP_XFCE,
+        'unknown': GROUP_UNKNOWN,
+    }
+
+    def __sigquit(self, signum, frame):
+        raise SystemExit(1)
+
+    def __init__(self, args):
+        signal.signal(signal.SIGQUIT, self.__sigquit)
+        PackageKitPortageMixin.__init__(self)
+        PackageKitBaseBackend.__init__(self, args)
+
+    def _package(self, cpv, info=None):
+        desc = self._get_metadata(cpv, ["DESCRIPTION"])[0]
         if not info:
-            if self.is_installed(cpv):
+            if self._is_installed(cpv):
                 info = INFO_INSTALLED
             else:
                 info = INFO_AVAILABLE
-        PackageKitBaseBackend.package(self, self.cpv_to_id(cpv), info, desc)
+        self.package(self._cpv_to_id(cpv), info, desc)
 
     def get_depends(self, filters, pkgs, recursive):
         # TODO: use only myparams ?
@@ -820,8 +819,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         cpv_list = []
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
-            if not self.is_cpv_valid(cpv):
+            cpv = self._id_to_cpv(pkg)
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
@@ -888,12 +887,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         del tmp_list
 
         # free filter
-        cpv_list = self.filter_free(cpv_list, fltlist)
+        cpv_list = self._filter_free(cpv_list, fltlist)
 
         for cpv in cpv_list:
             # prevent showing input packages
             if '=' + cpv not in cpv_input:
-                self.package(cpv)
+                self._package(cpv)
 
     def get_details(self, pkgs):
         self.status(STATUS_INFO)
@@ -904,21 +903,22 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         pkg_processed = 0.0
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
 
-            metadata = self.get_metadata(cpv,
+            metadata = self._get_metadata(cpv,
                     ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
                     in_dict=True)
-            license = self.get_real_license_str(cpv, metadata)
+            license = self._get_real_license_str(cpv, metadata)
 
-            self.details(self.cpv_to_id(cpv), license, get_group(cpv),
-                    metadata["DESCRIPTION"], metadata["HOMEPAGE"],
-                    self.get_size(cpv))
+            self.details(self._cpv_to_id(cpv), license,
+                self._get_pk_group(cpv),
+                metadata["DESCRIPTION"], metadata["HOMEPAGE"],
+                self._get_size(cpv))
 
             pkg_processed += 100.0
             self.percentage(int(pkg_processed/nb_pkg))
@@ -934,19 +934,19 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         pkg_processed = 0.0
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
 
-            if not self.is_installed(cpv):
+            if not self._is_installed(cpv):
                 self.error(ERROR_CANNOT_GET_FILELIST,
                         "get-files is only available for installed packages")
                 continue
 
-            files = self.get_file_list(cpv)
+            files = self._get_file_list(cpv)
             files = sorted(files)
             files = ";".join(files)
 
@@ -963,13 +963,13 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         self.percentage(0)
 
         fltlist = filters.split(';')
-        cp_list = self.get_all_cp(fltlist)
+        cp_list = self._get_all_cp(fltlist)
         nb_cp = float(len(cp_list))
         cp_processed = 0.0
 
-        for cp in self.get_all_cp(fltlist):
-            for cpv in self.get_all_cpv(cp, fltlist):
-                self.package(cpv)
+        for cp in self._get_all_cp(fltlist):
+            for cpv in self._get_all_cpv(cp, fltlist):
+                self._package(cpv)
 
             cp_processed += 100.0
             self.percentage(int(cp_processed/nb_cp))
@@ -999,7 +999,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                 if available_layman_db.overlays[o].is_official() \
                         and available_layman_db.overlays[o].is_supported():
                     self.repo_detail(o, o,
-                            is_repository_enabled(installed_layman_db, o))
+                            self._is_repo_enabled(installed_layman_db, o))
 
     def get_requires(self, filters, pkgs, recursive):
         # TODO: manage non-installed package
@@ -1024,20 +1024,20 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
-            if not self.is_installed(cpv):
+            if not self._is_installed(cpv):
                 self.error(ERROR_CANNOT_GET_REQUIRES,
                         "get-requires is only available for installed packages at the moment")
                 continue
 
             cpv_input.append(cpv)
 
-        packages_list = self.get_packages_required(cpv_input, recursive)
+        packages_list = self._get_required_packages(cpv_input, recursive)
 
         # now we can populate cpv_list
         cpv_list = []
@@ -1046,12 +1046,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         del packages_list
 
         # free filter
-        cpv_list = self.filter_free(cpv_list, fltlist)
+        cpv_list = self._filter_free(cpv_list, fltlist)
 
         for cpv in cpv_list:
             # prevent showing input packages
             if '=' + cpv not in cpv_input:
-                self.package(cpv)
+                self._package(cpv)
 
     def get_update_detail(self, pkgs):
         # TODO: a lot of informations are missing
@@ -1067,17 +1067,17 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             bugzilla_url = ""
             cve_url = ""
 
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
             if not self.pvar.portdb.cpv_exists(cpv):
                 self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "could not find %s" % pkg)
 
-            for cpv in self.pvar.vardb.match(portage.pkgsplit(cpv)[0]):
+            for cpv in self.pvar.vardb.match(portage.versions.pkgsplit(cpv)[0]):
                 updates.append(cpv)
             updates = "&".join(updates)
 
             # temporarily set vendor_url = homepage
-            homepage = self.get_metadata(cpv, ["HOMEPAGE"])[0]
+            homepage = self._get_metadata(cpv, ["HOMEPAGE"])[0]
             vendor_url = homepage
             issued = ""
             updated = ""
@@ -1126,8 +1126,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             cpv_list_inst = self.pvar.vardb.match(cp)
             cpv_list_avai = self.pvar.portdb.match(cp)
 
-            cpv_dict_inst = self.get_cpv_slotted(cpv_list_inst)
-            cpv_dict_avai = self.get_cpv_slotted(cpv_list_avai)
+            cpv_dict_inst = self._get_cpv_slotted(cpv_list_inst)
+            cpv_dict_avai = self._get_cpv_slotted(cpv_list_avai)
 
             dict_upda = {}
             dict_down = {}
@@ -1148,7 +1148,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                 tmp_list_avai.reverse()
 
                 for cpv in tmp_list_avai:
-                    if self.cmp_cpv(cpv_inst, cpv) == -1:
+                    if self._cmp_cpv(cpv_inst, cpv) == -1:
                         cpv_list_updates.append(cpv)
                     else: # because the list is sorted
                         break
@@ -1164,13 +1164,13 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                         else:
                             dict_down[s] = [tmp_list_avai.pop()]
 
-                cpv_list_updates = self.filter_free(cpv_list_updates, fltlist)
+                cpv_list_updates = self._filter_free(cpv_list_updates, fltlist)
 
                 if len(cpv_list_updates) == 0:
                     break
 
                 if FILTER_NEWEST in fltlist:
-                    best_cpv = portage.best(cpv_list_updates)
+                    best_cpv = portage.versions.best(cpv_list_updates)
                     cpv_list_updates = [best_cpv]
 
                 dict_upda[s] = cpv_list_updates
@@ -1185,28 +1185,28 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                 initial_atoms=self.pvar.root_config.setconfig.getSetAtoms("security")):
             # send update message and remove atom from cpv_updates
             if atom.cp in cpv_updates:
-                slot = self.get_metadata(atom.cpv, ["SLOT"])[0]
+                slot = self._get_metadata(atom.cpv, ["SLOT"])[0]
                 if slot in cpv_updates[atom.cp]:
                     tmp_cpv_list = cpv_updates[atom.cp][slot][:]
                     for cpv in tmp_cpv_list:
-                        if self.cmp_cpv(cpv, atom.cpv) >= 0:
+                        if self._cmp_cpv(cpv, atom.cpv) >= 0:
                             # cpv is a security update and removed from list
                             cpv_updates[atom.cp][slot].remove(cpv)
-                            self.package(cpv, INFO_SECURITY)
+                            self._package(cpv, INFO_SECURITY)
             else: # update also non-world and non-system packages if security
-                self.package(atom.cpv, INFO_SECURITY)
+                self._package(atom.cpv, INFO_SECURITY)
 
         # downgrades
         for cp in cpv_downgra:
             for slot in cpv_downgra[cp]:
                 for cpv in cpv_downgra[cp][slot]:
-                    self.package(cpv, INFO_IMPORTANT)
+                    self._package(cpv, INFO_IMPORTANT)
 
         # normal updates
         for cp in cpv_updates:
             for slot in cpv_updates[cp]:
                 for cpv in cpv_updates[cp][slot]:
-                    self.package(cpv, INFO_NORMAL)
+                    self._package(cpv, INFO_NORMAL)
 
     def simulate_install_packages(self, pkgs):
         return self._install_packages(False, pkgs, simulate=True)
@@ -1228,14 +1228,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         cpv_list = []
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
 
-            if self.is_installed(cpv):
+            if self._is_installed(cpv):
                 self.error(ERROR_PACKAGE_ALREADY_INSTALLED,
                         "Package %s is already installed" % pkg)
                 continue
@@ -1266,7 +1266,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         # check fetch restrict, can stop the function via error signal
-        self.check_fetch_restrict(depgraph.altlist())
+        self._check_fetch_restrict(depgraph.altlist())
 
         self.status(STATUS_INSTALL)
 
@@ -1274,30 +1274,30 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         # get elog messages
-        portage.elog.add_listener(self.elog_listener)
+        portage.elog.add_listener(self._elog_listener)
 
         try:
-            self.block_output()
+            self._block_output()
             # compiling/installing
             mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
                     self.pvar.trees, self.pvar.mtimedb, myopts, None,
                     depgraph.altlist(), favorites, depgraph.schedulerGraph())
             rval = mergetask.merge()
         finally:
-            self.unblock_output()
+            self._unblock_output()
 
         # when an error is found print error messages
         if rval != os.EX_OK:
-            self.send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
+            self._send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
 
         # show elog messages and clean
-        portage.elog.remove_listener(self.elog_listener)
+        portage.elog.remove_listener(self._elog_listener)
         for msg in self._elog_messages:
             # TODO: use specific message ?
             self.message(MESSAGE_UNKNOWN, msg)
         self._elog_messages = []
 
-        self.send_configuration_file_message()
+        self._signal_config_update()
 
     def refresh_cache(self, force):
         # NOTES: can't manage progress even if it could be better
@@ -1319,7 +1319,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                 os.remove(timestamp_path)
 
         try:
-            self.block_output()
+            self._block_output()
             for o in installed_layman_db.overlays.keys():
                 installed_layman_db.sync(o, quiet=True)
             _emerge.actions.action_sync(self.pvar.settings, self.pvar.trees,
@@ -1327,7 +1327,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         except:
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
         finally:
-            self.unblock_output()
+            self._unblock_output()
 
     def remove_packages(self, allowdep, autoremove, pkgs):
         return self._remove_packages(allowdep, autoremove, pkgs)
@@ -1355,20 +1355,20 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         # create cpv_list
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_PACKAGE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
 
-            if not self.is_installed(cpv):
+            if not self._is_installed(cpv):
                 self.error(ERROR_PACKAGE_NOT_INSTALLED,
                         "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:
+            if portage.versions.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
@@ -1381,7 +1381,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                     "Portage backend do not implement autoremove option")
 
         # get packages needing candidates for removal
-        required_packages = self.get_packages_required(cpv_list, recursive=True)
+        required_packages = self._get_required_packages(cpv_list, recursive=True)
 
         # if there are required packages, allowdep must be on
         if required_packages and not allowdep:
@@ -1403,7 +1403,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         # and now, packages we want really to remove
         for cpv in cpv_list:
-            metadata = self.get_metadata(cpv, [],
+            metadata = self._get_metadata(cpv, [],
                     in_dict=True, add_cache_keys=True)
             package = _emerge.Package.Package(
                     type_name="ebuild",
@@ -1424,24 +1424,24 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             favorites.append('=' + p.cpv)
 
         # get elog messages
-        portage.elog.add_listener(self.elog_listener)
+        portage.elog.add_listener(self._elog_listener)
 
         # now, we can remove
         try:
-            self.block_output()
+            self._block_output()
             mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
                     self.pvar.trees, self.pvar.mtimedb, mergelist=packages,
                     myopts={}, spinner=None, favorites=favorites, digraph=None)
             rval = mergetask.merge()
         finally:
-            self.unblock_output()
+            self._unblock_output()
 
         # when an error is found print error messages
         if rval != os.EX_OK:
-            self.send_merge_error(ERROR_PACKAGE_FAILED_TO_REMOVE)
+            self._send_merge_error(ERROR_PACKAGE_FAILED_TO_REMOVE)
 
         # show elog messages and clean
-        portage.elog.remove_listener(self.elog_listener)
+        portage.elog.remove_listener(self._elog_listener)
         for msg in self._elog_messages:
             # TODO: use specific message ?
             self.message(MESSAGE_UNKNOWN, msg)
@@ -1472,7 +1472,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         # disabling (removing) a db
         # if repository already disabled, ignoring
-        if not enable and is_repository_enabled(installed_layman_db, repoid):
+        if not enable and self._is_repo_enabled(installed_layman_db, repoid):
             try:
                 installed_layman_db.delete(installed_layman_db.select(repoid))
             except Exception, e:
@@ -1482,15 +1482,15 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         # enabling (adding) a db
         # if repository already enabled, ignoring
-        if enable and not is_repository_enabled(installed_layman_db, repoid):
+        if enable and not self._is_repo_enabled(installed_layman_db, repoid):
             try:
                 # TODO: clean the trick to prevent outputs from layman
-                self.block_output()
+                self._block_output()
                 installed_layman_db.add(available_layman_db.select(repoid),
                         quiet=True)
-                self.unblock_output()
+                self._unblock_output()
             except Exception, e:
-                self.unblock_output()
+                self._unblock_output()
                 self.error(ERROR_INTERNAL_ERROR,
                         "Failed to enable repository "+repoid+" : "+str(e))
                 return
@@ -1501,7 +1501,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         self.percentage(0)
 
         fltlist = filters.split(';')
-        cp_list = self.get_all_cp(fltlist)
+        cp_list = self._get_all_cp(fltlist)
         nb_cp = float(len(cp_list))
         cp_processed = 0.0
 
@@ -1515,8 +1515,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
 
         for cp in cp_list:
             if s.match(cp):
-                for cpv in self.get_all_cpv(cp, fltlist):
-                    self.package(cpv)
+                for cpv in self._get_all_cpv(cp, fltlist):
+                    self._package(cpv)
 
             cp_processed += 100.0
             self.percentage(int(cp_processed/nb_cp))
@@ -1530,10 +1530,10 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         self.percentage(0)
 
         fltlist = filters.split(';')
-        cp_list = self.get_all_cp(fltlist)
+        cp_list = self._get_all_cp(fltlist)
         nb_cp = float(len(cp_list))
         cp_processed = 0.0
-        search_list = get_search_list(keys)
+        search_list = self._get_search_list(keys)
 
         for cp in cp_list:
             # unfortunatelly, everything is related to cpv, not cp
@@ -1543,14 +1543,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             # newest filter can't be executed now
             # because some cpv are going to be filtered by search conditions
             # and newest filter could be alterated
-            for cpv in self.get_all_cpv(cp, fltlist, filter_newest=False):
+            for cpv in self._get_all_cpv(cp, fltlist, filter_newest=False):
                 match = True
-                metadata =  self.get_metadata(cpv,
+                metadata =  self._get_metadata(cpv,
                         ["DESCRIPTION", "HOMEPAGE", "IUSE",
                             "LICENSE", "repository", "SLOT"],
                         in_dict=True)
                 # update LICENSE to correspond to system settings
-                metadata["LICENSE"] = self.get_real_license_str(cpv, metadata)
+                metadata["LICENSE"] = self._get_real_license_str(cpv, metadata)
                 for s in search_list:
                     found = False
                     for x in metadata:
@@ -1564,10 +1564,10 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                     cpv_list.append(cpv)
 
             # newest filter
-            cpv_list = self.filter_newest(cpv_list, fltlist)
+            cpv_list = self._filter_newest(cpv_list, fltlist)
 
             for cpv in cpv_list:
-                self.package(cpv)
+                self._package(cpv)
 
             cp_processed += 100.0
             self.percentage(int(cp_processed/nb_cp))
@@ -1601,14 +1601,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             searchre = re.compile("/" + key + "$", re.IGNORECASE)
 
         # free filter
-        cpv_list = self.filter_free(cpv_list, fltlist)
+        cpv_list = self._filter_free(cpv_list, fltlist)
         nb_cpv = float(len(cpv_list))
 
         for cpv in cpv_list:
-            for f in self.get_file_list(cpv):
+            for f in self._get_file_list(cpv):
                 if (is_full_path and key == f) \
                 or (not is_full_path and searchre.search(f)):
-                    self.package(cpv)
+                    self._package(cpv)
                     break
 
             cpv_processed += 100.0
@@ -1623,14 +1623,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         self.percentage(0)
 
         fltlist = filters.split(';')
-        cp_list = self.get_all_cp(fltlist)
+        cp_list = self._get_all_cp(fltlist)
         nb_cp = float(len(cp_list))
         cp_processed = 0.0
 
         for cp in cp_list:
-            if get_group(cp) == group:
-                for cpv in self.get_all_cpv(cp, fltlist):
-                    self.package(cpv)
+            if self._get_pk_group(cp) == group:
+                for cpv in self._get_all_cpv(cp, fltlist):
+                    self._package(cpv)
 
             cp_processed += 100.0
             self.percentage(int(cp_processed/nb_cp))
@@ -1649,7 +1649,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         keys_list = keys.split(' ')
         for k in keys_list[:]:
             if "/" in k:
-                cat, cp = portage.catsplit(k)
+                cat, cp = portage.versions.catsplit(k)
                 categories.append(cat)
                 keys_list[keys_list.index(k)] = cp
 
@@ -1661,7 +1661,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         elif len(categories) == 1:
             category_filter = categories[0]
 
-        # do not use get_search_list because of this category feature
+        # do not use self._get_search_list because of this category feature
         search_list = []
         for k in keys_list:
             # not done entirely by pk-transaction
@@ -1669,17 +1669,17 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             search_list.append(re.compile(k, re.IGNORECASE))
 
         fltlist = filters.split(';')
-        cp_list = self.get_all_cp(fltlist)
+        cp_list = self._get_all_cp(fltlist)
         nb_cp = float(len(cp_list))
         cp_processed = 0.0
 
         for cp in cp_list:
             if category_filter:
-                cat, pkg_name = portage.catsplit(cp)
+                cat, pkg_name = portage.versions.catsplit(cp)
                 if cat != category_filter:
                     continue
             else:
-                pkg_name = portage.catsplit(cp)[1]
+                pkg_name = portage.versions.catsplit(cp)[1]
             found = True
 
             # pkg name has to correspond to _every_ keys
@@ -1688,8 +1688,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
                     found = False
                     break
             if found:
-                for cpv in self.get_all_cpv(cp, fltlist):
-                    self.package(cpv)
+                for cpv in self._get_all_cpv(cp, fltlist):
+                    self._package(cpv)
 
             cp_processed += 100.0
             self.percentage(int(cp_processed/nb_cp))
@@ -1715,9 +1715,9 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
         cpv_list = []
 
         for pkg in pkgs:
-            cpv = self.id_to_cpv(pkg)
+            cpv = self._id_to_cpv(pkg)
 
-            if not self.is_cpv_valid(cpv):
+            if not self._is_cpv_valid(cpv):
                 self.error(ERROR_UPDATE_NOT_FOUND,
                         "Package %s was not found" % pkg)
                 continue
@@ -1748,7 +1748,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         # check fetch restrict, can stop the function via error signal
-        self.check_fetch_restrict(depgraph.altlist())
+        self._check_fetch_restrict(depgraph.altlist())
 
         self.status(STATUS_INSTALL)
 
@@ -1756,30 +1756,30 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         # get elog messages
-        portage.elog.add_listener(self.elog_listener)
+        portage.elog.add_listener(self._elog_listener)
 
         try:
-            self.block_output()
+            self._block_output()
             # compiling/installing
             mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
                     self.pvar.trees, self.pvar.mtimedb, myopts, None,
                     depgraph.altlist(), favorites, depgraph.schedulerGraph())
             rval = mergetask.merge()
         finally:
-            self.unblock_output()
+            self._unblock_output()
 
         # when an error is found print error messages
         if rval != os.EX_OK:
-            self.send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
+            self._send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
 
         # show elog messages and clean
-        portage.elog.remove_listener(self.elog_listener)
+        portage.elog.remove_listener(self._elog_listener)
         for msg in self._elog_messages:
             # TODO: use specific message ?
             self.message(MESSAGE_UNKNOWN, msg)
         self._elog_messages = []
 
-        self.send_configuration_file_message()
+        self._signal_config_update()
 
     def update_system(self, only_trusted):
         self.status(STATUS_RUNNING)
@@ -1812,35 +1812,35 @@ class PackageKitPortageBackend(PackageKitBaseBackend):
             return
 
         # check fetch restrict, can stop the function via error signal
-        self.check_fetch_restrict(depgraph.altlist())
+        self._check_fetch_restrict(depgraph.altlist())
 
         self.status(STATUS_INSTALL)
 
         # get elog messages
-        portage.elog.add_listener(self.elog_listener)
+        portage.elog.add_listener(self._elog_listener)
 
         try:
-            self.block_output()
+            self._block_output()
             # compiling/installing
             mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
                     self.pvar.trees, self.pvar.mtimedb, myopts, None,
                     depgraph.altlist(), None, depgraph.schedulerGraph())
             rval = mergetask.merge()
         finally:
-            self.unblock_output()
+            self._unblock_output()
 
         # when an error is found print error messages
         if rval != os.EX_OK:
-            self.send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
+            self._send_merge_error(ERROR_PACKAGE_FAILED_TO_INSTALL)
 
         # show elog messages and clean
-        portage.elog.remove_listener(self.elog_listener)
+        portage.elog.remove_listener(self._elog_listener)
         for msg in self._elog_messages:
             # TODO: use specific message ?
             self.message(MESSAGE_UNKNOWN, msg)
         self._elog_messages = []
 
-        self.send_configuration_file_message()
+        self._signal_config_update()
 
 def main():
     backend = PackageKitPortageBackend("")


More information about the PackageKit-commit mailing list