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

Richard Hughes hughsient at kemper.freedesktop.org
Mon Jun 1 02:56:20 PDT 2009


 NEWS                                              |   61 ++++
 RELEASE                                           |    2 
 backends/apt.deprecated/pk-backend-apt.c          |   12 
 backends/apt/pk-backend-apt.c                     |   11 
 backends/conary/pk-backend-conary.c               |   12 
 backends/pisi/pk-backend-pisi.c                   |   12 
 backends/portage/Makefile.am                      |    2 
 backends/portage/pk-backend-portage.c             |  115 ++++-----
 backends/portage/portageBackend.py                |  140 ++++++++++-
 backends/smart/pk-backend-smart.c                 |   12 
 backends/urpmi/pk-backend-urpmi.c                 |   13 -
 backends/yum/pk-backend-yum.c                     |   11 
 configure.ac                                      |    2 
 contrib/PackageKit.spec.in                        |   14 -
 docs/html/img/gpk-updates-overview.png            |binary
 docs/html/img/gpk-updates.png                     |binary
 docs/html/img/thumbnails/gpk-updates-overview.png |binary
 docs/html/img/thumbnails/gpk-updates.png          |binary
 docs/html/index.html                              |    8 
 docs/html/pk-download.html                        |    1 
 docs/html/pk-help.html                            |    2 
 docs/html/pk-intro.html                           |   44 ++-
 docs/html/pk-screenshots.html                     |    8 
 docs/html/style.css                               |   11 
 lib/packagekit-glib/pk-package-ids.c              |    4 
 lib/packagekit-glib/pk-service-pack.c             |    2 
 po/fi.po                                          |  271 ++++++++++------------
 po/mr.po                                          |   86 +++---
 po/pa.po                                          |   88 +++----
 src/pk-backend.c                                  |   11 
 src/pk-backend.h                                  |    1 
 31 files changed, 552 insertions(+), 404 deletions(-)

New commits:
commit 64f1ad84797d88b1cbc4cad42c3aafaee9dfdc0e
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jun 1 10:53:37 2009 +0100

    Release version 0.4.8

diff --git a/NEWS b/NEWS
index 09adec5..c06a766 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,64 @@
+Version 0.4.8
+~~~~~~~~~~~~~
+Released: 2009-06-01
+
+Notes:
+ - The start of a portage backend has been added by Mounir Lamouri.
+ - Numerous daemon speedups and bugfixes, so an upgrade is recommended.
+
+Translations:
+ - Updated translation for Bulgarian (Alexander Shopov)
+ - Updated translation for Punjabi (aalam)
+ - Updated translation for Malayalam (anipeter)
+ - Updated translation for Greek (charnik)
+ - Updated translation for Oriya (mgiri)
+ - Updated translation for Hindi (mgiri)
+ - Updated translation for Polish (raven)
+ - Updated translation for Bengali (runab)
+ - Updated translation for Thai (willwill)
+ - Updated translation for Marathi (sandeeps)
+ - Updated translation for Finnish (vpv)
+
+New Features:
+ - Add a PK_CHECK_VERSION macro (Richard Hughes)
+ - Add three properties on the main interface with the runtime daemon versions (Richard Hughes)
+ - Export version-* properties in PkControl (Richard Hughes)
+ - Add a prototype backend interface definition as a tech-preview (Richard Hughes)
+ - Don't use --enable-developer, instead use DeveloperMode set in the config file (Richard Hughes)
+ - Create a shared pk_backend_bool_to_text() helper to reduce copy&paste (Richard Hughes)
+
+Bugfixes:
+ - Make PkNetworkUnix watch /proc/net/route and check for network state changes (Richard Hughes)
+ - Ensure we send ::Finished() even when the dispatcher closed normally (Richard Hughes)
+ - Ensure we disconnect ::Finished() when we unref a transaction in the PkTransactionList (Richard Hughes)
+ - Emit ::Destroy() in the dispose phase to ensure it is proxied to the bus (Richard Hughes)
+ - Fix SuggestDaemonQuit to exit using the mainloop (Richard Hughes)
+ - Fix the logic of when ::RestartSchedule is used (Richard Hughes)
+ - Don't cache the update detail anymore, we can't ensure cache-consistency (Richard Hughes)
+ - Don't try to clear the cancel timeout if it fires again on PkClient finalise (Richard Hughes)
+ - Only return the newest available package for the command-not-found tool (Richard Hughes)
+ - Check earlier if we don't have libarchive when creating a service pack (Richard Hughes)
+ - Be more paranoid when parsing ISO8601 dates from the backend to avoid a critical error (Richard Hughes)
+ - Fix a small memory leak when we check for session restarts (Richard Hughes)
+ - When we search for the file list after an install or upgrade, use the local package (Richard Hughes)
+ - Don't crash the session program if we are connecting to an old packagekitd with a new libpackagekit (Richard Hughes)
+ - Protect a few function in pk-package-ids.c from NULL input (Richard Hughes)
+
+Backends:
+ - dummy: Make the depends return both types of packages (Richard Hughes)
+ - portage: Working search-name, get-details and download-packages (Mounir Lamouri)
+ - portage: Add get-files function (Mounir Lamouri)
+ - portage: Add search-file function (Mounir Lamouri)
+ - portage: Beginning of resolve function (Mounir Lamouri)
+ - portage: Add get_depends function (Mounir Lamouri)
+ - portage: Add get_packages function (Mounir Lamouri)
+ - yum: Add some more error handing when updating packages (Richard Hughes)
+ - yum: Clear previous data so a test transaction do not break actual one (Richard Hughes)
+ - yum: Setup the locale using yum.misc. Fixes rh#487614 (Richard Hughes)
+ - yum: Protect when the presto plugin doesn't send a name for the rebuild callback. Fixes rh#500428 (Richard Hughes)
+ - yum: Disable the rpm-warm-cache yum plugin, it's so broken (Richard Hughes)
+ - yum: Blacklist remove-with-leaves as well. Fixes rh#502399 (Richard Hughes)
+
 Version 0.4.7
 ~~~~~~~~~~~~~
 Released: 2009-05-05
diff --git a/RELEASE b/RELEASE
index 820d31b..e4707a0 100644
--- a/RELEASE
+++ b/RELEASE
@@ -2,7 +2,7 @@ PackageKit Release Notes
 
 1. Write NEWS entries for PackageKit in the same format as usual.
 
-git shortlog PACKAGEKIT_0_4_7.. | grep -v trivial | grep -v Merge > NEWS.new
+git shortlog PACKAGEKIT_0_4_7.. | grep -i -v trivial | grep -v Merge > NEWS.new
 
 2. Add download date to docs/html/pk-download.html, save file.
 
diff --git a/configure.ac b/configure.ac
index 2593215..8e5642e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ AC_SUBST(PK_VERSION)
 # AGE		If libpackagekit can be linked into executables which can be
 # 		built with previous versions of this library. Don't use.
 LT_CURRENT=11
-LT_REVISION=6
+LT_REVISION=7
 LT_AGE=0
 AC_SUBST(LT_CURRENT)
 AC_SUBST(LT_REVISION)
diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index 66a9d66..c8eec52 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -1,8 +1,9 @@
-%define glib2_version           2.16.1
-%define dbus_version            0.90
-%define dbus_glib_version       0.70
-%define policykit_version       0.8
-%define alphatag                #ALPHATAG#
+%define glib2_version			2.16.1
+%define dbus_version			0.90
+%define dbus_glib_version		0.70
+%define policykit_version		0.8
+%define libnm_glib_version		0.6.4
+%define alphatag			#ALPHATAG#
 
 %{!?python_sitelib: %define python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
 
@@ -31,10 +32,9 @@ BuildRequires: dbus-devel  >= %{dbus_version}
 BuildRequires: dbus-glib-devel >= %{dbus_glib_version}
 BuildRequires: pam-devel
 BuildRequires: libX11-devel
-BuildRequires: libsexy-devel
 BuildRequires: xmlto
 BuildRequires: sqlite-devel
-BuildRequires: NetworkManager-glib-devel
+BuildRequires: NetworkManager-glib-devel >= %{libnm_glib_version}
 BuildRequires: PolicyKit-devel >= %{policykit_version}
 BuildRequires: libtool
 BuildRequires: docbook-utils
diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index aff8449..46e42c3 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -68,6 +68,7 @@ Releases are normally once every 2-3 weeks.
 </p>
 <table>
 <tr><td><b>Version</b></td><td>&nbsp;&nbsp;</td><td><b>Date</b></td></tr>
+<tr><td>0.4.8</td><td></td><td>2009-06-01</td></tr>
 <tr><td>0.4.7</td><td></td><td>2009-05-05</td></tr>
 <tr><td>0.4.6</td><td></td><td>2009-03-30</td></tr>
 <tr><td>0.4.5</td><td></td><td>2009-03-09</td></tr>
commit e6cef02784ac9c47451d2613bec2f1074cb43c33
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jun 1 10:17:51 2009 +0100

    Revert a hunk of a patch that wasn't meant to be committed yet

diff --git a/client/pk-console.c b/client/pk-console.c
index add804a..1d8df81 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1930,7 +1930,8 @@ main (int argc, char *argv[])
 
 		} else if (strcmp (value, "group") == 0) {
 			if (details == NULL) {
-				error = g_error_new (1, 0, "%s", C_("A search term is required", "the user needs to provide a search term"));
+				/* TRANSLATORS: the user needs to provide a search term */
+				error = g_error_new (1, 0, "%s", _("A search term is required"));
 				goto out;
 			}
 			ret = pk_client_search_group (client_async, filters, details, &error);
commit 857446e4e746699bb9cb8d113b4769ceaefc75f4
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jun 1 09:33:25 2009 +0100

    Protect a few function in pk-package-ids.c from NULL input

diff --git a/lib/packagekit-glib/pk-package-ids.c b/lib/packagekit-glib/pk-package-ids.c
index 623fff5..d25aceb 100644
--- a/lib/packagekit-glib/pk-package-ids.c
+++ b/lib/packagekit-glib/pk-package-ids.c
@@ -53,6 +53,7 @@
 gchar **
 pk_package_ids_from_id (const gchar *package_id)
 {
+	g_return_val_if_fail (package_id != NULL, NULL);
 	return g_strsplit (package_id, PK_PACKAGE_IDS_DELIM, 1);
 }
 
@@ -68,6 +69,7 @@ pk_package_ids_from_id (const gchar *package_id)
 gchar **
 pk_package_ids_from_text (const gchar *package_id)
 {
+	g_return_val_if_fail (package_id != NULL, NULL);
 	return g_strsplit (package_id, PK_PACKAGE_IDS_DELIM, 0);
 }
 
@@ -83,6 +85,7 @@ pk_package_ids_from_text (const gchar *package_id)
 gchar **
 pk_package_ids_from_array (GPtrArray *array)
 {
+	g_return_val_if_fail (array != NULL, NULL);
 	return pk_ptr_array_to_strv (array);
 }
 
@@ -98,6 +101,7 @@ pk_package_ids_from_array (GPtrArray *array)
 gchar **
 pk_package_ids_from_va_list (const gchar *package_id_first, va_list *args)
 {
+	g_return_val_if_fail (package_id_first != NULL, NULL);
 	return pk_va_list_to_argv (package_id_first, args);
 }
 
commit 1ab5b08c577da27704072302cd0b6ad4c183a7ae
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jun 1 09:11:08 2009 +0100

    Create a shared pk_backend_bool_to_text() helper to reduce copy&paste

diff --git a/backends/apt.deprecated/pk-backend-apt.c b/backends/apt.deprecated/pk-backend-apt.c
index 95425a9..6206d9a 100644
--- a/backends/apt.deprecated/pk-backend-apt.c
+++ b/backends/apt.deprecated/pk-backend-apt.c
@@ -89,18 +89,6 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE) {
-		return "yes";
-	}
-	return "no";
-}
-
-/**
  * backend_get_depends:
  */
 static void
diff --git a/backends/apt/pk-backend-apt.c b/backends/apt/pk-backend-apt.c
index 7d66cd0..b487c80 100644
--- a/backends/apt/pk-backend-apt.c
+++ b/backends/apt/pk-backend-apt.c
@@ -82,17 +82,6 @@ backend_get_mime_types (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE)
-		return "yes";
-	return "no";
-}
-
-/**
  * pk_backend_cancel:
  */
 static void
diff --git a/backends/conary/pk-backend-conary.c b/backends/conary/pk-backend-conary.c
index 21605b8..88612a4 100644
--- a/backends/conary/pk-backend-conary.c
+++ b/backends/conary/pk-backend-conary.c
@@ -80,18 +80,6 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE) {
-		return "yes";
-	}
-	return "no";
-}
-
-/**
  * pk_backend_cancel:
  */
 static void
diff --git a/backends/pisi/pk-backend-pisi.c b/backends/pisi/pk-backend-pisi.c
index 232d086..06bfef1 100644
--- a/backends/pisi/pk-backend-pisi.c
+++ b/backends/pisi/pk-backend-pisi.c
@@ -92,18 +92,6 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE) {
-		return "yes";
-	}
-	return "no";
-}
-
-/**
  * pk_backend_cancel:
  */
 static void
diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 65abe01..02ffbee 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -25,19 +25,6 @@
 static PkBackendSpawn *spawn = 0;
 static const gchar* BACKEND_FILE = "portageBackend.py";
 
-
-/**
- * pk_backend_bool_to_text:
- */
-// TODO: should be moved in to packagekit-glib/
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{ 
-  if (value )
-    return "yes";
-  return "no";
-}
-
 /**
  * backend_initialize:
  * This should only be run once per backend load, i.e. not every transaction
diff --git a/backends/smart/pk-backend-smart.c b/backends/smart/pk-backend-smart.c
index 71a96c6..ac99a72 100644
--- a/backends/smart/pk-backend-smart.c
+++ b/backends/smart/pk-backend-smart.c
@@ -124,18 +124,6 @@ backend_get_mime_types (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE) {
-		return "yes";
-	}
-	return "no";
-}
-
-/**
  * pk_backend_cancel:
  */
 static void
diff --git a/backends/urpmi/pk-backend-urpmi.c b/backends/urpmi/pk-backend-urpmi.c
index ded449c..5d3d058 100644
--- a/backends/urpmi/pk-backend-urpmi.c
+++ b/backends/urpmi/pk-backend-urpmi.c
@@ -100,19 +100,6 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE) {
-		return "yes";
-	}
-	return "no";
-}
-
-
-/**
  * pk_backend_search_name:
  */
 static void
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 87228b1..436aaf9 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -135,17 +135,6 @@ backend_get_mime_types (PkBackend *backend)
 }
 
 /**
- * pk_backend_bool_to_text:
- */
-static const gchar *
-pk_backend_bool_to_text (gboolean value)
-{
-	if (value == TRUE)
-		return "yes";
-	return "no";
-}
-
-/**
  * pk_backend_cancel:
  */
 static void
diff --git a/client/pk-console.c b/client/pk-console.c
index 1d8df81..add804a 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1930,8 +1930,7 @@ main (int argc, char *argv[])
 
 		} else if (strcmp (value, "group") == 0) {
 			if (details == NULL) {
-				/* TRANSLATORS: the user needs to provide a search term */
-				error = g_error_new (1, 0, "%s", _("A search term is required"));
+				error = g_error_new (1, 0, "%s", C_("A search term is required", "the user needs to provide a search term"));
 				goto out;
 			}
 			ret = pk_client_search_group (client_async, filters, details, &error);
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 54b743c..c420439 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -1665,6 +1665,17 @@ pk_backend_finished (PkBackend *backend)
 }
 
 /**
+ * pk_backend_bool_to_text:
+ */
+const gchar *
+pk_backend_bool_to_text (gboolean value)
+{
+	if (value)
+		return "yes";
+	return "no";
+}
+
+/**
  * pk_backend_not_implemented_yet:
  **/
 gboolean
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 103a575..dbf04c9 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -187,6 +187,7 @@ gpointer	 pk_backend_get_pointer			(PkBackend	*backend,
 							 const gchar	*key);
 
 /* helper functions */
+const gchar	*pk_backend_bool_to_text		(gboolean	 value);
 gboolean	 pk_backend_not_implemented_yet		(PkBackend	*backend,
 							 const gchar	*method);
 typedef gboolean (*PkBackendThreadFunc)			(PkBackend	*backend);
commit b470c22446389920775db56f04269d582f437f50
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Mon Jun 1 00:33:50 2009 +0200

    portage: update Makefile.am (and fix installation)

diff --git a/backends/portage/Makefile.am b/backends/portage/Makefile.am
index 94c7480..e264967 100644
--- a/backends/portage/Makefile.am
+++ b/backends/portage/Makefile.am
@@ -1,5 +1,5 @@
 helperdir = $(datadir)/PackageKit/helpers/portage
-dist_helper_DATA = # to fill
+dist_helper_DATA = portageBackend.py
 
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_portage.la
commit e881481947b108486eb56059fa72f3b3abb3d827
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun May 31 22:21:59 2009 +0200

    trivial: fix compile with no libarchive

diff --git a/lib/packagekit-glib/pk-service-pack.c b/lib/packagekit-glib/pk-service-pack.c
index 79adcdf..196314a 100644
--- a/lib/packagekit-glib/pk-service-pack.c
+++ b/lib/packagekit-glib/pk-service-pack.c
@@ -714,7 +714,7 @@ pk_service_pack_create_from_files (PkServicePack *pack, GPtrArray *file_array, G
 {
 	g_return_val_if_fail (PK_IS_SERVICE_PACK (pack), FALSE);
 	*error = g_error_new (PK_SERVICE_PACK_ERROR, PK_SERVICE_PACK_ERROR_FAILED_CREATE,
-			      "The service pack %s cannot be created as PackageKit was not built with libarchive support", filename);
+			      "The service pack %s cannot be created as PackageKit was not built with libarchive support", pack->priv->filename);
 	return FALSE;
 }
 #endif
