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

Richard Hughes hughsient at kemper.freedesktop.org
Tue Jun 16 02:50:58 PDT 2009


 backends/apt/aptBackend.py            |    6 
 backends/portage/pk-backend-portage.c |  102 +++++--
 backends/portage/portageBackend.py    |  342 +++++++++++++++++++-------
 backends/yum/pk-backend-yum.c         |   14 -
 backends/yum/yumBackend.py            |    2 
 configure.ac                          |    4 
 data/packagekit-catalog.xml.in        |    1 
 data/packagekit-package-list.xml.in   |    1 
 data/packagekit-servicepack.xml.in    |    1 
 docs/html/pk-download.html            |    1 
 po/da.po                              |  106 ++++----
 po/es.po                              |  438 +++++++++++++++++++---------------
 po/ta.po                              |   87 +++---
 13 files changed, 676 insertions(+), 429 deletions(-)

New commits:
commit 37c9e62ed549b6eb42df03aa1170961ed2d15523
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Jun 16 10:48:57 2009 +0100

    To fix make snapshot and giant paths, use ustar-type tarballs

diff --git a/configure.ac b/configure.ac
index 47b6e4e..d640ee2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,9 +7,9 @@ m4_define([pk_micro_version], [9])
 m4_define([pk_version],
           [pk_major_version.pk_minor_version.pk_micro_version])
 
-AC_INIT(PackageKit, [pk_version])
+AC_INIT(PackageKit, [pk_version], [richard at hughsie.com], [PackageKit])
 AC_CONFIG_SRCDIR(src)
-AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+AM_INIT_AUTOMAKE([1.9 tar-ustar])
 AM_CONFIG_HEADER(config.h)
 AC_CONFIG_MACRO_DIR([m4])
 
commit 64997e86e36e1c6964289eec657d1595c92cd534
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Jun 15 17:26:03 2009 +0100

    yum: don't hardcode network access to install or update packages. Fixes rh#506110

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 3e27710..7dabed7 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -265,13 +265,6 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
 {
 	gchar *package_ids_temp;
 
-	/* check network state */
-	if (!pk_backend_is_online (backend)) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot install when offline");
-		pk_backend_finished (backend);
-		return;
-	}
-
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
 	pk_backend_spawn_helper (spawn, "yumBackend.py", "install-packages", package_ids_temp, NULL);
@@ -391,13 +384,6 @@ backend_update_packages (PkBackend *backend, gchar **package_ids)
 {
 	gchar *package_ids_temp;
 
-	/* check network state */
-	if (!pk_backend_is_online (backend)) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot install when offline");
-		pk_backend_finished (backend);
-		return;
-	}
-
 	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
 	pk_backend_spawn_helper (spawn, "yumBackend.py", "update-packages", package_ids_temp, NULL);
commit efdc05d278f2eb7a06940f966e3d1c84e12e1361
Author: aloriel <aloriel at fedoraproject.org>
Date:   Mon Jun 15 07:46:29 2009 +0000

    Sending translation for Spanish

diff --git a/po/es.po b/po/es.po
index 520ac3d..f926873 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,16 +1,18 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
+# 
 # Javier Alejandro Castro <javier.alejandro.castro at gmail.com>, 2008.
-#
+# Jorge González <jorgegonz at svn.gnome.org>, 2009.
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-09 14:03+0000\n"
-"PO-Revision-Date: 2009-04-09 12:35-0300\n"
-"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudio at pereyradiaz.com.ar>\n"
-"Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
+"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
+"product=PackageKit&component=General\n"
+"POT-Creation-Date: 2009-05-27 15:24+0000\n"
+"PO-Revision-Date: 2009-06-14 14:14+0200\n"
+"Last-Translator: Jorge González <jorgegonz at svn.gnome.org>\n"
+"Language-Team: Español <gnome-es-list at gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -32,13 +34,11 @@ msgid "Succeeded"
 msgstr "Existosa"
 
 #. 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 "Verdadero"
 
-#: ../client/pk-console.c:238
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:238 ../client/pk-console.c:405
 msgid "False"
 msgstr "Falso"
 
@@ -59,17 +59,17 @@ msgstr "(segundos)"
 #. TRANSLATORS: this is The command line used to do the action
 #: ../client/pk-console.c:249
 msgid "Command line"
-msgstr "Línea de Comando"
+msgstr "Línea de comandos"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
 #: ../client/pk-console.c:251
 msgid "User ID"
-msgstr "ID del Usuario"
+msgstr "ID del usuario"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
 #: ../client/pk-console.c:258
 msgid "Username"
-msgstr "Nombre de Usuario"
+msgstr "Nombre de usuario"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
 #: ../client/pk-console.c:262
@@ -96,15 +96,14 @@ msgstr "Tipo"
 
 #. 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 "Resúmen"
 
 #. TRANSLATORS: this is the group category name
 #: ../client/pk-console.c:313
 msgid "Category"
-msgstr "categoría"
+msgstr "Categoría"
 
 #. TRANSLATORS: this is group identifier
 #: ../client/pk-console.c:315
@@ -149,7 +148,7 @@ msgstr "Sustituye"
 #. TRANSLATORS: details about the update, the vendor URLs
 #: ../client/pk-console.c:355
 msgid "Vendor"
-msgstr "Vendedor"
+msgstr "Fabricante"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
 #: ../client/pk-console.c:359
@@ -191,8 +190,7 @@ msgstr "Emitido"
 msgid "Updated"
 msgstr "Actualizado"
 
-#: ../client/pk-console.c:476
-#: ../client/pk-console.c:478
+#: ../client/pk-console.c:476 ../client/pk-console.c:478
 msgid "Percentage"
 msgstr "Porcentaje"
 
@@ -218,17 +216,17 @@ msgstr "Se necesita reiniciar una aplicación debido a:"
 #. TRANSLATORS: a package needs to restart they system
 #: ../client/pk-console.c:572
 msgid "Please restart the computer to complete the update."
-msgstr "Por favor, reinicie la computadora para completar la actualización"
+msgstr "Reinicie el equipo para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart the session
 #: ../client/pk-console.c:575
 msgid "Please logout and login to complete the update."
-msgstr "Por favor, salga y vuelva a entrar para completar la actualización."
+msgstr "Cierre la sesión y vuelva a entrar para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart the application
 #: ../client/pk-console.c:578
 msgid "Please restart the application as it is being used."
-msgstr "Por favor, reinicie la aplicación que está usando."
+msgstr "Reinicie la aplicación que está usando."
 
 #. TRANSLATORS: The package is already installed on the system
 #: ../client/pk-console.c:691
@@ -240,23 +238,19 @@ msgstr "El paquete %s ya está instalado"
 #: ../client/pk-console.c:699
 #, c-format
 msgid "The package %s could not be installed: %s"
-msgstr "El paquete %s no se pudo instalar: %s"
+msgstr "No se pudo instalar el paquete %s: %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 "Error interno: %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 "Esta herramienta no pudo instalar los paquetes: %s"
@@ -274,8 +268,7 @@ msgid "This tool could not remove %s: %s"
 msgstr "Esta herramienta no pudo eliminar %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"
@@ -284,23 +277,24 @@ msgstr "Esta herramienta no pudo eliminar los paquetes: %s"
 #. TRANSLATORS: When removing, we might have to remove other dependencies
 #: ../client/pk-console.c:888
 msgid "The following packages have to be removed:"
-msgstr "Los siguientes paquetes se eliminarán:"
+msgstr "Se eliminarán los siguientes paquetes:"
 
 #. TRANSLATORS: We are checking if it's okay to remove a list of packages
 #: ../client/pk-console.c:895
 msgid "Proceed removing additional packages?"
-msgstr "¿De acuerdo con eliminar los paquetes adicionales?"
+msgstr "¿Proceder con la eliminación de los paquetes adicionales?"
 
 #. TRANSLATORS: We did not remove any packages
 #: ../client/pk-console.c:900
 msgid "The package removal was canceled!"
-msgstr "¡La eliminación de paquetes fue cancelada!"
+msgstr "Se canceló la eliminación de paquetes"
 
 #. TRANSLATORS: The package name was not found in any software sources
 #: ../client/pk-console.c:941
 #, c-format
 msgid "This tool could not download the package %s as it could not be found"
-msgstr "Esta herramienta no pudo descargar el paquete %s debido a que no fue encontrado"
+msgstr ""
+"Esta herramienta no pudo descargar el paquete %s debido a que no se encontró"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
 #: ../client/pk-console.c:972
@@ -309,29 +303,25 @@ msgid "This tool could not download the packages: %s"
 msgstr "Esta herramienta no pudo descargar los paquetes: %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 "Esta herramienta no pudo actualizar %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1030
-#: ../client/pk-console.c:1038
+#: ../client/pk-console.c:1030 ../client/pk-console.c:1038
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "Esta herramienta no pudo obtener los requerimientos de %s: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1060 ../client/pk-console.c:1068
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "Esta herramienta no pudo obtener las dependencias de %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 "Esta herramienta no pudo obtener los detalles del paquete %s: %s"
@@ -355,15 +345,13 @@ msgid "File already exists: %s"
 msgstr "El archivo ya existe: %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 "Obteniendo la lista de paquetes"
 
 #. 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"
@@ -376,8 +364,7 @@ msgid "Failed to save to disk"
 msgstr "Falló al guardar en el disco"
 
 #. 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 "El archivo no existe: %s"
