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

Richard Hughes hughsient at kemper.freedesktop.org
Mon Jun 8 04:07:15 PDT 2009


 backends/portage/pk-backend-portage.c            |   20 -
 backends/portage/portageBackend.py               |   73 +++++
 backends/yum/yumBackend.py                       |   20 -
 configure.ac                                     |   24 -
 contrib/browser-plugin/src/contents.cpp          |   20 +
 contrib/command-not-found/pk-command-not-found.c |    1 
 contrib/cron/packagekit-background.cron          |    4 
 docs/html/files/session.c                        |   10 
 docs/html/img/Makefile.am                        |    5 
 docs/html/img/large-application-certificate.png  |binary
 docs/html/img/users-assassin.png                 |binary
 docs/html/img/users-fedora.png                   |binary
 docs/html/img/users-foresight.png                |binary
 docs/html/img/users-gnome-packagekit.png         |binary
 docs/html/img/users-kpackagekit.png              |binary
 docs/html/img/users-kubuntu.png                  |binary
 docs/html/img/users-listaller.png                |binary
 docs/html/img/users-moblin.png                   |binary
 docs/html/img/users-nautlius.png                 |binary
 docs/html/img/users-suse.png                     |binary
 docs/html/img/users-system-config-printer.png    |binary
 docs/html/index.html                             |    4 
 docs/html/pk-authors.html                        |    2 
 docs/html/pk-bugs.html                           |    2 
 docs/html/pk-download.html                       |    2 
 docs/html/pk-faq.html                            |   29 +-
 docs/html/pk-help.html                           |    2 
 docs/html/pk-intro.html                          |    2 
 docs/html/pk-matrix.html                         |    2 
 docs/html/pk-profiles.html                       |    2 
 docs/html/pk-reference.html                      |    2 
 docs/html/pk-screenshots.html                    |    2 
 docs/html/pk-users.html                          |  285 +++++++++++++++++++++++
 docs/html/pk-using.html                          |    2 
 lib/packagekit-glib/pk-control.c                 |    2 
 lib/python/packagekit/backend.py                 |   12 
 po/pt.po                                         |  100 ++++----
 src/Makefile.am                                  |   11 
 src/pk-file-monitor-dummy.c                      |  153 ------------
 src/pk-file-monitor-gio.c                        |  203 ----------------
 src/pk-file-monitor.c                            |  203 ++++++++++++++++
 src/pk-post-trans.c                              |   11 
 src/pk-transaction.c                             |   82 ++++++
 src/pk-transaction.h                             |    1 
 44 files changed, 791 insertions(+), 502 deletions(-)

New commits:
commit 5e7504a3d917975e37979a638e44c33cb3397998
Author: ruigo <ruigo at fedoraproject.org>
Date:   Sun Jun 7 18:42:19 2009 +0000

    Sending translation for Portuguese

diff --git a/po/pt.po b/po/pt.po
index d456f0f..0e5dc5f 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-09 14:03+0000\n"
+"POT-Creation-Date: 2009-06-07 14:11+0000\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Rui Gouveia <rui.gouveia at globaltek.pt>\n"
 "Language-Team: pt <fedora-trans-pt at redhat.com>\n"
@@ -508,8 +508,8 @@ msgstr "Sub-comandos:"
 #: ../client/pk-console.c:1767
 #: ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
-#: ../contrib/command-not-found/pk-command-not-found.c:518
-#: ../src/pk-main.c:199
+#: ../contrib/command-not-found/pk-command-not-found.c:521
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Mostrar informação de depuração adicional"
 
@@ -723,55 +723,60 @@ msgstr "É necessário um directório de destino ou nome de ficheiro"
 msgid "The package manager cannot perform this type of operation."
 msgstr "O gestor de pacotes não pode realizar este tipo de operação."
 
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:280
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
+msgstr "\"Service packs\" não podem ser criados pois o PackageKit não foi criado com suporte a libarchive."
+
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:291
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Se especificar um ficheiro, o nome do \"service pack\" tem de terminar com"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:301
+#: ../client/pk-generate-pack.c:307
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Um \"service pack\" com esse nome já existe. Deseja substituí-lo?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:304
+#: ../client/pk-generate-pack.c:310
 msgid "The pack was not overwritten."
 msgstr "O \"service pack\" não foi substituído."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:317
+#: ../client/pk-generate-pack.c:323
 msgid "Failed to create directory:"
 msgstr "Criação da directoria falhou:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:327
+#: ../client/pk-generate-pack.c:333
 msgid "Failed to open package list."
 msgstr "Impossível abrir a lista de pacotes"
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:338
+#: ../client/pk-generate-pack.c:344
 msgid "Finding package name."
 msgstr "A procurar o nome do pacote."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:348
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Não foi possível encontrar o pacote '%s': %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:365
 msgid "Creating service pack..."
 msgstr "A criar o \"service pack\"..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:372
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "\"Service pack\" criado '%s'"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:371
+#: ../client/pk-generate-pack.c:377
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Não foi possível criar '%s': %s"
@@ -803,125 +808,125 @@ msgid "Please enter a number from 1 to %i: "
 msgstr "Por favor insira um número de 1 a %i: "
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:369
+#: ../contrib/command-not-found/pk-command-not-found.c:372
 msgid "Failed to search for file"
 msgstr "Não foi possível encontrar o ficheiro"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:493
+#: ../contrib/command-not-found/pk-command-not-found.c:496
 msgid "Failed to launch:"
 msgstr "Incapaz de iniciar:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:534
+#: ../contrib/command-not-found/pk-command-not-found.c:537
 msgid "PackageKit Command Not Found"
 msgstr "Comando PackageKit não encontrado"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:556
+#: ../contrib/command-not-found/pk-command-not-found.c:560
 msgid "Command not found."
 msgstr "Comando não encontrado."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:563
+#: ../contrib/command-not-found/pk-command-not-found.c:567
 msgid "Similar command is:"
 msgstr "Comando semelhante é:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:572
+#: ../contrib/command-not-found/pk-command-not-found.c:576
 msgid "Run similar command:"
 msgstr "Executar um comando semelhante:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:584
-#: ../contrib/command-not-found/pk-command-not-found.c:593
+#: ../contrib/command-not-found/pk-command-not-found.c:588
+#: ../contrib/command-not-found/pk-command-not-found.c:597
 msgid "Similar commands are:"
 msgstr "Comandos semelhantes são:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:600
+#: ../contrib/command-not-found/pk-command-not-found.c:604
 msgid "Please choose a command to run"
 msgstr "Por favor, escolha um comando para executar"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:615
+#: ../contrib/command-not-found/pk-command-not-found.c:619
 msgid "The package providing this file is:"
 msgstr "O pacote que fornece este ficheiro é o:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:620
+#: ../contrib/command-not-found/pk-command-not-found.c:624
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "Instalar pacote '%s' para disponibilizar comando '%s'?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:641
+#: ../contrib/command-not-found/pk-command-not-found.c:645
 msgid "Packages providing this file are:"
 msgstr "Os pacotes que disponibilizam este ficheiro são:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:650
+#: ../contrib/command-not-found/pk-command-not-found.c:654
 msgid "Suitable packages are:"
 msgstr "Pacotes adequados são:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:658
+#: ../contrib/command-not-found/pk-command-not-found.c:662
 msgid "Please choose a package to install"
 msgstr "Por favor, escolha um pacote para instalar"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/src/contents.cpp:298
+#: ../contrib/browser-plugin/src/contents.cpp:299
 msgid "Getting package information..."
 msgstr "A obter informação de pacotes..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/src/contents.cpp:304
+#: ../contrib/browser-plugin/src/contents.cpp:305
 #, c-format
 msgid "Run %s"
 msgstr "Executar %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/src/contents.cpp:310
+#: ../contrib/browser-plugin/src/contents.cpp:311
 msgid "Installed version"
 msgstr "Versão instalada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:318
+#: ../contrib/browser-plugin/src/contents.cpp:319
 #, c-format
 msgid "Run version %s now"
 msgstr "Executar a versão %s agora"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/src/contents.cpp:324
+#: ../contrib/browser-plugin/src/contents.cpp:325
 msgid "Run now"
 msgstr "Executar agora"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:330
+#: ../contrib/browser-plugin/src/contents.cpp:331
 #, c-format
 msgid "Update to version %s"
 msgstr "Actualizar para a versão %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/src/contents.cpp:336
+#: ../contrib/browser-plugin/src/contents.cpp:337
 #, c-format
 msgid "Install %s now"
 msgstr "Instalar %s agora"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/src/contents.cpp:339
+#: ../contrib/browser-plugin/src/contents.cpp:340
 msgid "Version"
 msgstr "Versão"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/src/contents.cpp:344
+#: ../contrib/browser-plugin/src/contents.cpp:345
 msgid "No packages found for your system"
 msgstr "Não foram encontrados pacotes para o seu sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/src/contents.cpp:349
+#: ../contrib/browser-plugin/src/contents.cpp:350
 msgid "Installing..."
 msgstr "A instalar..."
 
@@ -1046,48 +1051,47 @@ msgid "The org.freedesktop.PackageKit.conf file is not installed in the system d
 msgstr "O ficheiro org.freedesktop.PackageKit.conf não está instalado no directório do sistema:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:193