commit f46e4bd0f7cc0b6d41efe7358a89ad8943af15a8
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun May 31 12:02:38 2009 +0200

    portage: remove get_mime_types function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index b3a73a2..65abe01 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -95,20 +95,6 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * backend_get_mime_types:
- */
-static gchar *
-backend_get_mime_types (PkBackend *backend)
-{
-	/*
-	 * TODO: what needs to be done for ebuilds here ?
-	 */
-	egg_debug ("backend: get_mime_types");
-
-	return g_strdup ("application/ebuild");
-}
-
-/**
  * backend_cancel:
  */
 static void
@@ -305,7 +291,7 @@ PK_BACKEND_OPTIONS (
 	backend_destroy,			/* destroy */
 	backend_get_groups,			/* get_groups */
 	backend_get_filters,			/* get_filters */
-	backend_get_mime_types,			/* get_mime_types */
+	NULL,			/* get_mime_types */
 	backend_cancel,				/* cancel */
 	backend_download_packages,		/* download_packages */
 	NULL,					/* get_categories */
@@ -320,16 +306,16 @@ PK_BACKEND_OPTIONS (
 	backend_get_updates,			/* get_updates */
 	NULL,			/* install_files */
 	backend_install_packages,		/* install_packages */
-	NULL,		/* install_signature */
+	NULL,			/* install_signature */
 	NULL,			/* refresh_cache */
 	backend_remove_packages,		/* remove_packages */
 	NULL,			/* repo_enable */
 	NULL,			/* repo_set_data */
 	backend_resolve,			/* resolve */
 	NULL,			/* rollback */
-	NULL,			/* search_details */
+	NULL, //TODO			/* search_details */
 	backend_search_file,			/* search_file */
-	NULL,			/* search_group */
+	NULL, //TODO			/* search_group */
 	backend_search_name,			/* search_name */
 	backend_update_packages,		/* update_packages */
 	backend_update_system,			/* update_system */
commit 9064f2a4afdab13294d478ba076127abdc99b374
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun May 31 10:58:57 2009 +0200

    portage: add get_packages function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 3e44346..b3a73a2 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -281,8 +281,11 @@ backend_update_packages (PkBackend *backend, gchar **package_ids)
 static void
 backend_get_packages (PkBackend *backend, PkBitfield filters)
 {
-	egg_debug ("backend: get packages");
-	pk_backend_finished (backend);
+	gchar *filters_text;
+
+	filters_text = pk_filter_bitfield_to_text (filters);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "get-packages", filters_text, NULL);
+	g_free (filters_text);
 }
 
 /**
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 731ef2d..0000a7c 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -220,6 +220,16 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			self.files(pkgid, files)
 
+	def get_packages(self, filters):
+		# TODO: filters
+		self.status(STATUS_QUERY)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		for cp in portage.portdb.cp_all():
+			for cpv in portage.portdb.match(cp):
+				self.package(cpv)
+
 	def resolve(self, filters, pkgs):
 		# TODO: filters
 		self.status(STATUS_QUERY)
commit 034bad4211b7b4559ee0f3cfefdaafb2543d9a9f
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun May 31 10:32:27 2009 +0200

    portage: add get_depends function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index a6b3414..3e44346 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -27,6 +27,18 @@ static const gchar* BACKEND_FILE = "portageBackend.py";
 
 
 /**
+ * pk_backend_bool_to_text:
+ */
+// TODO: should be moved in to packagekit-glib/
+static const gchar *
+pk_backend_bool_to_text (gboolean value)
+{ 
+  if (value )
+    return "yes";
+  return "no";
+}
+
+/**
  * backend_initialize:
  * This should only be run once per backend load, i.e. not every transaction
  */
@@ -125,8 +137,14 @@ backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar
 static void
 backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
-	egg_debug ("backend: depends");
-	pk_backend_finished (backend);
+	gchar *filters_text;
+	gchar *package_ids_temp;
+
+	package_ids_temp = pk_package_ids_to_text (package_ids);
+	filters_text = pk_filter_bitfield_to_text (filters);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "get-depends", filters_text, package_ids_temp, pk_backend_bool_to_text (recursive), NULL);
+	g_free (package_ids_temp);
+	g_free (filters_text);
 }
 
 /**
@@ -304,8 +322,8 @@ PK_BACKEND_OPTIONS (
 	backend_remove_packages,		/* remove_packages */
 	NULL,			/* repo_enable */
 	NULL,			/* repo_set_data */
-	NULL,			/* resolve */
-	backend_resolve,			/* rollback */
+	backend_resolve,			/* resolve */
+	NULL,			/* rollback */
 	NULL,			/* search_details */
 	backend_search_file,			/* search_file */
 	NULL,			/* search_group */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index b609a49..731ef2d 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -26,6 +26,7 @@ from packagekit.package import PackagekitPackage
 # portage imports
 # TODO: why some python app are adding try / catch around this ?
 import portage
+import _emerge
 
 # misc imports
 import sys
@@ -125,6 +126,49 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			except Exception, e:
 				self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
 
+	def get_depends(self, filters, pkgids, recursive):
+		# TODO: manage filters
+		# TODO: optimize by using vardb for installed packages ?
+		self.status(STATUS_INFO)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		recursive = text_to_bool(recursive)
+
+		for pkgid in pkgids:
+			cpv = id_to_cpv(pkgid)
+
+			# is cpv valid
+			if not portage.portdb.cpv_exists(cpv):
+				# self.warning ? self.error ?
+				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "Could not find the package %s" % pkgid)
+				continue
+
+			myopts = "--emptytree"
+			spinner = ""
+			settings, trees, mtimedb = _emerge.load_emerge_config()
+			myparams = _emerge.create_depgraph_params(myopts, "")
+			spinner = _emerge.stdout_spinner()
+			depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
+			retval, fav = depgraph.select_files(["="+cpv])
+			if not retval:
+				self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
+				continue
+
+			if recursive:
+				# printing the whole tree
+				pkgs = depgraph.altlist(reversed=1)
+				for pkg in pkgs:
+					self.package(pkg[2])
+			else: # !recursive
+				# only printing child of the root node
+				# actually, we have "=cpv" -> "cpv" -> children
+				root_node = depgraph.digraph.root_nodes()[0] # =cpv
+				root_node = depgraph.digraph.child_nodes(root_node)[0] # cpv
+				children = depgraph.digraph.child_nodes(root_node)
+				for child in children:
+					self.package(child[2])
+
 	def get_details(self, pkgids):
 		self.status(STATUS_INFO)
 		self.allow_cancel(True)
commit d0b09eab8767110fb1cff3ef6c061898f1ff0272
Author: aalam <aalam at fedoraproject.org>
Date:   Sun May 31 02:21:35 2009 +0000

    Sending translation for Punjabi

diff --git a/po/pa.po b/po/pa.po
index c53668e..026d662 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -8,10 +8,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-09 19:14+0000\n"
-"PO-Revision-Date: 2009-05-10 07:04+0000\n"
+"POT-Creation-Date: 2009-05-30 19:26+0000\n"
+"PO-Revision-Date: 2009-05-31 07:50+0530\n"
 "Last-Translator: A S Alam <aalam at users.sf.net>\n"
-"Language-Team: Punjabi/Panjabi <punjab-l10n at list.sf.net>\n"
+"Language-Team: Punjabi/Panjabi <punjabi-users at lists.sf.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -496,8 +496,8 @@ msgstr "ਸਬ-ਕਮਾਂਡ:"
 #. TRANSLATORS: if we should show debugging data
 #: ../client/pk-console.c:1767 ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
-#: ../contrib/command-not-found/pk-command-not-found.c:518
-#: ../src/pk-main.c:201
+#: ../contrib/command-not-found/pk-command-not-found.c:520
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "ਹੋਰ ਡੀਬੱਗ ਜਾਣਕਾਰੀ ਵੇਖੋ"
 
@@ -702,55 +702,64 @@ msgstr "ਆਉਟਪੁੱਟ ਡਾਇਰੈਕਟਰੀ ਅਤੇ ਫਾਇਲ
 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:280
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+"ਸਰਵਿਸ ਪੈਕ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਦਾ, ਕਿਉਂਕਿ ਪੈਕੇਜਕਿੱਟ libarchive ਸਹਿਯੋਗ ਨਾਲ ਤਿਆਰ ਨਹੀਂ "
+"ਕੀਤਾ ਗਿਆ ਹੈ।"
+
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:291
 msgid "If specifying a file, the service pack name must end with"
 msgstr "ਜੇ ਫਾਇਲ ਦਿੱਤੀ ਤਾਂ ਸਰਵਿਸ ਪੈਕ ਨਾਂ ਖਤਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:301
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "ਇਸ ਨਾਂ ਨਾਲ ਪੈਕ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ, ਕੀ ਇਸ ਉੱਤੇ ਲਿਖਣਾ ਹੈ?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:304
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
 msgstr "ਪੈਕ ਉੱਤੇ ਨਹੀਂ ਲਿਖਿਆ ਜਾਵੇਗਾ।"
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:317
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
 msgstr "ਡਾਇਰੈਕਟਰੀ ਬਣਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:327
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
 msgstr "ਪੈਕੇਜ ਲਿਸਟ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:338
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
 msgstr "ਪੈਕੇਜ ਨਾਂ ਲੱਭਿਆ ਜਾ ਰਿਹਾ ਹੈ।"
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "'%s' ਪੈਕੇਜ ਖੋਜਣ ਲਈ ਫੇਲ੍ਹ ਹੈ: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
 msgstr "ਸਰਵਿਸ ਪੈਕ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "ਸਰਵਿਸ ਪੈਕ ਬਣਾਇਆ '%s'"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:371
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "'%s' ਬਣਾਉਣ ਲਈ ਫੇਲ੍ਹ: %s"
@@ -782,71 +791,71 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "੧ ਤੋਂ %i ਤੱਕ ਨੰਬਰ ਦਿਓ ਜੀ:"
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:369
+#: ../contrib/command-not-found/pk-command-not-found.c:371
 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:493
