[PackageKit-commit] packagekit: Branch 'master' - 11 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Thu Jun 5 01:12:44 PDT 2008
.gitignore | 3
backends/opkg/pk-backend-opkg.c | 12
backends/poldek/pk-backend-poldek.c | 33 +-
docs/html/pk-faq.html | 523 ----------------------------------
docs/html/pk-matrix.html | 548 ++++++++++++++++++++++++++++++++++++
libpackagekit/pk-client.c | 26 +
libpackagekit/pk-control.c | 1
libpackagekit/pk-package-list.c | 23 +
libselftest/libselftest.c | 27 +
libselftest/libselftest.h | 27 -
src/.gitignore | 1
src/pk-spawn.c | 37 --
tools/.gitignore | 1
13 files changed, 685 insertions(+), 577 deletions(-)
New commits:
commit 17d445b84a6c699ea869c3ba6500c0e3f27a292a
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Jun 5 08:40:37 2008 +0100
trivial: add another unit test for sorting twice the same list
diff --git a/libpackagekit/pk-package-list.c b/libpackagekit/pk-package-list.c
index 3727635..33d7d07 100644
--- a/libpackagekit/pk-package-list.c
+++ b/libpackagekit/pk-package-list.c
@@ -538,6 +538,29 @@ libst_package_list (LibSelfTest *test)
g_object_unref (plist);
+ plist = pk_package_list_new ();
+ pk_package_list_add (plist, PK_INFO_ENUM_SECURITY, "def;1.23;i386;data", "zed");
+ pk_package_list_add (plist, PK_INFO_ENUM_SECURITY, "abc;1.23;i386;data", "fed");
+ pk_package_list_add (plist, PK_INFO_ENUM_BUGFIX, "ghi;1.23;i386;data", "aed");
+ pk_package_list_add (plist, PK_INFO_ENUM_BUGFIX, "jkl;1.23;i386;data", "med");
+
+ /************************************************************/
+ libst_title (test, "sort by package_id then priority (should not mess up previous sort)");
+ pk_package_list_sort (plist);
+ pk_package_list_sort_info (plist);
+ r0 = pk_package_list_get_item (plist, 0);
+ r1 = pk_package_list_get_item (plist, 1);
+ r2 = pk_package_list_get_item (plist, 2);
+ if (pk_strequal (r0->package_id, "abc;1.23;i386;data") &&
+ pk_strequal (r1->package_id, "def;1.23;i386;data") &&
+ pk_strequal (r2->package_id, "ghi;1.23;i386;data")) {
+ libst_success (test, NULL);
+ } else {
+ libst_failed (test, "could not sort: %s,%s,%s", r0->package_id, r1->package_id, r2->package_id);
+ }
+
+ g_object_unref (plist);
+
libst_end (test);
}
#endif
commit f82572da2beb8d24c3ddb937ca8e071a12a53739
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Jun 5 08:18:11 2008 +0100
trivial: move the feature matrix into it's own file, there are too many FAQ entries now
diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index 3e37cc1..1fb8563 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -48,523 +48,12 @@
<hr>
<h3><a name="how-complete">How complete are the backends?</a></h3>
-<h4>Methods</h4>
-<table>
-<tr>
-<td width="150px"> </td>
-<td><center>apt</center></td>
-<td><center>alpm</center></td>
-<td><center>box</center></td>
-<td><center>conary</center></td>
-<td><center>opkg</center></td>
-<td><center>pisi</center></td>
-<td><center>poldek</center></td>
-<td><center>smart</center></td>
-<td><center>urpmi</center></td>
-<td><center>yum</center></td>
-<td><center>yum2</center></td>
-<td><center>zypp</center></td>
-</tr>
-<tr>
-<td><b>Resolve</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>RefreshCache</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetUpdates</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>UpdateSystem</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>SearchName</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>SearchDetails</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>SearchFile</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>SearchGroup</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>InstallPackages</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>InstallFiles</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>RemovePackages</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>UpdatePackage</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetDepends</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetRequires</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetDetails</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetFiles</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetUpdateDetail</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetRepoList</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>RepoEnable</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>RepoSetData</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Cancel</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>ServicePack</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>WhatProvides</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GetPackages</b></td>
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[good]"/></td><!-- zypp -->
-</tr>
-</table>
-
-<h4>Filters</h4>
-<table>
-<tr>
-<td width="150px"> </td>
-<td><center>apt</center></td>
-<td><center>alpm</center></td>
-<td><center>box</center></td>
-<td><center>conary</center></td>
-<td><center>opkg</center></td>
-<td><center>pisi</center></td>
-<td><center>poldek</center></td>
-<td><center>smart</center></td>
-<td><center>urpmi</center></td>
-<td><center>yum</center></td>
-<td><center>yum2</center></td>
-<td><center>zypp</center></td>
-</tr>
-<tr>
-<td><b>Installed</b></td>
-<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-good.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Development</b></td>
-<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>GUI</b></td>
-<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Free</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Visible</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Supported</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Newest</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
-</tr>
-<tr>
-<td><b>Arch</b></td>
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
-<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
-<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
-</tr>
-</table>
+<p>
+Backends do not have to be complete when they are added to PackageKit.
+If a feature is not present then it is hidden in the UI, which will explain why on some
+distributions the client tools look a little different to other distributions.
+You can see the latest feature matrix <a href="pk-matrix.html">here</a>.
+</p>
<hr>
<h3><a name="1-click-install">Does PackageKit support 1-Click Install?</a></h3>
diff --git a/docs/html/pk-matrix.html b/docs/html/pk-matrix.html
new file mode 100644
index 0000000..3b0fc37
--- /dev/null
+++ b/docs/html/pk-matrix.html
@@ -0,0 +1,548 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>PackageKit - Feature Matrix</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
+</head>
+<body>
+
+<table align="center" class="title">
+<tr>
+ <td><center><img src="img/packagekit.png" alt=""/></center></td>
+ <td width="95%" valign="middle"><p class="title">Feature Matrix</p></td>
+ <td><center><img src="img/packagekit.png" alt=""/></center></td>
+</tr>
+</table>
+
+<p>Back to the <a href="index.html">main page</a></p>
+
+<h1>Feature Matrix</h1>
+<table>
+<tr>
+<td width="150px"> </td>
+<td><center>apt</center></td>
+<td><center>alpm</center></td>
+<td><center>box</center></td>
+<td><center>conary</center></td>
+<td><center>opkg</center></td>
+<td><center>pisi</center></td>
+<td><center>poldek</center></td>
+<td><center>smart</center></td>
+<td><center>urpmi</center></td>
+<td><center>yum</center></td>
+<td><center>yum2</center></td>
+<td><center>zypp</center></td>
+</tr>
+<tr>
+<td><b>Resolve</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>RefreshCache</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetUpdates</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>UpdateSystem</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>SearchName</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>SearchDetails</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>SearchFile</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>SearchGroup</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>InstallPackages</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>InstallFiles</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>RemovePackages</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>UpdatePackage</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetDepends</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetRequires</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetDetails</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetFiles</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetUpdateDetail</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetRepoList</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>RepoEnable</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>RepoSetData</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Cancel</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>ServicePack</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>WhatProvides</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GetPackages</b></td>
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[good]"/></td><!-- zypp -->
+</tr>
+</table>
+
+<h4>Filters</h4>
+<table>
+<tr>
+<td width="150px"> </td>
+<td><center>apt</center></td>
+<td><center>alpm</center></td>
+<td><center>box</center></td>
+<td><center>conary</center></td>
+<td><center>opkg</center></td>
+<td><center>pisi</center></td>
+<td><center>poldek</center></td>
+<td><center>smart</center></td>
+<td><center>urpmi</center></td>
+<td><center>yum</center></td>
+<td><center>yum2</center></td>
+<td><center>zypp</center></td>
+</tr>
+<tr>
+<td><b>Installed</b></td>
+<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-good.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Development</b></td>
+<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>GUI</b></td>
+<td><img src="img/status-good.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- opkg -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Free</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Visible</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Supported</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Newest</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
+<td><b>Arch</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- yum2 -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- zypp -->
+</tr>
+</table>
+
+<p>Back to the <a href="index.html">main page</a></p>
+
+<p class="footer">
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2008</a><br/>
+ <a href="http://validator.w3.org/check/referer">Optimized</a>
+ for <a href="http://www.w3.org/">standards</a>.
+</p>
+
+</body>
+</html>
+
commit 18235470b5fb60409d4e7dbf77af5295b7346083
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jun 4 17:35:16 2008 +0100
trivial: move libst_get_data_file() into libselftest so we can use it in other modules
diff --git a/libselftest/libselftest.c b/libselftest/libselftest.c
index ab3acd2..6336430 100644
--- a/libselftest/libselftest.c
+++ b/libselftest/libselftest.c
@@ -221,3 +221,30 @@ failed:
exit (1);
}
+/**
+ * libst_get_data_file:
+ **/
+gchar *
+libst_get_data_file (const gchar *filename)
+{
+ gboolean ret;
+ gchar *full;
+
+ /* check to see if we are being run in the build root */
+ full = g_build_filename ("..", "data", "tests", filename, NULL);
+ ret = g_file_test (full, G_FILE_TEST_EXISTS);
+ if (ret) {
+ return full;
+ }
+ g_free (full);
+
+ /* check to see if we are being run in make check */
+ full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
+ ret = g_file_test (full, G_FILE_TEST_EXISTS);
+ if (ret) {
+ return full;
+ }
+ g_free (full);
+ return NULL;
+}
+
diff --git a/libselftest/libselftest.h b/libselftest/libselftest.h
index 657f773..e249765 100644
--- a/libselftest/libselftest.h
+++ b/libselftest/libselftest.h
@@ -55,19 +55,20 @@ typedef struct
gpointer user_data;
} LibSelfTest;
-gboolean libst_start (LibSelfTest *test, const gchar *name, LibSelfTestClass class);
-void libst_end (LibSelfTest *test);
-void libst_title (LibSelfTest *test, const gchar *format, ...);
-void libst_success (LibSelfTest *test, const gchar *format, ...);
-void libst_failed (LibSelfTest *test, const gchar *format, ...);
-void libst_init (LibSelfTest *test);
-gint libst_finish (LibSelfTest *test);
-guint libst_elapsed (LibSelfTest *test);
-void libst_loopquit (LibSelfTest *test);
-void libst_loopwait (LibSelfTest *test, guint timeout);
-void libst_loopcheck (LibSelfTest *test);
-void libst_set_user_data (LibSelfTest *test, gpointer user_data);
-gpointer libst_get_user_data (LibSelfTest *test);
+gboolean libst_start (LibSelfTest *test, const gchar *name, LibSelfTestClass class);
+void libst_end (LibSelfTest *test);
+void libst_title (LibSelfTest *test, const gchar *format, ...);
+void libst_success (LibSelfTest *test, const gchar *format, ...);
+void libst_failed (LibSelfTest *test, const gchar *format, ...);
+void libst_init (LibSelfTest *test);
+gint libst_finish (LibSelfTest *test);
+guint libst_elapsed (LibSelfTest *test);
+void libst_loopquit (LibSelfTest *test);
+void libst_loopwait (LibSelfTest *test, guint timeout);
+void libst_loopcheck (LibSelfTest *test);
+void libst_set_user_data (LibSelfTest *test, gpointer user_data);
+gpointer libst_get_user_data (LibSelfTest *test);
+gchar *libst_get_data_file (const gchar *filename);
#endif /* __LIBSELFTEST_H */
diff --git a/src/pk-spawn.c b/src/pk-spawn.c
index c4622f9..dc08e4c 100644
--- a/src/pk-spawn.c
+++ b/src/pk-spawn.c
@@ -408,33 +408,6 @@ guint stdout_count = 0;
guint finished_count = 0;
/**
- * pk_test_get_data:
- **/
-static gchar *
-pk_test_get_data (const gchar *filename)
-{
- gboolean ret;
- gchar *full;
-
- /* check to see if we are being run in the build root */
- full = g_build_filename ("..", "data", "tests", filename, NULL);
- ret = g_file_test (full, G_FILE_TEST_EXISTS);
- if (ret) {
- return full;
- }
- g_free (full);
-
- /* check to see if we are being run in make check */
- full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
- ret = g_file_test (full, G_FILE_TEST_EXISTS);
- if (ret) {
- return full;
- }
- g_free (full);
- return NULL;
-}
-
-/**
* pk_test_finished_cb:
**/
static void
@@ -516,7 +489,7 @@ libst_spawn (LibSelfTest *test)
/************************************************************/
libst_title (test, "make sure run correct helper");
mexit = -1;
- path = pk_test_get_data ("pk-spawn-test.sh");
+ path = libst_get_data_file ("pk-spawn-test.sh");
argv = g_strsplit (path, " ", 0);
ret = pk_spawn_argv (spawn, argv, NULL);
g_free (path);
@@ -561,7 +534,7 @@ libst_spawn (LibSelfTest *test)
/************************************************************/
libst_title (test, "make sure we set the proxy");
mexit = -1;
- path = pk_test_get_data ("pk-spawn-proxy.sh");
+ path = libst_get_data_file ("pk-spawn-proxy.sh");
argv = g_strsplit (path, " ", 0);
envp = g_strsplit ("http_proxy=username:password at server:port "
"ftp_proxy=username:password at server:port", " ", 0);
@@ -584,7 +557,7 @@ libst_spawn (LibSelfTest *test)
/************************************************************/
libst_title (test, "make sure run correct helper, and kill it");
mexit = BAD_EXIT;
- path = pk_test_get_data ("pk-spawn-test.sh");
+ path = libst_get_data_file ("pk-spawn-test.sh");
argv = g_strsplit (path, " ", 0);
ret = pk_spawn_argv (spawn, argv, NULL);
g_free (path);
@@ -614,7 +587,7 @@ libst_spawn (LibSelfTest *test)
/************************************************************/
libst_title (test, "make sure run correct helper, and quit it");
mexit = BAD_EXIT;
- path = pk_test_get_data ("pk-spawn-test-sigquit.sh");
+ path = libst_get_data_file ("pk-spawn-test-sigquit.sh");
argv = g_strsplit (path, " ", 0);
ret = pk_spawn_argv (spawn, argv, NULL);
g_free (path);
@@ -640,7 +613,7 @@ libst_spawn (LibSelfTest *test)
/************************************************************/
libst_title (test, "run lots of data for profiling");
- path = pk_test_get_data ("pk-spawn-test-profiling.sh");
+ path = libst_get_data_file ("pk-spawn-test-profiling.sh");
argv = g_strsplit (path, " ", 0);
ret = pk_spawn_argv (spawn, argv, NULL);
g_free (path);
commit 0567928be4cb41a6318fc26f4a6f4ed8f7a078cd
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jun 4 17:10:25 2008 +0100
trivial: update some .gitignore files
diff --git a/.gitignore b/.gitignore
index 53dd81f..c9d97e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,4 +58,7 @@ _build_
waf-lightc
wafadmin
packagekit.types
+.anjuta
+*.cache
+*.anjuta
diff --git a/src/.gitignore b/src/.gitignore
index f3ad734..a6fc053 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -12,4 +12,5 @@ debug.log
*.gcno
*.txt
*.out
+*.db
diff --git a/tools/.gitignore b/tools/.gitignore
index d6ec1da..b68d728 100644
--- a/tools/.gitignore
+++ b/tools/.gitignore
@@ -1,2 +1,3 @@
allApplications
+rpmbuild.sh
commit b9d8659c7c77aef02713bfab33d16f80ef7b435b
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jun 4 12:55:38 2008 +0100
bugfix: in PkClient don't do a NULL dereference when we try to set an error when not reset, and we are ignoring the error description
diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index 3cb4343..7df7f1d 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -944,19 +944,24 @@ pk_client_allocate_transaction_id (PkClient *client, GError **error)
{
gboolean ret;
gchar *tid;
+ GError *error_local = NULL;
g_return_val_if_fail (PK_IS_CLIENT (client), FALSE);
- /* get and set a new ID */
- ret = pk_control_allocate_transaction_id (client->priv->control, &tid, error);
+ /* get a new ID */
+ ret = pk_control_allocate_transaction_id (client->priv->control, &tid, &error_local);
if (!ret) {
- pk_warning ("failed to get a TID: %s", (*error)->message);
+ pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "failed to get a TID: %s", error_local->message);
+ g_error_free (error_local);
return FALSE;
}
- ret = pk_client_set_tid (client, tid, error);
+
+ /* set that new ID to this GObject */
+ ret = pk_client_set_tid (client, tid, &error_local);
g_free (tid);
if (!ret) {
- pk_warning ("failed to set TID: %s", (*error)->message);
+ pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "failed to set TID: %s", error_local->message);
+ g_error_free (error_local);
return FALSE;
}
return TRUE;
@@ -3872,12 +3877,21 @@ libst_client (LibSelfTest *test)
libst_title (test, "get updates");
ret = pk_client_get_updates (client, PK_FILTER_ENUM_NONE, &error);
if (!ret) {
- libst_failed (test, "failed to reset: %s", error->message);
+ libst_failed (test, "failed to get updates: %s", error->message);
g_error_free (error);
}
libst_success (test, NULL);
/************************************************************/
+ libst_title (test, "get updates (without reset) with null error");
+ ret = pk_client_get_updates (client, PK_FILTER_ENUM_NONE, NULL);
+ if (!ret) {
+ libst_success (test, NULL);
+ } else {
+ libst_failed (test, "got updates with no reset (no description possible)");
+ }
+
+ /************************************************************/
libst_title (test, "reset client #2");
ret = pk_client_reset (client, &error);
if (!ret) {
commit f695ed3dc95a215c328615aee75d70e9fe8a6410
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date: Wed Jun 4 13:33:44 2008 +0200
poldek: fix RemovePackages to remove more than one package
diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index 2a2651f..a021fba 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -2164,8 +2164,10 @@ backend_remove_packages_thread (PkBackend *backend)
{
struct poclidek_rcmd *rcmd;
struct poldek_ts *ts;
- gchar *nvra, *command;
+ GString *cmd;
+ gchar *command;
gchar **package_ids;
+ gint i;
package_ids = pk_backend_get_strv (backend, "package_ids");
pb_load_packages (backend);
@@ -2176,8 +2178,18 @@ backend_remove_packages_thread (PkBackend *backend)
ts = poldek_ts_new (ctx, 0);
rcmd = poclidek_rcmd_new (cctx, ts);
- nvra = poldek_get_nvra_from_package_id (package_ids[0]);
- command = g_strdup_printf ("uninstall %s", nvra);
+ cmd = g_string_new ("uninstall ");
+
+ /* prepare command */
+ for (i = 0; i < g_strv_length (package_ids); i++) {
+ gchar *nvra = poldek_get_nvra_from_package_id (package_ids[i]);
+
+ g_string_append_printf (cmd, "%s ", nvra);
+
+ g_free (nvra);
+ }
+
+ command = g_string_free (cmd, FALSE);
pk_backend_set_status (backend, PK_STATUS_ENUM_DEP_RESOLVE);
@@ -2186,7 +2198,6 @@ backend_remove_packages_thread (PkBackend *backend)
pk_backend_error_code (backend, PK_ERROR_ENUM_CANNOT_REMOVE_SYSTEM_PACKAGE, pberror->tslog->str);
}
- g_free (nvra);
g_free (command);
poldek_ts_free (ts);
commit 0e7a6cd7b4491eb7d94bd91a8f8a0d96ff83b559
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date: Wed Jun 4 13:31:52 2008 +0200
poldek: fix crash in Resolve method
diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index c205503..2a2651f 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -54,7 +54,8 @@ enum {
SEARCH_ENUM_GROUP,
SEARCH_ENUM_DETAILS,
SEARCH_ENUM_FILE,
- SEARCH_ENUM_PROVIDES
+ SEARCH_ENUM_PROVIDES,
+ SEARCH_ENUM_RESOLVE
};
typedef struct {
@@ -1161,7 +1162,7 @@ search_package_thread (PkBackend *backend)
search = pk_backend_get_string (backend, "search");
filters = pk_backend_get_uint (backend, "filters");
- /* GetPackages*/
+ /* GetPackages */
if (mode == SEARCH_ENUM_NONE) {
search_cmd = g_strdup ("ls -q");
/* SearchName */
@@ -1193,6 +1194,10 @@ search_package_thread (PkBackend *backend)
} else if (provides == PK_PROVIDES_ENUM_MIMETYPE) {
search_cmd = g_strdup_printf ("search -qp mimetype(%s)", search);
}
+ } else if (mode == SEARCH_ENUM_RESOLVE) {
+ search = pk_backend_get_string (backend, "package_id");
+
+ search_cmd = g_strdup_printf ("ls -q %s", search);
}
if (cmd != NULL && search_cmd)
@@ -1317,6 +1322,7 @@ search_package_thread (PkBackend *backend)
case SEARCH_ENUM_GROUP:
case SEARCH_ENUM_DETAILS:
case SEARCH_ENUM_FILE:
+ case SEARCH_ENUM_RESOLVE:
pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "Search cancelled.");
break;
default:
@@ -2202,11 +2208,11 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
* backend_resolve:
*/
static void
-backend_resolve (PkBackend *backend, PkFilterEnum filters, const gchar *package)
+backend_resolve (PkBackend *backend, PkFilterEnum filters, const gchar *package_id)
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
poldek_backend_set_allow_cancel (backend, TRUE, TRUE);
- pk_backend_set_uint (backend, "mode", SEARCH_ENUM_NAME);
+ pk_backend_set_uint (backend, "mode", SEARCH_ENUM_RESOLVE);
pk_backend_thread_create (backend, search_package_thread);
}
commit c8c624b96c8e1c30cd80d48e7594fed7cff3486c
Merge: 63672e1... 07fd340...
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jun 4 11:02:16 2008 +0100
Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit
commit 63672e153637061f00d5fd50f2ff78ea1294d400
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jun 4 10:58:26 2008 +0100
trivial: fix a small memory leak on client program exit
diff --git a/libpackagekit/pk-control.c b/libpackagekit/pk-control.c
index 5a54ccc..7e151ec 100644
--- a/libpackagekit/pk-control.c
+++ b/libpackagekit/pk-control.c
@@ -839,6 +839,7 @@ pk_control_finalize (GObject *object)
/* free the proxy */
g_object_unref (G_OBJECT (control->priv->proxy));
+ g_strfreev (control->priv->array);
G_OBJECT_CLASS (pk_control_parent_class)->finalize (object);
}
commit 07fd3404a62e40597f865dafd94cf7e921375e37
Merge: c6f7ccd... b3888f1...
Author: I-Fan, Chen <tick at openmoko.com>
Date: Wed Jun 4 17:20:10 2008 +0800
Merge branch 'tick'
commit b3888f17d25479cea527124005f12887e9fddf16
Author: I-Fan, Chen <tick at openmoko.com>
Date: Wed Jun 4 17:13:00 2008 +0800
Opkg: Adding group message to get-details
diff --git a/backends/opkg/pk-backend-opkg.c b/backends/opkg/pk-backend-opkg.c
index 2d70108..02966c9 100644
--- a/backends/opkg/pk-backend-opkg.c
+++ b/backends/opkg/pk-backend-opkg.c
@@ -656,6 +656,8 @@ backend_get_details_thread (PkBackend *backend)
{
PkPackageId *pi;
const gchar *package_id;
+ int group_index;
+ PkGroupEnum group = 0;
opkg_package_t *pkg;
gchar *newid;
@@ -681,8 +683,16 @@ backend_get_details_thread (PkBackend *backend)
newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->repository);
- pk_backend_details (backend, newid, NULL, 0, pkg->description, pkg->url, pkg->size);
+ if (pkg->tags) {
+ for (group_index = 0; group < PK_GROUP_ENUM_UNKNOWN; group_index++) {
+ group = 1 << group_index;
+ if (!(group & backend_get_groups(backend))) continue;
+ if (opkg_check_tag(pkg, (gchar *)pk_group_enum_to_text(group)))
+ break;
+ }
+ }
+ pk_backend_details (backend, newid, NULL, group, pkg->description, pkg->url, pkg->size);
g_free (newid);
pk_backend_finished (backend);
return TRUE;
More information about the PackageKit-commit
mailing list