+#: ../src/pk-main.c:205
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Plataforma de pacotes a utilizar, i.e., yum, apt"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:196
+#: ../src/pk-main.c:208
 msgid "Daemonize and detach from the terminal"
 msgstr "Criar o processo como daemon e desligar da consola"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:214
 msgid "Disable the idle timer"
 msgstr "Desactivar o contador do tempo inactivo"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:217
 msgid "Show version and exit"
 msgstr "Mostrar a versão e terminar"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:208
+#: ../src/pk-main.c:220
 msgid "Exit after a small delay"
 msgstr "Sair depois de uma pequena pausa"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:211
+#: ../src/pk-main.c:223
 msgid "Exit after the engine has loaded"
 msgstr "Terminar depois do \"motor\" ter carregado"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:226
+#: ../src/pk-main.c:238
 msgid "PackageKit service"
 msgstr "Serviço PackageKit"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:263
+#: ../src/pk-main.c:275
 msgid "Cannot connect to the system bus"
 msgstr "Não foi possível ligar ao barramento do sistema"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason
-#: ../src/pk-main.c:313
-#, c-format
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:331
 msgid "Error trying to start:"
 msgstr "Erro ao tentar iniciar:"
 
commit 480f0cd6bbd5c882bf86e082772cfc6c63c80099
Merge: da96ceb... 79f587e...
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun Jun 7 09:47:23 2009 +0200

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

commit da96ceba9d52ce83d6535af563ec6f848aa29b43
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Sun Jun 7 09:47:07 2009 +0200

    portage: working but version of remove-package

diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index 0f5ce03..edb6391 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -188,16 +188,6 @@ backend_get_files (PkBackend *backend, gchar **package_ids)
 }
 
 /**
- * backend_get_requires:
- */
-static void
-backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
-{
-	egg_debug ("backend: requires");
-	pk_backend_finished (backend);
-}
-
-/**
  * backend_get_update_detail:
  */
 static void
@@ -244,8 +234,12 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
 static void
 backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