@@ -385,12 +372,12 @@ msgstr "El archivo no existe: %s"
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1238
 msgid "Packages to add"
-msgstr "Paquetes a agregar"
+msgstr "Paquetes para añadir"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1246
 msgid "Packages to remove"
-msgstr "Paquetes a eliminar"
+msgstr "Paquetes para eliminar"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1314
@@ -401,12 +388,12 @@ msgstr "No hay paquetes nuevos para instalar"
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1320
 msgid "To install"
-msgstr "A instalar"
+msgstr "Para instalar"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1332
 msgid "Searching for package: "
-msgstr "Buscando el paquete:"
+msgstr "Buscando el paquete: "
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1336
@@ -428,13 +415,15 @@ msgstr "Instalando paquetes"
 #: ../client/pk-console.c:1389
 #, c-format
 msgid "This tool could not find the update details for %s: %s"
-msgstr "Esta herramienta no pudo encontrar los detalles de actualización de %s: %s"
+msgstr ""
+"Esta herramienta no pudo encontrar los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
 #: ../client/pk-console.c:1397
 #, c-format
 msgid "This tool could not get the update details for %s: %s"
-msgstr "Esta herramienta no pudo obtener los detalles de actualización de %s: %s"
+msgstr ""
+"Esta herramienta no pudo obtener los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
 #: ../client/pk-console.c:1443
@@ -474,7 +463,7 @@ msgstr "¿Acepta esta firma?"
 #. TRANSLATORS: This is where the user declined the security key
 #: ../client/pk-console.c:1546
 msgid "The signature was not accepted."
-msgstr "La firma no fue aceptada."
+msgstr "No se aceptó la firma."
 
 #. TRANSLATORS: This a request for a EULA
 #: ../client/pk-console.c:1580
@@ -489,17 +478,17 @@ msgstr "¿Está de acuerdo con esta licencia?"
 #. TRANSLATORS: This is where the user declined the license
 #: ../client/pk-console.c:1591
 msgid "The license was refused."
-msgstr "La licencia fue rechazada."
+msgstr "Se rechazó la licencia."
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
 #: ../client/pk-console.c:1620
 msgid "The daemon crashed mid-transaction!"
-msgstr "El servicio terminó en medio de una transacción!"
+msgstr "El demonio se colgó en medio de una transacción."
 
 #. TRANSLATORS: This is the header to the --help menu
 #: ../client/pk-console.c:1673
 msgid "PackageKit Console Interface"
-msgstr "Interfaz de Consola de PackageKit"
+msgstr "Interfaz de consola de PackageKit"
 
 #. these are commands we can use with pkcon
 #: ../client/pk-console.c:1675
@@ -508,24 +497,22 @@ msgstr "Subcomandos:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1767
-#: ../client/pk-generate-pack.c:185
+#: ../client/pk-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 "Mostrar información extra de depuración"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1770
-#: ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1770 ../client/pk-monitor.c:127
 msgid "Show the program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
 #: ../client/pk-console.c:1773
 msgid "Set the filter, e.g. installed"
-msgstr "Defina el filtro, ej. installado"
+msgstr "Establecer el filtro, ej. instalado"
 
 #. TRANSLATORS: command line argument, work asynchronously
 #: ../client/pk-console.c:1776
@@ -548,10 +535,8 @@ msgid "A search type is required, e.g. name"
 msgstr "Se necesita un tipo de búsqueda, por ejemplo, nombre"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1918
-#: ../client/pk-console.c:1926
-#: ../client/pk-console.c:1934
-#: ../client/pk-console.c:1942
+#: ../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 "Se necesita un término de búsqueda"
 
@@ -563,7 +548,7 @@ msgstr "Tipo de búsqueda inválido"
 #. TRANSLATORS: the user did not specify what they wanted to install
 #: ../client/pk-console.c:1954
 msgid "A package name or filename to install is required"
-msgstr "Se requiere un nombre de paquete o nombre de archivo a instalar"
+msgstr "Se requiere un nombre de paquete o nombre de archivo para instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
 #: ../client/pk-console.c:1962
@@ -573,12 +558,15 @@ msgstr "Se necesita un tipo, key_id y package_id"
 #. TRANSLATORS: the user did not specify what they wanted to remove
 #: ../client/pk-console.c:1970
 msgid "A package name to remove is required"
-msgstr "Necesita dar un nombre de paquete a eliminar"
+msgstr "Necesita un nombre de paquete para eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
 #: ../client/pk-console.c:1977
-msgid "A destination directory and then the package names to download are required"
-msgstr "Debe especificar el directorio destino y luego los nombres paquetes a descargar"
+msgid ""
+"A destination directory and then the package names to download are required"
+msgstr ""
+"Se debe especificar el directorio destino y luego los nombres paquetes para "
+"descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
 #: ../client/pk-console.c:1983
@@ -598,28 +586,27 @@ msgstr "Se necesita un identificador de transacción (tid)"
 #. TRANSLATORS: The user did not specify a package name
 #: ../client/pk-console.c:2015
 msgid "A package name to resolve is required"
-msgstr "Se necesita un nombre de paquete a resolver"
+msgstr "Se necesita un nombre de paquete para resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2023
-#: ../client/pk-console.c:2031
+#: ../client/pk-console.c:2023 ../client/pk-console.c:2031
 msgid "A repository name is required"
 msgstr "Se necesita un nombre de repositorio"
 
 #. TRANSLATORS: The user didn't provide any data
 #: ../client/pk-console.c:2039
 msgid "A repo name, parameter and value are required"
-msgstr "Debe especificar un nombre de repositorio, parametro y valor"
+msgstr "Debe especificar un nombre de repositorio, parámetro y valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
 #: ../client/pk-console.c:2052
 msgid "An action, e.g. 'update-system' is required"
-msgstr "Debe especificar una acción, por ejemplo, 'update-system'"
+msgstr "Debe especificar una acción, por ejemplo, «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
 #: ../client/pk-console.c:2058
 msgid "A correct role is required"
-msgstr "Se necesita el rol correcto"
+msgstr "Se necesita un rol correcto"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
 #: ../client/pk-console.c:2064
@@ -628,19 +615,16 @@ msgstr "Falló al obtener la hora de la última vez que se completó esta acció
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2073
-#: ../client/pk-console.c:2084
-#: ../client/pk-console.c:2092
-#: ../client/pk-console.c:2108
-#: ../client/pk-console.c:2116
-#: ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c: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 "Se necesita un nombre de paquete"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
 #: ../client/pk-console.c:2100
 msgid "A package provide string is required"
-msgstr "Se necesita la cadena de lo que provee el paquete"
+msgstr "Se necesita la cadena de lo que proporciona el paquete"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
 #: ../client/pk-console.c:2124
@@ -648,16 +632,15 @@ msgid "A list file name to create is required"
 msgstr "Se necesita un nombre de archivo de la lista"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2133
-#: ../client/pk-console.c:2142
+#: ../client/pk-console.c:2133 ../client/pk-console.c:2142
 msgid "A list file to open is required"
-msgstr "Se necesita un archivo de lista a abrir"
+msgstr "Se necesita un archivo de lista para abrir"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2195
 #, c-format
 msgid "Option '%s' is not supported"
-msgstr "La opción '%s' no está soportada"
+msgstr "La opción «%s» no está soportada"
 
 #. TRANSLATORS: User does not have permission to do this
 #: ../client/pk-console.c:2208
@@ -667,7 +650,7 @@ msgstr "Privilegios incorrectos para esta operación"
 #. TRANSLATORS: Generic failure of what they asked to do
 #: ../client/pk-console.c:2211
 msgid "Command failed"
-msgstr "Commando falló"
+msgstr "Falló el comando"
 
 #. TRANSLATORS: This is the state of the transaction
 #: ../client/pk-generate-pack.c:101
@@ -687,12 +670,14 @@ msgstr "Descargando dependencias"
 #. 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 "Ponga el nombre del archivo de dependencias a excluir"
+msgstr "Establezca el nombre del archivo de dependencias para excluir"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:191
-msgid "The output file or directory (the current directory is used if ommitted)"
-msgstr "El directorio o archivo de salida (el directorio actual se usará si se omite)"
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
+msgstr ""
+"El directorio o archivo de salida (se usará si se omite el directorio actual)"
 
 #. TRANSLATORS: put a list of packages in the pack
 #: ../client/pk-generate-pack.c:194
@@ -721,63 +706,73 @@ msgstr "Se necesita un directorio o nombre de archivo de salida"
 
 #. 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 "El administrador de paquetes no puede realizar este tipo de operación."
+msgstr "El gestor de paquetes no puede realizar este tipo de operación."
+
+#. 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 ""
+"No se pueden crear paquetes de servicio ya que PackageKit no se construyó "
+"con soporte para 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 "Si especifica un archivo, el nombre del paquete de servicio debe finalizar con"
+msgstr ""
+"Si especifica un archivo, el nombre del paquete de servicio debe finalizar "
+"con"
 
 #. 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 "Ya existe un paquete con ese nombre, ¿desea sobreescribirlo ?"
+msgstr "Ya existe un paquete con ese nombre, ¿desea sobreescribirlo?"
 
 #. 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 "El paquete no fue sobrescrito."
