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

Richard Hughes hughsient at kemper.freedesktop.org
Sun Jan 4 03:41:08 PST 2009


 backends/apt/Packages.test                    |   71 -----
 backends/apt/aptDBUSBackend.py                |    4 
 backends/apt/data/Packages                    |   71 +++++
 backends/apt/data/status                      |   38 ++
 backends/apt/data/xterm.list                  |   49 +++
 backends/apt/status.test                      |   38 --
 backends/apt/test.sh                          |    2 
 backends/apt/tests.py                         |    6 
 backends/apt/xterm.list.test                  |   49 ---
 backends/poldek/pk-backend-poldek.c           |  358 +++++++++++++++++++-------
 backends/yum/yumBackend.py                    |    3 
 client/pk-console.c                           |    5 
 configure.ac                                  |    1 
 contrib/ruck/src/rucktransactcmds.py          |    9 
 docs/html/Makefile.am                         |    2 
 docs/html/img/Makefile.am                     |    1 
 docs/html/img/gpk-markdown.png                |binary
 docs/html/img/pk-command-not-found.png        |binary
 docs/html/pk-faq.html                         |   14 +
 docs/html/pk-screenshots.html                 |    9 
 docs/html/upload.sh                           |    1 
 docs/html/videos/Makefile.am                  |   15 +
 docs/html/videos/pk-application-not-found.ogv |binary
 docs/html/videos/pk-command-not-found.ogv     |binary
 docs/html/videos/pk-font-no-found.ogv         |binary
 lib/packagekit-glib/egg-test.c                |    7 
 lib/packagekit-glib/egg-test.h                |    2 
 lib/packagekit-glib/pk-service-pack.c         |    2 
 lib/packagekit-qt/src/client.cpp              |   19 +
 lib/packagekit-qt/src/client.h                |    9 
 lib/packagekit-qt/src/daemonproxy.h           |    2 
 m4/.gitignore                                 |    2 
 src/pk-backend-spawn.c                        |   36 +-
 src/pk-network-nm-dummy.c                     |    2 
 34 files changed, 532 insertions(+), 295 deletions(-)

New commits:
commit d2c403bdae73652f7ebbe555bc017674417b018a
Merge: 2006e92... 5b3625b...
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Fri Jan 2 20:09:17 2009 +0100

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

commit 2006e92ef60f1f84b3b7f8396728b2a3830fee2d
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Fri Jan 2 20:07:32 2009 +0100

    poldek: move GetPackages to its own function

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index e6c4b77..be5b723 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -681,6 +681,41 @@ pkg_cmp_name_evr_rev_recno (const struct pkg *p1, const struct pkg *p2) {
 	return rc;
 }
 
+/**
+ * do_post_search_process:
+ *
+ * Merges installed, available and removes duplicates.
+ *
+ **/
+static tn_array *
+do_post_search_process (tn_array *installed, tn_array *available)
+{
+	tn_array       *packages = NULL;
+	guint		i;
+
+	if (available != NULL) {
+		packages = n_ref (available);
+
+		if (installed != NULL) {
+			for (i = 0; i < n_array_size (installed); i++) {
+				struct pkg *pkg = n_array_nth (installed, i);
+
+				/* check for duplicates */
+				if (poldek_pkg_in_array (pkg, packages, (tn_fn_cmp)pkg_cmp_name_evr) == FALSE)
+					n_array_push (packages, pkg_link (pkg));
+
+			}
+
+			n_array_sort_ex (packages, (tn_fn_cmp)pkg_cmp_name_evr_rev_recno);
+		}
+
+	} else if (installed != NULL) {
+		packages = n_ref (installed);
+	}
+
+	return packages;
+}
+
 static gboolean
 pkg_is_installed (struct pkg *pkg)
 {
@@ -989,6 +1024,34 @@ poldek_pkg_get_cves_from_pld_changelog (struct pkg *pkg, time_t since)
 	return cves;
 }
 
+/**
+ * poldek_pkg_is_devel:
+ */
+static gboolean
+poldek_pkg_is_devel (struct pkg *pkg)
+{
+	if (g_str_has_suffix (pkg->name, "-devel"))
+		return TRUE;
+	if (g_str_has_suffix (pkg->name, "-debuginfo"))
+		return TRUE;
+	if (g_str_has_suffix (pkg->name, "-static"))
+		return TRUE;
+
+	return FALSE;
+}
+
+/**
+ * poldek_pkg_is_gui:
+ */
+static gboolean
+poldek_pkg_is_gui (struct pkg *pkg)
+{
+	if (g_str_has_prefix (pkg_group (pkg), "X11"))
+		return TRUE;
+
+	return FALSE;
+}
+
 static void
 do_newest (tn_array *pkgs)
 {
@@ -1012,6 +1075,53 @@ do_newest (tn_array *pkgs)
 }
 
 /**
+ * do_filtering:
+ *
+ * Apply newest, devel and gui filters (if requested).
+ *
+ **/
+static void
+do_filtering (tn_array *packages, PkBitfield filters)
+{
+	guint	i = 0;
+
+	g_return_if_fail (packages != NULL);
+
+	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
+		do_newest (packages);
+
+	while (i < n_array_size (packages)) {
+		struct pkg     *pkg = n_array_nth (packages, i);
+
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT))
+			if (!poldek_pkg_is_devel (pkg)) {
+				n_array_remove_nth (packages, i);
+				continue;
+			}
+
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT))
+			if (poldek_pkg_is_devel (pkg)) {
+				n_array_remove_nth (packages, i);
+				continue;
+			}
+
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI))
+			if (!poldek_pkg_is_gui (pkg)) {
+				n_array_remove_nth (packages, i);
+				continue;
+			}
+
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_GUI))
+			if (poldek_pkg_is_gui (pkg)) {
+				n_array_remove_nth (packages, i);
+				continue;
+			}
+
+		i++;
+	}
+}
+
+/**
  * do_requires:
  */
 static void
@@ -1325,32 +1435,6 @@ poldek_get_pkg_from_package_id (const gchar *package_id)
 }
 
 /**
- * poldek_pkg_is_devel:
- */
-static gboolean
-poldek_pkg_is_devel (struct pkg *pkg)
-{
-	if (g_str_has_suffix (pkg->name, "-devel"))
-		return TRUE;
-	if (g_str_has_suffix (pkg->name, "-debuginfo"))
-		return TRUE;
-
-	return FALSE;
-}
-
-/**
- * poldek_pkg_is_gui:
- */
-static gboolean
-poldek_pkg_is_gui (struct pkg *pkg)
-{
-	if (g_str_has_prefix (pkg_group (pkg), "X11"))
-		return TRUE;
-
-	return FALSE;
-}
-
-/**
  * search_package_thread:
  */
 static gboolean
@@ -1480,11 +1564,10 @@ search_package_thread (PkBackend *backend)
 			pkgs = installed;
 	}
 
-	if (pkgs) {
-		gint	i;
+	do_filtering (pkgs, filters);
 
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
-			do_newest (pkgs);
+	if (pkgs) {
+		guint	i;
 
 		for (i = 0; i < n_array_size (pkgs); i++) {
 			struct pkg *pkg = n_array_nth (pkgs, i);
@@ -1492,36 +1575,6 @@ search_package_thread (PkBackend *backend)
 			if (sigint_reached ())
 				break;
 
-			/* check if we have to do development filtering
-			 * (devel or ~devel in filters) */
-			if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT) ||
-			    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
-				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT)) {
-					/* devel in filters */
-					if (!poldek_pkg_is_devel (pkg))
-						continue;
-				} else {
-					/* ~devel in filters */
-					if (poldek_pkg_is_devel (pkg))
-						continue;
-				}
-			}
-
-			/* check if we have to do gui filtering
-			 * (gui or ~gui in filters) */
-			if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI) ||
-			    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_GUI)) {
-				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI)) {
-					/* gui in filters */
-					if (!poldek_pkg_is_gui (pkg))
-						continue;
-				} else {
-					/* ~gui in filters */
-					if (poldek_pkg_is_gui (pkg))
-						continue;
-				}
-			}
-
 			poldek_backend_package (backend, pkg, PK_INFO_ENUM_UNKNOWN, filters);
 		}
 		n_array_free (pkgs);