+#: ../contrib/command-not-found/pk-command-not-found.c:495
 msgid "Failed to launch:"
 msgstr "ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:536
 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:557
+#: ../contrib/command-not-found/pk-command-not-found.c:559
 msgid "Command not found."
 msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ।"
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:564
+#: ../contrib/command-not-found/pk-command-not-found.c:566
 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:573
+#: ../contrib/command-not-found/pk-command-not-found.c:575
 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:585
-#: ../contrib/command-not-found/pk-command-not-found.c:594
+#: ../contrib/command-not-found/pk-command-not-found.c:587
+#: ../contrib/command-not-found/pk-command-not-found.c:596
 msgid "Similar commands are:"
 msgstr "ਰਲਦੀਆਂ ਕਮਾਂਡਾਂ ਹਨ:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:601
+#: ../contrib/command-not-found/pk-command-not-found.c:603
 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:616
+#: ../contrib/command-not-found/pk-command-not-found.c:618
 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:621
+#: ../contrib/command-not-found/pk-command-not-found.c:623
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "ਕਮਾਂਡ '%2$s' ਦੇਣ ਲਈ ਪੈਕੇਜ '%1$s' ਇੰਸਟਾਲ ਕਰਨਾ ਹੈ?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:642
+#: ../contrib/command-not-found/pk-command-not-found.c:644
 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:651
+#: ../contrib/command-not-found/pk-command-not-found.c:653
 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:659
+#: ../contrib/command-not-found/pk-command-not-found.c:661
 msgid "Please choose a package to install"
 msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਪੈਕੇਜ ਚੁਣੋ ਜੀ"
 
@@ -1031,48 +1040,47 @@ msgid ""
 msgstr "org.freedesktop.PackageKit.conf ਫਾਇਲ ਸਿਸਟਮ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:195
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "ਵਰਤਣ ਲਈ ਪੈਕੇਜਿੰਗ ਬੈਕਐਂਡ, ਜਿਵੇਂ ਕਿ ਫ਼ਰਜ਼ੀ"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "ਡੈਮੇਨਾਈਜ਼ ਅਤੇ ਟਰਮੀਨਲ ਤੋਂ ਵੱਖ"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
 msgstr "ਵੇਹਲਾ ਟਾਈਮਰ ਆਯੋਗ"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:207
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "ਵਰਜਨ ਵੇਖਾ ਕੇ ਬੰਦ ਕਰੋ"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:210
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
 msgstr "ਥੋੜ੍ਹੀ ਦੇਰ ਬਾਅਦ ਬੰਦ ਕਰੋ"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:213
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
 msgstr "ਇੰਜਣ ਲੋਡ ਕਰਨ ਦੇ ਬਾਅਦ ਬੰਦ ਕਰੋ"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:228
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "ਪੈਕੇਜਕਿੱਟ ਸਰਵਿਸ"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:265
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
 msgstr "ਸਿਸਟਮ ਬੱਸ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason
-#: ../src/pk-main.c:317
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
 msgstr "ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਗਲਤੀ:"
 
commit 57f9213c021bf220bcaf892e249cfeb5047768f8
Author: vpv <vpv at fedoraproject.org>
Date:   Sat May 30 07:10:14 2009 +0000

    Sending translation for Finnish

diff --git a/po/fi.po b/po/fi.po
index 00e35dd..1cebe0b 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-25 19:16+0000\n"
-"PO-Revision-Date: 2009-03-25 23:59+0200\n"
+"POT-Creation-Date: 2009-05-30 02:35+0000\n"
+"PO-Revision-Date: 2009-05-30 10:09+0300\n"
 "Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
 "Language-Team: Finnish\n"
 "MIME-Version: 1.0\n"
@@ -31,13 +31,11 @@ msgid "Succeeded"
 msgstr "Onnistui"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:238
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:238 ../client/pk-console.c:405
 msgid "True"
 msgstr "Tosi"
 
-#: ../client/pk-console.c:238
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:238 ../client/pk-console.c:405
 msgid "False"
 msgstr "Epätosi"
 
@@ -95,8 +93,7 @@ msgstr "Tyyppi"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:301
-#: ../client/pk-console.c:324
+#: ../client/pk-console.c:301 ../client/pk-console.c:324
 msgid "Summary"
 msgstr "Yhteenveto"
 
@@ -190,8 +187,7 @@ msgstr "Julkaistu"
 msgid "Updated"
 msgstr "Päivitetty"
 
-#: ../client/pk-console.c:476
-#: ../client/pk-console.c:478
+#: ../client/pk-console.c:476 ../client/pk-console.c:478
 msgid "Percentage"
 msgstr "Prosentti"
 
@@ -242,20 +238,16 @@ msgid "The package %s could not be installed: %s"
 msgstr "Pakettia %s ei voitu asentaa: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:724
-#: ../client/pk-console.c:751
-#: ../client/pk-console.c:847
-#: ../client/pk-console.c:964
-#: ../client/pk-tools-common.c:62
-#: ../client/pk-tools-common.c:81
+#: ../client/pk-console.c:724 ../client/pk-console.c:751
+#: ../client/pk-console.c:847 ../client/pk-console.c:964
+#: ../client/pk-tools-common.c:62 ../client/pk-tools-common.c:81
 #: ../client/pk-tools-common.c:89
 #, c-format
 msgid "Internal error: %s"
 msgstr "Sisäinen virhe: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:732
-#: ../client/pk-console.c:1360
+#: ../client/pk-console.c:732 ../client/pk-console.c:1360
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Tämä työkalu ei voinut asentaa paketteja: %s"
@@ -273,8 +265,7 @@ msgid "This tool could not remove %s: %s"
 msgstr "Tämä työkalu ei voinut poistaa pakettia %s: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:838
-#: ../client/pk-console.c:876
+#: ../client/pk-console.c:838 ../client/pk-console.c:876
 #: ../client/pk-console.c:909
 #, c-format
 msgid "This tool could not remove the packages: %s"
@@ -308,31 +299,27 @@ msgid "This tool could not download the packages: %s"
 msgstr "Tämä työkalu ei voinut ladata paketteja: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:999
-#: ../client/pk-console.c:1008
+#: ../client/pk-console.c:999 ../client/pk-console.c:1008
 #, c-format
 msgid "This tool could not update %s: %s"
 msgstr "Tämä työkalu ei voinut päivittää pakettia %s: %s"
 
 # TODO: tarkista
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1030
-#: ../client/pk-console.c:1038
+#: ../client/pk-console.c:1030 ../client/pk-console.c:1038
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "Tämä työkalu ei voinut hakea vaatijoita paketille %s: %s"
 
 # TODO: tarkista
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1060 ../client/pk-console.c:1068
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "Tämä työkalu ei voinut hakea riippuvuuksia paketille %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1090
-#: ../client/pk-console.c:1098
+#: ../client/pk-console.c:1090 ../client/pk-console.c:1098
 #, c-format
 msgid "This tool could not get package details for %s: %s"
 msgstr "Tämä työkalu ei voinut hakea tietoja paketista %s: %s"
@@ -356,15 +343,13 @@ msgid "File already exists: %s"
 msgstr "Tiedosto on jo olemassa: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1155
-#: ../client/pk-console.c:1211
+#: ../client/pk-console.c:1155 ../client/pk-console.c:1211
 #: ../client/pk-console.c:1286
 msgid "Getting package list"
 msgstr "Haetaan pakettiluetteloa"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1161
-#: ../client/pk-console.c:1217
+#: ../client/pk-console.c:1161 ../client/pk-console.c:1217
 #: ../client/pk-console.c:1292
 #, c-format
 msgid "This tool could not get package list: %s"
@@ -377,8 +362,7 @@ msgid "Failed to save to disk"
 msgstr "Tallennus epäonnistui"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1206
-#: ../client/pk-console.c:1281
+#: ../client/pk-console.c:1206 ../client/pk-console.c:1281
 #, c-format
 msgid "File does not exist: %s"
 msgstr "Tiedostoa ei ole olemassa: %s"