+msgstr "No se sobreescribió el paquete."
 
 #. 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 "No se pudo crear el directorio:"
+msgstr "Falló al crear el directorio:"
 
 #. 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 "Falló al abrir la lista de paquetes."
 
 #. 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 "Buscando el nombre de paquete."
 
 #. 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 "Falló al buscar el paquete '%s': %s"
+msgstr "Falló al buscar el paquete «%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 "Creando el paquete de servicios..."
+msgstr "Creando el paquete de servicio..."
 
 #. 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 "El paqute de servicio '%s' fue creado"
+msgstr "Paquete de servicio «%s» creado"
 
 #. 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 "Falló al crear '%s': %s"
+msgstr "Falló al crear «%s»: %s"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
 #: ../client/pk-monitor.c:143
@@ -793,91 +788,91 @@ msgstr "No se pudo encontrar el paquete"
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
 #: ../client/pk-tools-common.c:130
 msgid "More than one package matches:"
-msgstr "Más de un paquete coincidentes:"
+msgstr "Coincide más de un paquete:"
 
 #. TRANSLATORS: This finds out which package in the list to use
 #: ../client/pk-tools-common.c:137
 msgid "Please choose the correct package: "
-msgstr "Por favor, elija el paquete correcto: "
+msgstr "Elija el paquete correcto: "
 
 #: ../client/pk-tools-common.c:162
 #, c-format
 msgid "Please enter a number from 1 to %i: "
-msgstr "Por favor ingrese un número de 1 a %i:"
+msgstr "Introduzca un número de 1 a %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 "Falló al buscar el archivo"
 
 #. 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 "Fállo al iniciar:"
+msgstr "Falló al iniciar:"
 
 #. 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 "Comando PackageKit no encontrado"
+msgstr "No se encontró el comando 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 "Comando no encontrado."
 
 #. 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 "Un comando similar es:"
 
 #. 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 "Ejecutar un comando similar:"
 
 #. 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 "Los comandos similares son:"
 
 #. 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 "Por favor, elija un comando a ejecutar"
+msgstr "Elija un comando para ejecutar"
 
 #. 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 "El paquete que provee este archivo es:"
+msgstr "El paquete que proporciona este archivo es:"
 
 #. 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 "Instalar el paquete '%s' para proveer el comando '%s'?"
+msgstr "¿Instalar el paquete «%s» para proporcionar el comando «%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 "Los paquetes que proveen este archivo son:"
+msgstr "Los paquetes que proporcionan este archivo son:"
 
 #. 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 "Los paquetes posibles son:"
+msgstr "Los posibles paquetes son:"
 
 #. 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 "Por favor, elija un paquete a instalar"
+msgstr "Elija un paquete para instalar"
 
 #. TRANSLATORS: when we are getting data from the daemon
 #: ../contrib/browser-plugin/src/contents.cpp:298
 msgid "Getting package information..."
-msgstr "Extrayendo información de paquetes..."
+msgstr "Extrayendo información del paquete..."
 
 #. TRANSLATORS: run an applicaiton
 #: ../contrib/browser-plugin/src/contents.cpp:304
@@ -894,12 +889,12 @@ msgstr "Versión instalada"
 #: ../contrib/browser-plugin/src/contents.cpp:318
 #, c-format
 msgid "Run version %s now"
-msgstr "Correr la versión %s ahora"
+msgstr "Ejecutar la versión %s ahora"
 
 #. TRANSLATORS: run the application now
 #: ../contrib/browser-plugin/src/contents.cpp:324
 msgid "Run now"
-msgstr "Correr ahora"
+msgstr "Ejecutar ahora"
 
 #. TRANSLATORS: update to a new version of the package
 #: ../contrib/browser-plugin/src/contents.cpp:330
@@ -934,11 +929,11 @@ msgstr "Catálogo de PackageKit"
 
 #: ../data/packagekit-package-list.xml.in.h:1
 msgid "PackageKit Package List"
-msgstr "Lista de Paquetes de PackageKit"
+msgstr "Lista de paquetes de PackageKit"
 
 #: ../data/packagekit-servicepack.xml.in.h:1
 msgid "PackageKit Service Pack"
-msgstr "Grupo de Servicio de PackageKit"
+msgstr "Paquete de servicio de PackageKit"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:1
 msgid "Accept EULA"
@@ -946,47 +941,57 @@ msgstr "Aceptar EULA"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:2
 msgid "Authentication is required to accept a EULA"
-msgstr "Se requiere autenticación para aceptar una EULA"
+msgstr "Se necesita autenticación para aceptar una EULA"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to cancel a task that was not started by yourself"
-msgstr "Se requiere autenticación para cancelar una tarea que no fue iniciada por usted"
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr "Se necesita autenticación para cancelar una tarea que no inició usted"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:4
 msgid "Authentication is required to change software source parameters"
-msgstr "Se requiere autenticación para cambiar los parametros de fuente de software"
+msgstr ""
+"Se necesita autenticación para cambiar los parámetros de fuente de software"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to consider a key used for signing packages as trusted"
-msgstr "Se requiere autenticación para considerar una llave usada para firmar paquetes como confiable"
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
+msgstr ""
+"Se necesita autenticación para considerar una clave usada para firmar "
+"paquetes como confiable"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:6
 msgid "Authentication is required to install a signed package"
-msgstr "Se requiere autenticación para instalar un paquete firmado"
+msgstr "Se necesita autenticación para instalar un paquete firmado"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:7
 msgid "Authentication is required to install an untrusted package"
-msgstr "Se requiere autenticación para instalar un paquete no confiable"
+msgstr "Se necesita autenticación para instalar un paquete no confiable"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:8
 msgid "Authentication is required to refresh the system sources"
-msgstr "Se requiere autenticación para refrescar las fuentes de sistema"
+msgstr "Se necesita autenticación para refrescar las fuentes del sistema"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
 msgid "Authentication is required to remove packages"
-msgstr "Se requiere autenticación para eliminar paquetes"
+msgstr "Se necesita autenticación para eliminar paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to rollback a transaction"
-msgstr "Se requiere autenticación para deshacer una transaccion"
+msgstr "Se necesita autenticación para deshacer una transacción"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to set the network proxy used for downloading packages"
-msgstr "Se requiere autenticación para cambiar el proxy de red usado para descargar paquetes"
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
+msgstr ""
+"Se necesita autenticación para cambiar el proxy de red usado para descargar "
+"paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
 msgid "Authentication is required to update packages"
-msgstr "Se requiere autenticación para actualizar paquetes"
+msgstr "Se necesita autenticación para actualizar paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Cancel foreign task"
@@ -994,7 +999,7 @@ msgstr "Cancelar tarea externa"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:14
 msgid "Change software source parameters"
-msgstr "Cambiar los parametros de fuente de software"
+msgstr "Cambiar los parámetros de fuente de software"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:15
 msgid "Install signed package"
@@ -1006,7 +1011,7 @@ msgstr "Instalar archivo local no-confiable"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:17
 msgid "Refresh system sources"
-msgstr "Refrescar fuentes de sistema"
+msgstr "Refrescar las fuentes del sistema"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:18
 msgid "Remove package"
@@ -1014,11 +1019,11 @@ msgstr "Eliminar paquete"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
 msgid "Rollback to a previous transaction"
-msgstr "Deshacer hasta una transaccion previa"
+msgstr "Deshacer hasta una transacción anterior"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:20
 msgid "Set network proxy"
-msgstr "Cambiar proxy de red"
+msgstr "Establecer el proxy de la red"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:21
 msgid "Trust a key used for signing packages"
@@ -1031,7 +1036,7 @@ msgstr "Actualizar paquetes"
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
-msgstr "El arranque falló debito a políticas de seguridad en esta máquina."
+msgstr "El arranque falló debido a políticas de seguridad en esta máquina."
 
 #. TRANSLATORS: only two ways this can fail...
 #: ../src/pk-main.c:89
@@ -1041,199 +1046,254 @@ msgstr "Esto puede pasar por dos razones:"
 #. 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 "El usuario correcto no esta lanzando el ejecutable (usualmente root)"
+msgstr "El usuario correcto no esta lanzando el ejecutable (generalmente root)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
-msgstr "El archivo org.freedesktop.PackageKit.conf no está instalado en el directorio del sistema:"
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr ""
+"El archivo org.freedesktop.PackageKit.conf no está instalado en el "
+"directorio del sistema:"
 
 #. 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 "Administrador de paquetes a usar, ej. dummy"
+msgstr "Administrador de paquetes que usar, ej. 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 "Demonizar y desadjuntar de la terminal"
+msgstr "Demonizar y desacoplar de la terminal"
 
 #. 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 "Deshabilitar el idle timer"
+msgstr "Desactivar el contador de inactividad"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
-msgstr "Mostrar version y salir"
+msgstr "Mostrar versión y salir"
 
 #. 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 "Salir luego de una pequeña pausa"
+msgstr "Salir después de una pequeña pausa"
 
 #. 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 "Salir luego de que el motor este cargado"
+msgstr "Salir después de que el motor este cargado"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "Servicio 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 "No se pudo conectar al bus del sistema"
+msgstr "No se pudo conectar con el bus del sistema"
 
-#. 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 "Error intentando arrancar:"
+msgstr "Error intentando iniciar:"
 
 #~ msgid "Main cache file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Archivo caché principal a usar (si no se especifica, se usará el "
 #~ "predeterminado)"