@@ -2316,6 +2369,61 @@ backend_get_files (PkBackend *backend, gchar **package_ids)
 /**
  * backend_get_packages:
  **/
+static gboolean
+backend_get_packages_thread (PkBackend *backend)
+{
+	PkBitfield	filters;
+	tn_array       *installed = NULL;
+	tn_array       *available = NULL;
+	tn_array       *packages = NULL;
+	guint		i;
+
+	filters = pk_backend_get_uint (backend, "filters");
+
+	pk_backend_set_percentage (backend, 0);
+
+	pb_load_packages (backend);
+
+	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED) == FALSE)
+		installed = poldek_get_installed_packages ();
+
+	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED) == FALSE)
+		available = poldek_get_avail_packages (ctx);
+
+	pk_backend_set_percentage (backend, 4);
+
+	packages = do_post_search_process (installed, available);
+
+	do_filtering (packages, filters);
+
+	pk_backend_set_percentage (backend, 10);
+
+	if (packages != NULL) {
+		for (i = 0; i < n_array_size (packages); i++) {
+			struct pkg     *pkg = n_array_nth (packages, i);
+
+			if (sigint_reached ())
+				break;
+
+			pk_backend_set_percentage (backend, (guint)(10 + (90 * (float)(i + 1) / n_array_size (packages))));
+
+			poldek_backend_package (backend, pkg, PK_INFO_ENUM_UNKNOWN, filters);
+		}
+	}
+
+	if (sigint_reached ())
+		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "");
+	else
+		pk_backend_set_percentage (backend, 100);
+
+	n_array_cfree (&installed);
+	n_array_cfree (&available);
+	n_array_cfree (&packages);
+
+	pk_backend_finished (backend);
+	return TRUE;
+}
+
 static void
 backend_get_packages (PkBackend *backend, PkBitfield filters)
 {
@@ -2323,8 +2431,7 @@ backend_get_packages (PkBackend *backend, PkBitfield filters)
 	poldek_backend_set_allow_cancel (backend, TRUE, TRUE);
 	pb_error_clean ();
 
-	pk_backend_set_uint (backend, "mode", SEARCH_ENUM_NONE);
-	pk_backend_thread_create (backend, search_package_thread);
+	pk_backend_thread_create (backend, backend_get_packages_thread);
 }
 
 /**
commit 5b3625b7faecb835268edb406f6623db12e3dbef
Author: Adrien BUSTANY <madcat at mymadcat.com>
Date:   Fri Jan 2 19:11:22 2009 +0100

    Trivial: update transactionproxy.h header

diff --git a/lib/packagekit-qt/src/daemonproxy.h b/lib/packagekit-qt/src/daemonproxy.h
index 9e85490..45287c6 100644
--- a/lib/packagekit-qt/src/daemonproxy.h
+++ b/lib/packagekit-qt/src/daemonproxy.h
@@ -1,6 +1,6 @@
 /*
  * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c DaemonProxy -p daemonproxy.h /home/madcat/code/packagekit/src/org.freedesktop.PackageKit.xml org.freedesktop.PackageKit
+ * Command line was: dbusxml2cpp -c DaemonProxy -p daemonproxy.h /home/madcat/code/PackageKit/src/org.freedesktop.PackageKit.xml org.freedesktop.PackageKit
  *
  * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  *
commit 937855155656f1d8dfdc1a5cac18fbf839a61b9f
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Fri Jan 2 12:02:09 2009 +0100

    poldek: improved SearchFile (query rpmdb for local files)

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index b4cc9ef..e6c4b77 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2008 Marcin Banasiak <megabajt at pld-linux.org>
+ * Copyright (C) 2008-2009 Marcin Banasiak <megabajt at pld-linux.org>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -707,6 +707,53 @@ pkg_is_installed (struct pkg *pkg)
 }
 
 /**
+ * get_pkgid_from_localpath:
+ *
+ * Query rpmdb by localpath.
+ *
+ * localpath: full path to the file on local filesystem
+ *
+ * Returns: pkgid (foo-bar-0.1.2-3.i686) that owns file at localpath or NULL.
+ **/
+static gchar *
+get_pkgid_from_localpath (const gchar *localpath)
+{
+	struct pkgdb *db = NULL;
+	struct poldek_ts *ts = NULL;
+	gchar *pkgid = NULL;
+
+	g_return_val_if_fail (localpath != NULL, NULL);
+
+	ts = poldek_ts_new (ctx, 0);
+	db = pkgdb_open (ts->pmctx, ts->rootdir, NULL, O_RDONLY, NULL);
+
+	if (db) {
+		const struct pm_dbrec *dbrec;
+		struct pkgdb_it it;
+
+		pkgdb_it_init (db, &it, PMTAG_FILE, localpath);
+
+		/* get only one package */
+		if ((dbrec = pkgdb_it_get (&it)) != NULL) {
+			gchar *name = NULL, *version = NULL, *release = NULL, *arch = NULL;
+			gint epoch;
+
+			pm_dbrec_nevr (dbrec, &name, &epoch, &version, &release, &arch, NULL);
+
+			pkgid = g_strdup_printf ("%s-%s-%s.%s", name, version, release, arch);
+		}
+
+		pkgdb_it_destroy (&it);
+		/* it calls pkgdb_close (db) */
+		pkgdb_free (db);
+	}
+
+	poldek_ts_free (ts);
+
+	return pkgid;
+}
+
+/**
  * poldek_get_security_updates:
  **/
 static tn_array*