@@ -447,221 +431,218 @@ msgstr "Virhe:"
 msgid "Package description"
 msgstr "Paketin kuvaus"
 
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:1473
+msgid "Message:"
+msgstr "Viesti:"
+
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1491
+#: ../client/pk-console.c:1501
 msgid "Package files"
 msgstr "Paketin tiedostot"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1499
+#: ../client/pk-console.c:1509
 msgid "No files"
 msgstr "Ei tiedostoja"
 
 #. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1522
+#: ../client/pk-console.c:1532
 msgid "Repository signature required"
 msgstr "Asennuslähteen allekirjoitus vaaditaan"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1532
+#: ../client/pk-console.c:1542
 msgid "Do you accept this signature?"
 msgstr "Hyväksytkö tämän allekirjoituksen?"
 
 #. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1536
+#: ../client/pk-console.c:1546
 msgid "The signature was not accepted."
 msgstr "Allekirjoitusta ei hyväksytty."
 
 #. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1570
+#: ../client/pk-console.c:1580
 msgid "End user license agreement required"
 msgstr "Käyttöoikeussopimus vaaditaan"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1577
+#: ../client/pk-console.c:1587
 msgid "Do you agree to this license?"
 msgstr "Hyväksytkö tämän käyttöoikeussopimuksen?"
 
 #. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1581
+#: ../client/pk-console.c:1591
 msgid "The license was refused."
 msgstr "Käyttöoikeussopimusta ei hyväksytty"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1610
+#: ../client/pk-console.c:1620
 msgid "The daemon crashed mid-transaction!"
 msgstr "Taustaprosessi kaatui kesken toimenpiteen"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1663
+#: ../client/pk-console.c:1673
 msgid "PackageKit Console Interface"
 msgstr "PackageKitin konsolikäyttöliittymä"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1665
+#: ../client/pk-console.c:1675
 msgid "Subcommands:"
 msgstr "Alikomennot:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1757
-#: ../client/pk-generate-pack.c:185
+#: ../client/pk-console.c:1767 ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
-#: ../contrib/command-not-found/pk-command-not-found.c:518
-#: ../src/pk-main.c:199
+#: ../contrib/command-not-found/pk-command-not-found.c:520
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Näytä ylimääräisiä virheenjäljitystietoja"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1760
-#: ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1770 ../client/pk-monitor.c:127
 msgid "Show the program version and exit"
 msgstr "Näytä ohjelman versio ja lopeta"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1763
+#: ../client/pk-console.c:1773
 msgid "Set the filter, e.g. installed"
 msgstr "Aseta suodin, esim. asennettu"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1766
+#: ../client/pk-console.c:1776
 msgid "Exit without waiting for actions to complete"
 msgstr "Lopeta odottamatta toimintojen valmistumista"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1793
+#: ../client/pk-console.c:1803
 msgid "This tool could not connect to system DBUS."
 msgstr "Tämä työkalu ei voinut yhdistää järjestelmän DBUSiin."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1880
+#: ../client/pk-console.c:1894
 msgid "The filter specified was invalid"
 msgstr "Annettu suodin oli virheellinen"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1898
+#: ../client/pk-console.c:1912
 msgid "A search type is required, e.g. name"
 msgstr "Haun tyyppi tarvitaan, esim. nimi"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1904
-#: ../client/pk-console.c:1912
-#: ../client/pk-console.c:1920
-#: ../client/pk-console.c:1928
+#: ../client/pk-console.c:1918 ../client/pk-console.c:1926
+#: ../client/pk-console.c:1934 ../client/pk-console.c:1942
 msgid "A search term is required"
 msgstr "Hakutermi on annettava"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1934
+#: ../client/pk-console.c:1948
 msgid "Invalid search type"
 msgstr "Virheellinen haun tyyppi"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1940
+#: ../client/pk-console.c:1954
 msgid "A package name or filename to install is required"
 msgstr "Paketin nimi tai asennettavan tiedoston nimi on annettava"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1948
+#: ../client/pk-console.c:1962
 msgid "A type, key_id and package_id are required"
 msgstr "Tyyppi, key_id ja package_id on annettava"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1956
+#: ../client/pk-console.c:1970
 msgid "A package name to remove is required"
 msgstr "Poistettavan paketin nimi on annettava"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1963
-msgid "A destination directory and then the package names to download are required"
+#: ../client/pk-console.c:1977
+msgid ""
+"A destination directory and then the package names to download are required"
 msgstr "Kohdehakemisto ja ladattavien pakettien nimet paketit on annettava"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1969
+#: ../client/pk-console.c:1983
 msgid "Directory not found"
 msgstr "Hakemistoa ei löytynyt"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1976
+#: ../client/pk-console.c:1990
 msgid "A licence identifier (eula-id) is required"
 msgstr "Lisenssin tunniste (eula-id) on annettava"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1985
+#: ../client/pk-console.c:1999
 msgid "A transaction identifier (tid) is required"
 msgstr "Transaktion tunniste (tid) on annettava"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2001
+#: ../client/pk-console.c:2015
 msgid "A package name to resolve is required"
 msgstr "Ratkaistavan paketin nimi on annettava"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2009
-#: ../client/pk-console.c:2017
+#: ../client/pk-console.c:2023 ../client/pk-console.c:2031
 msgid "A repository name is required"
 msgstr "Asennuslähteen nimi on annettava"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2025
+#: ../client/pk-console.c:2039
 msgid "A repo name, parameter and value are required"
 msgstr "Asennuslähteen nimi, parametri ja arvo on annettava"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2038
+#: ../client/pk-console.c:2052
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Toiminto, esim. ”update-system” on annettava"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2044
+#: ../client/pk-console.c:2058
 msgid "A correct role is required"
 msgstr "Sopiva rooli on annettava"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2050
+#: ../client/pk-console.c:2064
 msgid "Failed to get the time since this action was last completed"
 msgstr "Tämän toiminnon edellisen suorittamisen aikaa ei saatu"
 
 #. 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:2059
-#: ../client/pk-console.c:2070
-#: ../client/pk-console.c:2078
-#: ../client/pk-console.c:2094
-#: ../client/pk-console.c:2102
-#: ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:2073 ../client/pk-console.c:2084
+#: ../client/pk-console.c:2092 ../client/pk-console.c:2108
+#: ../client/pk-console.c:2116 ../client/pk-generate-pack.c:241
 msgid "A package name is required"
 msgstr "Paketin nimi on annettava"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2086
+#: ../client/pk-console.c:2100
 msgid "A package provide string is required"
 msgstr "Paketin tarjoaja-merkkijono on annettava"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2110
+#: ../client/pk-console.c:2124
 msgid "A list file name to create is required"
 msgstr "Luotavan luettelotiedoston nimi on annetta"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2119
-#: ../client/pk-console.c:2128
+#: ../client/pk-console.c:2133 ../client/pk-console.c:2142
 msgid "A list file to open is required"
 msgstr "Avattavan luettelotiedoston nimi on annettava"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2181
+#: ../client/pk-console.c:2195
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Valitsinta ”%s” ei tueta"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2194
+#: ../client/pk-console.c:2208
 msgid "Incorrect privileges for this operation"
 msgstr "Sinulla ei ole tähän toimintoon tarvittavia oikeuksia"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2197
+#: ../client/pk-console.c:2211
 msgid "Command failed"
 msgstr "Komento epäonnistui"
 
@@ -683,11 +664,13 @@ msgstr "Ladataan riippuvuuksia"
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
 #: ../client/pk-generate-pack.c:188
 msgid "Set the file name of dependencies to be excluded"
-msgstr "Aseta pois jätettävien riippuvuuksien luettelon sisältävän tiedoston nimi"
+msgstr ""
+"Aseta pois jätettävien riippuvuuksien luettelon sisältävän tiedoston nimi"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:191
-msgid "The output file or directory (the current directory is used if ommitted)"
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
 msgstr ""
 "Kohdetiedosto tai -hakemisto. Jos jätetään tyhjäksi, valitaan "
 "automaattisesti nykyinen hakemisto."
@@ -719,60 +702,68 @@ msgstr "Kohdehakemiston tai -tiedoston nimi on annettava"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:267
-#: ../client/pk-generate-pack.c:273
+#: ../client/pk-generate-pack.c:267 ../client/pk-generate-pack.c:273
 msgid "The package manager cannot perform this type of operation."
 msgstr "Paketinhallinta ei voi suorittaa tämäntyyppistä toimintoa."
 
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:280
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+"Huoltopakkauksia ei voi luoda, koska PackageKitiä ei käännetty "
+"libarchive-tuella."
+
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:291
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Annettaessa tiedosto nimen on päätyttävä"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:301
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Samalla nimellä on jo olemassa pakkaus, haluatko korvata sen?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:304
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
 msgstr "Pakkausta ei korvattu."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:317
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
 msgstr "Hakemiston luominen epäonnistui:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:327
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
 msgstr "Pakettiluettelon luominen epäonnistui."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:338
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
 msgstr "Etsitään paketin nimeä."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Pakettia ”%s” ei löytynyt: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
 msgstr "Luodaan huoltopakkausta..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Huoltopakkaus ”%s” on luotu"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:371
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Huoltopakkauksen ”%s” luominen epäonnistui: %s"
@@ -804,71 +795,71 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "Anna numero väliltä 1-%i: "
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:369
+#: ../contrib/command-not-found/pk-command-not-found.c:371
 msgid "Failed to search for file"
 msgstr "Tiedoston etsiminen epäonnistui"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:493