+
 #~ msgid "Source cache file to add to the main database"
 #~ msgstr "Archivo caché fuente para agregar a la base de datos principal"
+
 #~ msgid "Icon directory"
 #~ msgstr "Directorio de Iconos"
+
 #~ msgid "Name of the remote repo"
 #~ msgstr "Nombre del repo remoto"
+
 #~ msgid "PackageKit Application Database Installer"
 #~ msgstr "Instalador de la Base de Datos de Aplicaciones de PackageKit"
+
 #~ msgid "Main database file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Base de datos principal a usar (si no se especifica se usará el "
 #~ "predeterminado)"
+
 #~ msgid "You need to specify a search type, e.g. name"
 #~ msgstr "Debe especificar el tipo de búsqueda, por ejemplo, nombre"
+
 #~ msgid "You need to specify a search term"
 #~ msgstr "Debe especificar un término de búsqueda"
+
 #~ msgid "You need to specify a package or file to install"
 #~ msgstr "Debe especificar un paquete o archivo a instalar"
+
 #~ msgid "You need to specify a package to remove"
 #~ msgstr "Debe especificar un paquete a eliminar"
+
 #~ msgid "You need to specify a package name to resolve"
 #~ msgstr "Debe especificar un nombre de paquete a resolver"
+
 #~ msgid "You need to specify a repository name"
 #~ msgstr "Debe especificar un nombre de repositorio"
+
 #~ msgid "You need to specify a correct role"
 #~ msgstr "Debe especificar un rol correcto"
+
 #~ msgid "Failed to get last time"
 #~ msgstr "Fállo al obtener última hora"
+
 #~ msgid "You need to specify a package to find the details for"
 #~ msgstr "Debe especificar un paquete para el que buscar la descripción"
+
 #~ msgid "You need to specify a package to find the files for"
 #~ msgstr "Debe especificar un paquete para el que buscar los archivos"
+
 #~ msgid "You need to specify a list file to create"
 #~ msgstr "Debe especificar un archivo de lista a crear"
+
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Debe especificar un archivo de lista a abrir"
+
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "Esta herramienta no pudo eliminar los paquetes: '%s'"
+
 #~ msgid "Install local file"
 #~ msgstr "Instalar archivo local"
+
 #~ msgid "Okay to import key?"
 #~ msgstr "¿De acuerto con importer la clave?"
+
 #~ msgid "Did not import key"
 #~ msgstr "No se importó la clave"
+
 #~ msgid "Do you agree?"
 #~ msgstr "¿Está de acuerdo?"
+
 #~ msgid "Could not find package to remove"
 #~ msgstr "No se pudo encontrar el paquete a eliminar"
+
 #~ msgid "Cancelled!"
 #~ msgstr "Cancelado!"
+
 #~ msgid "Could not find package to update"
 #~ msgstr "No se pudo encontrar el paquete a actualizar"
+
 #~ msgid "Could not find what packages require"
 #~ msgstr "No se pudo encontrar cuales paquetes requiere este paquete"
+
 #~ msgid "Could not find details for"
 #~ msgstr "No se pudieron obtener los detalles de "
+
 #~ msgid "Could not find a package match"
 #~ msgstr "No se pudo encontrar un paquete coincidente"
 
 #, fuzzy
 #~ msgid "Could not set database readonly"
 #~ msgstr "No se pudo abrir la base de datos: %s"
+
 #~ msgid "Could not open database: %s"
 #~ msgstr "No se pudo abrir la base de datos: %s"
+
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Probablemente necesita ejecutar este programa como el usuario root"
+
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Ejecutar %s</span>"
+
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ejecutar versión %s ahora</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ejecutar ahora</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Actualizar a la versión %s</span>"
+
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Instalar %s Ahora</"
 #~ "span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Versión: %s</small>"
+
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr "falló la descarga: id de paquete inválido y/o directorio"
+
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "No se pudo encontrar un archivo de metadatos válido"
+
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Listo para descargar los paquetes adicionales"
+
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Debe especificar el nombre de grupo y los paquetes a agrupar\n"
+
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Nombre inválido para el paquete de servicio. Especifique un nombre con la "
 #~ "extensión .servicepack\n"
+
 #~ msgid "Authentication is required to install a local file"
 #~ msgstr "Se requiere autenticación para instalar un archivo local"
+
 #~ msgid "Authentication is required to install a security signature"
 #~ msgstr "Se requiere autenticación para instalar una firma de seguridad"
+
 #~ msgid "Authentication is required to update all packages"
 #~ msgstr "Se requiere autenticación para actualizar todos los paquetes"
+
 #~ msgid "Install security signature"
 #~ msgstr "Instalar firma de seguridad"
+
 #~ msgid "Refresh package lists"
 #~ msgstr "Refrescar lista de paquetes"
+
 #~ msgid "Update all packages"
 #~ msgstr "Actualizar todos los paquetes"
+
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
 #~ msgstr ""
 #~ "No se pudo encontrar un paquete con ese nombre para instalar, o el "
 #~ "paquete ya está instalado"
+
 #~ msgid "Could not find a package with that name to update"
 #~ msgstr "No se pudo encontrar un paquete con ese nombre para actualizar"
+
 #~ msgid "Could not find a description for this package"
 #~ msgstr "No se pudo encontrar una descripcion para este paquete"
+
 #~ msgid "You need to specify a package to find the description for"
 #~ msgstr "Debe especificar un paquete para el que buscar la descripción"
 
commit fdfbd193e8c5e21bc381b805c5e06ee40000a495
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jun 12 10:30:22 2009 +0100

    Add subclasses to our registered mime-types. Fixes rh#504137

diff --git a/data/packagekit-catalog.xml.in b/data/packagekit-catalog.xml.in
index d25210f..df04ca8 100644
--- a/data/packagekit-catalog.xml.in
+++ b/data/packagekit-catalog.xml.in
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
   <mime-type type="application/x-catalog">
+    <sub-class-of type="text/plain"/>
     <_comment>PackageKit Catalog</_comment>
     <glob pattern="*.catalog"/>
   </mime-type>
diff --git a/data/packagekit-package-list.xml.in b/data/packagekit-package-list.xml.in
index f08d411..7b063b3 100644
--- a/data/packagekit-package-list.xml.in
+++ b/data/packagekit-package-list.xml.in
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
   <mime-type type="application/x-package-list">
+    <sub-class-of type="text/plain"/>
     <_comment>PackageKit Package List</_comment>
     <glob pattern="*.package-list"/>
   </mime-type>
diff --git a/data/packagekit-servicepack.xml.in b/data/packagekit-servicepack.xml.in
index 65b5d12..0bcd1d8 100644
--- a/data/packagekit-servicepack.xml.in
+++ b/data/packagekit-servicepack.xml.in
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
   <mime-type type="application/x-servicepack">
+    <sub-class-of type="application/x-tar"/>
     <_comment>PackageKit Service Pack</_comment>
     <glob pattern="*.servicepack"/>
   </mime-type>
commit 5891b702a9cd50abd8f52195ed148b6e5e33a296
Merge: 1b90ec8... 2f36a48...
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun Jun 14 14:56:45 2009 +0200

    Merge branch 'master' of git+ssh://volkmar@git.packagekit.org/srv/git/PackageKit

commit 1b90ec870a51130599046625cebbaff7b8164084
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun Jun 14 14:56:29 2009 +0200

    portage: add refresh_cache function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 58d5fd5..d5bf58e 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -211,6 +211,23 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
 }
 
 /**
+ * backend_refresh_cache:
+ */
+static void
+backend_refresh_cache (PkBackend *backend, gboolean force)
+{ 
+	/* check network state */
+	if (!pk_backend_is_online (backend)) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot refresh cache whilst offline");
+		pk_backend_finished (backend);
+		return;
+	}
+
+	/* TODO: force ? */
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "refresh-cache", /*pk_backend_bool_to_text(force),*/ NULL);
+}
+
+/**
  * backend_remove_packages:
  */
 static void