@@ -1311,7 +1358,9 @@ search_package_thread (PkBackend *backend)
 {
 	PkBitfield		filters;
 	PkProvidesEnum		provides;
-	gchar			*search_cmd = NULL;
+	gchar		       *search_cmd_available = NULL;
+	gchar		       *search_cmd_installed = NULL;
+	tn_array	       *pkgs = NULL;
 	const gchar *search;
 	guint mode;
 
@@ -1322,12 +1371,14 @@ search_package_thread (PkBackend *backend)
 
 	/* GetPackages */
 	if (mode == SEARCH_ENUM_NONE) {
-		search_cmd = g_strdup ("ls -q");
+		search_cmd_installed = g_strdup ("ls -q");
+		search_cmd_available = g_strdup (search_cmd_installed);
 	/* SearchName */
 	} else if (mode == SEARCH_ENUM_NAME) {
 		search = pk_backend_get_string (backend, "search");
 
-		search_cmd = g_strdup_printf ("ls -q *%s*", search);
+		search_cmd_installed = g_strdup_printf ("ls -q *%s*", search);
+		search_cmd_available = g_strdup (search_cmd_installed);
 	/* SearchGroup */
 	} else if (mode == SEARCH_ENUM_GROUP) {
 		PkGroupEnum	group;
@@ -1338,17 +1389,32 @@ search_package_thread (PkBackend *backend)
 		group = pk_group_enum_from_text (search);
 		regex = pld_group_get_regex_from_enum (group);
 
-		search_cmd = g_strdup_printf ("search -qg --perlre %s", regex);
+		search_cmd_installed = g_strdup_printf ("search -qg --perlre %s", regex);
+		search_cmd_available = g_strdup (search_cmd_installed);
 	/* SearchDetails */
 	} else if (mode == SEARCH_ENUM_DETAILS) {
 		search = pk_backend_get_string (backend, "search");
 
-		search_cmd = g_strdup_printf ("search -dsq *%s*", search);
+		search_cmd_installed = g_strdup_printf ("search -dsq *%s*", search);
+		search_cmd_available = g_strdup (search_cmd_installed);
 	/* SearchFile */
 	} else if (mode == SEARCH_ENUM_FILE) {
 		search = pk_backend_get_string (backend, "search");
 
-		search_cmd = g_strdup_printf ("search -qlf *%s*", search);
+		if (*search == '/') {
+			gchar *pkgid = NULL;
+
+			/* use rpmdb to get local packages (equivalent to: rpm -qf /foo/bar) */
+			if ((pkgid = get_pkgid_from_localpath (search))) {
+				search_cmd_installed = g_strdup_printf ("ls -q %s", pkgid);
+				g_free (pkgid);
+			}
+
+			search_cmd_available = g_strdup_printf ("search -ql --perlre /^%s$/", search);
+		} else {
+			search_cmd_installed = g_strdup_printf ("search -ql --perlre /.*%s.*/", search);
+			search_cmd_available = g_strdup (search_cmd_installed);
+		}
 	/* WhatProvides */
 	} else if (mode == SEARCH_ENUM_PROVIDES) {
 		provides = pk_backend_get_uint (backend, "provides");
@@ -1356,11 +1422,13 @@ search_package_thread (PkBackend *backend)
 		search = pk_backend_get_string (backend, "search");
 
 		if (provides == PK_PROVIDES_ENUM_ANY || provides == PK_PROVIDES_ENUM_CODEC) {
-			search_cmd = g_strdup_printf ("search -qp %s", search);
+			search_cmd_installed = g_strdup_printf ("search -qp %s", search);
 		} else if (provides == PK_PROVIDES_ENUM_MODALIAS) {
 		} else if (provides == PK_PROVIDES_ENUM_MIMETYPE) {
-			search_cmd = g_strdup_printf ("search -qp mimetype(%s)", search);
+			search_cmd_installed = g_strdup_printf ("search -qp mimetype(%s)", search);
 		}
+
+		search_cmd_available = g_strdup (search_cmd_installed);
 	/* Resolve */
 	} else if (mode == SEARCH_ENUM_RESOLVE) {
 		gchar **package_ids;
@@ -1370,20 +1438,21 @@ search_package_thread (PkBackend *backend)
 
 		packages_str = g_strjoinv(" ", package_ids);
 
-		search_cmd = g_strdup_printf ("ls -q %s", packages_str);
+		search_cmd_installed = g_strdup_printf ("ls -q %s", packages_str);
+		search_cmd_available = g_strdup (search_cmd_installed);
 
 		g_free (packages_str);
 	}
 
-	if (search_cmd != NULL) {
-		tn_array	*pkgs = NULL, *installed = NULL, *available = NULL;
+	if (search_cmd_installed != NULL || search_cmd_available != NULL) {
+		tn_array	*installed = NULL, *available = NULL;
 
-		if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
-			installed = execute_packages_command ("cd /installed; %s", search_cmd);
+		if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED) && search_cmd_installed) {
+			installed = execute_packages_command ("cd /installed; %s", search_cmd_installed);
 		}
 
-		if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
-			available = execute_packages_command ("cd /all-avail; %s", search_cmd);
+		if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED) && search_cmd_available) {
+			available = execute_packages_command ("cd /all-avail; %s", search_cmd_available);
 		}
 
 		if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED) &&
@@ -1409,55 +1478,55 @@ search_package_thread (PkBackend *backend)
 			pkgs = available;
 		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED) || installed)
 			pkgs = installed;
+	}
 
-		if (pkgs) {
-			gint	i;
+	if (pkgs) {
+		gint	i;
 
-			if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
-				do_newest (pkgs);
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
+			do_newest (pkgs);
 
-			for (i = 0; i < n_array_size (pkgs); i++) {
-				struct pkg *pkg = n_array_nth (pkgs, i);
+		for (i = 0; i < n_array_size (pkgs); i++) {
+			struct pkg *pkg = n_array_nth (pkgs, i);
 
-				if (sigint_reached ())
-					break;
+			if (sigint_reached ())
+				break;
 
-				/* check if we have to do development filtering
-				 * (devel or ~devel in filters) */
-				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT) ||
-				    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
-					if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT)) {
-						/* devel in filters */
-						if (!poldek_pkg_is_devel (pkg))
-							continue;
-					} else {
-						/* ~devel in filters */
-						if (poldek_pkg_is_devel (pkg))
-							continue;
-					}
+			/* check if we have to do development filtering
+			 * (devel or ~devel in filters) */
+			if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT) ||
+			    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
+				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT)) {
+					/* devel in filters */
+					if (!poldek_pkg_is_devel (pkg))
+						continue;
+				} else {
+					/* ~devel in filters */
+					if (poldek_pkg_is_devel (pkg))
+						continue;
 				}
+			}
 
-				/* check if we have to do gui filtering
-				 * (gui or ~gui in filters) */
-				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI) ||
-				    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_GUI)) {
-					if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI)) {
-						/* gui in filters */
-						if (!poldek_pkg_is_gui (pkg))
-							continue;
-					} else {
-						/* ~gui in filters */
-						if (poldek_pkg_is_gui (pkg))
-							continue;
-					}
+			/* check if we have to do gui filtering
+			 * (gui or ~gui in filters) */
+			if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI) ||
+			    pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_GUI)) {
+				if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI)) {
+					/* gui in filters */
+					if (!poldek_pkg_is_gui (pkg))
+						continue;
+				} else {
+					/* ~gui in filters */
+					if (poldek_pkg_is_gui (pkg))
+						continue;
 				}
-
-				poldek_backend_package (backend, pkg, PK_INFO_ENUM_UNKNOWN, filters);
 			}
-			n_array_free (pkgs);
-		} else {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "Package not found");
+
+			poldek_backend_package (backend, pkg, PK_INFO_ENUM_UNKNOWN, filters);
 		}
+		n_array_free (pkgs);
+	} else {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "Package not found");
 	}
 
 	if (sigint_reached ()) {
@@ -1474,7 +1543,8 @@ search_package_thread (PkBackend *backend)
 		}
 	}
 
-	g_free (search_cmd);
+	g_free (search_cmd_installed);
+	g_free (search_cmd_available);
 
 	pk_backend_finished (backend);
 	return TRUE;
commit 23f348972c05ba1b8f2837c61110facc2ebefd9e
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jan 2 08:03:16 2009 +0000

    bugfix: allow pkcon to resolve all the command line arguments, not just the first one

diff --git a/client/pk-console.c b/client/pk-console.c
index 49d7dd7..c7e1993 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1686,7 +1686,6 @@ main (int argc, char *argv[])
 	gchar *options_help;
 	gchar *filter = NULL;
 	gchar *summary;
-	gchar **package_ids;
 	gboolean ret = FALSE;
 	const gchar *mode;
 	const gchar *value = NULL;
@@ -1920,9 +1919,7 @@ main (int argc, char *argv[])
 			error = g_error_new (1, 0, "%s", _("You need to specify a package name to resolve"));
 			goto out;
 		}