+#: ../contrib/command-not-found/pk-command-not-found.c:495
 msgid "Failed to launch:"
 msgstr "Käynnistys epäonnistui:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:536
 msgid "PackageKit Command Not Found"
 msgstr "PackageKit-komentoa ei löytynyt"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:556
+#: ../contrib/command-not-found/pk-command-not-found.c:559
 msgid "Command not found."
 msgstr "Komentoa ei löytynyt."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:563
+#: ../contrib/command-not-found/pk-command-not-found.c:566
 msgid "Similar command is:"
 msgstr "Samankaltainen komento on:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:572
+#: ../contrib/command-not-found/pk-command-not-found.c:575
 msgid "Run similar command:"
 msgstr "Suorita samankaltainen komento:"
 
 #. 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:584
-#: ../contrib/command-not-found/pk-command-not-found.c:593
+#: ../contrib/command-not-found/pk-command-not-found.c:587
+#: ../contrib/command-not-found/pk-command-not-found.c:596
 msgid "Similar commands are:"
 msgstr "Samankaltaisia komentoja ovat:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:600
+#: ../contrib/command-not-found/pk-command-not-found.c:603
 msgid "Please choose a command to run"
 msgstr "Valitse suoritettava komento"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:615
+#: ../contrib/command-not-found/pk-command-not-found.c:618
 msgid "The package providing this file is:"
 msgstr "Tämän tiedoston tarjoava paketti on:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:620
+#: ../contrib/command-not-found/pk-command-not-found.c:623
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "Asennetaanko paketti ”%s”, joka tarjoaa komennon ”%s”"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:641
+#: ../contrib/command-not-found/pk-command-not-found.c:644
 msgid "Packages providing this file are:"
 msgstr "Tämän tiedoston tarjoavat paketit ovat:"
 
 #. 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:650
+#: ../contrib/command-not-found/pk-command-not-found.c:653
 msgid "Suitable packages are:"
 msgstr "Sopivat paketit ovat:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:658
+#: ../contrib/command-not-found/pk-command-not-found.c:661
 msgid "Please choose a package to install"
 msgstr "Valitse asennettava paketti"
 
@@ -947,17 +938,19 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Käyttöoikeussopimuksen hyväksyminen vaatii tunnistautumisen"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:3
-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 ""
-"Tunnistautuminen vaaditaan, jotta voit peruuttaa tehtävän, jota et "
-"aloittanut"
+"Tunnistautuminen vaaditaan, jotta voit peruuttaa tehtävän, jota et aloittanut"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:4
 msgid "Authentication is required to change software source parameters"
 msgstr "Ohjelmistolähdeasetusten muuttaminen vaatii tunnistautumisen"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to consider a key used for signing packages as trusted"
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
 msgstr ""
 "Pakettien allekirjoittamiseen käytettyyn avaimeen luottaminen vaatii "
 "tunnistautumisen"
@@ -984,7 +977,9 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "Transaktion peruuttaminen vaatii tunnistautumisen"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to set the network proxy used for downloading packages"
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
 msgstr ""
 "Pakettien lataamiseen käytettävän välipalvelimen asettaminen vaatii "
 "tunnistautumisen"
@@ -1046,56 +1041,60 @@ msgstr "Näin voi tapahtua kahdesta syystä:"
 #. 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 "Oikea käyttäjä (yleensä root) ei ole käynnistämässä suoritettavaa ohjelmaa"
+msgstr ""
+"Oikea käyttäjä (yleensä root) ei ole käynnistämässä suoritettavaa ohjelmaa"
 
 #. 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 "Tiedostoa org.freedesktop.PackageKit.conf ei ole asennettu järjestelmähakemistoon:"
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr ""
+"Tiedostoa org.freedesktop.PackageKit.conf ei ole asennettu "
+"järjestelmähakemistoon:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:193
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Käytettävä paketinhallintajärjestelmä-taustaosa, esim. dummy"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:196
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "Tee taustaprosessiksi ja irrota päätteestä"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
 msgstr "Poista toimettomuusajastin käytöstä"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "Näytä versio ja lopeta"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:208
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
 msgstr "Sulje pienen viiveen jälkeen"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:211
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
 msgstr "Sulje sen jälkeen, kun moottori on ladattu"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "PackageKit-palvelu"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:263
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
 msgstr "Ei voida yhdistää järjestelmäväylään"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason
-#: ../src/pk-main.c:313
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
 msgstr "Virhe yritettäessä käynnistää:"
 
commit 9316f47585c7d274c9c63b439e6cc3ca80b5bda9
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri May 29 15:04:14 2009 +0100

    Update a couple of screenshots

diff --git a/docs/html/img/gpk-updates-overview.png b/docs/html/img/gpk-updates-overview.png
index 7a946da..5f1afdd 100644
Binary files a/docs/html/img/gpk-updates-overview.png and b/docs/html/img/gpk-updates-overview.png differ
diff --git a/docs/html/img/gpk-updates.png b/docs/html/img/gpk-updates.png
index 8f34e2a..0f4f1fc 100644
Binary files a/docs/html/img/gpk-updates.png and b/docs/html/img/gpk-updates.png differ
diff --git a/docs/html/img/thumbnails/gpk-updates-overview.png b/docs/html/img/thumbnails/gpk-updates-overview.png
index 292e0d2..3411637 100644
Binary files a/docs/html/img/thumbnails/gpk-updates-overview.png and b/docs/html/img/thumbnails/gpk-updates-overview.png differ
diff --git a/docs/html/img/thumbnails/gpk-updates.png b/docs/html/img/thumbnails/gpk-updates.png
index 38dae55..ddafdb7 100644
Binary files a/docs/html/img/thumbnails/gpk-updates.png and b/docs/html/img/thumbnails/gpk-updates.png differ
diff --git a/docs/html/pk-screenshots.html b/docs/html/pk-screenshots.html
index 500d446..eb82daa 100644
--- a/docs/html/pk-screenshots.html
+++ b/docs/html/pk-screenshots.html
@@ -50,13 +50,13 @@
   <p class="caption">Transaction viewer</p>
 </td>
 <td width="300">
-  <center><a href="img/gpk-updates-overview.png"><img src="img/thumbnails/gpk-updates-overview.png" alt=""/></a></center>
-  <p class="caption">Update viewer overview</p>
-</td>
-<td width="300">
   <center><a href="img/gpk-updates.png"><img src="img/thumbnails/gpk-updates.png" alt=""/></a></center>
   <p class="caption">Update viewer</p>
 </td>
+<td width="300">
+  <center><a href="img/gpk-updates-overview.png"><img src="img/thumbnails/gpk-updates-overview.png" alt=""/></a></center>
+  <p class="caption">Update viewer finished</p>
+</td>
 </tr>
 <tr>
 <td width="300">
commit fc05e9a6b51cae33a8a1494724870e34feff72b5
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri May 29 14:33:37 2009 +0100

    Add FOSDEM 2008 presentation and video information to the website intro

diff --git a/docs/html/index.html b/docs/html/index.html
index bd53b37..6ab0ae1 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -7,14 +7,6 @@
 </head>
 <body>
 
-<table align="center" class="title">
-<tr>
- <td><img src="img/packagekit.png" alt=""/></td>
- <td width="95%" valign="middle"><p class="title">PackageKit Main Page</p></td>
- <td><img src="img/packagekit.png" alt=""/></td>
-</tr>
-</table>
-
 <br/>
 
 <table align="center" cellpadding="10px" border="0">
diff --git a/docs/html/pk-help.html b/docs/html/pk-help.html
index 318b48b..ed5a80a 100644
--- a/docs/html/pk-help.html
+++ b/docs/html/pk-help.html
@@ -48,7 +48,7 @@ href="pk-faq.html">FAQ</a> and mailing list for questions, and try to use
 existing backends as a template for what you are trying to do.
 </p>
 
-<table>
+<table class="noteinformation">
 <tr>
  <td><img src="img/dialog-information.png" alt="[NOTE]"/></td>
  <td>
diff --git a/docs/html/pk-intro.html b/docs/html/pk-intro.html
index 4f65edd..9cfa650 100644
--- a/docs/html/pk-intro.html
+++ b/docs/html/pk-intro.html
@@ -26,6 +26,20 @@ used in different distributions, and use some of the latest technology
 like PolicyKit to make the process suck less.
 </p>
 
+<table class="noteinformation">
+<tr>
+ <td><img src="img/dialog-information.png" alt="[NOTE]"/></td>
+ <td>
+  <p>If you're easily bored, checkout the
+   <a href="http://people.freedesktop.org/~hughsient/public/introduction-to-packagekit.pdf">presentation</a>
+   or the
+   <a href="http://video.fosdem.org/2008/maintracks/FOSDEM2008-packagekit.ogg">video</a>
+   I prepared for FOSDEM 2008 and skip the rest of this page.
+  </p>
+ </td>
+</tr>
+</table>
+
 <p>
 The actual nuts-and-bolts distro tool (yum, apt, conary, etc) is used by
 PackageKit using compiled and scripted helpers.
