rpms/PackageKit/devel PackageKit-0.4.6-check-package-ids-length.patch, NONE, 1.1 PackageKit-0.4.6-command-not-found-length.patch, NONE, 1.1 PackageKit-0.4.6-correct-sync-logic.patch, NONE, 1.1 PackageKit-0.4.6-dont-use-obsolete-interfaces.patch, NONE, 1.1 PackageKit.spec, 1.100, 1.101

Richard Hughes rhughes at fedoraproject.org
Tue Apr 14 16:19:37 UTC 2009


Author: rhughes

Update of /cvs/pkgs/rpms/PackageKit/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22796

Modified Files:
	PackageKit.spec 
Added Files:
	PackageKit-0.4.6-check-package-ids-length.patch 
	PackageKit-0.4.6-command-not-found-length.patch 
	PackageKit-0.4.6-correct-sync-logic.patch 
	PackageKit-0.4.6-dont-use-obsolete-interfaces.patch 
Log Message:
* Tue Apr 14 2009 Richard Hughes  <rhughes at redhat.com> - 0.4.6-3
- Backport 4 important patches from upstream.


PackageKit-0.4.6-check-package-ids-length.patch:

--- NEW FILE PackageKit-0.4.6-check-package-ids-length.patch ---
commit 79ace3ef67c14b435b2c0d8330aaa7a8774b482c
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Apr 6 17:12:33 2009 +0100

    bugfix: pk_package_ids_check is not valid when the packageids array is zero length

diff --git a/lib/packagekit-glib/pk-package-ids.c b/lib/packagekit-glib/pk-package-ids.c
index e4a39be..623fff5 100644
--- a/lib/packagekit-glib/pk-package-ids.c
+++ b/lib/packagekit-glib/pk-package-ids.c
@@ -114,7 +114,7 @@ pk_package_ids_check (gchar **package_ids)
 {
 	guint i;
 	guint size;
-	gboolean ret;
+	gboolean ret = FALSE;
 	const gchar *package_id;
 
 	g_return_val_if_fail (package_ids != NULL, FALSE);
@@ -125,9 +125,10 @@ pk_package_ids_check (gchar **package_ids)
 		package_id = package_ids[i];
 		ret = pk_package_id_check (package_id);
 		if (!ret)
-			return FALSE;
+			goto out;
 	}
-	return TRUE;
+out:
+	return ret;
 }
 
 /**
@@ -214,6 +215,7 @@ void
 pk_package_ids_test (EggTest *test)
 {
 	gboolean ret;
+	gchar *package_ids_blank[] = {};
 	gchar **package_ids;
 	guint size;
 
@@ -234,6 +236,11 @@ pk_package_ids_test (EggTest *test)
 	egg_test_assert (test, size == 2);
 
 	/************************************************************/
+	egg_test_title (test, "verify blank");
+	ret = pk_package_ids_check (package_ids_blank);
+	egg_test_assert (test, !ret);
+
+	/************************************************************/
 	egg_test_title (test, "verify");
 	ret = pk_package_ids_check (package_ids);
 	egg_test_assert (test, ret);

PackageKit-0.4.6-command-not-found-length.patch:

--- NEW FILE PackageKit-0.4.6-command-not-found-length.patch ---
commit b55842c2243c41850b839f900fe333ff3dbef2ab
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Apr 14 13:32:10 2009 +0100

    bugfix: still use command not found for commands one character long

diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index 2df80e9..f6aba8e 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -545,11 +545,12 @@ main (int argc, char *argv[])
 	/* get policy config */
 	pk_cnf_get_config (&config);
 
-	/* generate swizzles */
+	/* get length */
 	len = egg_strlen (argv[1], 1024);
-	if (len < 2)
+	if (len < 1)
 		goto out;
 
+	/* generate swizzles */
 	array = pk_cnf_find_alternatives (argv[1], len);
 
 	/* TRANSLATORS: the prefix of all the output telling the user why it's not executing */

PackageKit-0.4.6-correct-sync-logic.patch:

--- NEW FILE PackageKit-0.4.6-correct-sync-logic.patch ---
commit 28151ea72bcdd826a2d3a3f9109a073e90962169
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Apr 9 11:23:18 2009 +0100

    bugfix: correct the logic for pk_client_set_synchronous so we can set this false without returning in the duplicate check

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index c293677..f4294e0 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -383,9 +383,10 @@ pk_client_set_synchronous (PkClient *client, gboolean synchronous, GError **erro
 	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
 	/* are we doing this without any need? */
-	if (client->priv->synchronous) {
+	if ((client->priv->synchronous && synchronous) ||
+	    (!client->priv->synchronous && !synchronous)) {
 		if (error != NULL)
-			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "already set synchronous!");
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "already synchronous : %i!", synchronous);
 		return FALSE;
 	}
 
@@ -4732,13 +4733,33 @@ pk_client_test (EggTest *test)
 	g_free (file);
 
 	/************************************************************/
-	egg_test_title (test, "get client, then unref");
+	egg_test_title (test, "get client");
 	client = pk_client_new ();
+	egg_test_assert (test, client != NULL);
+
+	/************************************************************/
+	egg_test_title (test, "set non synchronous (fail)");
+	ret = pk_client_set_synchronous (client, FALSE, NULL);
+	egg_test_assert (test, !ret);
+
+	/************************************************************/
+	egg_test_title (test, "set synchronous (pass)");
+	ret = pk_client_set_synchronous (client, TRUE, NULL);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "set synchronous again (fail)");
+	ret = pk_client_set_synchronous (client, TRUE, NULL);
+	egg_test_assert (test, !ret);
+
+	/************************************************************/
+	egg_test_title (test, "set non synchronous (pass)");
+	ret = pk_client_set_synchronous (client, FALSE, NULL);
+	egg_test_assert (test, ret);
 	g_object_unref (client);
-	egg_test_success (test, NULL);
 
 	/************************************************************/
-	egg_test_title (test, "get client");
+	egg_test_title (test, "get new client");
 	client = pk_client_new ();
 	egg_test_assert (test, client != NULL);
 
@@ -4751,8 +4772,12 @@ pk_client_test (EggTest *test)
 	g_signal_connect (client, "finished",
 			  G_CALLBACK (pk_client_test_finished_cb), test);
 
+	/************************************************************/
+	egg_test_title (test, "set synchronous after reset (pass)");
+	ret = pk_client_set_synchronous (client, TRUE, NULL);
+	egg_test_assert (test, ret);
+
 	/* run the method */
-	pk_client_set_synchronous (client, TRUE, NULL);
 	ret = pk_client_search_name (client, PK_FILTER_ENUM_NONE, "power", NULL);
 
 	/************************************************************/

PackageKit-0.4.6-dont-use-obsolete-interfaces.patch:

--- NEW FILE PackageKit-0.4.6-dont-use-obsolete-interfaces.patch ---
diff --git a/contrib/gstreamer-plugin/pk-gstreamer-install.c b/contrib/gstreamer-plugin/pk-gstreamer-install.c
index ba2f660..9c7a83f 100644
--- a/contrib/gstreamer-plugin/pk-gstreamer-install.c
+++ b/contrib/gstreamer-plugin/pk-gstreamer-install.c
@@ -274,18 +274,16 @@ main (int argc, char **argv)
 {
 	DBusGConnection *connection;
 	DBusGProxy *proxy = NULL;
-	GPtrArray *array = NULL;
-	GValueArray *varray;
-	GValue *value;
 	gboolean ret;
-	GType array_type;
 	GOptionContext *context;
 	GError *error = NULL;
 	guint i;
+	guint len;
 	gchar **codecs = NULL;
 	gint xid = 0;
 	gint retval = GST_INSTALL_PLUGINS_ERROR;
 	const gchar *suffix;
+	gchar **resources = NULL;
 
 	const GOptionEntry options[] = {
 		{ "transient-for", '\0', 0, G_OPTION_ARG_INT, &xid, "The XID of the parent window", NULL },
@@ -326,7 +324,7 @@ 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");
 	if (proxy == NULL) {
 		g_print ("Cannot connect to PackageKit session service\n");
 		goto out;
@@ -335,9 +333,11 @@ main (int argc, char **argv)
 	/* use a ()(64bit) suffix for 64 bit */
 	suffix = pk_gst_get_arch_suffix ();
 
+	len = g_strv_length (codecs);
+	resources = g_new0 (gchar*, len+1);
+
 	/* process argv */
-	array = g_ptr_array_new ();
-	for (i = 0; codecs[i] != NULL; i++) {
+	for (i=0; i<len; i++) {
 		codec_info *info;
 		char *s;
 		char *type;
@@ -359,40 +359,21 @@ main (int argc, char **argv)
 			g_message ("PackageKit: non-structure: %s", type);
 		}
 
-		/* create (ss) structure */
-		varray = g_value_array_new (2);
-		value = g_new0 (GValue, 1);
-		g_value_init (value, G_TYPE_STRING);
-		g_value_set_string (value, info->codec_name);
-		g_value_array_append (varray, value);
-		g_value_reset (value);
-		g_value_set_string (value, type);
-		g_value_array_append (varray, value);
-		g_value_unset (value);
-		g_free (value);
-
-		/* add to array of (ss) */
-		g_ptr_array_add (array, varray);
+		/* "encode" */
+		resources[i] = g_strdup_printf ("%s|%s", info->codec_name, type);
 
 		/* free codec structure */
 		pk_gst_codec_free (info);
 	}
 
-	/* marshall a(ss) */
-	array_type = dbus_g_type_get_collection ("GPtrArray",
-					dbus_g_type_get_struct("GValueArray",
-						G_TYPE_STRING,
-						G_TYPE_STRING,
-						G_TYPE_INVALID));
-
 	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
 	dbus_g_proxy_set_default_timeout (proxy, INT_MAX);
 
 	/* invoke the method */
-	ret = dbus_g_proxy_call (proxy, "InstallGStreamerCodecs", &error,
+	ret = dbus_g_proxy_call (proxy, "InstallGStreamerResources", &error,
 				 G_TYPE_UINT, xid,
-				 G_TYPE_UINT, 0,
-				 array_type, array,
+				 G_TYPE_STRV, resources,
+				 G_TYPE_STRING, "hide-finished",
 				 G_TYPE_INVALID,
 				 G_TYPE_INVALID);
 	if (!ret) {
@@ -411,10 +392,7 @@ main (int argc, char **argv)
 	retval = GST_INSTALL_PLUGINS_SUCCESS;
 
 out:
-	if (array != NULL) {
-		g_ptr_array_foreach (array, (GFunc) g_value_array_free, NULL);
-		g_ptr_array_free (array, TRUE);
-	}
+	g_strfreev (resources);
 	if (proxy != NULL)
 		g_object_unref (proxy);
 	return retval;
diff --git a/contrib/gtk-module/README b/contrib/gtk-module/README
index 4cfb5fc..2e9200b 100644
--- a/contrib/gtk-module/README
+++ b/contrib/gtk-module/README
@@ -8,7 +8,7 @@ GTK_MODULES="$GTK_MODULES:/usr/lib/gtk-2.0/modules/pk-gtk-module.so" application
 The module installs a custom default pangocairo font map during gtk_init().
 Pango will then call back with any languages which need installing, and these
 are queued up. In an idle callback these are emitted as an asyncronous D-BUS
-method to the session PackageKit InstallFonts() method.
+method to the session PackageKit InstallFontconfigResources() method.
 
 If configured to do so, this will prompt the user to install new fonts.
 
@@ -16,5 +16,5 @@ Notes:
 
  * At the moment the window XID is not detected correctly, which means focus
    stealing prevention may not work properly.  We're working on this.
- * gnome-packagekit 0.4.x is needed for the InstallFonts method.
+ * gnome-packagekit 2.17.2 is needed for the InstallFontconfigResources method.
 
diff --git a/contrib/gtk-module/pk-gtk-module.c b/contrib/gtk-module/pk-gtk-module.c
index 0c38bad..0997a4b 100644
--- a/contrib/gtk-module/pk-gtk-module.c
+++ b/contrib/gtk-module/pk-gtk-module.c
@@ -119,7 +119,7 @@ pk_install_fonts_idle_cb (gpointer data G_GNUC_UNUSED)
 	proxy = dbus_g_proxy_new_for_name (connection,
 					   "org.freedesktop.PackageKit",
 					   "/org/freedesktop/PackageKit",
-					   "org.freedesktop.PackageKit");
+					   "org.freedesktop.PackageKit.Modify");
 	if (proxy == NULL) {
 		g_warning ("Could not connect to PackageKit session service\n");
 		goto out;
@@ -129,18 +129,18 @@ pk_install_fonts_idle_cb (gpointer data G_GNUC_UNUSED)
 	dbus_g_proxy_set_default_timeout (proxy, INT_MAX);
 
 	/* invoke the method */
-	call = dbus_g_proxy_begin_call (proxy, "InstallFonts",
+	call = dbus_g_proxy_begin_call (proxy, "InstallFontconfigResources",
 					pk_install_fonts_dbus_notify_cb, NULL, NULL,
 				        G_TYPE_UINT, xid,
-				        G_TYPE_UINT, 0,
 				        G_TYPE_STRV, font_tags,
+					G_TYPE_STRING, "hide-finished",
 				        G_TYPE_INVALID);
 	if (call == NULL) {
 		g_warning ("Could not send method");
 		goto out;
 	}
 
-	g_debug ("InstallFonts method invoked");
+	g_debug ("InstallFontconfigResources method invoked");
 
 out:
 	g_strfreev (font_tags);


Index: PackageKit.spec
===================================================================
RCS file: /cvs/pkgs/rpms/PackageKit/devel/PackageKit.spec,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -r1.100 -r1.101
--- PackageKit.spec	2 Apr 2009 10:34:15 -0000	1.100
+++ PackageKit.spec	14 Apr 2009 16:19:06 -0000	1.101
@@ -10,7 +10,7 @@
 Name:      PackageKit
 Version:   0.4.6
 #Release:   0.3.%{?alphatag}git%{?dist}
-Release:   2%{?dist}
+Release:   3%{?dist}
 License:   GPLv2+
 Group:     System Environment/Libraries
 URL:       http://www.packagekit.org
@@ -30,6 +30,18 @@
 # Already upstream: 826973135802ee453e014dc601168690b49af25d
 Patch3:    PackageKit-0.4.6-correct-allow-cancel-duplicate-logic.patch
 
+# Already upstream: 79ace3ef67c14b435b2c0d8330aaa7a8774b482c
+Patch4:    PackageKit-0.4.6-check-package-ids-length.patch
+
+# Already upstream: b55842c2243c41850b839f900fe333ff3dbef2ab
+Patch5:    PackageKit-0.4.6-command-not-found-length.patch
+
+# Already upstream: 28151ea72bcdd826a2d3a3f9109a073e90962169
+Patch6:    PackageKit-0.4.6-correct-sync-logic.patch
+
+# Already upstream: 31b85c79d516d0b97b87c2b205e9fea00c9190ed..426e6a8ba3be3408347af1d8f200956818e230cf
+Patch7:    PackageKit-0.4.6-dont-use-obsolete-interfaces.patch
+
 Requires: dbus >= %{dbus_version}
 Requires: dbus-glib >= %{dbus_glib_version}
 Requires: PackageKit-glib = %{version}-%{release}
@@ -232,6 +244,10 @@
 %patch1 -p1 -b .no-time
 %patch2 -p1 -b .fake-repo-unicode
 %patch3 -p1 -b .correct-allow-cancel
+%patch4 -p1 -b .check-lengths
+%patch5 -p1 -b .cmd-not-found-lengths
+%patch6 -p1 -b .sync-logic
+%patch7 -p1 -b .dont-use-obsolete
 
 %build
 %configure --enable-yum --enable-smart --with-default-backend=yum --disable-local --disable-ruck
@@ -426,6 +442,9 @@
 %{_includedir}/PackageKit/backend/*.h
 
 %changelog
+* Tue Apr 14 2009 Richard Hughes  <rhughes at redhat.com> - 0.4.6-3
+- Backport 4 important patches from upstream.
+
 * Thu Apr 02 2009 Richard Hughes  <rhughes at redhat.com> - 0.4.6-2
 - Fix installing local files with a unicode path. Fixes rh#486720
 - Fix the allow cancel duplicate filtering with a patch from upstream.




More information about the fedora-extras-commits mailing list