-		package_ids = pk_package_ids_from_id (value);
-		ret = pk_client_resolve (client_async, filters, package_ids, &error);
-		g_strfreev (package_ids);
+		ret = pk_client_resolve (client_async, filters, argv, &error);
 
 	} else if (strcmp (mode, "repo-enable") == 0) {
 		if (value == NULL) {
commit 64ec3176c11092db2c81968623f687061fef4bc6
Author: Aidan Skinner <aidan at skinner.me.uk>
Date:   Thu Jan 1 14:13:34 2009 +0000

    ruck: fix package install command

diff --git a/contrib/ruck/src/rucktransactcmds.py b/contrib/ruck/src/rucktransactcmds.py
index dd118a1..9ac2c76 100644
--- a/contrib/ruck/src/rucktransactcmds.py
+++ b/contrib/ruck/src/rucktransactcmds.py
@@ -134,16 +134,15 @@ class InstallCmd(TransactCmd):
             else:
                 installs, removals = self.separate_args(non_option_args)
 
-                pkids = pk.Resolve('none', installs)
+                pkids = pk.resolve(installs)
                 if len(pkids) > 0:
-                    pk.InstallPackages(pkids)
+                    pk.install_packages(pkids)
                 else:
                     rucktalk.error("No packages found")
                     return 1
 
-                print "Removing"
-                print removals
-                pk.RemovePackages(removals)
+                if len(removals) > 0:
+                    pk.remove_packages(removals)
 
 ruckcommand.register(InstallCmd)
 
commit 15d267a274e4b633653bdac0462b116e190e5e2f
Merge: 2e0a1f3... 6fe4fed...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Dec 31 16:01:27 2008 -0200

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

commit 2e0a1f34039440c1150be94ee5acd88789def659
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Dec 31 16:00:12 2008 -0200

    Added search file method and search details convinience method to packagekit-qt

diff --git a/lib/packagekit-qt/src/client.cpp b/lib/packagekit-qt/src/client.cpp
index 7502b2e..010dcd3 100644
--- a/lib/packagekit-qt/src/client.cpp
+++ b/lib/packagekit-qt/src/client.cpp
@@ -500,6 +500,20 @@ Transaction* Client::rollback(Transaction* oldtrans)
 	return t;
 }
 
+Transaction* Client::searchFile(const QString& search, Filters filters)
+{
+        Transaction* t = d->createNewTransaction();
+
+        t->d->p->SearchFile(Util::filtersToString(filters), search);
+
+        return t;
+}
+
+Transaction* Client::searchFile(const QString& search, Filter filter)
+{
+        return Client::searchFile(search, Filters() << filter);
+}
+
 Transaction* Client::searchDetails(const QString& search, Filters filters)
 {
 	Transaction* t = d->createNewTransaction();
@@ -509,6 +523,11 @@ Transaction* Client::searchDetails(const QString& search, Filters filters)
 	return t;
 }
 
+Transaction* Client::searchDetails(const QString& search, Filter filter)
+{
+        return Client::searchDetails(search, Filters() << filter);
+}
+
 Transaction* Client::searchGroup(Client::Group group, Filters filters)
 {
 	Transaction* t = d->createNewTransaction();
diff --git a/lib/packagekit-qt/src/client.h b/lib/packagekit-qt/src/client.h
index 3bed227..6490516 100644
--- a/lib/packagekit-qt/src/client.h
+++ b/lib/packagekit-qt/src/client.h
@@ -606,12 +606,21 @@ public:
 	 */
 	Transaction* rollback(Transaction* oldtrans);
 
+        /**
+         * \brief Search in the packages files
+         *
+         * \p filters can be used to restrict the returned packages
+         */
+        Transaction* searchFile(const QString& search, Filters filters = Filters() << NoFilter);
+        Transaction* searchFile(const QString& search, Filter filter);
+
 	/**
 	 * \brief Search in the packages details
 	 *
 	 * \p filters can be used to restrict the returned packages
 	 */
 	Transaction* searchDetails(const QString& search, Filters filters = Filters() << NoFilter);
+        Transaction* searchDetails(const QString& search, Filter filter);
 
 	/**
 	 * \brief Lists all the packages in the given \p group
commit 6fe4fed6cb891c29f24afbcfbb2e996c3f91a202
Merge: 72eb993... b4893a3...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Wed Dec 31 16:29:34 2008 +0100

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

commit b4893a3aada8ca526d9b912f413fa4d657223c60
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 30 22:49:11 2008 +0000

    trivial: fix compiler warning

diff --git a/src/pk-network-nm-dummy.c b/src/pk-network-nm-dummy.c
index cf42368..3091941 100644
--- a/src/pk-network-nm-dummy.c
+++ b/src/pk-network-nm-dummy.c
@@ -42,8 +42,6 @@
 #include "pk-network-nm.h"
 #include "pk-marshal.h"
 
-static void     pk_network_nm_class_init	(PkNetworkNmClass *klass);
-static void     pk_network_nm_init		(PkNetworkNm      *network_nm);
 static void     pk_network_nm_finalize		(GObject          *object);
 
 #define PK_NETWORK_NM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_NETWORK_NM, PkNetworkNmPrivate))
commit 9cd1b12fc1f3f7bcffdff1d9b4ec1b88c55ba20c
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 30 08:46:31 2008 +0000

    trivial: egg updates

diff --git a/lib/packagekit-glib/egg-test.c b/lib/packagekit-glib/egg-test.c
index 900b916..295f4f7 100644
--- a/lib/packagekit-glib/egg-test.c
+++ b/lib/packagekit-glib/egg-test.c
@@ -158,9 +158,9 @@ egg_test_finish (EggTest *test)
 guint
 egg_test_elapsed (EggTest *test)
 {
-	gdouble time;
-	time = g_timer_elapsed (test->timer, NULL);
-	return (guint) (time * 1000.0f);
+	gdouble time_s;
+	time_s = g_timer_elapsed (test->timer, NULL);
+	return (guint) (time_s * 1000.0f);
 }
 
 /**
@@ -188,7 +188,6 @@ egg_test_end (EggTest *test)
 		g_print ("Not started test! Cannot finish!\n");
 		exit (1);
 	}
-	g_print ("OK\n");
 
 	/* disable hang check */
 	if (test->hang_loop_id != 0) {
diff --git a/lib/packagekit-glib/egg-test.h b/lib/packagekit-glib/egg-test.h
index fc49be3..ea4b94b 100644
--- a/lib/packagekit-glib/egg-test.h
+++ b/lib/packagekit-glib/egg-test.h
@@ -33,7 +33,7 @@ void		 egg_test_title			(EggTest *test, const gchar *format, ...);
 void		 egg_test_title_assert		(EggTest *test, const gchar *text, gboolean value);
 void		 egg_test_assert		(EggTest *test, gboolean value);
 void		 egg_test_success		(EggTest *test, const gchar *format, ...);
-void		 egg_test_failed		(EggTest *test, const gchar *format, ...);
+void		 egg_test_failed		(EggTest *test, const gchar *format, ...) G_GNUC_NORETURN;
 EggTest		*egg_test_init			(void);
 gint		 egg_test_finish		(EggTest *test);
 guint		 egg_test_elapsed		(EggTest *test);
commit dc84efec0b676f028e7823ce00a01f55456dcf52
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 30 08:44:53 2008 +0000

    trivial: fix compile with no libarchive

diff --git a/lib/packagekit-glib/pk-service-pack.c b/lib/packagekit-glib/pk-service-pack.c
index 678e9e2..7c1ce3c 100644
--- a/lib/packagekit-glib/pk-service-pack.c
+++ b/lib/packagekit-glib/pk-service-pack.c
@@ -256,7 +256,7 @@ out:
 	return ret;
 }
 #else /* HAVE_ARCHIVE_H */
-gboolean
+static gboolean
 pk_service_pack_extract (const gchar *filename, const gchar *directory, GError **error)
 {
 	*error = g_error_new (PK_SERVICE_PACK_ERROR, PK_SERVICE_PACK_ERROR_FAILED_EXTRACTION,
commit 72eb99324682c8f692896040a31387ab4c3fbda6
Merge: fd2bbe3... a352687...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Tue Dec 30 06:31:41 2008 +0100

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

commit a35268796a25730108b1b738877e98cef802946c
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Mon Dec 29 13:17:31 2008 +0100

    poldek: added support for InstallGStreamerCodecs

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index cf53c5c..b4cc9ef 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -1355,10 +1355,9 @@ search_package_thread (PkBackend *backend)
 
 		search = pk_backend_get_string (backend, "search");
 
-		if (provides == PK_PROVIDES_ENUM_ANY) {
+		if (provides == PK_PROVIDES_ENUM_ANY || provides == PK_PROVIDES_ENUM_CODEC) {
 			search_cmd = g_strdup_printf ("search -qp %s", search);
 		} else if (provides == PK_PROVIDES_ENUM_MODALIAS) {
-		} else if (provides == PK_PROVIDES_ENUM_CODEC) {
 		} else if (provides == PK_PROVIDES_ENUM_MIMETYPE) {
 			search_cmd = g_strdup_printf ("search -qp mimetype(%s)", search);
 		}
commit 5a7cd22f02cdb945e39a65bfc6fe07b041745f6a
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Mon Dec 29 13:13:16 2008 +0100

    poldek: documentation packages have its own group

diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index e9b3f88..cf53c5c 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -81,7 +81,7 @@ static PLDGroupRegex group_perlre[] = {
 	{PK_GROUP_ENUM_MULTIMEDIA, "/.*Multimedia\\|.*Sound/"},
 	{PK_GROUP_ENUM_NETWORK, "/.*Networking.*\\|/.*Mail\\|.*News\\|.*WWW/"},
 	{PK_GROUP_ENUM_OFFICE, "/.*Editors.*\\|.*Spreadsheets/"},
-	{PK_GROUP_ENUM_OTHER, "/^Applications$\\|.*Console\\|.*Emulators\\|.*File\\|.*Printing\\|.*Terminal\\|.*Text\\|Documentation\\|^Libraries.*\\|^Themes.*\\|^X11$\\|.*Amusements\\|^X11\\/Applications$\\|^X11\\/Libraries$\\|.*Window\\ Managers.*/"},
+	{PK_GROUP_ENUM_OTHER, "/^Applications$\\|.*Console\\|.*Emulators\\|.*File\\|.*Printing\\|.*Terminal\\|.*Text\\|^Libraries.*\\|^Themes.*\\|^X11$\\|.*Amusements\\|^X11\\/Applications$\\|^X11\\/Libraries$\\|.*Window\\ Managers.*/"},
 	{PK_GROUP_ENUM_PROGRAMMING, "/.*Development.*/"},
 	{PK_GROUP_ENUM_PUBLISHING, "/.*Publishing.*/"},
 	{PK_GROUP_ENUM_SERVERS, "/Daemons\\|.*Servers/"},
commit 43dd34b6365586b62e283d3798e4af6622b2b1ba
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Dec 26 10:36:05 2008 +0000

    trivial: fix up issues with the last commit

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 0fd3bfc..fbf353d 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -2101,7 +2101,8 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         if notice:
             # Update Details
             desc = notice['description']
-            desc = desc.replace("\t", " ")
+            if desc:
+                desc = desc.replace("\t", " ")
 
             # Update References (Bugzilla, CVE ...)
             refs = notice['references']
commit 6e955194e11db010fccb37c66531a76c92703dbe
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Dec 26 09:49:33 2008 +0000

    trivial: print the command size in PkBackendSpawn for use when debugging

diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c
index bcd125f..f1d72c0 100644
--- a/src/pk-backend-spawn.c
+++ b/src/pk-backend-spawn.c
@@ -133,7 +133,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 
 	if (egg_strequal (command, "package")) {
 		if (size != 4) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -152,7 +152,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		pk_backend_package (backend_spawn->priv->backend, info, sections[2], sections[3]);
 	} else if (egg_strequal (command, "details")) {
 		if (size != 7) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -173,21 +173,21 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		g_free (text);
 	} else if (egg_strequal (command, "finished")) {
 		if (size != 1) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
 		pk_backend_finished (backend_spawn->priv->backend);
 	} else if (egg_strequal (command, "files")) {
 		if (size != 3) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
 		pk_backend_files (backend_spawn->priv->backend, sections[1], sections[2]);
 	} else if (egg_strequal (command, "repo-detail")) {
 		if (size != 4) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -202,7 +202,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		}
 	} else if (egg_strequal (command, "updatedetail")) {
 		if (size != 13) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command '%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -225,7 +225,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		g_free (text);
 	} else if (egg_strequal (command, "percentage")) {
 		if (size != 2) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -240,7 +240,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		}
 	} else if (egg_strequal (command, "subpercentage")) {
 		if (size != 2) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -255,7 +255,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		}
 	} else if (egg_strequal (command, "error")) {
 		if (size != 3) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -279,7 +279,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		g_free (text);
 	} else if (egg_strequal (command, "requirerestart")) {
 		if (size != 3) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -293,7 +293,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		pk_backend_require_restart (backend_spawn->priv->backend, restart_enum, sections[2]);
 	} else if (egg_strequal (command, "message")) {
 		if (size != 3) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -311,14 +311,14 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		g_free (text);
 	} else if (egg_strequal (command, "change-transaction-data")) {
 		if (size != 2) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
 		pk_backend_set_transaction_data (backend_spawn->priv->backend, sections[1]);
 	} else if (egg_strequal (command, "status")) {
 		if (size != 2) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -332,7 +332,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		pk_backend_set_status (backend_spawn->priv->backend, status_enum);
 	} else if (egg_strequal (command, "allow-cancel")) {
 		if (size != 2) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -347,7 +347,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 		}
 	} else if (egg_strequal (command, "no-percentage-updates")) {
 		if (size != 1) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -355,7 +355,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 	} else if (egg_strequal (command, "repo-signature-required")) {
 
 		if (size != 9) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -388,7 +388,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 	} else if (egg_strequal (command, "distro-upgrade")) {
 
 		if (size != 4) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
@@ -406,7 +406,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, const gchar *line)
 	} else if (egg_strequal (command, "category")) {
 
 		if (size != 6) {
-			egg_warning ("invalid command '%s'", command);
+			egg_warning ("invalid command'%s', size %i", command, size);
 			ret = FALSE;
 			goto out;
 		}
commit cd07a92d7496f2ef4e07559938ebaaea465c671e
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Dec 26 09:48:59 2008 +0000

    yum: remove all tab characters in update descriptions

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index ded53e0..0fd3bfc 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -2101,6 +2101,8 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         if notice:
             # Update Details
             desc = notice['description']
+            desc = desc.replace("\t", " ")
+
             # Update References (Bugzilla, CVE ...)
             refs = notice['references']
             if refs:
commit 045de9a73017e0e3fca22a9a9dede2f8e70b8704
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Dec 24 18:27:52 2008 +0000

    feature: upload some updated screenshots and some videos

diff --git a/configure.ac b/configure.ac
index 5949fb3..71db5d8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -637,6 +637,7 @@ man/Makefile
 docs/Makefile
 docs/html/Makefile
 docs/html/img/Makefile
+docs/html/videos/Makefile
 docs/api/Makefile
 docs/api/dbus/Makefile
 docs/api/version.xml
diff --git a/docs/html/Makefile.am b/docs/html/Makefile.am
index 59d2760..1c30bb0 100644
--- a/docs/html/Makefile.am
+++ b/docs/html/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = img
+SUBDIRS = img videos
 
 HTML_FILES =				\
 	index.html			\
diff --git a/docs/html/img/Makefile.am b/docs/html/img/Makefile.am
index 3026ce5..d1c9486 100644
--- a/docs/html/img/Makefile.am
+++ b/docs/html/img/Makefile.am
@@ -39,6 +39,7 @@ IMAGE_FILES =					\
 	gpk-client-codecs.png			\
 	gpk-client-mime-type.png		\
 	gpk-client-font.png			\
+	gpk-markdown.png			\
 	$(NULL)
 
 EXTRA_DIST = 					\
diff --git a/docs/html/img/gpk-markdown.png b/docs/html/img/gpk-markdown.png
new file mode 100644
index 0000000..63ba21b
Binary files /dev/null and b/docs/html/img/gpk-markdown.png differ
diff --git a/docs/html/img/pk-command-not-found.png b/docs/html/img/pk-command-not-found.png
new file mode 100644
index 0000000..d21ac9c
Binary files /dev/null and b/docs/html/img/pk-command-not-found.png differ
diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index 23d0346..1616953 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -25,6 +25,7 @@
 <li><a href="#catalogs">What's a package catalog?</a></li>
 <li><a href="#markup">Can I include formatting characters in package descriptions?</a></li>
 <li><a href="#1-click-install">Does PackageKit support 1-Click Install?</a></li>
+<li><a href="#command-not-found">How does the command not found functionality work?</a></li>
 <li><a href="#run-as-root">When run as root, gpk-application and pkcon do not work!</a></li>
 <li><a href="#session-system">Why is there a session service and and a system service?</a></li>
 <li><a href="#session-methods">How do I use PackageKit in my application?</a></li>
@@ -172,6 +173,19 @@ The following <i>GUI</i> programs are provided:
 <li><code>gnome-power-statistics</code> - view power graphs and device history</li>
 </ul>
 </td></tr></table>
+<p>
+Update descriptions are also processed for markdown, for example:
+</p>
+<img src=img/gpk-markdown.png/>
+<hr>
+
+<h3><a name="command-not-found">How does the command not found functionality work?</a></h3>
+<p>
+The command not found functionality is a bash extension that allows PackageKit
+to suggest similar commands, or to offer to install packages to provide commands.
+It's probably best to click on the image and watch the video.
+</p>
+<a href="videos/pk-command-not-found.ogv"><img src=img/pk-command-not-found.png/></a>
 <hr>
 
 <h3><a name="1-click-install">Does PackageKit support 1-Click Install?</a></h3>
diff --git a/docs/html/pk-screenshots.html b/docs/html/pk-screenshots.html
index 85c4a52..2c21510 100644
--- a/docs/html/pk-screenshots.html
+++ b/docs/html/pk-screenshots.html
@@ -135,11 +135,11 @@
 </td>
 <td width="300">
   <center><a href="img/gpk-client-font.png"><img src="img/thumbnails/gpk-client-font.png" alt=""/></a></center>
-  <p class="caption">Session installer for fonts</p>
+  <p class="caption">Session installer for fonts <a href="videos/pk-font-no-found.ogv">[video]</a></p>
 </td>
 <td width="300">
   <center><a href="img/gpk-client-mime-type.png"><img src="img/thumbnails/gpk-client-mime-type.png" alt=""/></a></center>
-  <p class="caption">Session installer for MIME types</p>
+  <p class="caption">Session installer for applications <a href="videos/pk-application-not-found.ogv">[video]</a></p>
 </td>
 </tr>
 <tr>
@@ -151,7 +151,10 @@
   <center><a href="img/gpk-auto-update.png"><img src="img/thumbnails/gpk-auto-update.png" alt=""/></a></center>
   <p class="caption">Auto update install dialog</p>
 </td>
-<td>&nbsp;</td>
+<td width="300">
+  <center><a href="img/gpk-markdown.png"><img src="img/thumbnails/gpk-markdown.png" alt=""/></a></center>
+  <p class="caption"><a href="http://en.wikipedia.org/wiki/Markdown">Markdown</a> syntax in the update viewer</p>
+</td>
 </tr>
 </table>
 </center>
diff --git a/docs/html/upload.sh b/docs/html/upload.sh
index 3e900ab..a217415 100755
--- a/docs/html/upload.sh
+++ b/docs/html/upload.sh
@@ -14,6 +14,7 @@ LOCATION="/srv/www/html"
 scp *.html $USER@$SERVER:/$LOCATION/
 scp img/*.png $USER@$SERVER:/$LOCATION/img/
 scp img/thumbnails/*.png $USER@$SERVER:/$LOCATION/img/thumbnails/
+scp videos/*.ogv $USER@$SERVER:/$LOCATION/videos/
 scp *.css $USER@$SERVER:/$LOCATION/
 scp ../api/html/*.html $USER@$SERVER:/$LOCATION/gtk-doc/
 scp ../api/html/*.png $USER@$SERVER:/$LOCATION/gtk-doc/
diff --git a/docs/html/videos/Makefile.am b/docs/html/videos/Makefile.am
new file mode 100644
index 0000000..94738d2
--- /dev/null
+++ b/docs/html/videos/Makefile.am
@@ -0,0 +1,15 @@
+NULL =
+
+VIDEO_FILES =					\
+	pk-application-not-found.ogv		\
+	pk-command-not-found.ogv		\
+	pk-font-no-found.ogv			\
+	$(NULL)
+
+EXTRA_DIST = 					\
+	$(VIDEO_FILES)				\
+	$(NULL)
+
+clean-local:
+	rm -f *~
+
diff --git a/docs/html/videos/pk-application-not-found.ogv b/docs/html/videos/pk-application-not-found.ogv
new file mode 100644
index 0000000..1a045a9
Binary files /dev/null and b/docs/html/videos/pk-application-not-found.ogv differ
diff --git a/docs/html/videos/pk-command-not-found.ogv b/docs/html/videos/pk-command-not-found.ogv
new file mode 100644
index 0000000..53d63f0
Binary files /dev/null and b/docs/html/videos/pk-command-not-found.ogv differ
diff --git a/docs/html/videos/pk-font-no-found.ogv b/docs/html/videos/pk-font-no-found.ogv
new file mode 100644
index 0000000..8a33bd5
Binary files /dev/null and b/docs/html/videos/pk-font-no-found.ogv differ
commit 7fd321033a6ece70638ef22079597bcf4ec42aef
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Dec 24 18:05:23 2008 +0000

    trivial: edit m4 gitignore

diff --git a/m4/.gitignore b/m4/.gitignore
index e69de29..b2cecf0 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -0,0 +1,2 @@
+*.m4
+
commit fd2bbe35dd70489dff9ace9603ca839217f274e6
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Wed Dec 24 12:32:08 2008 +0100

    APT: Provide details for a failed download

diff --git a/backends/apt/aptDBUSBackend.py b/backends/apt/aptDBUSBackend.py
index df1173e..f8b93b2 100755
--- a/backends/apt/aptDBUSBackend.py
+++ b/backends/apt/aptDBUSBackend.py
@@ -1702,9 +1702,9 @@ class PackageKitAptBackend(PackageKitBaseBackend):
         try:
             self._cache.commit(PackageKitFetchProgress(self, fetch_range), 
                                PackageKitInstallProgress(self, install_range))
-        except apt.cache.FetchFailedException:
+        except apt.cache.FetchFailedException, e:
             self._open_cache(prange=(95,100))
-            self.ErrorCode(ERROR_PACKAGE_DOWNLOAD_FAILED, "Download failed")
+            self.ErrorCode(ERROR_PACKAGE_DOWNLOAD_FAILED, e.message)
             self.Finished(EXIT_FAILED)
         except apt.cache.FetchCancelledException:
             self._open_cache(prange=(95,100))
commit 0a8fafcd261a330b1c87a815fcafc10c540c5b66
Merge: df70101... c3674c1...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Wed Dec 24 12:07:38 2008 +0100

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

commit df70101694fa7e03818b028fccb04b9a9d5bab4c
Merge: 2501842... fbf993a...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Mon Dec 22 12:07:16 2008 +0100

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

commit 25018420cef042274eac4ba372e5ff6ce0dd7d2c
Merge: 563baf3... 6503764...
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Tue Dec 16 11:09:28 2008 +0100

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

commit 563baf35a91c99f05aee80a2855ab24bd9bd3e1c
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Sun Dec 14 11:50:17 2008 +0100

    APT: Allow to speicify additional nosetests parameters for the test script

diff --git a/backends/apt/test.sh b/backends/apt/test.sh
index 425ec0b..f6eca2e 100755
--- a/backends/apt/test.sh
+++ b/backends/apt/test.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-nosetests --with-coverage --cover-package=aptDBUSBackend --pdb tests.py
+nosetests $@ --with-coverage --cover-package=aptDBUSBackend --pdb tests.py
commit 73c7b1ed1dc7b85624772f8e62bc6b8354a75074
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Sun Dec 14 11:49:51 2008 +0100

    APT: Adapt changed test data paths

diff --git a/backends/apt/tests.py b/backends/apt/tests.py
index 09531bd..79c74a2 100755
--- a/backends/apt/tests.py
+++ b/backends/apt/tests.py
@@ -131,9 +131,9 @@ def setup():
     os.makedirs(os.path.join(TEMPDIR, "var/lib/dpkg/info"))
     os.makedirs(os.path.join(TEMPDIR, "etc/apt"))
     os.makedirs(os.path.join(TEMPDIR, "repo"))
-    shutil.copy("Packages.test", os.path.join(TEMPDIR, "repo/Packages"))
-    shutil.copy("status.test", os.path.join(TEMPDIR, "var/lib/dpkg/status"))
-    shutil.copy("xterm.list.test", os.path.join(TEMPDIR,
+    shutil.copy("data/Packages", os.path.join(TEMPDIR, "repo/Packages"))
+    shutil.copy("data/status", os.path.join(TEMPDIR, "var/lib/dpkg/status"))
+    shutil.copy("data/xterm.list", os.path.join(TEMPDIR,
                                                 "var/lib/dpkg/info/xterm.list"))
     sources = open(os.path.join(TEMPDIR, "etc/apt/sources.list"), "w")
     sources.write("deb file://%s/repo/ ./\n" % TEMPDIR)
commit 82c544daf3bc81e555f5fed691f783237060661d
Author: Sebastian Heinlein <devel at glatzor.de>
Date:   Sun Dec 14 11:47:20 2008 +0100

    APT: Move test data files to a separate folder

diff --git a/backends/apt/Packages.test b/backends/apt/Packages.test
deleted file mode 100644
index b696056..0000000
--- a/backends/apt/Packages.test
+++ /dev/null
@@ -1,71 +0,0 @@
-Package: xterm
-Priority: optional
-Section: x11
-Installed-Size: 1112
-Maintainer: Debian X Strike Force <debian-x at lists.debian.org>
-Architecture: i386
-Version: 237-1
-Provides: x-terminal-emulator
-Suggests: xfonts-cyrillic
-Filename: pool/main/x/xterm/xterm_235-1_i386.deb
-Size: 466530
-MD5sum: ec97de9afffcbc5932dddfa9090f6fbe
-SHA1: 7aedb7fc5dd906ad35246cf7442e250311aa2130
-SHA256: 517f01858734b253584c28bb9951acbb6a082d1274c6ec6c079f7567bf067d71
-Description: X terminal emulator
- xterm is a terminal emulator for the X Window System.  It provides DEC VT102
- and Tektronix 4014 compatible terminals for programs that cannot use the
- window system directly.  This version implements ISO/ANSI colors and most of
- the control sequences used by DEC VT220 terminals.
- .
- This package provides four commands: xterm, which is the traditional
- terminal emulator; uxterm, which is a wrapper around xterm that is
- intelligent about locale settings (especially those which use the UTF-8
- character encoding), but which requires the luit program from the x11-utils
- package; koi8rxterm, a wrapper similar to uxterm for locales that use the
- KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
- previous commands to execute based on the user's locale settings.
- .
- A complete list of control sequences supported by the X terminal emulator
- is provided in /usr/share/doc/xterm.
- .
- The xterm program uses bitmap images provided by the xbitmaps package.
- .
- Those interested in using koi8rxterm will likely want to install the
- xfonts-cyrillic package as well.
-Homepage: http://invisible-island.net/xterm/xterm.html
-Tag: implemented-in::c, interface::x11, role::program, scope::utility, uitoolkit::athena, x11::application, x11::terminal
-Task: desktop
-
-Package: synaptic
-Priority: optional
-Section: admin
-Installed-Size: 5812
-Maintainer: Michael Vogt <mvo at debian.org>
-Architecture: i386
-Version: 0.62.1
-Replaces: gsynaptic
-Provides: gsynaptic
-Depends: xterm
-Suggests: dwww
-Conflicts: gsynaptic, menu (<< 2.1.11)
-Filename: pool/main/s/synaptic/synaptic_0.62.1_i386.deb
-Size: 2094122
-MD5sum: 91b86003eea53002e0c2a0ea50596e37
-SHA1: e533c3345911d5c8471b54a8a7b51ae52e59982b
-SHA256: a399168d801efa1616d7b1178b4c3eda70c612716374411708d05956f3c99874
-Description: Graphical package manager
- Synaptic is a graphical package management tool based on GTK+ and APT.
- Synaptic enables you to install, upgrade and remove software packages in
- a user friendly way.
- .
- Besides these basic functions the following features are provided:
-  * Search and filter the list of available packages
-  * Perform smart system upgrades
-  * Fix broken package dependencies
-  * Edit the list of used repositories (sources.list)
-  * Download the latest changelog of a package
-  * Configure packages through the debconf system
-  * Browse all available documentation related to a package (dwww is required)
-Tag: admin::package-management, implemented-in::c++, interface::x11, role::program, scope::application, suite::debian, uitoolkit::gtk, works-with::software:package, x11::application
-
diff --git a/backends/apt/data/Packages b/backends/apt/data/Packages
new file mode 100644
index 0000000..b696056
--- /dev/null
+++ b/backends/apt/data/Packages
@@ -0,0 +1,71 @@
+Package: xterm
+Priority: optional
+Section: x11
+Installed-Size: 1112
+Maintainer: Debian X Strike Force <debian-x at lists.debian.org>
+Architecture: i386
+Version: 237-1
+Provides: x-terminal-emulator
+Suggests: xfonts-cyrillic
+Filename: pool/main/x/xterm/xterm_235-1_i386.deb
+Size: 466530
+MD5sum: ec97de9afffcbc5932dddfa9090f6fbe
+SHA1: 7aedb7fc5dd906ad35246cf7442e250311aa2130
+SHA256: 517f01858734b253584c28bb9951acbb6a082d1274c6ec6c079f7567bf067d71
+Description: X terminal emulator
+ xterm is a terminal emulator for the X Window System.  It provides DEC VT102
+ and Tektronix 4014 compatible terminals for programs that cannot use the
+ window system directly.  This version implements ISO/ANSI colors and most of
+ the control sequences used by DEC VT220 terminals.
+ .
+ This package provides four commands: xterm, which is the traditional
+ terminal emulator; uxterm, which is a wrapper around xterm that is
+ intelligent about locale settings (especially those which use the UTF-8
+ character encoding), but which requires the luit program from the x11-utils
+ package; koi8rxterm, a wrapper similar to uxterm for locales that use the
+ KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
+ previous commands to execute based on the user's locale settings.
+ .
+ A complete list of control sequences supported by the X terminal emulator
+ is provided in /usr/share/doc/xterm.
+ .
+ The xterm program uses bitmap images provided by the xbitmaps package.
+ .
+ Those interested in using koi8rxterm will likely want to install the
+ xfonts-cyrillic package as well.
+Homepage: http://invisible-island.net/xterm/xterm.html
+Tag: implemented-in::c, interface::x11, role::program, scope::utility, uitoolkit::athena, x11::application, x11::terminal
+Task: desktop
+
+Package: synaptic
+Priority: optional
+Section: admin
+Installed-Size: 5812
+Maintainer: Michael Vogt <mvo at debian.org>
+Architecture: i386
+Version: 0.62.1
+Replaces: gsynaptic
+Provides: gsynaptic
+Depends: xterm
+Suggests: dwww
+Conflicts: gsynaptic, menu (<< 2.1.11)
+Filename: pool/main/s/synaptic/synaptic_0.62.1_i386.deb
+Size: 2094122
+MD5sum: 91b86003eea53002e0c2a0ea50596e37
+SHA1: e533c3345911d5c8471b54a8a7b51ae52e59982b
+SHA256: a399168d801efa1616d7b1178b4c3eda70c612716374411708d05956f3c99874
+Description: Graphical package manager
+ Synaptic is a graphical package management tool based on GTK+ and APT.
+ Synaptic enables you to install, upgrade and remove software packages in
+ a user friendly way.
+ .
+ Besides these basic functions the following features are provided:
+  * Search and filter the list of available packages
+  * Perform smart system upgrades
+  * Fix broken package dependencies
+  * Edit the list of used repositories (sources.list)
+  * Download the latest changelog of a package
+  * Configure packages through the debconf system
+  * Browse all available documentation related to a package (dwww is required)
+Tag: admin::package-management, implemented-in::c++, interface::x11, role::program, scope::application, suite::debian, uitoolkit::gtk, works-with::software:package, x11::application
+
diff --git a/backends/apt/data/status b/backends/apt/data/status
new file mode 100644
index 0000000..2bba0ae
--- /dev/null
+++ b/backends/apt/data/status
@@ -0,0 +1,38 @@
+Package: xterm
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1112
+Maintainer: Debian X Strike Force <debian-x at lists.debian.org>
+Architecture: i386
+Version: 235-1
+Provides: x-terminal-emulator
+Suggests: xfonts-cyrillic
+Conffiles:
+ /etc/X11/app-defaults/KOI8RXTerm dd942bff017ee9cfc2bb97bbdd7378b6
+ /etc/X11/app-defaults/UXTerm 952670ddfbb90d0a7c36e87e7a796595
+ /etc/X11/app-defaults/XTerm ec0c680b99b0f69f8d5d3318bd1a862e
+ /etc/X11/app-defaults/XTerm-color 657eb990e33aeddb17c7e2185321878c
+Description: X terminal emulator
+ xterm is a terminal emulator for the X Window System.  It provides DEC VT102
+ and Tektronix 4014 compatible terminals for programs that cannot use the
+ window system directly.  This version implements ISO/ANSI colors and most of
+ the control sequences used by DEC VT220 terminals.
+ .
+ This package provides four commands: xterm, which is the traditional
+ terminal emulator; uxterm, which is a wrapper around xterm that is
+ intelligent about locale settings (especially those which use the UTF-8
+ character encoding), but which requires the luit program from the x11-utils
+ package; koi8rxterm, a wrapper similar to uxterm for locales that use the
+ KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
+ previous commands to execute based on the user's locale settings.
+ .
+ A complete list of control sequences supported by the X terminal emulator
+ is provided in /usr/share/doc/xterm.
+ .
+ The xterm program uses bitmap images provided by the xbitmaps package.
+ .
+ Those interested in using koi8rxterm will likely want to install the
+ xfonts-cyrillic package as well.
+Homepage: http://invisible-island.net/xterm/xterm.html
+
diff --git a/backends/apt/data/xterm.list b/backends/apt/data/xterm.list
new file mode 100644
index 0000000..4afffb9
--- /dev/null
+++ b/backends/apt/data/xterm.list
@@ -0,0 +1,49 @@
+/.
+/usr
+/usr/bin
+/usr/bin/koi8rxterm
+/usr/bin/lxterm
+/usr/bin/resize
+/usr/bin/uxterm
+/usr/bin/xterm
+/usr/share
+/usr/share/man
+/usr/share/man/man1
+/usr/share/man/man1/lxterm.1.gz
+/usr/share/man/man1/uxterm.1.gz
+/usr/share/man/man1/xterm.1.gz
+/usr/share/man/man1/koi8rxterm.1.gz
+/usr/share/man/man1/resize.1.gz
+/usr/share/lintian
+/usr/share/lintian/overrides
+/usr/share/lintian/overrides/xterm
+/usr/share/doc
+/usr/share/doc/xterm
+/usr/share/doc/xterm/ctlseqs.txt.gz
+/usr/share/doc/xterm/xterm.termcap.gz
+/usr/share/doc/xterm/xterm.log.html
+/usr/share/doc/xterm/xterm.faq.html
+/usr/share/doc/xterm/xterm.faq.gz
+/usr/share/doc/xterm/changelog.Debian.gz
+/usr/share/doc/xterm/README.Debian
+/usr/share/doc/xterm/copyright
+/usr/share/doc/xterm/README.i18n.gz
+/usr/share/doc/xterm/ctlseqs.ms.gz
+/usr/share/doc/xterm/xterm.terminfo.gz
+/usr/share/doc-base
+/usr/share/doc-base/xterm-ctlseqs
+/usr/share/doc-base/xterm-faq
+/usr/share/menu
+/usr/share/menu/xterm
+/usr/share/pixmaps
+/usr/share/pixmaps/xterm-color_32x32.xpm
+/usr/share/pixmaps/xterm-color_48x48.xpm
+/usr/share/pixmaps/xterm_32x32.xpm
+/usr/share/pixmaps/xterm_48x48.xpm
+/etc
+/etc/X11
+/etc/X11/app-defaults
+/etc/X11/app-defaults/KOI8RXTerm
+/etc/X11/app-defaults/UXTerm
+/etc/X11/app-defaults/XTerm
+/etc/X11/app-defaults/XTerm-color
diff --git a/backends/apt/status.test b/backends/apt/status.test
deleted file mode 100644
index 2bba0ae..0000000
--- a/backends/apt/status.test
+++ /dev/null
@@ -1,38 +0,0 @@
-Package: xterm
-Status: install ok installed
-Priority: optional
-Section: x11
-Installed-Size: 1112
-Maintainer: Debian X Strike Force <debian-x at lists.debian.org>
-Architecture: i386
-Version: 235-1
-Provides: x-terminal-emulator
-Suggests: xfonts-cyrillic
-Conffiles:
- /etc/X11/app-defaults/KOI8RXTerm dd942bff017ee9cfc2bb97bbdd7378b6
- /etc/X11/app-defaults/UXTerm 952670ddfbb90d0a7c36e87e7a796595
- /etc/X11/app-defaults/XTerm ec0c680b99b0f69f8d5d3318bd1a862e
- /etc/X11/app-defaults/XTerm-color 657eb990e33aeddb17c7e2185321878c
-Description: X terminal emulator
- xterm is a terminal emulator for the X Window System.  It provides DEC VT102
- and Tektronix 4014 compatible terminals for programs that cannot use the
- window system directly.  This version implements ISO/ANSI colors and most of
- the control sequences used by DEC VT220 terminals.
- .
- This package provides four commands: xterm, which is the traditional
- terminal emulator; uxterm, which is a wrapper around xterm that is
- intelligent about locale settings (especially those which use the UTF-8
- character encoding), but which requires the luit program from the x11-utils
- package; koi8rxterm, a wrapper similar to uxterm for locales that use the
- KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
- previous commands to execute based on the user's locale settings.
- .
- A complete list of control sequences supported by the X terminal emulator
- is provided in /usr/share/doc/xterm.
- .
- The xterm program uses bitmap images provided by the xbitmaps package.
- .
- Those interested in using koi8rxterm will likely want to install the
- xfonts-cyrillic package as well.
-Homepage: http://invisible-island.net/xterm/xterm.html
-
diff --git a/backends/apt/xterm.list.test b/backends/apt/xterm.list.test
deleted file mode 100644
index 4afffb9..0000000
--- a/backends/apt/xterm.list.test
+++ /dev/null
@@ -1,49 +0,0 @@
-/.
-/usr
-/usr/bin
-/usr/bin/koi8rxterm
-/usr/bin/lxterm
-/usr/bin/resize
-/usr/bin/uxterm
-/usr/bin/xterm
-/usr/share
-/usr/share/man
-/usr/share/man/man1
-/usr/share/man/man1/lxterm.1.gz
-/usr/share/man/man1/uxterm.1.gz
-/usr/share/man/man1/xterm.1.gz
-/usr/share/man/man1/koi8rxterm.1.gz
-/usr/share/man/man1/resize.1.gz
-/usr/share/lintian
-/usr/share/lintian/overrides
-/usr/share/lintian/overrides/xterm
-/usr/share/doc
-/usr/share/doc/xterm
-/usr/share/doc/xterm/ctlseqs.txt.gz
-/usr/share/doc/xterm/xterm.termcap.gz
-/usr/share/doc/xterm/xterm.log.html
-/usr/share/doc/xterm/xterm.faq.html
-/usr/share/doc/xterm/xterm.faq.gz
-/usr/share/doc/xterm/changelog.Debian.gz
-/usr/share/doc/xterm/README.Debian
-/usr/share/doc/xterm/copyright
-/usr/share/doc/xterm/README.i18n.gz
-/usr/share/doc/xterm/ctlseqs.ms.gz
-/usr/share/doc/xterm/xterm.terminfo.gz
-/usr/share/doc-base
-/usr/share/doc-base/xterm-ctlseqs
-/usr/share/doc-base/xterm-faq
-/usr/share/menu
-/usr/share/menu/xterm
-/usr/share/pixmaps
-/usr/share/pixmaps/xterm-color_32x32.xpm
-/usr/share/pixmaps/xterm-color_48x48.xpm
-/usr/share/pixmaps/xterm_32x32.xpm
-/usr/share/pixmaps/xterm_48x48.xpm
-/etc
-/etc/X11
-/etc/X11/app-defaults
-/etc/X11/app-defaults/KOI8RXTerm
-/etc/X11/app-defaults/UXTerm
-/etc/X11/app-defaults/XTerm
-/etc/X11/app-defaults/XTerm-color


More information about the PackageKit-commit mailing list