-	egg_debug ("backend: remove packages");
-	pk_backend_finished (backend);
+	gchar *package_ids_temp;
+
+	/* send the complete list as stdin */
+	package_ids_temp = pk_package_ids_to_text (package_ids);
+	pk_backend_spawn_helper (spawn, BACKEND_FILE, "remove-packages", pk_backend_bool_to_text (allow_deps), package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -353,7 +347,7 @@ PK_BACKEND_OPTIONS (
 	backend_get_files,			/* get_files */
 	backend_get_packages,			/* get_packages */
 	NULL,			/* get_repo_list */
-	backend_get_requires,			/* get_requires */
+	NULL, // TODO			/* get_requires */
 	backend_get_update_detail,		/* get_update_detail */
 	backend_get_updates,			/* get_updates */
 	NULL,			/* install_files */
diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index b39ac24..ced28f1 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -418,6 +418,12 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			# to re-install a package (USE/{LD,C}FLAGS change for example) (or live)
 			# TODO: keep a final position
 			cpv = id_to_cpv(pkg)
+
+			# is cpv valid
+			if not portage.portdb.cpv_exists(cpv):
+				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkgid)
+				continue
+
 			db_keys = list(portage.portdb._aux_cache_keys)
 			metadata = izip(db_keys, portage.portdb.aux_get(cpv, db_keys))
 			package = _emerge.Package(type_name="ebuild", root_config=rootconfig, cpv=cpv, metadata=metadata, operation="merge")
@@ -430,6 +436,73 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 			mergetask = _emerge.Scheduler(settings, trees, mtimedb, myopts, spinner, [package], favorites, package)
 			mergetask.merge()
 
+	def remove_packages(self, allowdep, pkgs):
+		# can't use allowdep: never removing dep
+		# TODO: filters ?
+		self.status(STATUS_RUNNING)
+		self.allow_cancel(True)
+		self.percentage(None)
+
+		for pkg in pkgs:
+			cpv = id_to_cpv(pkg)
+
+			# is cpv valid
+			if not portage.portdb.cpv_exists(cpv):
+				self.error(ERROR_PACKAGE_NOT_FOUND, "Package %s was not found" % pkg)
+				continue
+
+			# is package installed
+			if not self.vardb.match(cpv):
+				self.error(ERROR_PACKAGE_NOT_INSTALLED, "Package %s is not installed" % pkg)
+				continue
+
+			# operation = unmerge
+			# PackageUninstall
+#			portage.PackageUninstall(
+			myopts = {} # TODO: --nodepends ?
+			spinner = ""
+			favorites = []
+			settings, trees, mtimedb = _emerge.load_emerge_config()
+			spinner = _emerge.stdout_spinner()
+			rootconfig = _emerge.RootConfig(self.portage_settings, trees["/"], portage._sets.load_default_config(self.portage_settings, trees["/"]))
+
+			if "resume" in mtimedb and \
+			"mergelist" in mtimedb["resume"] and \
+			len(mtimedb["resume"]["mergelist"]) > 1:
+				mtimedb["resume_backup"] = mtimedb["resume"]
+				del mtimedb["resume"]
+				mtimedb.commit()
+
+			mtimedb["resume"]={}
+			mtimedb["resume"]["myopts"] = myopts.copy()
+			mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
+
+			db_keys = list(portage.portdb._aux_cache_keys)
+			metadata = izip(db_keys, portage.portdb.aux_get(cpv, db_keys))
+			package = _emerge.Package(type_name="ebuild",
+					root_config=rootconfig,
+					cpv=cpv, metadata=metadata,
+					operation="uninstall")
+
+			# TODO: needed ?
+			pkgsettings = portage.config(clone=settings)
+			pkgsettings.setcpv(package)
+			package.metadata['USE'] = pkgsettings['PORTAGE_USE']
+
+			#scheduler = _emerge.QueueScheduler()
+			#scheduler = _emerge.Scheduler(settings, trees, mtimedb, myopts, spinner, [package], favorites, package)
+			#scheduler = scheduler._sched_iface
+			#scheduler._background = scheduler._background_model()
+			scheduler = None
+
+			#mergetask = _emerge.Scheduler(settings, trees, mtimedb, myopts, spinner, [package], favorites, package)
+			#mergetask.merge()
+			uninstall = _emerge.PackageUninstall(background=1,
+					ldpath_mtimes=mtimedb["ldpath"], opts=myopts,
+					pkg=package, scheduler=scheduler, settings=settings)
+			uninstall.start()
+			uninstall.wait()
+
 	def resolve(self, filters, pkgs):
 		# TODO: filters
 		self.status(STATUS_QUERY)
commit 79f587ec3780e06f6aed7d8f8caaf2d00be6769f
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Jun 6 20:51:49 2009 +0100

    Add another vendor to the users page

diff --git a/docs/html/pk-users.html b/docs/html/pk-users.html
index 72f0978..dd90246 100644
--- a/docs/html/pk-users.html
+++ b/docs/html/pk-users.html
@@ -99,6 +99,21 @@
    Uses latest version (0.4.8 in GNOME:Factory)
   </p>
  </td>
+<tr>
+ <td>
+  <a href="http://www.novell.com/linux"><img src="img/users-sles.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>SUSE/Novell - SUSE Linux Enterprise Server 11, SUSE Linux Enterprise Desktop 11</h2>
+  <p>
+   SUSE Linux Enterprise 11 is the most interoperable platform for mission-critical
+   computing—both physical and virtual—from the desktop to the data center.
+  </p>
+  <p>
+   Uses PackageKit 0.3.14.
+  </p>
+ </td>
+</tr>
 </tr>
 <!--
 <tr>
commit 7f8064b2912b51ec15f2d2f1f1fdde0e6bdfba3d
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Jun 6 14:49:53 2009 +0100

    Enable the warning GSEAL_ENABLE and fix up build failures

diff --git a/configure.ac b/configure.ac
index 1b85558..47b6e4e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,7 @@ dnl ---------------------------------------------------------------------------
 CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES"
 CPPFLAGS="$CPPFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED"
 CPPFLAGS="$CPPFLAGS -DGDK_MULTIHEAD_SAFE -DGTK_MULTIHEAD_SAFE"
+CPPFLAGS="$CPPFLAGS -DGSEAL_ENABLE"
 
 if test "$GCC" = "yes"; then
 	# work both in C and C++
diff --git a/contrib/browser-plugin/src/contents.cpp b/contrib/browser-plugin/src/contents.cpp
index f42b931..a30f3e1 100644
--- a/contrib/browser-plugin/src/contents.cpp
+++ b/contrib/browser-plugin/src/contents.cpp
@@ -256,14 +256,15 @@ static void
 get_style(PangoFontDescription **font_desc, guint32 *foreground, guint32 *background, guint32 *link)
 {
 	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	GtkStyle *style;
+	GdkColor link_color = { 0, 0, 0, 0xeeee };
+	GdkColor *tmp = NULL;
 
 	gtk_widget_ensure_style(window);
 
-	*foreground = rgba_from_gdk_color(&window->style->text[GTK_STATE_NORMAL]);
-	*background = rgba_from_gdk_color(&window->style->base[GTK_STATE_NORMAL]);
-
-	GdkColor link_color = { 0, 0, 0, 0xeeee };
-	GdkColor *tmp = NULL;
+	style = gtk_widget_get_style(window);
+	*foreground = rgba_from_gdk_color(&style->text[GTK_STATE_NORMAL]);
+	*background = rgba_from_gdk_color(&style->base[GTK_STATE_NORMAL]);
 
 	gtk_widget_style_get (GTK_WIDGET (window), "link-color", &tmp, NULL);
 	if (tmp != NULL) {
@@ -273,7 +274,7 @@ get_style(PangoFontDescription **font_desc, guint32 *foreground, guint32 *backgr
 
 	*link = rgba_from_gdk_color(&link_color);
 
-	*font_desc = pango_font_description_copy(window->style->font_desc);
+	*font_desc = pango_font_description_copy(style->font_desc);
 
 	gtk_widget_destroy(window);
 }
@@ -633,9 +634,14 @@ static guint32
 get_server_timestamp()
 {
 	GtkWidget *invisible = gtk_invisible_new();
+	GdkWindow *window;
+	guint32 server_time;
+
 	gtk_widget_realize(invisible);
-	return gdk_x11_get_server_time(invisible->window);
+	window = gtk_widget_get_window(invisible);
+	server_time = gdk_x11_get_server_time(window);
 	gtk_widget_destroy(invisible);
+	return server_time;
 }
 
 void
commit e7d7308b28d70aeb1af43cc9a7403c208eaa1778
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Jun 6 11:14:23 2009 +0100

    Convert non-ASCII text to unicode for spawned backends. Fixes rh#504377

diff --git a/lib/python/packagekit/backend.py b/lib/python/packagekit/backend.py
index d3e7125..0f877da 100644
--- a/lib/python/packagekit/backend.py
+++ b/lib/python/packagekit/backend.py
@@ -31,6 +31,12 @@ from enums import *
 PACKAGE_IDS_DELIM = '&'
 FILENAME_DELIM = '|'
 
+def _to_unicode(txt, encoding='utf-8'):
+    if isinstance(txt, basestring):
+        if not isinstance(txt, unicode):
+            txt = unicode(txt, encoding, errors='replace')
+    return txt
+
 # Classes
 
 class PkError(Exception):
@@ -580,7 +586,7 @@ class PackageKitBaseBackend:
             self.finished()
         elif cmd == 'search-details':
             options = args[0]
-            searchterms = args[1]
+            searchterms = _to_unicode(args[1])
             self.search_details(options, searchterms)
             self.finished()
         elif cmd == 'search-file':
@@ -595,7 +601,7 @@ class PackageKitBaseBackend:
             self.finished()
         elif cmd == 'search-name':
             options = args[0]
-            searchterms = args[1]
+            searchterms = _to_unicode(args[1])
             self.search_name(options, searchterms)
             self.finished()
         elif cmd == 'signature-install':
@@ -612,7 +618,7 @@ class PackageKitBaseBackend:
         elif cmd == 'what-provides':
             filters = args[0]
             provides_type = args[1]
-            search = args[2]
+            search = _to_unicode(args[2])
             self.what_provides(filters, provides_type, search)
             self.finished()
         elif cmd == 'set-locale':
commit f6b9719df8f9749bee960d330db65da9b595ab4b
Author: Daniel Elstner <danielk at openismus.com>
Date:   Fri Jun 5 12:37:08 2009 +0100

    Fix reading freed-memory as author when GetBackendDetail is called with a NULL name parameter
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/lib/packagekit-glib/pk-control.c b/lib/packagekit-glib/pk-control.c
index f102ae3..bdc3d17 100644
--- a/lib/packagekit-glib/pk-control.c
+++ b/lib/packagekit-glib/pk-control.c
@@ -495,7 +495,7 @@ pk_control_get_backend_detail (PkControl *control, gchar **name, gchar **author,
 	if (name != NULL)
 		*name = tname;
 	else
-		g_free (tauthor);
+		g_free (tname);
 	/* copy needed bits */
 	if (author != NULL)
 		*author = tauthor;
commit 49624336df2cc2efc8f27240c2bfd67031b09114
Author: Jared D. McNeill <jmcneill at netbsd.org>
Date:   Fri Jun 5 11:56:42 2009 +0100

    Don't use BASHisms on FreeBSD
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/contrib/cron/packagekit-background.cron b/contrib/cron/packagekit-background.cron
index c39084e..eaa747b 100755
--- a/contrib/cron/packagekit-background.cron
+++ b/contrib/cron/packagekit-background.cron
@@ -12,7 +12,7 @@
 [ -f /etc/sysconfig/packagekit-background ] && . /etc/sysconfig/packagekit-background
 
 # are we disabled?
-if [ "$ENABLED" == "no" ]; then
+if [ "$ENABLED" = "no" ]; then
 	exit 1
 fi
 
@@ -25,7 +25,7 @@ PKTMP=$(mktemp /var/run/packagekit-cron.XXXXXX)
 sleep $RANDOM
 
 # do action
-if [ "$CHECK_ONLY" == "yes" ]; then
+if [ "$CHECK_ONLY" = "yes" ]; then
 	pkcon get-updates > $PKTMP
 else
 	pkcon update > $PKTMP
commit 477a93f67705c738d918ef653a88d9a682e2a0fa
Author: Jared D. McNeill <jmcneill at netbsd.org>
Date:   Fri Jun 5 11:55:27 2009 +0100

    Add missing header to fix compile on FreeBSD
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index e88da7e..23bbdb0 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -22,6 +22,7 @@
 #include "config.h"
 
 #include <string.h>
+#include <locale.h>
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
 #include <packagekit-glib/packagekit.h>
commit 5aa7b8118161eedd8d26d1fcfcfb0003726b65e2
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jun 5 11:32:41 2009 +0100

    Use the nautilus logo rather than a screenshot

diff --git a/docs/html/img/users-nautlius.png b/docs/html/img/users-nautlius.png
index 35388c8..f704f59 100644
Binary files a/docs/html/img/users-nautlius.png and b/docs/html/img/users-nautlius.png differ
commit c3ef7b4956cd14d8ba5c0bb1820880b096f58500
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jun 5 10:51:29 2009 +0100

    Add two links to the FAQ

diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index 7e29eb6..a887b8c 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -519,7 +519,9 @@ for more details and further discussion.
 <p>
 If the transaction needs to tell the user something, the <code>Message()</code>
 method can be used that will localise the message up the stack, and also give the user a way
-of ignoring duplicate messages of this type.
+of ignoring duplicate messages of this type. We really don't what to be doing things like
+<a href="http://tieguy.org/blog/2008/04/11/second-worst-dialog-i-saw-during-a-recent-ubuntu-upgrade/">this</a>
+or <a href="http://weblogs.mozillazine.org/gerv/archives/2008/04/upgrading_to_hardy.html">this</a>.
 </p>
 
 <hr>
commit 099d2bbc690dad47e799c64c67db1f2cf667dab3
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jun 5 10:16:26 2009 +0100

    Add some new users of PackageKit to the website page

diff --git a/docs/html/img/users-assassin.png b/docs/html/img/users-assassin.png
new file mode 100644
index 0000000..c3785e5
Binary files /dev/null and b/docs/html/img/users-assassin.png differ
diff --git a/docs/html/img/users-gnome-packagekit.png b/docs/html/img/users-gnome-packagekit.png
new file mode 100644
index 0000000..50d0e50
Binary files /dev/null and b/docs/html/img/users-gnome-packagekit.png differ
diff --git a/docs/html/img/users-kpackagekit.png b/docs/html/img/users-kpackagekit.png
new file mode 100644
index 0000000..0ecf93a
Binary files /dev/null and b/docs/html/img/users-kpackagekit.png differ
diff --git a/docs/html/img/users-listaller.png b/docs/html/img/users-listaller.png
new file mode 100644
index 0000000..3702823
Binary files /dev/null and b/docs/html/img/users-listaller.png differ
diff --git a/docs/html/img/users-nautlius.png b/docs/html/img/users-nautlius.png
new file mode 100644
index 0000000..35388c8
Binary files /dev/null and b/docs/html/img/users-nautlius.png differ
diff --git a/docs/html/img/users-system-config-printer.png b/docs/html/img/users-system-config-printer.png
new file mode 100644
index 0000000..f06f697
Binary files /dev/null and b/docs/html/img/users-system-config-printer.png differ
diff --git a/docs/html/pk-users.html b/docs/html/pk-users.html
index 7afccf0..72f0978 100644
--- a/docs/html/pk-users.html
+++ b/docs/html/pk-users.html
@@ -17,7 +17,7 @@
 
 <p>Back to the <a href="index.html">main page</a></p>
 
-<h1>Who uses PackageKit?</h1>
+<h1>Who ships PackageKit?</h1>
 
 <table cellpadding="10">
 <tr>
@@ -119,6 +119,139 @@
 
 </table>
 
+<h1>What projects use the PackageKit system API?</h1>
+
+<table cellpadding="10">
+<tr>
+ <td>
+  <a href="http://www.packagekit.org/pk-screenshots.html"><img src="img/users-gnome-packagekit.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>GNOME - GNOME PackageKit</h2>
+  <p>
+   GNOME PackageKit is a collection of PackageKit GUI tools for use in the GNOME desktop.
+  </p>
+  <p>
+   Supports PackageKit >= 0.4.1
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://www.kde-apps.org/content/show.php/KPackageKit?content=84745"><img src="img/users-kpackagekit.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>KDE - KPackageKit</h2>
+  <p>
+   KPackageKit is the KDE interface for PackageKit.
+  </p>
+  <p>
+   Supports PackageKit >= 0.4.7
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://listaller.nlinux.org/"><img src="img/users-listaller.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Listaller Project - Listaller</h2>
+  <p>
+   A cross-distribution software installation- and management tool which
+   uses PackageKit to detect dependencies of executables and for
+   native-package installation.
+  </p>
+  <p>
+   Supports PackageKit >= 0.4.6
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://wiki.openmoko.org/wiki/Om2008.8_Installer"><img src="img/users-assassin.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Openmoko - Assassin</h2>
+  <p>
+   The Openmoko Installer (Codename: Assassin) is a tool for installing, updating and uninstalling programs on your Neo.
+  </p>
+  <p>
+   Supports PackageKit >= 0.1.5 (the 0_1_X branch is now obsolete)
+  </p>
+ </td>
+</tr>
+<!--
+<tr>
+ <td>
+  <a href="xxxxxxxxxxxxxxxxxxxxxxx"><img src="xxxxxxxxxxxxxxxxxxxxxxxxxx" alt=""/></a>
+ </td>
+ <td>
+  <h2>xxxxxxxxxxxxxxxx - xxxxxxxxxxxxx</h2>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+ </td>
+</tr>
+-->
+
+</table>
+
+<h1>What software the PackageKit session API?</h1>
+
+<table cellpadding="10">
+<tr>
+ <td>
+  <a href="http://live.gnome.org/Nautilus"><img src="img/users-nautlius.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>GNOME - Nautilus</h2>
+  <p>
+   The Nautilus file manager provides a simple and integrated way to manage your files and applications.
+   The file manager lets you organize your files into folders.
+   Nautilus also manages the desktop. The desktop lies behind all other visible items on your screen.
+   The desktop is an active component of the way you use your computer.
+  </p>
+  <p>
+   Uses PackageKit to install missing mime type handlers, to open unknown file formats.
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://fedoraproject.org/wiki/Printing/AdminToolOutline"><img src="img/users-system-config-printer.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Fedora Project - system-config-printer</h2>
+  <p>
+   The purpose of system-config-printer is to configure a CUPS server (often the local machine) using the CUPS API.
+   The tool is written in Python, using pygtk for the graphical parts and with some Python bindings (pycups) for the CUPS API.
+  </p>
+  <p>
+   Uses PackageKit to install missing printer drivers.
+  </p>
+ </td>
+</tr>
+<!--
+<tr>
+ <td>
+  <a href="xxxxxxxxxxxxxxxxxxxxxxx"><img src="xxxxxxxxxxxxxxxxxxxxxxxxxx" alt=""/></a>
+ </td>
+ <td>
+  <h2>xxxxxxxxxxxxxxxx - xxxxxxxxxxxxx</h2>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+ </td>
+</tr>
+-->
+</table>
+
 <p>
  <i>Want your project listed here? Send us an email on the
  <a href="http://lists.freedesktop.org/mailman/listinfo/packagekit">mailing list</a>...</i>
commit 08757415d5962bd1428a8b0641635d3a41254620
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 17:35:25 2009 +0100

    yum: be more descriptive why we didn't have a package cache

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index e735ce8..c7cb458 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -353,7 +353,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                     else:
                         available.append(pkg)
             except yum.Errors.RepoError, e:
-                raise PkError(ERROR_NO_CACHE, _to_unicode(e))
+                raise PkError(ERROR_NO_CACHE, "failed to use search generator: %s" %_to_unicode(e))
             except Exception, e:
                 raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
             else:
@@ -423,7 +423,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         try:
             pkgs = self.yumbase.pkgSack.searchNames(names=name_list)
         except yum.Errors.RepoError, e:
-            raise PkError(ERROR_NO_CACHE, _to_unicode(e))
+            raise PkError(ERROR_NO_CACHE, "failed to search names: %s" %_to_unicode(e))
         except Exception, e:
             raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
         return pkgs
@@ -492,7 +492,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         try:
             grp = self.yumbase.comps.return_group(grpid)
         except yum.Errors.RepoError, e:
-            raise PkError(ERROR_NO_CACHE, _to_unicode(e))
+            raise PkError(ERROR_NO_CACHE, "failed to get groups from comps: %s" %_to_unicode(e))
         except yum.Errors.GroupsError, e:
             raise PkError(ERROR_GROUP_NOT_FOUND, _to_unicode(e))
         except Exception, e:
@@ -608,7 +608,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             try:
                 pkgs = self.yumbase.pkgSack
             except yum.Errors.RepoError, e:
-                self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+                self.error(ERROR_NO_CACHE, "failed to get package sack: %s" %_to_unicode(e), exit=False)
                 return
             except Exception, e:
                 self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
@@ -647,7 +647,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                 self.yumbase.repos.populateSack(mdtype='filelists')
                 pkgs = self.yumbase.pkgSack.searchFiles(key)
             except yum.Errors.RepoError, e:
-                self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+                self.error(ERROR_NO_CACHE, "failed to search sack: %s" %_to_unicode(e), exit=False)
                 return
             except Exception, e:
                 self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
@@ -715,7 +715,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                         try:
                             pkgs = self.yumbase.pkgSack.searchProvides(provide)
                         except yum.Errors.RepoError, e:
-                            self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+                            self.error(ERROR_NO_CACHE, "failed to get provides for sack: %s" %_to_unicode(e), exit=False)
                             return
                         except Exception, e:
                             self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
@@ -736,7 +736,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         try:
             cats = self.yumbase.comps.categories
         except yum.Errors.RepoError, e:
-            self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+            self.error(ERROR_NO_CACHE, "failed to get comps list: %s" %_to_unicode(e), exit=False)
         except Exception, e:
             self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
         else:
@@ -821,7 +821,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             try:
                 packs = self.yumbase.pkgSack.searchNevra(n, e, v, r, a)
             except yum.Errors.RepoError, e:
-                self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+                self.error(ERROR_NO_CACHE, "failed to search package sack: %s" %_to_unicode(e), exit=False)
                 return
             except Exception, e:
                 self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
@@ -1446,7 +1446,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                 try:
                     pkgs = self.yumbase.pkgSack.returnNewestByNameArch()
                 except yum.Errors.RepoError, e:
-                    self.error(ERROR_NO_CACHE, _to_unicode(e), exit=False)
+                    self.error(ERROR_NO_CACHE, "failed to return newest by package sack: %s" %_to_unicode(e), exit=False)
                     return
                 except Exception, e:
                     self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
@@ -2511,7 +2511,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             try:
                 self.yumbase.repos.doSetup()
             except yum.Errors.RepoError, e:
-                raise PkError(ERROR_NO_CACHE, _to_unicode(e))
+                raise PkError(ERROR_NO_CACHE, "failed to setup repos: %s" %_to_unicode(e))
             except exceptions.IOError, e:
                 raise PkError(ERROR_NO_SPACE_ON_DEVICE, _to_unicode(e))
             except Exception, e:
commit d0245e1fcabdabf3d875fb3445771253d04a2333
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 16:57:32 2009 +0100

    Fix up the session example to not use depricated (and now removed) API

diff --git a/docs/html/files/session.c b/docs/html/files/session.c
index a445ba1..850c17c 100644
--- a/docs/html/files/session.c
+++ b/docs/html/files/session.c
@@ -11,7 +11,7 @@ main (int argc, char *argv[])
 	GError *error = NULL;
 	gboolean ret;
 	guint32 xid = 0;
-	guint32 timestamp = 0;
+	const gchar *packages[] = {"openoffice-clipart", "openoffice-clipart-extras", NULL};
 
 	/* init the types system */
 	g_type_init ();
@@ -23,13 +23,13 @@ main (int argc, char *argv[])
 	proxy = dbus_g_proxy_new_for_name (connection,
 					   "org.freedesktop.PackageKit",
 					   "/org/freedesktop/PackageKit",
-					   "org.freedesktop.PackageKit");
+					   "org.freedesktop.PackageKit.Modify");
 
 	/* execute sync method */
-	ret = dbus_g_proxy_call (proxy, "InstallPackageName", &error,
+	ret = dbus_g_proxy_call (proxy, "InstallPackageNames", &error,
 				 G_TYPE_UINT, xid, /* window xid, 0 for none */
-				 G_TYPE_UINT, timestamp, /* action timestamp,, 0 for unknown */
-				 G_TYPE_STRING, "openoffice-clipart",
+				 G_TYPE_STRV, packages,
+				 G_TYPE_STRING, "show-confirm-search,hide-finished",
 				 G_TYPE_INVALID, G_TYPE_INVALID);
 	if (!ret) {
 		g_warning ("failed: %s", error->message);
diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index 4d5f43d..7e29eb6 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -330,10 +330,11 @@ connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
 proxy = dbus_g_proxy_new_for_name (connection,
                              "org.freedesktop.PackageKit",
                              "/org/freedesktop/PackageKit",
-                             "org.freedesktop.PackageKit");
+                             "org.freedesktop.PackageKit.Modify");
 /* execute sync method */
-ret = dbus_g_proxy_call (proxy, "InstallPackageName", &error,
-                         G_TYPE_STRING, "openoffice-clipart",
+ret = dbus_g_proxy_call (proxy, "InstallPackageNames", &error,
+                         G_TYPE_STRV, {"openoffice-clipart", NULL},
+                         G_TYPE_STRING, "",
                          G_TYPE_INVALID, G_TYPE_INVALID);
 if (!ret) {
         g_warning ("failed: %s", error->message);
commit 3243fb85063b8fca79a0bc677f3fc81f1f467c26
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 16:46:11 2009 +0100

    Add openSUSE to the PackageKit users page

diff --git a/docs/html/img/users-suse.png b/docs/html/img/users-suse.png
new file mode 100644
index 0000000..28a7777
Binary files /dev/null and b/docs/html/img/users-suse.png differ
diff --git a/docs/html/pk-users.html b/docs/html/pk-users.html
index cd2051c..7afccf0 100644
--- a/docs/html/pk-users.html
+++ b/docs/html/pk-users.html
@@ -84,6 +84,22 @@
   </p>
  </td>
 </tr>
+<tr>
+ <td>
+  <a href="http://opensuse.org/"><img src="img/users-suse.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>openSUSE Project - openSUSE</h2>
+  <p>
+   openSUSE is a free and Linux-based operating system for your PC, Laptop or Server.
+   You can surf the web, manage your e-mails and photos, do office work,
+   play videos or music and have a lot of fun!
+  </p>
+  <p>
+   Uses latest version (0.4.8 in GNOME:Factory)
+  </p>
+ </td>
+</tr>
 <!--
 <tr>
  <td>
commit d99449b16210ad0d602005296894ce1d8d460c0b
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 12:59:22 2009 +0100

    Add a page to the website to show who is using PackageKit

diff --git a/docs/html/img/Makefile.am b/docs/html/img/Makefile.am
index 0786318..0595995 100644
--- a/docs/html/img/Makefile.am
+++ b/docs/html/img/Makefile.am
@@ -17,6 +17,10 @@ IMAGE_FILES =					\
 	author-tomparker.png			\
 	author-unknown.png			\
 	author-zodman.png			\
+	users-fedora.png			\
+	users-foresight.png			\
+	users-kubuntu.png			\
+	users-moblin.png			\
 	dialog-information.png			\
 	gpk-added-deps.png			\
 	gpk-application-groups.png		\
@@ -64,6 +68,7 @@ IMAGE_FILES =					\
 	large-help-browser.png			\
 	large-preferences-system.png		\
 	large-system-users.png			\
+	large-application-certificate.png	\
 	packagekit.png				\
 	pk-command-not-found.png		\
 	pk-opensuse-updater.png			\
diff --git a/docs/html/img/large-application-certificate.png b/docs/html/img/large-application-certificate.png
new file mode 100644
index 0000000..14f5054
Binary files /dev/null and b/docs/html/img/large-application-certificate.png differ
diff --git a/docs/html/img/users-fedora.png b/docs/html/img/users-fedora.png
new file mode 100644
index 0000000..51f0f62
Binary files /dev/null and b/docs/html/img/users-fedora.png differ
diff --git a/docs/html/img/users-foresight.png b/docs/html/img/users-foresight.png
new file mode 100644
index 0000000..12a9075
Binary files /dev/null and b/docs/html/img/users-foresight.png differ
diff --git a/docs/html/img/users-kubuntu.png b/docs/html/img/users-kubuntu.png
new file mode 100644
index 0000000..3fa1432
Binary files /dev/null and b/docs/html/img/users-kubuntu.png differ
diff --git a/docs/html/img/users-moblin.png b/docs/html/img/users-moblin.png
new file mode 100644
index 0000000..e36107d
Binary files /dev/null and b/docs/html/img/users-moblin.png differ
diff --git a/docs/html/index.html b/docs/html/index.html
index 94c540f..b64dd72 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -29,12 +29,14 @@
 <table align="center" cellpadding="10px" border="0">
 <tr>
  <td align="center"><a href="pk-authors.html"><img src="img/large-authors.png" width="128" alt=""/></a></td>
+ <td align="center"><a href="pk-users.html"><img src="img/large-application-certificate.png" width="128" alt=""/></a></td>
  <td align="center"><a href="pk-bugs.html"><img src="img/large-applications-development.png" width="128" alt=""/></a></td>
  <td align="center"><a href="pk-help.html"><img src="img/large-emblem-favorite.png" width="128" alt=""/></a></td>
  <td align="center"><a href="pk-faq.html"><img src="img/large-help-browser.png" width="128" alt=""/></a></td>
 </tr>
 <tr>
  <td><p class="indextitle"><a href="pk-authors.html" class="indextitle">Who develops<br/>PackageKit?</a></p></td>
+ <td><p class="indextitle"><a href="pk-users.html" class="indextitle">Who uses<br/>PackageKit?</a></p></td>
  <td><p class="indextitle"><a href="pk-bugs.html" class="indextitle">Reporting<br/>bugs</a></p></td>
  <td><p class="indextitle"><a href="pk-help.html" class="indextitle">How can<br/>I help?</a></p></td>
  <td><p class="indextitle"><a href="pk-faq.html" class="indextitle">Frequently<br/>asked questions</a></p></td>
diff --git a/docs/html/pk-users.html b/docs/html/pk-users.html
new file mode 100644
index 0000000..cd2051c
--- /dev/null
+++ b/docs/html/pk-users.html
@@ -0,0 +1,121 @@
+<!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 - Who uses PackageKit?</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><img src="img/packagekit.png" alt=""/></td>
+ <td width="95%" valign="middle"><p class="title">Who uses PackageKit?</p></td>
+ <td><img src="img/packagekit.png" alt=""/></td>
+</tr>
+</table>
+
+<p>Back to the <a href="index.html">main page</a></p>
+
+<h1>Who uses PackageKit?</h1>
+
+<table cellpadding="10">
+<tr>
+ <td>
+  <a href="http://fedoraproject.org/"><img src="img/users-fedora.png" alt=""/></a><!-- image should be 200px wide -->
+ </td>
+ <td>
+  <h2>Fedora Project - Fedora 9, 10, 11</h2>
+  <p>
+   Fedora is a Linux-based operating system that showcases the latest in free and open source software.
+   Fedora is always free for anyone to use, modify, and distribute.
+  </p>
+  <p>
+   Uses latest PackageKit version, 0.4.8.
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://foresightlinux.org"><img src="img/users-foresight.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Foresight Linux - Foresight GNOME</h2>
+  <p>
+   Foresight is a desktop operating system featuring an intuitive user interface and a showcase of
+   the latest desktop software, giving users convenient and enjoyable access to
+   their music, photos, videos, documents, and Internet resources.
+  </p>
+  <p>
+   Always uses latest PackageKit version.
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://moblin.org/"><img src="img/users-moblin.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Moblin Project - Moblin Linux</h2>
+  <p>
+   Moblin is an open source project focused on building a Linux-based platform
+   optimized for the next generation of mobile devices including Netbooks,
+   Mobile Internet Devices, and In-vehicle infotainment systems.
+  </p>
+  <p>
+   Generally uses latest PackageKit version, but currently 0.4.7 would directly update to next release.
+  </p>
+ </td>
+</tr>
+<tr>
+ <td>
+  <a href="http://www.kubuntu.org/"><img src="img/users-kubuntu.png" alt=""/></a>
+ </td>
+ <td>
+  <h2>Kubuntu - Kubuntu</h2>
+  <p>
+   Kubuntu is a free, user-friendly operating system based on the K Desktop Environment
+   and on the award winning Ubuntu operating system.
+   With a biannual release cycle and at least 18 months of free security updates
+   for each release, it is the secure, stable computing environment you've been waiting for.
+  </p>
+  <p>
+   Default package installer since Kubuntu 9.04 (uses PackageKit 0.3.14)
+  </p>
+ </td>
+</tr>
+<!--
+<tr>
+ <td>
+  <a href="xxxxxxxxxxxxxxxxxxxxxxx"><img src="xxxxxxxxxxxxxxxxxxxxxxxxxx" alt=""/></a>
+ </td>
+ <td>
+  <h2>xxxxxxxxxxxxxxxx - xxxxxxxxxxxxx</h2>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+  <p>
+   xxxxxxxxxxxxxxxxxxxxxxxxxxx
+  </p>
+ </td>
+</tr>
+-->
+
+</table>
+
+<p>
+ <i>Want your project listed here? Send us an email on the
+ <a href="http://lists.freedesktop.org/mailman/listinfo/packagekit">mailing list</a>...</i>
+</p>
+
+<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-2009</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 32c2738b38de700ff5fa19806943a259263be265
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 12:58:37 2009 +0100

    Trivial table fix for the FAQ html page

diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index fc85f13..4d5f43d 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -377,12 +377,16 @@ if you have any other questions
 <hr>
 <h3><a name="tray-icons">What do the tray icons mean?</a></h3>
 <table>
-<tr><td><img src="img/pk-update-bugfix.png"/></td><td>Bugfix update</td></tr>
-<tr><td><img src="img/pk-update-enhancement.png"/></td><td>Enhancement update</td></tr>
-<tr><td><img src="img/pk-update-high.png"/></td><td>High priority update</td></tr>
-<tr><td><img src="img/pk-update-low.png"/></td><td>Low priority update</td></tr>
-<tr><td><img src="img/pk-update-normal.png"/></td><td>Normal update</td></tr>
-<tr><td><img src="img/pk-update-security.png"/></td><td>Security update</td></tr>
+ <tr>
+  <td><img src="img/pk-update-bugfix.png"/></td><td>Bugfix update</td>
+  <td><img src="img/pk-update-enhancement.png"/></td><td>Enhancement update</td>
+  <td><img src="img/pk-update-high.png"/></td><td>High priority update</td>
+ </tr>
+ <tr>
+  <td><img src="img/pk-update-low.png"/></td><td>Low priority update</td>
+  <td><img src="img/pk-update-normal.png"/></td><td>Normal update</td>
+  <td><img src="img/pk-update-security.png"/></td><td>Security update</td>
+ </tr>
 </table>
 <p>
 <b>NOTE:</b>Not all the icons may show for some backends.
commit 3c6dc7bf76c466adb15862db10e153aeaa696310
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 12:21:41 2009 +0100

    Update my copyrightfor 2009 on the webpages

diff --git a/docs/html/index.html b/docs/html/index.html
index 6ab0ae1..94c540f 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -42,7 +42,7 @@
 </table>
 
 <p class="footer">
- Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2008</a><br/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-authors.html b/docs/html/pk-authors.html
index 8105e94..002815d 100644
--- a/docs/html/pk-authors.html
+++ b/docs/html/pk-authors.html
@@ -321,7 +321,7 @@
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-bugs.html b/docs/html/pk-bugs.html
index 2ee12ea..4217dcf 100644
--- a/docs/html/pk-bugs.html
+++ b/docs/html/pk-bugs.html
@@ -113,7 +113,7 @@ give you more information.
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index 46e42c3..4ba5f23 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -209,7 +209,7 @@ as easy as possible.
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-faq.html b/docs/html/pk-faq.html
index dc4fb3b..fc85f13 100644
--- a/docs/html/pk-faq.html
+++ b/docs/html/pk-faq.html
@@ -629,7 +629,7 @@ I now work at Red Hat full time.
 <br><br><br><br><br><br><br><br><br><br><br>
 
 <p class="footer">
- Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2008</a><br/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-help.html b/docs/html/pk-help.html
index ed5a80a..b6cdaeb 100644
--- a/docs/html/pk-help.html
+++ b/docs/html/pk-help.html
@@ -64,7 +64,7 @@ existing backends as a template for what you are trying to do.
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-intro.html b/docs/html/pk-intro.html
index 9cfa650..0fc1bc3 100644
--- a/docs/html/pk-intro.html
+++ b/docs/html/pk-intro.html
@@ -135,7 +135,7 @@ cross-architecture API.
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-matrix.html b/docs/html/pk-matrix.html
index 57efd65..c7a47fa 100644
--- a/docs/html/pk-matrix.html
+++ b/docs/html/pk-matrix.html
@@ -560,7 +560,7 @@
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-profiles.html b/docs/html/pk-profiles.html
index 8a8b299..08fb3ab 100644
--- a/docs/html/pk-profiles.html
+++ b/docs/html/pk-profiles.html
@@ -118,7 +118,7 @@ He says that when files are downloading, "the Internet gets slower".
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-reference.html b/docs/html/pk-reference.html
index 2c4eb10..f5266ec 100644
--- a/docs/html/pk-reference.html
+++ b/docs/html/pk-reference.html
@@ -27,7 +27,7 @@ here</a>. Please update your links!
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-screenshots.html b/docs/html/pk-screenshots.html
index eb82daa..c38a2b5 100644
--- a/docs/html/pk-screenshots.html
+++ b/docs/html/pk-screenshots.html
@@ -239,7 +239,7 @@
 </table>
 
 <p class="footer">
- Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2008</a><br/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
diff --git a/docs/html/pk-using.html b/docs/html/pk-using.html
index 02a0305..c3ef178 100644
--- a/docs/html/pk-using.html
+++ b/docs/html/pk-using.html
@@ -92,7 +92,7 @@ The latest interface is available in the source tree or <a href="http://gitweb.f
 <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/>
+ Copyright <a href="mailto:richard at hughsie.com">Richard Hughes 2007-2009</a><br/>
  <a href="http://validator.w3.org/check/referer">Optimized</a>
  for <a href="http://www.w3.org/">standards</a>.
 </p>
commit 6ed527ee31fa0d92e44c50db567ca30e62012abf
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 12:08:13 2009 +0100

    Reject files passed to InstallFiles() that are not supported by the backend

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 650910c..255cb7d 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -40,6 +40,7 @@
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
+#include <gio/gio.h>
 #include <packagekit-glib/packagekit.h>
 
 #include "egg-debug.h"
@@ -217,6 +218,7 @@ pk_transaction_error_get_type (void)
 			ENUM_ENTRY (PK_TRANSACTION_ERROR_INITIALIZE_FAILED, "InitializeFailed"),
 			ENUM_ENTRY (PK_TRANSACTION_ERROR_COMMIT_FAILED, "CommitFailed"),
 			ENUM_ENTRY (PK_TRANSACTION_ERROR_PACK_INVALID, "PackInvalid"),
+			ENUM_ENTRY (PK_TRANSACTION_ERROR_MIME_TYPE_NOT_SUPPORTED, "MimeTypeNotSupported"),
 			ENUM_ENTRY (PK_TRANSACTION_ERROR_INVALID_PROVIDE, "InvalidProvide"),
 			{ 0, NULL, NULL }
 		};
@@ -2531,6 +2533,63 @@ pk_transaction_get_updates (PkTransaction *transaction, const gchar *filter, DBu
 }
 
 /**
+ * pk_transaction_get_content_type_for_file:
+ **/
+static gchar *
+pk_transaction_get_content_type_for_file (const gchar *filename, GError **error)
+{
+	GError *error_local = NULL;
+	GFile *file;
+	GFileInfo *info;
+	gchar *content_type = NULL;
+
+	/* get file info synchronously */
+	file = g_file_new_for_path (filename);
+	info = g_file_query_info (file, "standard::content-type", G_FILE_QUERY_INFO_NONE, NULL, &error_local);
+	if (info == NULL) {
+		*error = g_error_new (1, 0, "failed to get file attributes for %s: %s", filename, error_local->message);
+		g_error_free (error_local);
+		goto out;
+	}
+
+	/* get content type as string */
+	content_type = g_file_info_get_attribute_as_string (info, "standard::content-type");
+out:
+	if (info != NULL)
+		g_object_unref (info);
+	g_object_unref (file);
+	return content_type;
+}
+
+/**
+ * pk_transaction_is_supported_content_type:
+ **/
+static gboolean
+pk_transaction_is_supported_content_type (PkTransaction *transaction, const gchar *content_type)
+{
+	guint i;
+	gboolean ret = FALSE;
+	gchar *mime_types_str;
+	gchar **mime_types;
+
+	/* get list of mime types supported by backends */
+	mime_types_str = pk_backend_get_mime_types (transaction->priv->backend);
+	mime_types = g_strsplit (mime_types_str, ";", -1);
+
+	/* can we support this one? */
+	for (i=0; mime_types[i] != NULL; i++) {
+		if (g_strcmp0 (mime_types[i], content_type) == 0) {
+			ret = TRUE;
+			break;
+		}
+	}
+
+	g_free (mime_types_str);
+	g_strfreev (mime_types);
+	return ret;
+}
+
+/**
  * pk_transaction_install_files:
  **/
 void
@@ -2542,6 +2601,7 @@ pk_transaction_install_files (PkTransaction *transaction, gboolean trusted,
 	GError *error;
 	GError *error_local = NULL;
 	PkServicePack *service_pack;
+	gchar *content_type;
 	guint length;
 	guint i;
 
@@ -2582,6 +2642,28 @@ pk_transaction_install_files (PkTransaction *transaction, gboolean trusted,
 			pk_transaction_dbus_return_error (context, error);
 			return;
 		}
+
+		/* get content type */
+		content_type = pk_transaction_get_content_type_for_file (full_paths[i], &error_local);
+		if (content_type == NULL) {
+			error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_NOT_SUPPORTED,
+					     "Failed to get content type for file %s", full_paths[i]);
+			pk_transaction_release_tid (transaction);
+			pk_transaction_dbus_return_error (context, error);
+			return;
+		}
+
+		/* supported content type? */
+		ret = pk_transaction_is_supported_content_type (transaction, content_type);
+		g_free (content_type);
+		if (!ret) {
+			error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_MIME_TYPE_NOT_SUPPORTED,
+					     "MIME type not supported %s", full_paths[i]);
+			pk_transaction_release_tid (transaction);
+			pk_transaction_dbus_return_error (context, error);
+			return;
+		}
+
 		/* valid */
 		if (g_str_has_suffix (full_paths[i], ".servicepack")) {
 			service_pack = pk_service_pack_new ();
diff --git a/src/pk-transaction.h b/src/pk-transaction.h
index a3b5925..e6ad1e6 100644
--- a/src/pk-transaction.h
+++ b/src/pk-transaction.h
@@ -71,6 +71,7 @@ typedef enum
 	PK_TRANSACTION_ERROR_COMMIT_FAILED,
 	PK_TRANSACTION_ERROR_INVALID_PROVIDE,
 	PK_TRANSACTION_ERROR_PACK_INVALID,
+	PK_TRANSACTION_ERROR_MIME_TYPE_NOT_SUPPORTED,
 	PK_TRANSACTION_ERROR_LAST
 } PkTransactionError;
 
commit 4c947b068f26e14a189bd3227db0d255f1c13bea
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Jun 4 12:04:41 2009 +0100

    Make GIO a hard build dependency and remove the conditional code

diff --git a/configure.ac b/configure.ac
index 6e6c51d..1b85558 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,6 +166,12 @@ PKG_CHECK_MODULES(DBUS, \
 AC_SUBST(DBUS_CFLAGS)
 AC_SUBST(DBUS_LIBS)
 
+PKG_CHECK_MODULES(GIO, \
+ gio-2.0 >= $GIO_REQUIRED \
+ gio-unix-2.0 >= $DBUS_REQUIRED)
+AC_SUBST(GIO_CFLAGS)
+AC_SUBST(GIO_LIBS)
+
 dnl ---------------------------------------------------------------------------
 dnl - Build PackageKit-Qt
 dnl ---------------------------------------------------------------------------
@@ -258,22 +264,6 @@ dnl - moc (for packagekit-qt)
 dnl ---------------------------------------------------------------------------
 AC_PATH_PROG([MOC], [moc-qt4])
 
-dnl ---------------------------------------------------------------------------
-dnl - Is GIO available?
-dnl ---------------------------------------------------------------------------
-PKG_CHECK_MODULES(GIO, gio-2.0 >= $GIO_REQUIRED gio-unix-2.0 >= $GIO_REQUIRED, PK_BUILD_GIO="yes", PK_BUILD_GIO="no")
-if test "x$PK_BUILD_GIO" = "xyes"; then
-	with_gio="yes"
-	AC_DEFINE(PK_BUILD_GIO, 1, [define if GIO is installed])
-else
-	with_gio="no"
-	PK_BUILD_GIO=no
-fi
-
-AM_CONDITIONAL(PK_BUILD_GIO, test x$PK_BUILD_GIO = xyes)
-AC_SUBST(GIO_CFLAGS)
-AC_SUBST(GIO_LIBS)
-
 # unix networking stack always available
 networking_apis="unix"
 
@@ -784,7 +774,6 @@ echo "
         Developer warnings:        ${enable_developer}
         Security framework:        ${with_security_framework}
         Networking stacks:         ${networking_apis}
-        GIO support:               ${with_gio}
         Browser plugin:            ${build_browser_plugin}
         GStreamer plugin:          ${build_gstreamer_plugin}
         Pango module:              ${build_gtk_module}
diff --git a/src/Makefile.am b/src/Makefile.am
index 937b23b..5969300 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -86,6 +86,7 @@ shared_SOURCES =					\
 	pk-sysdep.h					\
 	pk-sysdep.c					\
 	pk-file-monitor.h				\
+	pk-file-monitor.c				\
 	pk-engine.h					\
 	pk-engine.c					\
 	pk-inhibit.h					\
@@ -108,16 +109,6 @@ shared_SOURCES +=					\
 	pk-network-stack-connman.c
 endif
 
-if PK_BUILD_GIO
-shared_SOURCES +=					\
-	pk-file-monitor-gio.c				\
-	$(NULL)
-else
-shared_SOURCES +=					\
-	pk-file-monitor-dummy.c				\
-	$(NULL)
-endif
-
 if SECURITY_TYPE_POLKIT
 shared_SOURCES += pk-security-polkit.c
 endif
diff --git a/src/pk-file-monitor-dummy.c b/src/pk-file-monitor-dummy.c
deleted file mode 100644
index 7f456bf..0000000
--- a/src/pk-file-monitor-dummy.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <errno.h>
-#include <signal.h>
-
-#include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <glib/gi18n.h>
-#include <packagekit-glib/packagekit.h>
-
-#include <egg-debug.h>
-#include "pk-file-monitor.h"
-
-static void     pk_file_monitor_class_init	(PkFileMonitorClass *klass);
-static void     pk_file_monitor_init		(PkFileMonitor      *file_monitor);
-static void     pk_file_monitor_finalize	(GObject       *object);
-
-#define PK_FILE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_FILE_MONITOR, PkFileMonitorPrivate))
-
-struct PkFileMonitorPrivate
-{
-	gboolean		dummy;
-};
-
-enum {
-	PK_FILE_MONITOR_CHANGED,
-	PK_FILE_MONITOR_LAST_SIGNAL
-};
-
-static guint signals [PK_FILE_MONITOR_LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (PkFileMonitor, pk_file_monitor, G_TYPE_OBJECT)
-
-/**
- * pk_file_monitor_class_init:
- * @klass: The PkFileMonitorClass
- **/
-static void
-pk_file_monitor_class_init (PkFileMonitorClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	object_class->finalize = pk_file_monitor_finalize;
-
-	signals [PK_FILE_MONITOR_CHANGED] =
-		g_signal_new ("file-changed",
-			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-	g_type_class_add_private (klass, sizeof (PkFileMonitorPrivate));
-}
-
-/**
- * pk_file_monitor_init:
- * @file_monitor: This class instance
- **/
-static void
-pk_file_monitor_init (PkFileMonitor *file_monitor)
-{
-	file_monitor->priv = PK_FILE_MONITOR_GET_PRIVATE (file_monitor);
-}
-
-/**
- * pk_file_monitor_set_file:
- **/
-gboolean
-pk_file_monitor_set_file (PkFileMonitor	*file_monitor, const gchar *filename)
-{
-	return TRUE;
-}
-
-/**
- * pk_file_monitor_finalize:
- * @object: The object to finalize
- **/
-static void
-pk_file_monitor_finalize (GObject *object)
-{
-	PkFileMonitor *file_monitor;
-
-	g_return_if_fail (PK_IS_FILE_MONITOR (object));
-
-	file_monitor = PK_FILE_MONITOR (object);
-	g_return_if_fail (file_monitor->priv != NULL);
-
-	G_OBJECT_CLASS (pk_file_monitor_parent_class)->finalize (object);
-}
-
-/**
- * pk_file_monitor_new:
- *
- * Return value: a new PkFileMonitor object.
- **/
-PkFileMonitor *
-pk_file_monitor_new (void)
-{
-	PkFileMonitor *file_monitor;
-	file_monitor = g_object_new (PK_TYPE_FILE_MONITOR, NULL);
-	return PK_FILE_MONITOR (file_monitor);
-}
-
-/***************************************************************************
- ***                          MAKE CHECK TESTS                           ***
- ***************************************************************************/
-#ifdef EGG_TEST
-#include "egg-test.h"
-
-void
-pk_file_monitor_test (EggTest *test)
-{
-	PkFileMonitor *file_monitor;
-
-	if (!egg_test_start (test, "PkFileMonitor"))
-		return;
-
-	/************************************************************/
-	egg_test_title (test, "get a file_monitor");
-	file_monitor = pk_file_monitor_new ();
-	egg_test_assert (test, file_monitor != NULL);
-	g_object_unref (file_monitor);
-
-	egg_test_end (test);
-}
-#endif
-
diff --git a/src/pk-file-monitor-gio.c b/src/pk-file-monitor-gio.c
deleted file mode 100644
index 748f5be..0000000
--- a/src/pk-file-monitor-gio.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <errno.h>
-#include <signal.h>
-
-#include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <glib/gi18n.h>
-#include <gio/gio.h>
-#include <packagekit-glib/packagekit.h>
-
-#include "egg-debug.h"
-#include "pk-conf.h"
-#include "pk-file-monitor.h"
-
-static void     pk_file_monitor_finalize	(GObject		*object);
-
-#define PK_FILE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_FILE_MONITOR, PkFileMonitorPrivate))
-#define PK_FILE_MONITOR_RATE_LIMIT	1000
-
-struct PkFileMonitorPrivate
-{
-	GString			*stdout_buf;
-	GFileMonitor		*monitor;
-	GFile			*file;
-};
-
-enum {
-	PK_FILE_MONITOR_CHANGED,
-	PK_FILE_MONITOR_LAST_SIGNAL
-};
-
-static guint signals [PK_FILE_MONITOR_LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (PkFileMonitor, pk_file_monitor, G_TYPE_OBJECT)
-
-/**
- * pk_file_monitor_class_init:
- * @klass: The PkFileMonitorClass
- **/
-static void
-pk_file_monitor_class_init (PkFileMonitorClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	object_class->finalize = pk_file_monitor_finalize;
-
-	signals [PK_FILE_MONITOR_CHANGED] =
-		g_signal_new ("file-changed",
-			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-
-	g_type_class_add_private (klass, sizeof (PkFileMonitorPrivate));
-}
-
-/**
- * pk_file_monitor_monitor_changed:
- * @file_monitor: This class instance
- **/
-static void
-pk_file_monitor_monitor_changed (GFileMonitor *monitor, GFile *file, GFile *other_file,
-			    GFileMonitorEvent event_type, PkFileMonitor *file_monitor)
-{
-	egg_debug ("emit: file-changed");
-	g_signal_emit (file_monitor, signals [PK_FILE_MONITOR_CHANGED], 0);
-}
-
-/**
- * pk_file_monitor_set_file:
- **/
-gboolean
-pk_file_monitor_set_file (PkFileMonitor	*file_monitor, const gchar *filename)
-{
-	GError *error = NULL;
-
-	if (file_monitor->priv->file != NULL) {
-		egg_warning ("already set file monitor, so can't set %s", filename);
-		return FALSE;
-	}
-
-	/* use a GFile */
-	file_monitor->priv->file = g_file_new_for_path (filename);
-
-	/* watch this */
-	file_monitor->priv->monitor = g_file_monitor_file (file_monitor->priv->file, G_FILE_MONITOR_NONE, NULL, &error);
-	if (file_monitor->priv->monitor == NULL) {
-		egg_warning ("failed to setup watch: %s", error->message);
-		g_error_free (error);
-		return FALSE;
-	}
-
-	/* we should get notified of changes */
-	egg_debug ("watching for changes: %s", filename);
-	g_file_monitor_set_rate_limit (file_monitor->priv->monitor, PK_FILE_MONITOR_RATE_LIMIT);
-	g_signal_connect (file_monitor->priv->monitor, "changed",
-			  G_CALLBACK (pk_file_monitor_monitor_changed), file_monitor);
-	return TRUE;
-}
-
-/**
- * pk_file_monitor_init:
- * @file_monitor: This class instance
- **/
-static void
-pk_file_monitor_init (PkFileMonitor *file_monitor)
-{
-	file_monitor->priv = PK_FILE_MONITOR_GET_PRIVATE (file_monitor);
-	file_monitor->priv->file = NULL;
-	file_monitor->priv->monitor = NULL;
-}
-
-/**
- * pk_file_monitor_finalize:
- * @object: The object to finalize
- **/
-static void
-pk_file_monitor_finalize (GObject *object)
-{
-	PkFileMonitor *file_monitor;
-
-	g_return_if_fail (PK_IS_FILE_MONITOR (object));
-
-	file_monitor = PK_FILE_MONITOR (object);
-	g_return_if_fail (file_monitor->priv != NULL);
-
-	/* we might not have called pk_file_monitor_set_file */
-	if (file_monitor->priv->monitor != NULL) {
-		g_file_monitor_cancel (file_monitor->priv->monitor);
-		g_object_unref (file_monitor->priv->monitor);
-	}
-	if (file_monitor->priv->file != NULL) {
-		g_object_unref (file_monitor->priv->file);
-	}
-
-	G_OBJECT_CLASS (pk_file_monitor_parent_class)->finalize (object);
-}
-
-/**
- * pk_file_monitor_new:
- *
- * Return value: a new PkFileMonitor object.
- **/
-PkFileMonitor *
-pk_file_monitor_new (void)
-{
-	PkFileMonitor *file_monitor;
-	file_monitor = g_object_new (PK_TYPE_FILE_MONITOR, NULL);
-	return PK_FILE_MONITOR (file_monitor);
-}
-
-/***************************************************************************
- ***                          MAKE CHECK TESTS                           ***
- ***************************************************************************/
-#ifdef EGG_TEST
-#include "egg-test.h"
-
-void
-pk_file_monitor_test (EggTest *test)
-{
-	PkFileMonitor *file_monitor;
-
-	if (!egg_test_start (test, "PkFileMonitor"))
-		return;
-
-	/************************************************************/
-	egg_test_title (test, "get a file_monitor");
-	file_monitor = pk_file_monitor_new ();
-	egg_test_assert (test, file_monitor != NULL);
-	g_object_unref (file_monitor);
-
-	egg_test_end (test);
-}
-#endif
-
diff --git a/src/pk-file-monitor.c b/src/pk-file-monitor.c
new file mode 100644
index 0000000..748f5be
--- /dev/null
+++ b/src/pk-file-monitor.c
@@ -0,0 +1,203 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+#include <signal.h>
+
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+#include <packagekit-glib/packagekit.h>
+
+#include "egg-debug.h"
+#include "pk-conf.h"
+#include "pk-file-monitor.h"
+
+static void     pk_file_monitor_finalize	(GObject		*object);
+
+#define PK_FILE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_FILE_MONITOR, PkFileMonitorPrivate))
+#define PK_FILE_MONITOR_RATE_LIMIT	1000
+
+struct PkFileMonitorPrivate
+{
+	GString			*stdout_buf;
+	GFileMonitor		*monitor;
+	GFile			*file;
+};
+
+enum {
+	PK_FILE_MONITOR_CHANGED,
+	PK_FILE_MONITOR_LAST_SIGNAL
+};
+
+static guint signals [PK_FILE_MONITOR_LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE (PkFileMonitor, pk_file_monitor, G_TYPE_OBJECT)
+
+/**
+ * pk_file_monitor_class_init:
+ * @klass: The PkFileMonitorClass
+ **/
+static void
+pk_file_monitor_class_init (PkFileMonitorClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	object_class->finalize = pk_file_monitor_finalize;
+
+	signals [PK_FILE_MONITOR_CHANGED] =
+		g_signal_new ("file-changed",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
+
+	g_type_class_add_private (klass, sizeof (PkFileMonitorPrivate));
+}
+
+/**
+ * pk_file_monitor_monitor_changed:
+ * @file_monitor: This class instance
+ **/
+static void
+pk_file_monitor_monitor_changed (GFileMonitor *monitor, GFile *file, GFile *other_file,
+			    GFileMonitorEvent event_type, PkFileMonitor *file_monitor)
+{
+	egg_debug ("emit: file-changed");
+	g_signal_emit (file_monitor, signals [PK_FILE_MONITOR_CHANGED], 0);
+}
+
+/**
+ * pk_file_monitor_set_file:
+ **/
+gboolean
+pk_file_monitor_set_file (PkFileMonitor	*file_monitor, const gchar *filename)
+{
+	GError *error = NULL;
+
+	if (file_monitor->priv->file != NULL) {
+		egg_warning ("already set file monitor, so can't set %s", filename);
+		return FALSE;
+	}
+
+	/* use a GFile */
+	file_monitor->priv->file = g_file_new_for_path (filename);
+
+	/* watch this */
+	file_monitor->priv->monitor = g_file_monitor_file (file_monitor->priv->file, G_FILE_MONITOR_NONE, NULL, &error);
+	if (file_monitor->priv->monitor == NULL) {
+		egg_warning ("failed to setup watch: %s", error->message);
+		g_error_free (error);
+		return FALSE;
+	}
+
+	/* we should get notified of changes */
+	egg_debug ("watching for changes: %s", filename);
+	g_file_monitor_set_rate_limit (file_monitor->priv->monitor, PK_FILE_MONITOR_RATE_LIMIT);
+	g_signal_connect (file_monitor->priv->monitor, "changed",
+			  G_CALLBACK (pk_file_monitor_monitor_changed), file_monitor);
+	return TRUE;
+}
+
+/**
+ * pk_file_monitor_init:
+ * @file_monitor: This class instance
+ **/
+static void
+pk_file_monitor_init (PkFileMonitor *file_monitor)
+{
+	file_monitor->priv = PK_FILE_MONITOR_GET_PRIVATE (file_monitor);
+	file_monitor->priv->file = NULL;
+	file_monitor->priv->monitor = NULL;
+}
+
+/**
+ * pk_file_monitor_finalize:
+ * @object: The object to finalize
+ **/
+static void
+pk_file_monitor_finalize (GObject *object)
+{
+	PkFileMonitor *file_monitor;
+
+	g_return_if_fail (PK_IS_FILE_MONITOR (object));
+
+	file_monitor = PK_FILE_MONITOR (object);
+	g_return_if_fail (file_monitor->priv != NULL);
+
+	/* we might not have called pk_file_monitor_set_file */
+	if (file_monitor->priv->monitor != NULL) {
+		g_file_monitor_cancel (file_monitor->priv->monitor);
+		g_object_unref (file_monitor->priv->monitor);
+	}
+	if (file_monitor->priv->file != NULL) {
+		g_object_unref (file_monitor->priv->file);
+	}
+
+	G_OBJECT_CLASS (pk_file_monitor_parent_class)->finalize (object);
+}
+
+/**
+ * pk_file_monitor_new:
+ *
+ * Return value: a new PkFileMonitor object.
+ **/
+PkFileMonitor *
+pk_file_monitor_new (void)
+{
+	PkFileMonitor *file_monitor;
+	file_monitor = g_object_new (PK_TYPE_FILE_MONITOR, NULL);
+	return PK_FILE_MONITOR (file_monitor);
+}
+
+/***************************************************************************
+ ***                          MAKE CHECK TESTS                           ***
+ ***************************************************************************/
+#ifdef EGG_TEST
+#include "egg-test.h"
+
+void
+pk_file_monitor_test (EggTest *test)
+{
+	PkFileMonitor *file_monitor;
+
+	if (!egg_test_start (test, "PkFileMonitor"))
+		return;
+
+	/************************************************************/
+	egg_test_title (test, "get a file_monitor");
+	file_monitor = pk_file_monitor_new ();
+	egg_test_assert (test, file_monitor != NULL);
+	g_object_unref (file_monitor);
+
+	egg_test_end (test);
+}
+#endif
+
diff --git a/src/pk-post-trans.c b/src/pk-post-trans.c
index 518bc9d..199d258 100644
--- a/src/pk-post-trans.c
+++ b/src/pk-post-trans.c
@@ -29,6 +29,7 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <packagekit-glib/packagekit.h>
+#include <gio/gdesktopappinfo.h>
 #include <sqlite3.h>
 
 #ifdef USE_SECURITY_POLKIT
@@ -36,10 +37,6 @@
   #include <polkit-dbus/polkit-dbus.h>
 #endif
 
-#ifdef PK_BUILD_GIO
-  #include <gio/gdesktopappinfo.h>
-#endif
-
 #include "egg-debug.h"
 
 #include "pk-post-trans.h"
@@ -225,8 +222,7 @@ pk_post_trans_sqlite_add_filename_details (PkPostTrans *post, const gchar *filen
 	gchar *error_msg = NULL;
 	sqlite3_stmt *sql_statement = NULL;
 	gint rc = -1;
-	gint show = TRUE;
-#ifdef PK_BUILD_GIO
+	gint show;
 	GDesktopAppInfo *info;
 
 	/* find out if we should show desktop file in menus */
@@ -235,9 +231,8 @@ pk_post_trans_sqlite_add_filename_details (PkPostTrans *post, const gchar *filen
 		egg_warning ("could not load desktop file %s", filename);
 		goto out;
 	}
-	show = g_app_info_should_show (G_APP_INFO(info));
+	show = g_app_info_should_show (G_APP_INFO (info));
 	g_object_unref (info);
-#endif
 
 	egg_debug ("add filename %s from %s with md5: %s (show: %i)", filename, package, md5, show);
 


More information about the PackageKit-commit mailing list