@@ -54,17 +68,25 @@ PackageKit-Qt</a> is the name of the QT graphical tools designed
 for PackageKit.
 </p>
 
-<p>
-  <img style="float: left" src="img/dialog-information.png" alt="[NOTE]"/>
-  By default, PackageKit uses PolicyKit for user authentication.  This
-  means that you, as an admin, can specify with fine-grained control
-  what your users can and cannot do.  For instance, an admin could
-  specify that unprivileged users can update the system and do
-  searching, but are not allowed to install or remove packages.  For
-  home users it's typical to ask the user for their own, or the
-  administrator's "root" password.  With PolicyKit, all these options
-  are possible.
-</p>
+<table class="noteinformation">
+<tr>
+ <td><img src="img/dialog-information.png" alt="[NOTE]"/></td>
+ <td>
+  <p>
+   By default, PackageKit uses PolicyKit for user authentication.
+   This means that you, as an admin, can specify with fine-grained control
+   what your users can and cannot do.
+  </p>
+  <p>
+   For instance, an admin could specify that unprivileged users can update the
+   system and do searching, but are not allowed to install or remove packages.
+   For home users it's typical to ask the user for their own, or the
+   administrator's <code>root</code> password.
+   With PolicyKit, all these options are possible.
+  </p>
+ </td>
+</tr>
+</table>
 
 <p>
 Use cases for PackageKit exist for the following scenarios:
diff --git a/docs/html/style.css b/docs/html/style.css
index fe1d4c1..9b96edb 100644
--- a/docs/html/style.css
+++ b/docs/html/style.css
@@ -10,6 +10,15 @@ h1, h2, h3 {
 	font-weight: bold;
 	}
 
+table.noteinformation {
+	background: #f5f5ff;
+	border: 1px outset #000000;
+	margin-left: 5px;
+	margin-right: 5px;
+	padding: 3px;
+	width: 40%;
+	}
+
 p.title {
 	color: #000000;
 	text-align: center;
@@ -47,6 +56,7 @@ p.indextitle {
 table.title {
 	color: #000000;
 	background-color: #f5f5ff;
+	border: 1px outset #000000;
 	}
 
 img {
@@ -68,6 +78,7 @@ code {
 pre {
 	color: #000000;
 	background: #eeeeee;
+	border: 1px outset #000000;
 	padding: 3px;
 }
 
commit d6c69afb5c9aa66bc924c9751ad0b08e36227fc1
Author: sandeeps <sandeeps at fedoraproject.org>
Date:   Fri May 29 10:36:12 2009 +0000

    Sending translation for Marathi

diff --git a/po/mr.po b/po/mr.po
index ed8e38e..caa9461 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.mr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-14 02:09+0000\n"
-"PO-Revision-Date: 2009-04-14 11:21+0530\n"
+"POT-Creation-Date: 2009-05-29 08:27+0000\n"
+"PO-Revision-Date: 2009-05-29 16:02+0530\n"
 "Last-Translator: Sandeep Shedmake <sandeep.shedmake at gmail.com>\n"
 "Language-Team: marathi\n"
 "MIME-Version: 1.0\n"
@@ -495,8 +495,8 @@ msgstr "उपआदेश:"
 #. TRANSLATORS: if we should show debugging data
 #: ../client/pk-console.c:1767 ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
-#: ../contrib/command-not-found/pk-command-not-found.c:518
-#: ../src/pk-main.c:199
+#: ../contrib/command-not-found/pk-command-not-found.c:520
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "अगाऊ डिबगींग माहिती दाखवा"
 
@@ -701,55 +701,64 @@ msgstr "आऊटपुट डिरेक्ट्री किंवा फा
 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:280
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+"PackageKit ला libarchive समर्थन सह बिल्ट न केल्यामुळे Service पैक बनवणे शक्य नाही"
+"."
+
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:291
 msgid "If specifying a file, the service pack name must end with"
 msgstr "फाइल निश्चित केल्यास, सेवा पॅक नाव यानुरूप समाप्त व्हायला हवे"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:301
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "समान नावाचे पॅक आधिपासूनच अस्तित्वात आहे, तुम्हाला खोडून पुन्हा लिहायचे?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:304
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
 msgstr "पॅक खोडून पुन्हा लिहीले गेले नाही."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:317
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
 msgstr "डिरेक्ट्री बनविण्यास अपयशी:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:327
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
 msgstr "संकुल यादी उघडण्यास अपयशी."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:338
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
 msgstr "संकुल नाव शोधत आहे."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "संकुल '%s' आढळले नाही: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
 msgstr "सेवा पॅक बनवत आहे..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "सेवा पॅक '%s' बनविले"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:371
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "'%s' बनविण्यास अपयशी: %s"
@@ -781,71 +790,71 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "कृपया 1 ते %i क्रमांक निवडा: "
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:369
+#: ../contrib/command-not-found/pk-command-not-found.c:371
 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:493
+#: ../contrib/command-not-found/pk-command-not-found.c:495
 msgid "Failed to launch:"
 msgstr "प्रक्षेपीत करण्यास अपयशी:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:536
 msgid "PackageKit Command Not Found"
 msgstr "PackageKit आदेश आढळले नाही"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:556
+#: ../contrib/command-not-found/pk-command-not-found.c:559
 msgid "Command not found."
 msgstr "आदेश आढळले नाही."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:563
+#: ../contrib/command-not-found/pk-command-not-found.c:566
 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:572
+#: ../contrib/command-not-found/pk-command-not-found.c:575
 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:584
-#: ../contrib/command-not-found/pk-command-not-found.c:593
+#: ../contrib/command-not-found/pk-command-not-found.c:587
+#: ../contrib/command-not-found/pk-command-not-found.c:596
 msgid "Similar commands are:"
 msgstr "समान आदेश यानुरूप आहे:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:600
+#: ../contrib/command-not-found/pk-command-not-found.c:603
 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:615
+#: ../contrib/command-not-found/pk-command-not-found.c:618
 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:620
+#: ../contrib/command-not-found/pk-command-not-found.c:623
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "आदेश '%2$s' पुरविण्याकरीता संकुल '%1$s' प्रतिष्ठापीत करायचे?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:641
+#: ../contrib/command-not-found/pk-command-not-found.c:644
 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:650
+#: ../contrib/command-not-found/pk-command-not-found.c:653
 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:658
+#: ../contrib/command-not-found/pk-command-not-found.c:661
 msgid "Please choose a package to install"
 msgstr "प्रतिष्ठापन करीता कृपया संकुल निवडा"
 
@@ -1030,48 +1039,47 @@ msgid ""
 msgstr "org.freedesktop.PackageKit.conf फाइल प्रणाली डिरेक्ट्री अंतर्गत प्रतिष्ठापीत नाही:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:193
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "वापरण्याजोगी संकुल बॅकएन्ड, उ.दा. dummy"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:196
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "डिमन बनवा व टर्मिनल पासून वेगळे करा"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
 msgstr "idle timer अकार्यान्वीत करा"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "आवृत्ती दाखवा व बाहेर पडा"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:208
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
 msgstr "लहान विलंब नंतर बाहेर पडा"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:211
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
 msgstr "इंजीन दाखल केल्यावर बाहेर पडा"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "PackageKit सेवा"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:263
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
 msgstr "प्रणाली बस सह जुळवणी स्थपीत करण्यास अशक्य"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason
-#: ../src/pk-main.c:313
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
 msgstr "सुरू करतेवेळी त्रुटी आढळली:"
 
commit c7cd3ada4a6cea478037146672343829452e5255
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Fri May 29 00:10:11 2009 +0200

    portage: beginning of resolve function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index e3ee114..a6b3414 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -206,6 +206,22 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 }
 
 /**
+ * pk_backend_resolve:
+ */
+static void
+backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
+{
+	gchar *filters_text;
+	gchar *package_ids_temp;
+
+	filters_text = pk_filter_bitfield_to_text (filters);
+	package_ids_temp = pk_package_ids_to_text (package_ids);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "resolve", filters_text, package_ids_temp, NULL);
+	g_free (package_ids_temp);
+	g_free (filters_text);
+}
+
+/**
  * backend_search_file:
  */
 static void
@@ -289,7 +305,7 @@ PK_BACKEND_OPTIONS (
 	NULL,			/* repo_enable */
 	NULL,			/* repo_set_data */
 	NULL,			/* resolve */
-	NULL,			/* rollback */
+	backend_resolve,			/* rollback */
 	NULL,			/* search_details */
 	backend_search_file,			/* search_file */
 	NULL,			/* search_group */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index b9c9937..b609a49 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -176,6 +176,22 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			self.files(pkgid, files)
 
+	def resolve(self, filters, pkgs):
+		# TODO: filters
+		self.status(STATUS_QUERY)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		for pkg in pkgs:
+			searchre = re.compile(pkg, re.IGNORECASE)
+
+			# TODO: optim with filter = installed
+			for cp in portage.portdb.cp_all():
+				if searchre.search(cp):
+					#print self.vardb.dep_bestmatch(cp)
+					self.package(portage.portdb.xmatch("bestmatch-visible", cp))
+					
+
 	def search_file(self, filters, key):
 		# TODO: manage filters, error if ~installed ?
 		# TODO: search for exact file name
commit 20b7781f7bd21c62f8f4dd8ab3edc1800debaad5
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu May 28 23:46:04 2009 +0200

    portage: add search-file function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index bec315f..e3ee114 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -196,34 +196,26 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
 }
 
 /**
- * backend_install_signature:
+ * backend_remove_packages:
  */
 static void
-backend_install_signature (PkBackend *backend, PkSigTypeEnum type,
-			   const gchar *key_id, const gchar *package_id)
+backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
-	egg_debug ("backend: install signature");
+	egg_debug ("backend: remove packages");
 	pk_backend_finished (backend);
 }
 
 /**
- * backend_refresh_cache:
+ * backend_search_file:
  */
 static void
-backend_refresh_cache (PkBackend *backend, gboolean force)
+backend_search_file (PkBackend *backend, PkBitfield filters, const gchar *search)
 {
-	egg_debug ("backend: refresh cache");
-	pk_backend_finished (backend);
-}
+	gchar *filters_text;
 
-/**
- * backend_remove_packages:
- */
-static void
-backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
-{
-	egg_debug ("backend: remove packages");
-	pk_backend_finished (backend);
+	filters_text = pk_filter_bitfield_to_text (filters);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "search-file", filters_text, search, NULL);
+	g_free (filters_text);
 }
 
 /**
@@ -250,32 +242,22 @@ backend_update_packages (PkBackend *backend, gchar **package_ids)
 }
 
 /**
- * backend_update_system:
- */
-static void
-backend_update_system (PkBackend *backend)
-{
-	egg_debug ("backend: update system");
-	pk_backend_finished (backend);
-}
-
-/**
- * backend_what_provides:
+ * backend_get_packages:
  */
 static void
-backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provides, const gchar *search)
+backend_get_packages (PkBackend *backend, PkBitfield filters)
 {
-	egg_debug ("backend: what provides");
+	egg_debug ("backend: get packages");
 	pk_backend_finished (backend);
 }
 
 /**
- * backend_get_packages:
+ * backend_update_system:
  */
 static void
-backend_get_packages (PkBackend *backend, PkBitfield filters)
+backend_update_system (PkBackend *backend)
 {
-	egg_debug ("backend: get packages");
+	egg_debug ("backend: update system");
 	pk_backend_finished (backend);
 }
 
@@ -301,19 +283,19 @@ PK_BACKEND_OPTIONS (
 	backend_get_updates,			/* get_updates */
 	NULL,			/* install_files */
 	backend_install_packages,		/* install_packages */
-	backend_install_signature,		/* install_signature */
-	backend_refresh_cache,			/* refresh_cache */
+	NULL,		/* install_signature */
+	NULL,			/* refresh_cache */
 	backend_remove_packages,		/* remove_packages */
 	NULL,			/* repo_enable */
 	NULL,			/* repo_set_data */
 	NULL,			/* resolve */
 	NULL,			/* rollback */
 	NULL,			/* search_details */
-	NULL,			/* search_file */
+	backend_search_file,			/* search_file */
 	NULL,			/* search_group */
 	backend_search_name,			/* search_name */
 	backend_update_packages,		/* update_packages */
 	backend_update_system,			/* update_system */
-	backend_what_provides			/* what_provides */
+	NULL			/* what_provides */
 );
 
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 967ca41..b9c9937 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -67,6 +67,8 @@ def cpv_to_id(cpv):
 	Transform the cpv (portage) to a package id (packagekit)
 	'''
 	# TODO: how to get KEYWORDS ?
+	# TODO: repository should be "installed" when installed
+	# TODO: => move to class
 	package, version, rev = portage.pkgsplit(cpv)
 	keywords, repo = portage.portdb.aux_get(cpv, ["KEYWORDS", "repository"])
 
@@ -88,6 +90,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		if lock:
 			self.doLock()
 
+	def package(self, cpv):
+		desc = portage.portdb.aux_get(cpv, ["DESCRIPTION"])
+		if self.vardb.cpv_exists(cpv):
+			info = INFO_INSTALLED
+		else:
+			info = INFO_AVAILABLE
+		PackageKitBaseBackend.package(self, cpv_to_id(cpv), info, desc[0])
+
 	def download_packages(self, directory, pkgids):
 		# TODO: what is directory for ?
 		# TODO: remove wget output
@@ -166,6 +176,31 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			self.files(pkgid, files)
 
+	def search_file(self, filters, key):
+		# TODO: manage filters, error if ~installed ?
+		# TODO: search for exact file name
+		self.status(STATUS_QUERY)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		searchre = re.compile(key, re.IGNORECASE)
+		cpvlist = []
+
+		for cpv in self.vardb.cpv_all():
+			cat, pv = portage.catsplit(cpv)
+			db = portage.dblink(cat, pv, portage.settings["ROOT"], self.portage_settings,
+					treetype="vartree", vartree=self.vardb)
+			contents = db.getcontents()
+			if not contents:
+				continue
+			for file in contents.keys():
+				if searchre.search(file):
+					cpvlist.append(cpv)
+					break
+
+		for cpv in cpvlist:
+			self.package(cpv)
+
 	def search_name(self, filters, key):
 		# TODO: manage filters
 		# TODO: collections ?
@@ -178,12 +213,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		for cp in portage.portdb.cp_all():
 			if searchre.search(cp):
 				for cpv in portage.portdb.match(cp): #TODO: cp_list(cp) ?
-					desc = portage.portdb.aux_get(cpv, ["DESCRIPTION"])
-					if self.vardb.cpv_exists(cpv):
-						info = INFO_INSTALLED
-					else:
-						info = INFO_AVAILABLE
-					self.package(cpv_to_id(cpv), info, desc[0])
+					self.package(cpv)
 
 def main():
 	backend = PackageKitPortageBackend("") #'', lock=True)
commit 216b9df3f54bea6a908a0e3f16f090bdf1135520
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu May 28 20:02:58 2009 +0200

    portage: add get-files function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 6af862d..bec315f 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -148,8 +148,11 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
 static void
 backend_get_files (PkBackend *backend, gchar **package_ids)
 {
-	egg_debug ("backend: get_files");
-	pk_backend_finished (backend);
+	gchar *package_ids_temp;
+
+	package_ids_temp = pk_package_ids_to_text (package_ids);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "get-files", package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -204,16 +207,6 @@ backend_install_signature (PkBackend *backend, PkSigTypeEnum type,
 }
 
 /**
- * backend_install_files:
- */
-static void
-backend_install_files (PkBackend *backend, gboolean trusted, gchar **full_paths)
-{
-	egg_debug ("backend: install files");
-	pk_backend_finished (backend);
-}
-
-/**
  * backend_refresh_cache:
  */
 static void
@@ -306,7 +299,7 @@ PK_BACKEND_OPTIONS (
 	backend_get_requires,			/* get_requires */
 	backend_get_update_detail,		/* get_update_detail */
 	backend_get_updates,			/* get_updates */
-	backend_install_files,			/* install_files */
+	NULL,			/* install_files */
 	backend_install_packages,		/* install_packages */
 	backend_install_signature,		/* install_signature */
 	backend_refresh_cache,			/* refresh_cache */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index e805976..967ca41 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -101,6 +101,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			# is cpv valid
 			if not portage.portdb.cpv_exists(cpv):
+				# self.warning ? self.error ?
 				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "Could not find the package %s" % pkgid)
 				continue
 
@@ -124,6 +125,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			# is cpv valid
 			if not portage.portdb.cpv_exists(cpv):
+				# self.warning ? self.error ?
 				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "Could not find the package %s" % pkgid)
 				continue
 
@@ -138,6 +140,32 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			self.details(cpv_to_id(cpv), license, "GROUP?", desc, homepage, size)
 
+	def get_files(self, pkgids):
+		self.status(STATUS_INFO)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		for pkgid in pkgids:
+			cpv = id_to_cpv(pkgid)
+
+			# is cpv valid
+			if not portage.portdb.cpv_exists(cpv):
+				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkgid)
+				continue
+
+			if not self.vardb.cpv_exists(cpv):
+				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "Package %s is not installed" % pkgid)
+				continue
+
+			cat, pv = portage.catsplit(cpv)
+			db = portage.dblink(cat, pv, portage.settings["ROOT"], self.portage_settings,
+					treetype="vartree", vartree=self.vardb)
+			files = db.getcontents().keys()
+			files = sorted(files)
+			files = ";".join(files)
+
+			self.files(pkgid, files)
+
 	def search_name(self, filters, key):
 		# TODO: manage filters
 		# TODO: collections ?


More information about the PackageKit-commit mailing list