From bdd668104613da2dd404b90b733f0f5c92707a04 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Mon, 24 Feb 2014 18:12:17 +0100 Subject: [PATCH 3/3] Update internal API and backends for Details change Include a summary argument to pk_backend_job_details (and the python wrapper), and fill it for the hawkey, yum and dummy plugins. Other backends need to be updated. https://bugs.freedesktop.org/show_bug.cgi?id=74620 --- backends/alpm/pk-backend-packages.c | 2 +- backends/apt/aptBackend.py | 2 +- backends/conary/conaryBackend.py | 2 +- backends/dummy/pk-backend-dummy.c | 22 +++++++++++++++------- backends/entropy/entropyBackend.py | 2 +- backends/hawkey/pk-backend-hawkey.c | 2 ++ backends/katja/pk-backend-katja.c | 2 +- backends/opkg/pk-backend-opkg.c | 2 +- backends/pisi/pisiBackend.py | 2 +- backends/poldek/pk-backend-poldek.c | 2 ++ backends/portage/portageBackend.py | 2 +- backends/yum/yumBackend.py | 7 ++++--- lib/python/packagekit/backend.py | 4 ++-- src/pk-backend-job.c | 2 ++ src/pk-backend-job.h | 1 + src/pk-backend-spawn.c | 4 ++-- 16 files changed, 38 insertions(+), 22 deletions(-) diff --git a/backends/alpm/pk-backend-packages.c b/backends/alpm/pk-backend-packages.c index 11a0881..d5705a1 100644 --- a/backends/alpm/pk-backend-packages.c +++ b/backends/alpm/pk-backend-packages.c @@ -293,7 +293,7 @@ pk_backend_get_details_thread (PkBackend *self) size = alpm_pkg_download_size (pkg); } - pk_backend_job_details (self, *packages, licenses->str, group, + pk_backend_job_details (self, *packages, NULL, licenses->str, group, desc, url, size); g_string_free (licenses, TRUE); } diff --git a/backends/apt/aptBackend.py b/backends/apt/aptBackend.py index 8e69450..798c66a 100755 --- a/backends/apt/aptBackend.py +++ b/backends/apt/aptBackend.py @@ -1028,7 +1028,7 @@ class PackageKitAptBackend(PackageKitBaseBackend): else: license = "unknown" group = self._get_package_group(pkg) - self.details(pkg_id, license, group, + self.details(pkg_id, '', license, group, format_string(version.description), version.homepage, version.size) diff --git a/backends/conary/conaryBackend.py b/backends/conary/conaryBackend.py index 46d37f8..36c2030 100755 --- a/backends/conary/conaryBackend.py +++ b/backends/conary/conaryBackend.py @@ -422,7 +422,7 @@ class PackageKitConaryBackend(PackageKitBaseBackend): categories = self.xmlcache.getGroup(pkgDict.get("category","")) licenses = _get_license(pkgDict.get("licenses","")) size = pkgDict.get("size", 0) - self.details(package_id, licenses, categories, longDesc, url, size) + self.details(package_id, '', licenses, categories, longDesc, url, size) def _get_restart(self, name): if name in self.rebootpkgs: diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c index a61b613..b012611 100644 --- a/backends/dummy/pk-backend-dummy.c +++ b/backends/dummy/pk-backend-dummy.c @@ -186,7 +186,7 @@ pk_backend_get_details_local (PkBackend *backend, PkBackendJob *job, gchar **fil { pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); pk_backend_job_set_percentage (job, 0); - pk_backend_job_details (job, "powertop;1.8-1.fc8;i386;fedora", "GPL2", PK_GROUP_ENUM_PROGRAMMING, + pk_backend_job_details (job, "powertop;1.8-1.fc8;i386;fedora", "Power consumption monitor", "GPL2", PK_GROUP_ENUM_PROGRAMMING, "PowerTOP is a tool that finds the software component(s) that make your " "computer use more power than necessary while it is idle.", "http://live.gnome.org/powertop", 101*1024); pk_backend_job_set_percentage (job, 100); @@ -228,32 +228,40 @@ pk_backend_get_details (PkBackend *backend, PkBackendJob *job, gchar **package_i for (i=0; istr, diff --git a/backends/opkg/pk-backend-opkg.c b/backends/opkg/pk-backend-opkg.c index 7903383..e1c0d83 100644 --- a/backends/opkg/pk-backend-opkg.c +++ b/backends/opkg/pk-backend-opkg.c @@ -700,7 +700,7 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d } } - pk_backend_job_details (job, newid, NULL, group, pkg->description, NULL, pkg->size); + pk_backend_job_details (job, newid, NULL, NULL, group, pkg->description, NULL, pkg->size); g_free (newid); pk_backend_job_finished (job); } diff --git a/backends/pisi/pisiBackend.py b/backends/pisi/pisiBackend.py index 3acc2aa..0e7b0e3 100755 --- a/backends/pisi/pisiBackend.py +++ b/backends/pisi/pisiBackend.py @@ -170,7 +170,7 @@ class PackageKitPisiBackend(PackageKitBaseBackend, PackagekitPackage): homepage = pkg.source.homepage if pkg.source.homepage is not None\ else '' - self.details(pkg_id, ",".join(pkg.license), group, pkg.description, + self.details(pkg_id, '', ",".join(pkg.license), group, pkg.description, homepage, pkg.packageSize) else: self.error(ERROR_PACKAGE_NOT_FOUND, "Package was not found") diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c index e8cc94d..4344909 100644 --- a/backends/poldek/pk-backend-poldek.c +++ b/backends/poldek/pk-backend-poldek.c @@ -2624,6 +2624,7 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d if ((pkgu = pkg_uinf_i18n (job, pkg)) != NULL) { pk_backend_job_details (job, package_ids[n], + NULL, pkguinf_get (pkgu, PKGUINF_LICENSE), group, pkguinf_get (pkgu, PKGUINF_DESCRIPTION), @@ -2634,6 +2635,7 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d pk_backend_job_details (job, package_ids[n], "", + "", group, "", "", diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py index 12ba904..82bf6cd 100755 --- a/backends/portage/portageBackend.py +++ b/backends/portage/portageBackend.py @@ -981,7 +981,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend): in_dict=True) license = self._get_real_license_str(cpv, metadata) - self.details(self._cpv_to_id(cpv), license, + self.details(self._cpv_to_id(cpv), '', license, self._get_pk_group(cpv), metadata["DESCRIPTION"], metadata["HOMEPAGE"], self._get_size(cpv)) diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py index 259b02b..f0b8204 100755 --- a/backends/yum/yumBackend.py +++ b/backends/yum/yumBackend.py @@ -291,7 +291,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): except PkError, e: self.error(e.code, e.details) - def details(self, package_id, package_license, group, desc, url, bytes): + def details(self, package_id, summary, package_license, group, desc, url, bytes): ''' Send 'details' signal @param id: The package ID name, e.g. openoffice-clipart;2.6.22;ppc64;fedora @@ -303,7 +303,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): convert the description to UTF before sending ''' desc = _to_unicode(desc) - PackageKitBaseBackend.details(self, package_id, package_license, group, desc, url, bytes) + PackageKitBaseBackend.details(self, package_id, summary, package_license, group, desc, url, bytes) def package(self, package_id, status, summary): ''' @@ -2550,6 +2550,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): pkgver = _get_package_ver(pkg) package_id = self.get_package_id(pkg.name, pkgver, pkg.arch, pkg.repo) + summary = _to_unicode(pkg.summary) desc = _to_unicode(pkg.description) url = _to_unicode(pkg.url) license = _to_unicode(pkg.license) @@ -2567,7 +2568,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): size = 0 group = self.comps.get_group(pkg.name) - self.details(package_id, license, group, desc, url, size) + self.details(package_id, summary, license, group, desc, url, size) def get_files(self, package_ids): try: diff --git a/lib/python/packagekit/backend.py b/lib/python/packagekit/backend.py index 46fbd47..a3bcd6b 100644 --- a/lib/python/packagekit/backend.py +++ b/lib/python/packagekit/backend.py @@ -225,7 +225,7 @@ class PackageKitBaseBackend: sys.stdout.write(_to_utf8("data\t%s\n" % data)) sys.stdout.flush() - def details(self, package_id, package_license, group, desc, url, bytes): + def details(self, package_id, summary, package_license, group, desc, url, bytes): ''' Send 'details' signal @param package_id: The package ID name, e.g. openoffice-clipart;2.6.22;ppc64;fedora @@ -235,7 +235,7 @@ class PackageKitBaseBackend: @param url: The upstream project homepage @param bytes: The size of the package, in bytes ''' - sys.stdout.write(_to_utf8("details\t%s\t%s\t%s\t%s\t%s\t%ld\n" % (package_id, package_license, group, desc, url, bytes))) + sys.stdout.write(_to_utf8("details\t%s\t%s\t%s\t%s\t%s\t%s\t%ld\n" % (package_id, summary, package_license, group, desc, url, bytes))) sys.stdout.flush() def files(self, package_id, file_list): diff --git a/src/pk-backend-job.c b/src/pk-backend-job.c index 1969a3a..c6791cd 100644 --- a/src/pk-backend-job.c +++ b/src/pk-backend-job.c @@ -1257,6 +1257,7 @@ out: void pk_backend_job_details (PkBackendJob *job, const gchar *package_id, + const gchar *summary, const gchar *license, PkGroupEnum group, const gchar *description, @@ -1278,6 +1279,7 @@ pk_backend_job_details (PkBackendJob *job, item = pk_details_new (); g_object_set (item, "package-id", package_id, + "summary", summary, "license", license, "group", group, "description", description, diff --git a/src/pk-backend-job.h b/src/pk-backend-job.h index d2f25c2..149ff13 100644 --- a/src/pk-backend-job.h +++ b/src/pk-backend-job.h @@ -191,6 +191,7 @@ void pk_backend_job_require_restart (PkBackendJob *job, const gchar *package_id); void pk_backend_job_details (PkBackendJob *job, const gchar *package_id, + const gchar *summary, const gchar *license, PkGroupEnum group, const gchar *description, diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c index 7c50a99..6e84feb 100644 --- a/src/pk-backend-spawn.c +++ b/src/pk-backend-spawn.c @@ -223,7 +223,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, } pk_backend_job_package (job, info, sections[2], sections[3]); } else if (g_strcmp0 (command, "details") == 0) { - if (size != 7) { + if (size != 7 && size != 8) { g_set_error (error, 1, 0, "invalid command'%s', size %i", command, size); ret = FALSE; goto out; @@ -249,7 +249,7 @@ pk_backend_spawn_parse_stdout (PkBackendSpawn *backend_spawn, text = g_strdup (sections[4]); /* convert ; to \n as we can't emit them on stdout */ g_strdelimit (text, ";", '\n'); - pk_backend_job_details (job, sections[1], sections[2], + pk_backend_job_details (job, sections[1], size == 8 ? sections[7] : NULL, sections[2], group, text, sections[5], package_size); g_free (text); } else if (g_strcmp0 (command, "finished") == 0) { -- 1.8.5.3