diff --git a/PackageKit-git-fixes.patch b/PackageKit-git-fixes.patch index e01a430..a9a17e0 100644 --- a/PackageKit-git-fixes.patch +++ b/PackageKit-git-fixes.patch @@ -69,3 +69,55 @@ index 3440be5..c09c8d2 100644 # How long the transaction is valid before it's destroyed, in seconds # +commit cac9936e0950831905039c25f4b8e25ee4db3ce1 +Author: Richard Hughes +Date: Thu Jun 13 13:05:07 2013 +0100 + + yum: Use yb.downloadPkgs() to download updates + + There were two bugs here: + + - Using repo.getPackage() did not check the package checksum, only the size, + so it was possible to download a corrupt package and then not be able to + apply the updates + + - By restricting to TS_UPDATE and TS_INSTALL we were ignoring any package that + was obsoleting another which could miss out packages. + + Many thanks to Zdenek Pavlas for all the help in finding these issues. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=968936 + +diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py +index 289f10f..49a0f7b 100755 +--- a/backends/yum/yumBackend.py ++++ b/backends/yum/yumBackend.py +@@ -2365,22 +2365,16 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + self.percentage(100) + return + ++ # just download packages ready for the actual transaction + if TRANSACTION_FLAG_ONLY_DOWNLOAD in transaction_flags: +- package_list = [] + for txmbr in self.yumbase.tsInfo: +- if txmbr.output_state in (TS_UPDATE, TS_INSTALL): +- self._show_package(txmbr.po, INFO_DOWNLOADING) +- repo = self.yumbase.repos.getRepo(txmbr.po.repoid) ++ if txmbr.output_state in TS_INSTALL_STATES: + try: +- path = repo.getPackage(txmbr.po) +- except yum.Errors.RepoError, e: +- self.error(ERROR_PACKAGE_DOWNLOAD_FAILED, "Cannot download file: %s" % _to_unicode(e), exit=False) +- return +- except IOError, e: +- self.error(ERROR_PACKAGE_DOWNLOAD_FAILED, "Cannot write to file: %s" % _to_unicode(e), exit=False) +- return ++ self._show_package(txmbr.po, INFO_DOWNLOADING) ++ self.yumbase.downloadPkgs([txmbr.po]) + except Exception, e: +- raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc())) ++ self.error(ERROR_PACKAGE_DOWNLOAD_FAILED, "Cannot download packages: %s" % _to_unicode(e), exit=False) ++ return + self.percentage(100) + return + diff --git a/PackageKit.spec b/PackageKit.spec index 3f79750..0ea0872 100644 --- a/PackageKit.spec +++ b/PackageKit.spec @@ -6,7 +6,7 @@ Summary: Package management service Name: PackageKit Version: 0.8.9 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv2+ and LGPLv2+ URL: http://www.packagekit.org Source0: http://www.packagekit.org/releases/%{name}-%{version}.tar.xz @@ -445,9 +445,13 @@ update-mime-database %{_datadir}/mime &> /dev/null || : %{_libdir}/pkgconfig/packagekit-plugin.pc %changelog -* Sat Jun 22 2013 Matthias Clasen - 0.8.9-4 +* Sat Jun 22 2013 Matthias Clasen - 0.8.9-5 - Trim %%changelog +* Thu Jun 13 2013 Richard Hughes - 0.8.9-4 +- Backport another fix from master to fix the offline updates feature. +- Resolves: #968936 + * Thu Jun 06 2013 Richard Hughes - 0.8.9-3 - Backport 2 fixes from master to increase the maximum number of packages that can be processed, and also to fix a race in the offline updates feature.