@@ -364,7 +381,7 @@ PK_BACKEND_OPTIONS (
 	NULL,			/* install_files */
 	backend_install_packages,		/* install_packages */
 	NULL, // TODO: choose			/* install_signature */
-	NULL, // TODO: choose			/* refresh_cache */
+	backend_refresh_cache,			/* refresh_cache */
 	backend_remove_packages,		/* remove_packages */
 	NULL, // TODO: choose			/* repo_enable */
 	NULL, // TODO: probably not			/* repo_set_data */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index aa48e22..fabe5dd 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -560,6 +560,21 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 					favorites, depgraph.schedulerGraph())
 			mergetask.merge()
 
+	def refresh_cache(self):
+		self.status(STATUS_REFRESH_CACHE)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		myopts = {} # TODO: --quiet ?
+		myopts.pop("--quiet", None)
+		myopts["--quiet"] = True
+		settings, trees, mtimedb = _emerge.load_emerge_config()
+		spinner = _emerge.stdout_spinner()
+		try:
+			_emerge.action_sync(settings, trees, mtimedb, myopts, "")
+		finally:
+			self.percentage(100)
+
 	def remove_packages(self, allowdep, pkgs):
 		# can't use allowdep: never removing dep
 		# TODO: filters ?
commit a4c2de56e9dbc5a61063be6107aee8b36af6e9af
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sat Jun 13 16:28:38 2009 +0200

    portage: get-details do not prompt size when pacakge is installed

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 43bf6f7..aa48e22 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -247,6 +247,11 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		if lock:
 			self.doLock()
 
+	def is_installed(self, cpv):
+		if self.vardb.cpv_exists(cpv):
+			return True
+		return False
+
 	def cpv_to_id(self, cpv):
 		'''
 		Transform the cpv (portage) to a package id (packagekit)
@@ -278,14 +283,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			version = version + "-" + rev
 
 		# if installed, repo should be 'installed', packagekit rule
-		if self.vardb.cpv_exists(cpv):
+		if self.is_installed(cpv):
 			repo = "installed"
 
 		return get_package_id(package, version, ' '.join(keywords), repo)
 
 	def package(self, cpv):
 		desc = portage.portdb.aux_get(cpv, ["DESCRIPTION"])
-		if self.vardb.cpv_exists(cpv):
+		if self.is_installed(cpv):
 			info = INFO_INSTALLED
 		else:
 			info = INFO_AVAILABLE
@@ -356,13 +361,16 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			homepage, desc, license = portage.portdb.aux_get(cpv,
 					["HOMEPAGE", "DESCRIPTION", "LICENSE"])
-			# get size
-			ebuild = portage.portdb.findname(cpv)
-			if ebuild:
-				dir = os.path.dirname(ebuild)
-				manifest = portage.manifest.Manifest(dir, portage.settings["DISTDIR"])
-				uris = portage.portdb.getFetchMap(cpv)
-				size = manifest.getDistfilesSize(uris)
+
+			# size should be prompted only if not installed
+			size = 0
+			if not self.is_installed(cpv):
+				ebuild = portage.portdb.findname(cpv)
+				if ebuild:
+					dir = os.path.dirname(ebuild)
+					manifest = portage.manifest.Manifest(dir, portage.settings["DISTDIR"])
+					uris = portage.portdb.getFetchMap(cpv)
+					size = manifest.getDistfilesSize(uris)
 
 			self.details(self.cpv_to_id(cpv), license, get_group(cpv),
 					desc, homepage, size)
commit 51297db607e8edfdc749112bf152344f0fdcd435
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sat Jun 13 02:01:49 2009 +0200

    portage: add group in get-details, add installed info in packageid and keywords info

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 8235d52..43bf6f7 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -223,20 +223,16 @@ def id_to_cpv(pkgid):
 
 	return ret[0] + "-" + ret[1]
 
-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"])
+# TODO: move to class ?
+def get_group(cp):
+	''' Return the group of the package
+	Argument could be cp or cpv. '''
+	cat = portage.catsplit(cp)[0]
+	if SECTION_GROUP_MAP.has_key(cat):
+		return SECTION_GROUP_MAP[cat]
 
-	if rev != "r0":
-		version = version + "-" + rev
+	return GROUP_UNKNOWN
 
-	return get_package_id(package, version, "KEYWORD", repo)
 
 class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
@@ -251,13 +247,49 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		if lock:
 			self.doLock()
 
+	def cpv_to_id(self, cpv):
+		'''
+		Transform the cpv (portage) to a package id (packagekit)
+		'''
+		# TODO: manage SLOTS !
+		package, version, rev = portage.pkgsplit(cpv)
+		pkg_keywords, repo = portage.portdb.aux_get(cpv, ["KEYWORDS", "repository"])
+
+		pkg_keywords = pkg_keywords.split()
+		sys_keywords = self.portage_settings.configdict["defaults"].get("ACCEPT_KEYWORDS").split()
+		keywords = []
+
+		for x in sys_keywords:
+			if x in pkg_keywords:
+				keywords.append(x)
+
+		# if no keywords, check in package.keywords
+		if not keywords:
+			for _, keys in self.portage_settings.pkeywordsdict.get(portage.dep_getkey(cpv)).iteritems():
+				for x in keys:
+					keywords.append(x)
+
+		if not keywords:
+			keywords.append("no keywords")
+			self.message(MESSAGE_UNKNOWN, "No keywords have been found for %s" % cpv)
+
+		# don't want to see -r0
+		if rev != "r0":
+			version = version + "-" + rev
+
+		# if installed, repo should be 'installed', packagekit rule
+		if self.vardb.cpv_exists(cpv):
+			repo = "installed"
+
+		return get_package_id(package, version, ' '.join(keywords), repo)
+
 	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])
+		PackageKitBaseBackend.package(self, self.cpv_to_id(cpv), info, desc[0])
 
 	def get_depends(self, filters, pkgids, recursive):
 		# TODO: manage filters
@@ -307,22 +339,23 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 				for child in children:
 					self.package(child[2])
 
-	def get_details(self, pkgids):
+	def get_details(self, pkgs):
 		self.status(STATUS_INFO)
 		self.allow_cancel(True)
 		self.percentage(None)
 
-		for pkgid in pkgids:
-			cpv = id_to_cpv(pkgid)
+		for pkg in pkgs:
+			cpv = id_to_cpv(pkg)
 
 			# 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)
+						"Could not find the package %s" % pkg)
 				continue
 
-			homepage, desc, license = portage.portdb.aux_get(cpv, ["HOMEPAGE", "DESCRIPTION", "LICENSE"])
+			homepage, desc, license = portage.portdb.aux_get(cpv,
+					["HOMEPAGE", "DESCRIPTION", "LICENSE"])
 			# get size
 			ebuild = portage.portdb.findname(cpv)
 			if ebuild:
@@ -331,7 +364,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 				uris = portage.portdb.getFetchMap(cpv)
 				size = manifest.getDistfilesSize(uris)
 
-			self.details(cpv_to_id(cpv), license, "GROUP?", desc, homepage, size)
+			self.details(self.cpv_to_id(cpv), license, get_group(cpv),
+					desc, homepage, size)
 
 	def get_files(self, pkgids):
 		self.status(STATUS_INFO)
@@ -498,7 +532,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			retval, favorites = depgraph.select_files(["="+cpv])
 			if not retval:
 				self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
-				return
+				continue
 
 			if "resume" in mtimedb and \
 			"mergelist" in mtimedb["resume"] and \
@@ -644,13 +678,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		self.percentage(None)
 
 		for cp in portage.portdb.cp_all():
-			category = portage.catsplit(cp)[0]
-			if SECTION_GROUP_MAP.has_key(category):
-				group_found = SECTION_GROUP_MAP[category]
-			else:
-				group_found = GROUP_UNKNOWN
-
-			if group_found == group:
+			if get_group(cp) == group:
 				for cpv in portage.portdb.match(cp):
 					self.package(cpv)
 
commit 12bc89e66fb3678ce9534344ff6bdbdffab0ab34
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Fri Jun 12 21:15:24 2009 +0200

    portage: update install-packages, cleaning and world list compatibility

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index c891604..8235d52 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -289,7 +289,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
 			retval, fav = depgraph.select_files(["="+cpv])
 			if not retval:
-				print fav
 				self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
 				continue
 
@@ -476,24 +475,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		self.allow_cancel(True) # TODO: sure ?
 		self.percentage(None)
 
-		myopts = {} # TODO: --nodepends ?
-		spinner = ""
-		favorites = []
-		settings, trees, mtimedb = _emerge.load_emerge_config()
-		spinner = _emerge.stdout_spinner()
-		rootconfig = _emerge.RootConfig(self.portage_settings, trees["/"], portage._sets.load_default_config(self.portage_settings, trees["/"]))
-
-		if "resume" in mtimedb and \
-		"mergelist" in mtimedb["resume"] and \
-		len(mtimedb["resume"]["mergelist"]) > 1:
-			mtimedb["resume_backup"] = mtimedb["resume"]
-			del mtimedb["resume"]
-			mtimedb.commit()
-
-		mtimedb["resume"]={}
-		mtimedb["resume"]["myopts"] = myopts.copy()
-		mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
-
 		for pkg in pkgs:
 			# check for installed is not mandatory as there are a lot of reason
 			# to re-install a package (USE/{LD,C}FLAGS change for example) (or live)
@@ -505,21 +486,37 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkg)
 				continue
 
-			db_keys = list(portage.portdb._aux_cache_keys)
-			metadata = izip(db_keys, portage.portdb.aux_get(cpv, db_keys))
-			package = _emerge.Package(type_name="ebuild", root_config=rootconfig, cpv=cpv, metadata=metadata, operation="merge")
+			# inits
+			myopts = {} # TODO: --nodepends ?
+			spinner = ""
+			favorites = []
+			settings, trees, mtimedb = _emerge.load_emerge_config()
+			myparams = _emerge.create_depgraph_params(myopts, "")
+			spinner = _emerge.stdout_spinner()
 
-			# TODO: needed ?
-			pkgsettings = portage.config(clone=settings)
-			pkgsettings.setcpv(package)
-			package.metadata['USE'] = pkgsettings['PORTAGE_USE']
+			depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
+			retval, favorites = depgraph.select_files(["="+cpv])
+			if not retval:
+				self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
+				return
+
+			if "resume" in mtimedb and \
+			"mergelist" in mtimedb["resume"] and \
+			len(mtimedb["resume"]["mergelist"]) > 1:
+				mtimedb["resume_backup"] = mtimedb["resume"]
+				del mtimedb["resume"]
+				mtimedb.commit()
+
+			mtimedb["resume"]={}
+			mtimedb["resume"]["myopts"] = myopts.copy()
+			mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
 
 			# TODO: check for writing access before calling merge ?
-#			try:
-			mergetask = _emerge.Scheduler(settings, trees, mtimedb, myopts, spinner, [package], favorites, package)
+
+			mergetask = _emerge.Scheduler(settings, trees, mtimedb,
+					myopts, spinner, depgraph.altlist(),
+					favorites, depgraph.schedulerGraph())
 			mergetask.merge()
-#			except:
-#				self.error(ERROR_LOCAL_INSTALL_FAILED, "Can't install %s" % cpv)
 
 	def remove_packages(self, allowdep, pkgs):
 		# can't use allowdep: never removing dep
commit e64887bd12dec27fda9ea394f4a4459ea0000034
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Fri Jun 12 01:10:06 2009 +0200

    portage: removing download-packages and fixing bugs in get-depends, get-requires and remove-packages

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 7dd3738..58d5fd5 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -128,19 +128,6 @@ backend_cancel (PkBackend *backend)
 }
 
 /**
- * backend_download_packages:
- */
-static void
-backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
-{
-	gchar *package_ids_temp;
-
-	package_ids_temp = pk_package_ids_to_text (package_ids);
-	pk_backend_spawn_helper (spawn, BACKEND_FILE, "download-packages", directory, package_ids_temp, NULL);
-	g_free (package_ids_temp);
-}
-
-/**
  * backend_get_depends:
  */
 static void
@@ -363,7 +350,7 @@ PK_BACKEND_OPTIONS (
 	backend_get_filters,			/* get_filters */
 	NULL,			/* get_mime_types */
 	backend_cancel,				/* cancel */
-	backend_download_packages,		/* download_packages */
+	NULL,		/* download_packages */
 	NULL,					/* get_categories */
 	backend_get_depends,			/* get_depends */
 	backend_get_details,			/* get_details */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 553a37d..c891604 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -259,33 +259,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			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
-		# TODO: percentage
-		self.status(STATUS_DOWNLOAD)
-		self.allow_cancel(True)
-		percentage = 0
-
-		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
-
-			# TODO: FEATURES=-fetch ?
-
-			try:
-				uris = portage.portdb.getFetchMap(cpv)
-
-				if not portage.fetch(uris, self.portage_settings, fetchonly=1, try_mirrors=1):
-					self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
-			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 ?
@@ -305,7 +278,10 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 						"Could not find the package %s" % pkgid)
 				continue
 
-			myopts = "--emptytree"
+			myopts = {}
+			if recursive:
+				myopts.pop("--emptytree", None)
+				myopts["--emptytree"] = True
 			spinner = ""
 			settings, trees, mtimedb = _emerge.load_emerge_config()
 			myparams = _emerge.create_depgraph_params(myopts, "")
@@ -313,6 +289,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			depgraph = _emerge.depgraph(settings, trees, myopts, myparams, spinner)
 			retval, fav = depgraph.select_files(["="+cpv])
 			if not retval:
+				print fav
 				self.error(ERROR_INTERNAL_ERROR, "Wasn't able to get dependency graph")
 				continue
 
@@ -320,7 +297,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 				# printing the whole tree
 				pkgs = depgraph.altlist(reversed=1)
 				for pkg in pkgs:
-					self.package(pkg[2])
+					if pkg[2] != cpv:
+						self.package(pkg[2])
 			else: # !recursive
 				# only printing child of the root node
 				# actually, we have "=cpv" -> "cpv" -> children
@@ -421,7 +399,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			if not self.vardb.match(cpv):
 				self.error(ERROR_PACKAGE_NOT_INSTALLED,
 						"Package %s is not installed" % pkg)
-				return
+				continue
 
 			required_set_names = ("system", "world")
 			required_sets = {}
@@ -432,6 +410,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			if not args_set:
 				self.error(ERROR_INTERNAL_ERROR, "Was not able to generate atoms")
+				continue
 			
 			depgraph = _emerge.depgraph(settings, trees, myopts,
 					_emerge.create_depgraph_params(myopts, "remove"), spinner)
@@ -467,6 +446,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			if not depgraph._complete_graph():
 				self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
+				continue
 
 			def cmp_pkg_cpv(pkg1, pkg2):
 				if pkg1.cpv > pkg2.cpv:
@@ -489,6 +469,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 					for node in parents:
 						self.package(node[2])
 
+		self.percentage(100)
+
 	def install_packages(self, pkgs):
 		self.status(STATUS_RUNNING)
 		self.allow_cancel(True) # TODO: sure ?
@@ -532,8 +514,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			pkgsettings.setcpv(package)
 			package.metadata['USE'] = pkgsettings['PORTAGE_USE']
 
+			# TODO: check for writing access before calling merge ?
+#			try:
 			mergetask = _emerge.Scheduler(settings, trees, mtimedb, myopts, spinner, [package], favorites, package)
 			mergetask.merge()
+#			except:
+#				self.error(ERROR_LOCAL_INSTALL_FAILED, "Can't install %s" % cpv)
 
 	def remove_packages(self, allowdep, pkgs):
 		# can't use allowdep: never removing dep
@@ -587,11 +573,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 					metadata=metadata,
 					operation="uninstall")
 
-			# TODO: needed ?
-			pkgsettings = portage.config(clone=settings)
-			pkgsettings.setcpv(package)
-			package.metadata['USE'] = pkgsettings['PORTAGE_USE']
-
 			mergetask = _emerge.Scheduler(settings,
 					trees, mtimedb, myopts, spinner, [package], favorites, package)
 			mergetask.merge()
commit 9e6f3552140679d368c92a1db5a2a10ae65e2be4
Author: kristho <kristho at fedoraproject.org>
Date:   Thu Jun 11 15:59:52 2009 +0000

    Sending translation for Danish

diff --git a/po/da.po b/po/da.po
index b1eba9d..13c5a20 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-15 14:05+0000\n"
-"PO-Revision-Date: 2009-04-15 16:34+0200\n"
+"POT-Creation-Date: 2009-06-10 19:14+0000\n"
+"PO-Revision-Date: 2009-06-11 02:08+0200\n"
 "Last-Translator: Kris Thomsen <lakristho at gmail.com>\n"
 "Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
 "MIME-Version: 1.0\n"
@@ -493,8 +493,8 @@ msgstr "Underkommandoer:"
 #. 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:521
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Vis ekstra fejlsøgningsinformation"
 
@@ -702,55 +702,64 @@ msgstr "En uddatamappe eller filnavn kræves"
 msgid "The package manager cannot perform this type of operation."
 msgstr "Pakkehåndteringen kan ikke udføre denne type handling."
 
+#. 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 ""
+"Servicepakker kan ikke blive oprettet fordi PackageKit ikke blev bygget med "
+"understøttelse for 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 "Hvis du angiver en fil, skal servicepakken slutte med"
 
 #. 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 "En pakke med samme navn findes allerede, vil du overskrive den?"
 
 #. 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 "Pakken blev ikke overskrevet."
 
 #. 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 "Kunne ikke oprette mappe:"
 
 #. 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 "Kunne ikke åbne pakkeliste."
 
 #. 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 "Finder pakkenavn."
 
 #. 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 "Kunne ikke finde pakke \"%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 "Opretter servicepakke..."
 
 #. 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 "Servicepakke oprettet \"%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 "Kunne ikke oprette \"%s\": %s"
@@ -782,125 +791,125 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "Indtast et nummer fra 1 til %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:372
 msgid "Failed to search for file"
 msgstr "Kunne ikke søge efter fil"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:493
+#: ../contrib/command-not-found/pk-command-not-found.c:496
 msgid "Failed to launch:"
 msgstr "Kunne ikke starte:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:537
 msgid "PackageKit Command Not Found"
 msgstr "PackageKit-kommando ikke fundet"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:557
+#: ../contrib/command-not-found/pk-command-not-found.c:560
 msgid "Command not found."
 msgstr "Kommando ikke fundet."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:564
+#: ../contrib/command-not-found/pk-command-not-found.c:567
 msgid "Similar command is:"
 msgstr "Lignende kommando er:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:573
+#: ../contrib/command-not-found/pk-command-not-found.c:576
 msgid "Run similar command:"
 msgstr "Kør lignende kommando:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:585
-#: ../contrib/command-not-found/pk-command-not-found.c:594
+#: ../contrib/command-not-found/pk-command-not-found.c:588
+#: ../contrib/command-not-found/pk-command-not-found.c:597
 msgid "Similar commands are:"
 msgstr "Lignende kommandoer er:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:601
+#: ../contrib/command-not-found/pk-command-not-found.c:604
 msgid "Please choose a command to run"
 msgstr "Vælg venligst en kommando at køre"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:616
+#: ../contrib/command-not-found/pk-command-not-found.c:619
 msgid "The package providing this file is:"
 msgstr "Pakken der udbyder denne fil er:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:621
+#: ../contrib/command-not-found/pk-command-not-found.c:624
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "Installér pakke \"%s\" for at udbyde kommando \"%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:645
 msgid "Packages providing this file are:"
 msgstr "Pakker der udbyder denne fil er:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:651
+#: ../contrib/command-not-found/pk-command-not-found.c:654
 msgid "Suitable packages are:"
 msgstr "Passende pakker er:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:659
+#: ../contrib/command-not-found/pk-command-not-found.c:662
 msgid "Please choose a package to install"
 msgstr "Vælg venligst en pakke at installere"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/src/contents.cpp:298
+#: ../contrib/browser-plugin/src/contents.cpp:299
 msgid "Getting package information..."
 msgstr "Henter information om pakke..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/src/contents.cpp:304
+#: ../contrib/browser-plugin/src/contents.cpp:305
 #, c-format
 msgid "Run %s"
 msgstr "Kør %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/src/contents.cpp:310
+#: ../contrib/browser-plugin/src/contents.cpp:311
 msgid "Installed version"
 msgstr "Installeret version"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:318
+#: ../contrib/browser-plugin/src/contents.cpp:319
 #, c-format
 msgid "Run version %s now"
 msgstr "Kør version %s nu"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:324
+#: ../contrib/browser-plugin/src/contents.cpp:325
 msgid "Run now"
 msgstr "Kør nu"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:330
+#: ../contrib/browser-plugin/src/contents.cpp:331
 #, c-format
 msgid "Update to version %s"
 msgstr "Opdatér til version %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/src/contents.cpp:336
+#: ../contrib/browser-plugin/src/contents.cpp:337
 #, c-format
 msgid "Install %s now"
 msgstr "Installér %s nu"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:339
+#: ../contrib/browser-plugin/src/contents.cpp:340
 msgid "Version"
 msgstr "Version"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/src/contents.cpp:344
+#: ../contrib/browser-plugin/src/contents.cpp:345
 msgid "No packages found for your system"
 msgstr "Ingen pakker fundet til dit system"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/src/contents.cpp:349
+#: ../contrib/browser-plugin/src/contents.cpp:350
 msgid "Installing..."
 msgstr "Installerer..."
 
@@ -1039,47 +1048,46 @@ msgstr ""
 "org.freedesktop.PackageKit.conf-filen er ikke installeret i systemmappen:"
 
 #. 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 "Pakkemotor som bruges, f.eks. dummy"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:196
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "Dæmonisér og hæft fra terminalen"
 
 #. 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 "Deaktivér tomgangstimeren"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "Vis version og afslut"
 
 #. 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 "Afslut efter kort pause"
 
 #. 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 "Afslut efter motoren er indlæst"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "PackageKit-tjeneste"
 
 #. 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 "Kan ikke forbinde til systembussen"
 
-#. 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 "Kunne ikke starte:"
commit bff5b331301a05bc0fb396f2375778df73bdaf74
Merge: 4b1205a... 9d8a58f...
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 11 09:34:22 2009 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 9d8a58ffd29bf7b80f482547b372eb5ccbe206da
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu Jun 11 00:06:38 2009 +0200

    portage: add search-details, minor changes (comments, ...)

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 1e48720..7dd3738 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -254,6 +254,19 @@ backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
 }
 
 /**
+ * pk_backend_search_details:
+ */
+static void
+backend_search_details (PkBackend *backend, PkBitfield filters, const gchar *search)
+{
+	gchar *filters_text;
+
+	filters_text = pk_filter_bitfield_to_text (filters);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "search-details", filters_text, search, NULL);
+	g_free (filters_text);
+}
+
+/**
  * backend_search_file:
  */
 static void
@@ -357,25 +370,25 @@ PK_BACKEND_OPTIONS (
 	NULL,		/* get_distro_upgrades */
 	backend_get_files,			/* get_files */
 	backend_get_packages,			/* get_packages */
-	NULL,			/* get_repo_list */
+	NULL, // TODO			/* get_repo_list */
 	backend_get_requires,			/* get_requires */
-	backend_get_update_detail,		/* get_update_detail */
-	backend_get_updates,			/* get_updates */
+	backend_get_update_detail, // TODO		/* get_update_detail */
+	backend_get_updates, // TODO			/* get_updates */
 	NULL,			/* install_files */
 	backend_install_packages,		/* install_packages */
-	NULL,			/* install_signature */
-	NULL,			/* refresh_cache */
+	NULL, // TODO: choose			/* install_signature */
+	NULL, // TODO: choose			/* refresh_cache */
 	backend_remove_packages,		/* remove_packages */
-	NULL,			/* repo_enable */
-	NULL,			/* repo_set_data */
+	NULL, // TODO: choose			/* repo_enable */
+	NULL, // TODO: probably not			/* repo_set_data */
 	backend_resolve,			/* resolve */
-	NULL,			/* rollback */
-	NULL, //TODO			/* search_details */
+	NULL, // TODO: probably in a long time			/* rollback */
+	backend_search_details,			/* search_details */
 	backend_search_file,			/* search_file */
 	backend_search_group,			/* search_group */
 	backend_search_name,			/* search_name */
-	backend_update_packages,		/* update_packages */
-	backend_update_system,			/* update_system */
+	backend_update_packages, // TODO		/* update_packages */
+	backend_update_system, // TODO			/* update_system */
 	NULL			/* what_provides */
 );
 
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 14dae69..553a37d 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -301,7 +301,8 @@ 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)
+				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE,
+						"Could not find the package %s" % pkgid)
 				continue
 
 			myopts = "--emptytree"
@@ -340,7 +341,8 @@ 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)
+				self.message(MESSAGE_COULD_NOT_FIND_PACKAGE,
+						"Could not find the package %s" % pkgid)
 				continue
 
 			homepage, desc, license = portage.portdb.aux_get(cpv, ["HOMEPAGE", "DESCRIPTION", "LICENSE"])
@@ -364,16 +366,18 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			# is cpv valid
 			if not portage.portdb.cpv_exists(cpv):
-				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkgid)
+				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)
+				self.error(ERROR_PACKAGE_NOT_INSTALLED,
+						"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)
+			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)
@@ -402,8 +406,6 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		recursive = text_to_bool(recursive)
 
 		myopts = {}
-		myopts.pop("--verbose", None)
-		myopts["--verbose"] = True
 		spinner = ""
 		favorites = []
 		settings, trees, mtimedb = _emerge.load_emerge_config()
@@ -601,6 +603,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 		self.percentage(None)
 
 		for pkg in pkgs:
+			# TODO: be case sensitive ?
 			searchre = re.compile(pkg, re.IGNORECASE)
 
 			# TODO: optim with filter = installed
@@ -608,7 +611,28 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 				if searchre.search(cp):
 					#print self.vardb.dep_bestmatch(cp)
 					self.package(portage.portdb.xmatch("bestmatch-visible", cp))
-					
+
+	def search_details(self, filters, key):
+		# TODO: add keywords when they will be available
+		# TODO: filters
+		# TODO: split keys
+		# TODO: PERFORMANCE !
+		self.status(STATUS_QUERY)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		searchre = re.compile(key, re.IGNORECASE)
+		cpvlist = []
+
+		for cp in portage.portdb.cp_all():
+			# TODO: baaad, we are working on _every_ cpv :-/
+			for cpv in portage.portdb.match(cp): #TODO: cp_list(cp) ?
+				infos = portage.portdb.aux_get(cpv,
+						["HOMEPAGE","DESCRIPTION","repository"]) # LICENSE ?
+				for x in infos:
+					if searchre.search(x):
+						self.package(cpv)
+						break
 
 	def search_file(self, filters, key):
 		# TODO: manage filters, error if ~installed ?
@@ -622,8 +646,8 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 		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)
+			db = portage.dblink(cat, pv, portage.settings["ROOT"],
+					self.portage_settings, treetype="vartree", vartree=self.vardb)
 			contents = db.getcontents()
 			if not contents:
 				continue
commit 4b1205ac1e5e5b5455fb56ca7cf6766cbf117920
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Jun 10 13:11:51 2009 +0100

    New stable version

diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index 4ba5f23..895336e 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -87,6 +87,7 @@ Releases are less frequent, usually every few months.
 </p>
 <table>
 <tr><td><b>Version</b></td><td>&nbsp;&nbsp;</td><td><b>Date</b></td></tr>
+<tr><td>0.3.16</td><td></td><td>2009-06-10</td></tr>
 <tr><td>0.3.15</td><td></td><td>2009-03-30</td></tr>
 <tr><td>0.3.14</td><td></td><td>2009-02-02</td></tr>
 <tr><td>0.3.12</td><td></td><td>2008-12-08</td></tr>
commit fc5ef77fa00810fba167645d0992fb4e17717024
Author: ifelix <ifelix at fedoraproject.org>
Date:   Wed Jun 10 11:12:23 2009 +0000

    Sending translation for Tamil

diff --git a/po/ta.po b/po/ta.po
index f0741eb..3bcadb2 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -6,9 +6,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.ta\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-11 19:05+0000\n"
-"PO-Revision-Date: 2009-04-12 05:14+0530\n"
+"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?product=PackageKit&component=General\n"
+"POT-Creation-Date: 2009-05-27 15:24+0000\n"
+"PO-Revision-Date: 2009-06-09 09:54+0530\n"
 "Last-Translator: I. Felix <ifelix at redhat.com>\n"
 "Language-Team: Tamil <fedora-trans-ta at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -22,6 +22,7 @@ msgstr ""
 "\n"
 "\n"
 "\n"
+"\n"
 
 #. TRANSLATORS: this is an atomic transaction
 #: ../client/pk-console.c:234
@@ -501,8 +502,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 "கூடுதல் பிழைதிருத்த தகவலைக் காட்டு"
 
@@ -707,55 +708,62 @@ 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 சேவையுடன் PackageKitஆக உருவாக்க முடியாது"
+
 #. 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"
@@ -787,71 +795,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 "'%s' கட்டளை வழங்குவதற்கு '%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 "நிறுவுவதற்கு ஒரு கோப்பினை தேர்ந்தெடு"
 
@@ -1036,48 +1044,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 "பயன்படுத்த வேண்டிய தொகுப்பிடுதல் பின்தளம், எ.கா டம்மி"
 
 #. 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 "வெற்று நேரங்காட்டியை செயல்நீக்கு"
 
 #. 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 42ebe1049dc262aab00d3f7625438fc271394491
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Jun 10 09:37:18 2009 +0100

    yum: convert the present distro version to int to avoid always returning with no results from GetDistroUpgrades()

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index b0787a8..4d84d47 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -2146,7 +2146,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
 
         # are we already on the latest version
         try:
-            present_version = self.yumbase.conf.yumvar['releasever']
+            present_version = int(self.yumbase.conf.yumvar['releasever'])
         except Exception, e:
             self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
         if (present_version >= last_version):
commit 9635a2b299b739c2049975e8be4edcd649f04396
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Wed Jun 10 01:58:41 2009 +0200

    portage: add get-requires function

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index edb6391..1e48720 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -99,11 +99,6 @@ backend_get_groups (PkBackend *backend)
 static PkBitfield
 backend_get_filters (PkBackend *backend)
 {
-	/*
-	 * TODO: set filter list
-	 */
-	egg_debug ("backend: get_filters");
-
 	return pk_bitfield_from_enums (
 			//PK_FILTER_ENUM_NONE,
 			PK_FILTER_ENUM_INSTALLED,
@@ -113,7 +108,7 @@ backend_get_filters (PkBackend *backend)
 			//PK_FILTER_ENUM_VISIBLE,
 			//PK_FILTER_ENUM_SUPPORTED,
 			//PK_FILTER_ENUM_BASENAME,
-			//PK_FILTER_ENUM_NEWEST,
+			PK_FILTER_ENUM_NEWEST,
 			//PK_FILTER_ENUM_ARCH,
 			//PK_FILTER_ENUM_SOURCE,
 			//PK_FILTER_ENUM_COLLECTIONS,
@@ -234,9 +229,9 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
 static void
 backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
+	// TODO: autoremove ?
 	gchar *package_ids_temp;
 
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_text (package_ids);
 	pk_backend_spawn_helper (spawn, BACKEND_FILE, "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -277,11 +272,11 @@ backend_search_file (PkBackend *backend, PkBitfield filters, const gchar *search
 static void
 backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search)
 { 
-  gchar *filters_text;
+	gchar *filters_text;
 
-  filters_text = pk_filter_bitfield_to_text (filters);
-  pk_backend_spawn_helper (spawn, BACKEND_FILE, "search-group", filters_text, search, NULL);
-  g_free (filters_text);
+	filters_text = pk_filter_bitfield_to_text (filters);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "search-group", filters_text, search, NULL);
+	g_free (filters_text);
 }
 
 /**
@@ -321,6 +316,22 @@ backend_get_packages (PkBackend *backend, PkBitfield filters)
 }
 
 /**
+ * backend_get_requires:
+ */
+static void
+backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+{ 
+	gchar *package_ids_temp;
+	gchar *filters_text;
+
+	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-requires", filters_text, package_ids_temp, pk_backend_bool_to_text (recursive), NULL);
+	g_free (filters_text);
+	g_free (package_ids_temp);
+}
+
+/**
  * backend_update_system:
  */
 static void
@@ -347,7 +358,7 @@ PK_BACKEND_OPTIONS (
 	backend_get_files,			/* get_files */
 	backend_get_packages,			/* get_packages */
 	NULL,			/* get_repo_list */
-	NULL, // TODO			/* get_requires */
+	backend_get_requires,			/* get_requires */
 	backend_get_update_detail,		/* get_update_detail */
 	backend_get_updates,			/* get_updates */
 	NULL,			/* install_files */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index 1cd1ee9..14dae69 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -390,6 +390,103 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			for cpv in portage.portdb.match(cp):
 				self.package(cpv)
 
+	def get_requires(self, filters, pkgs, recursive):
+		# TODO: filters
+		# TODO: recursive not implemented
+		# TODO: usefulness ? use cases
+		# TODO: work only on installed packages
+		self.status(STATUS_RUNNING)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		recursive = text_to_bool(recursive)
+
+		myopts = {}
+		myopts.pop("--verbose", None)
+		myopts["--verbose"] = True
+		spinner = ""
+		favorites = []
+		settings, trees, mtimedb = _emerge.load_emerge_config()
+		spinner = _emerge.stdout_spinner()
+		rootconfig = _emerge.RootConfig(self.portage_settings, trees["/"],
+				portage._sets.load_default_config(self.portage_settings, trees["/"]))
+
+		for pkg in pkgs:
+			cpv = id_to_cpv(pkg)
+
+			# is cpv installed
+			# TODO: keep error msg ?
+			if not self.vardb.match(cpv):
+				self.error(ERROR_PACKAGE_NOT_INSTALLED,
+						"Package %s is not installed" % pkg)
+				return
+
+			required_set_names = ("system", "world")
+			required_sets = {}
+
+			args_set = portage._sets.base.InternalPackageSet()
+			args_set.update(["="+cpv]) # parameters is converted to atom
+			# or use portage.dep_expand
+
+			if not args_set:
+				self.error(ERROR_INTERNAL_ERROR, "Was not able to generate atoms")
+			
+			depgraph = _emerge.depgraph(settings, trees, myopts,
+					_emerge.create_depgraph_params(myopts, "remove"), spinner)
+			vardb = depgraph.trees["/"]["vartree"].dbapi
+
+			for s in required_set_names:
+				required_sets[s] = portage._sets.base.InternalPackageSet(
+						initial_atoms=rootconfig.setconfig.getSetAtoms(s))
+
+			# TODO: error/warning if world = null or system = null ?
+
+			# TODO: not sure it's needed. for deselect in emerge...
+			required_sets["world"].clear()
+			for pkg in vardb:
+				spinner.update()
+				try:
+					if args_set.findAtomForPackage(pkg) is None:
+						required_sets["world"].add("=" + pkg.cpv)
+				except portage.exception.InvalidDependString, e:
+					required_sets["world"].add("=" + pkg.cpv)
+
+			set_args = {}
+			for s, pkg_set in required_sets.iteritems():
+				set_atom = portage._sets.SETPREFIX + s
+				set_arg = _emerge.SetArg(arg=set_atom, set=pkg_set,
+						root_config=depgraph.roots[portage.settings["ROOT"]])
+				set_args[s] = set_arg
+				for atom in set_arg.set:
+					depgraph._dep_stack.append(
+							_emerge.Dependency(atom=atom, root=portage.settings["ROOT"],
+								parent=set_arg))
+					depgraph.digraph.add(set_arg, None)
+
+			if not depgraph._complete_graph():
+				self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
+
+			def cmp_pkg_cpv(pkg1, pkg2):
+				if pkg1.cpv > pkg2.cpv:
+					return 1
+				elif pkg1.cpv == pkg2.cpv:
+					return 0
+				else:
+					return -1
+
+			for pkg in sorted(vardb,
+					key=portage.util.cmp_sort_key(cmp_pkg_cpv)):
+				arg_atom = None
+				try:
+					arg_atom = args_set.findAtomForPackage(pkg)
+				except portage.exception.InvalidDependString:
+					continue
+
+				if arg_atom and pkg in depgraph.digraph:
+					parents = depgraph.digraph.parent_nodes(pkg)
+					for node in parents:
+						self.package(node[2])
+
 	def install_packages(self, pkgs):
 		self.status(STATUS_RUNNING)
 		self.allow_cancel(True) # TODO: sure ?
@@ -421,7 +518,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
 			# is cpv valid
 			if not portage.portdb.cpv_exists(cpv):
-				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkgid)
+				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkg)
 				continue
 
 			db_keys = list(portage.portdb._aux_cache_keys)
commit 2f36a487a8af2279694f711a53c38c1a48185d90
Merge: 46e2778... 51297db...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Tue Jun 9 12:31:58 2009 +0200

    Merge branch 'master' of git+ssh://glatzor@git.packagekit.org/srv/git/PackageKit

commit 46e2778eb36ba62bba7b2806fd0fa414c767cfb4
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Tue Jun 9 12:20:05 2009 +0200

    APT: Show the installed size for installed packages instead of the package size

diff --git a/backends/apt/aptBackend.py b/backends/apt/aptBackend.py
index 339a9c9..e41b675 100755
--- a/backends/apt/aptBackend.py
+++ b/backends/apt/aptBackend.py
@@ -756,9 +756,13 @@ class PackageKitAptBackend(PackageKitBaseBackend):
             else:
                 license = "unknown"
             group = self._get_package_group(pkg)
+            if pkg.isInstalled:
+                size = pkg.packageSize
+            else:
+                size = pkg.installedSize
             self.details(pkg_id, license, group,
                          format_string(pkg.description),
-                         pkg.homepage, pkg.packageSize)
+                         pkg.homepage, size)
 
     @unlock_cache_afterwards
     def update_system(self):


More information about the PackageKit-commit mailing list