Hello community, here is the log from the commit of package PackageKit for openSUSE:12.3 checked in at 2013-02-14 21:29:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.3/PackageKit (Old) and /work/SRC/openSUSE:12.3/.PackageKit.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "PackageKit", Maintainer is "gnome-maintain...@suse.de" Changes: -------- --- /work/SRC/openSUSE:12.3/PackageKit/PackageKit.changes 2013-02-05 15:37:10.000000000 +0100 +++ /work/SRC/openSUSE:12.3/.PackageKit.new/PackageKit.changes 2013-02-14 21:29:28.000000000 +0100 @@ -1,0 +2,6 @@ +Mon Feb 11 18:37:26 UTC 2013 - co...@suse.com + +- Add one more patch from git (bnc#735864): + + 0013-zypp-remap-PK-provides-into-rpm-provides-as-the-zif-.patch + +------------------------------------------------------------------- New: ---- 0013-zypp-remap-PK-provides-into-rpm-provides-as-the-zif-.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ PackageKit.spec ++++++ --- /var/tmp/diff_new_pack.zkWaJd/_old 2013-02-14 21:29:28.000000000 +0100 +++ /var/tmp/diff_new_pack.zkWaJd/_new 2013-02-14 21:29:28.000000000 +0100 @@ -54,6 +54,8 @@ Patch12: 0011-zypp-Fix-compile-with-__attribute__-gnu_printf.patch # PATCH-FIX-UPSTREAM 0012-zypp-less-debug-in-progress-functions.patch co...@suse.de -- less debug Patch13: 0012-zypp-less-debug-in-progress-functions.patch +# PATCH-FIX-UPSTREAM 0013-zypp-remap-PK-provides-into-rpm-provides-as-the-zif-.patch co...@suse.de -- search in ppds +Patch14: 0013-zypp-remap-PK-provides-into-rpm-provides-as-the-zif-.patch # To update this package, please git-format-patch the tag of the # tarball version (eg: PACKAGEKIT_0_6_19) vs the distro tag (eg: openSUSE_Factory) # in https://github.com/openSUSE/PackageKit and keep the patches @@ -285,6 +287,7 @@ %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 translation-update-upstream %build ++++++ 0013-zypp-remap-PK-provides-into-rpm-provides-as-the-zif-.patch ++++++ >From cc89ed2698fd21245d955e722fdd2509f857b355 Mon Sep 17 00:00:00 2001 From: Stephan Kulow <co...@suse.de> Date: Mon, 11 Feb 2013 19:07:53 +0100 Subject: [PATCH] zypp: remap PK provides into rpm provides as the zif backend does --- backends/zypp/pk-backend-zypp.cpp | 97 ++++++++++++++++++++++++++++++++++----- 1 file changed, 85 insertions(+), 12 deletions(-) diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp index f492a1c..6df4067 100644 --- a/backends/zypp/pk-backend-zypp.cpp +++ b/backends/zypp/pk-backend-zypp.cpp @@ -3314,6 +3314,73 @@ pk_backend_repo_set_data (PkBackend *backend, PkBackendJob *job, const gchar *re pk_backend_job_thread_create (job, backend_repo_set_data_thread, NULL, NULL); } +/** + * pk_backend_what_provides_decompose: maps enums to provides + */ +static gchar ** +pk_backend_what_provides_decompose (PkBackendJob *job, + PkProvidesEnum provides, + gchar **values) +{ + guint i; + guint len; + gchar **search = NULL; + GPtrArray *array = NULL; + + /* iter on each provide string, and wrap it with the fedora prefix - unless different to openSUSE */ + len = g_strv_length (values); + array = g_ptr_array_new_with_free_func (g_free); + for (i=0; i<len; i++) { + MIL << provides << " " << values[i] << endl; + /* compatibility with previous versions of GPK */ + if (g_str_has_prefix (values[i], "gstreamer0.10(") || + g_str_has_prefix (values[i], "gstreamer1(")) { + g_ptr_array_add (array, g_strdup (values[i])); + } else if (provides == PK_PROVIDES_ENUM_CODEC) { + g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("gstreamer1(%s)", values[i])); + } else if (provides == PK_PROVIDES_ENUM_FONT) { + g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i])); + } else if (provides == PK_PROVIDES_ENUM_MIMETYPE) { + g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i])); + } else if (provides == PK_PROVIDES_ENUM_POSTSCRIPT_DRIVER) { + g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i])); + } else if (provides == PK_PROVIDES_ENUM_PLASMA_SERVICE) { + /* We need to allow the Plasma version to be specified. */ + if (g_str_has_prefix (values[i], "plasma")) { + g_ptr_array_add (array, g_strdup (values[i])); + } else { + /* For compatibility, we default to plasma4. */ + g_ptr_array_add (array, g_strdup_printf ("plasma4(%s)", values[i])); + } + } else if (provides == PK_PROVIDES_ENUM_ANY) { + /* We need to allow the Plasma version to be specified. */ + if (g_str_has_prefix (values[i], "plasma")) { + g_ptr_array_add (array, g_strdup (values[i])); + } else { + g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("gstreamer1(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("plasma4(%s)", values[i])); + g_ptr_array_add (array, g_strdup_printf ("plasma5(%s)", values[i])); + } + } else { + pk_backend_job_error_code (job, + PK_ERROR_ENUM_PROVIDE_TYPE_NOT_SUPPORTED, + "provide type %s not supported", + pk_provides_enum_to_string (provides)); + goto out; + } + } + search = pk_ptr_array_to_strv (array); + for (i = 0; search[i] != NULL; i++) + g_debug ("Querying provide '%s'", search[i]); +out: + return search; +} + static void backend_what_provides_thread (PkBackendJob *job, GVariant *params, gpointer user_data) { @@ -3336,10 +3403,9 @@ backend_what_provides_thread (PkBackendJob *job, GVariant *params, gpointer user } pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); - const gchar *search = values[0]; //Fixme - support possible multi1ple search values (logical OR) ResPool pool = zypp_build_pool (zypp, true); - if((provides == PK_PROVIDES_ENUM_HARDWARE_DRIVER) || g_ascii_strcasecmp("drivers_for_attached_hardware", search) == 0) { + if((provides == PK_PROVIDES_ENUM_HARDWARE_DRIVER) || g_ascii_strcasecmp("drivers_for_attached_hardware", values[0]) == 0) { // solver run Resolver solver(pool); solver.setIgnoreAlreadyRecommended (TRUE); @@ -3375,18 +3441,25 @@ backend_what_provides_thread (PkBackendJob *job, GVariant *params, gpointer user } solver.setIgnoreAlreadyRecommended (FALSE); } else { - Capability cap (search); - sat::WhatProvides prov (cap); - - for (sat::WhatProvides::const_iterator it = prov.begin (); it != prov.end (); ++it) { - if (zypp_filter_solvable (_filters, *it)) - continue; - - PkInfoEnum info = it->isSystem () ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE; - zypp_backend_package (job, info, *it, make<ResObject>(*it)->summary().c_str ()); + gchar **search = pk_backend_what_provides_decompose (job, + provides, + values); + + guint len = g_strv_length (search); + for (guint i=0; i<len; i++) { + MIL << search[i] << endl; + Capability cap (search[i]); + sat::WhatProvides prov (cap); + + for (sat::WhatProvides::const_iterator it = prov.begin (); it != prov.end (); ++it) { + if (zypp_filter_solvable (_filters, *it)) + continue; + + PkInfoEnum info = it->isSystem () ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE; + zypp_backend_package (job, info, *it, make<ResObject>(*it)->summary().c_str ()); + } } } - pk_backend_job_finished (job); } -- 1.8.1.1 -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org