From ed4648517a82613b8e2dc5f11284cacfc6d4255a Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Thu, 28 Jun 2012 15:08:51 +0100 Subject: [PATCH] Apply a combined patch from master to fix several reported issues with the OS update feature. --- PackageKit-0.8.1-master.patch | 545 ++++++++++++++++++++++++++++++++++ PackageKit.spec | 10 +- 2 files changed, 554 insertions(+), 1 deletion(-) create mode 100644 PackageKit-0.8.1-master.patch diff --git a/PackageKit-0.8.1-master.patch b/PackageKit-0.8.1-master.patch new file mode 100644 index 0000000..0064025 --- /dev/null +++ b/PackageKit-0.8.1-master.patch @@ -0,0 +1,545 @@ +diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py +index 491f044..896d32b 100755 +--- a/backends/yum/yumBackend.py ++++ b/backends/yum/yumBackend.py +@@ -1787,7 +1787,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + return + self._show_package(pkg, INFO_UNTRUSTED) + try: +- self._runYumTransaction(allow_skip_broken=True, only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags, allow_skip_broken=True) + except PkError, e: + self.error(e.code, e.details, exit=False) + else: +@@ -2020,7 +2020,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + return + self._show_package(pkg, INFO_UNTRUSTED) + try: +- self._runYumTransaction(only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags) + except PkError, e: + self.error(e.code, e.details, exit=False) + else: +@@ -2203,7 +2203,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + return + + try: +- self._runYumTransaction(only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags) + except PkError, e: + self.error(e.code, e.details, exit=False) + return +@@ -2231,7 +2231,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + if not self.yumbase.tsInfo.pkgSack: + self.yumbase.tsInfo.pkgSack = MetaSack() + try: +- self._runYumTransaction(only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags) + except PkError, e: + self.error(e.code, e.details, exit=False) + return +@@ -2344,7 +2344,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + return + self._show_package(pkg, INFO_UNTRUSTED) + try: +- self._runYumTransaction(allow_skip_broken=True, only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags, allow_skip_broken=True) + except PkError, e: + self.error(e.code, e.details, exit=False) + else: +@@ -2361,7 +2361,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + or (notice and notice.get_metadata().has_key('reboot_suggested') and notice['reboot_suggested'])): + self.require_restart(RESTART_SYSTEM, self._pkg_to_id(pkg)) + +- def _runYumTransaction(self, allow_remove_deps=None, allow_skip_broken=False, only_simulate=False): ++ def _runYumTransaction(self, transaction_flags, allow_remove_deps=None, allow_skip_broken=False): + ''' + Run the yum Transaction + This will only work with yum 3.2.4 or higher +@@ -2409,7 +2409,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + raise PkError(ERROR_TRANSACTION_ERROR, message) + + # abort now we have the package list +- if only_simulate: ++ if TRANSACTION_FLAG_SIMULATE in transaction_flags: + package_list = [] + for txmbr in self.yumbase.tsInfo: + if txmbr.output_state in TransactionsInfoMap.keys(): +@@ -2421,6 +2421,20 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + self.percentage(100) + return + ++ 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) ++ try: ++ path = repo.getPackage(txmbr.po) ++ except IOError, e: ++ self.error(ERROR_PACKAGE_DOWNLOAD_FAILED, "Cannot write to file", exit=False) ++ return ++ self.percentage(100) ++ return ++ + try: + rpmDisplay = PackageKitCallback(self) + callback = ProcessTransPackageKitCallback(self) +@@ -2529,9 +2543,9 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + return + try: + if not allowdep: +- self._runYumTransaction(allow_remove_deps=False, only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags, allow_remove_deps=False) + else: +- self._runYumTransaction(allow_remove_deps=True, only_simulate=TRANSACTION_FLAG_SIMULATE in transaction_flags) ++ self._runYumTransaction(transaction_flags, allow_remove_deps=True) + except PkError, e: + self.error(e.code, e.details, exit=False) + else: +@@ -3173,6 +3187,9 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): + # default to 100% unless method overrides + self.yumbase.conf.throttle = "90%" + ++ # do not use parallel downloading ++ self.yumbase.conf.async = False ++ + def _setup_yum(self): + try: + # setup Yum Config +@@ -3349,17 +3366,18 @@ class PackageKitCallback(RPMBaseCallback): + self.base.message(MESSAGE_BACKEND_ERROR, "The constant '%s' was unknown, please report. details: %s" % (action, _to_unicode(e))) + + # set item percentage +- #if package and te_total > 0: +- # val = (te_current*100L)/te_total +- # if self.curpkg: +- # self.base.item_percentage(self.base._pkg_to_id(self.curpkg), val) ++ if package and te_total > 0: ++ val = (te_current*100L)/te_total ++ if self.curpkg: ++ self.base.item_percentage(self.base._pkg_to_id(self.curpkg), val) + +- # find out the offset ++ # find out the start offset + pct_start = StatusPercentageMap[STATUS_INSTALL] + + # do percentage + if ts_total > 0: + div = (100 - pct_start) / ts_total ++ val = (te_current*100L)/te_total + pct = div * (ts_current - 1) + pct_start + ((div / 100.0) * val) + self.base.percentage(pct) + +diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c +index 5613f3e..4af44a7 100644 +--- a/lib/packagekit-glib2/pk-client.c ++++ b/lib/packagekit-glib2/pk-client.c +@@ -1204,7 +1204,7 @@ pk_client_signal_cb (GDBusProxy *proxy, + if (g_strcmp0 (signal_name, "Transaction") == 0) { + PkTransactionPast *item; + g_variant_get (parameters, +- "(&o&sb&su&su&s)", ++ "(&o&sbuu&su&s)", + &tmp_str[0], + &tmp_str[1], + &tmp_bool, +diff --git a/lib/packagekit-glib2/pk-progress.c b/lib/packagekit-glib2/pk-progress.c +index d1b7ff4..aa1b94f 100644 +--- a/lib/packagekit-glib2/pk-progress.c ++++ b/lib/packagekit-glib2/pk-progress.c +@@ -266,6 +266,10 @@ pk_progress_set_role (PkProgress *progress, PkRoleEnum role) + { + g_return_val_if_fail (PK_IS_PROGRESS (progress), FALSE); + ++ /* ignore unknown as we don't want to replace a valid value */ ++ if (role == PK_ROLE_ENUM_UNKNOWN) ++ return FALSE; ++ + /* the same as before? */ + if (progress->priv->role == role) + return FALSE; +diff --git a/src/pk-backend.c b/src/pk-backend.c +index b9ae2b8..477552f 100644 +--- a/src/pk-backend.c ++++ b/src/pk-backend.c +@@ -1109,6 +1109,8 @@ pk_backend_set_item_progress (PkBackend *backend, + const gchar *package_id, + guint percentage) + { ++ PkItemProgress *item; ++ + g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE); + g_return_val_if_fail (backend->priv->loaded, FALSE); + +@@ -1125,9 +1127,15 @@ pk_backend_set_item_progress (PkBackend *backend, + } + + /* emit */ ++ item = pk_item_progress_new (); ++ g_object_set (item, ++ "package-id", package_id, ++ "percentage", percentage, ++ NULL); + pk_backend_call_vfunc (backend, + PK_BACKEND_SIGNAL_ITEM_PROGRESS, +- (gpointer) package_id); //FIXME ++ item); ++ g_object_unref (item); + return TRUE; + } + +diff --git a/src/pk-transaction.c b/src/pk-transaction.c +index afdd563..d30aaac 100644 +--- a/src/pk-transaction.c ++++ b/src/pk-transaction.c +@@ -689,23 +689,24 @@ pk_transaction_category_cb (PkBackend *backend, + **/ + static void + pk_transaction_item_progress_cb (PkBackend *backend, +- const gchar *package_id, +- guint percentage, ++ PkItemProgress *item_progress, + PkTransaction *transaction) + { + g_return_if_fail (PK_IS_TRANSACTION (transaction)); + g_return_if_fail (transaction->priv->tid != NULL); + + /* emit */ +- g_debug ("emitting item-progress %s, %u", package_id, percentage); ++ g_debug ("emitting item-progress %s, %u", ++ pk_item_progress_get_package_id (item_progress), ++ pk_item_progress_get_percentage (item_progress)); + g_dbus_connection_emit_signal (transaction->priv->connection, + NULL, + transaction->priv->tid, + PK_DBUS_INTERFACE_TRANSACTION, + "ItemProgress", + g_variant_new ("(su)", +- package_id, +- percentage), ++ pk_item_progress_get_package_id (item_progress), ++ pk_item_progress_get_percentage (item_progress)), + NULL); + } + +@@ -1751,7 +1752,7 @@ pk_transaction_transaction_cb (PkTransactionDb *tdb, + transaction->priv->tid, + PK_DBUS_INTERFACE_TRANSACTION, + "Transaction", +- g_variant_new ("(osbsusus)", ++ g_variant_new ("(osbuusus)", + tid, + timespec, + succeeded, +@@ -3029,6 +3030,18 @@ pk_transaction_get_role (PkTransaction *transaction) + } + + /** ++ * pk_transaction_set_role: ++ **/ ++static void ++pk_transaction_set_role (PkTransaction *transaction, PkRoleEnum role) ++{ ++ transaction->priv->role = role; ++ pk_transaction_emit_property_changed (transaction, ++ "Role", ++ g_variant_new_uint32 (role)); ++} ++ ++/** + * pk_transaction_dbus_return: + **/ + static void +@@ -3065,7 +3078,6 @@ pk_transaction_accept_eula (PkTransaction *transaction, + + g_return_if_fail (PK_IS_TRANSACTION (transaction)); + g_return_if_fail (transaction->priv->tid != NULL); +- transaction->priv->role = PK_ROLE_ENUM_ACCEPT_EULA; + + g_variant_get (params, "(&s)", + &eula_id); +@@ -3077,6 +3089,8 @@ pk_transaction_accept_eula (PkTransaction *transaction, + goto out; + } + ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_ACCEPT_EULA); ++ + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, + PK_ROLE_ENUM_ACCEPT_EULA, +@@ -3319,7 +3333,7 @@ pk_transaction_download_packages (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_package_ids = g_strdupv (package_ids); + transaction->priv->cached_directory = g_strdup (directory); +- transaction->priv->role = PK_ROLE_ENUM_DOWNLOAD_PACKAGES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_DOWNLOAD_PACKAGES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3360,7 +3374,7 @@ pk_transaction_get_categories (PkTransaction *transaction, + goto out; + } + +- transaction->priv->role = PK_ROLE_ENUM_GET_CATEGORIES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_CATEGORIES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3434,7 +3448,7 @@ pk_transaction_get_depends (PkTransaction *transaction, + transaction->priv->cached_filters = filter; + transaction->priv->cached_package_ids = g_strdupv (package_ids); + transaction->priv->cached_force = recursive; +- transaction->priv->role = PK_ROLE_ENUM_GET_DEPENDS; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_DEPENDS); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3504,7 +3518,7 @@ pk_transaction_get_details (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_package_ids = g_strdupv (package_ids); +- transaction->priv->role = PK_ROLE_ENUM_GET_DETAILS; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_DETAILS); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3545,7 +3559,7 @@ pk_transaction_get_distro_upgrades (PkTransaction *transaction, + } + + /* save so we can run later */ +- transaction->priv->role = PK_ROLE_ENUM_GET_DISTRO_UPGRADES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_DISTRO_UPGRADES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3613,7 +3627,7 @@ pk_transaction_get_files (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_package_ids = g_strdupv (package_ids); +- transaction->priv->role = PK_ROLE_ENUM_GET_FILES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_FILES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3659,7 +3673,7 @@ pk_transaction_get_packages (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_filters = filter; +- transaction->priv->role = PK_ROLE_ENUM_GET_PACKAGES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_PACKAGES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3692,7 +3706,7 @@ pk_transaction_get_old_transactions (PkTransaction *transaction, + + g_debug ("GetOldTransactions method called"); + +- transaction->priv->role = PK_ROLE_ENUM_GET_OLD_TRANSACTIONS; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_OLD_TRANSACTIONS); + pk_transaction_db_get_list (transaction->priv->transaction_db, number); + idle_id = g_idle_add ((GSourceFunc) pk_transaction_finished_idle_cb, transaction); + g_source_set_name_by_id (idle_id, "[PkTransaction] finished from get-old-transactions"); +@@ -3731,7 +3745,7 @@ pk_transaction_get_repo_list (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_filters = filter; +- transaction->priv->role = PK_ROLE_ENUM_GET_REPO_LIST; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_REPO_LIST); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3806,7 +3820,7 @@ pk_transaction_get_requires (PkTransaction *transaction, + transaction->priv->cached_filters = filter; + transaction->priv->cached_package_ids = g_strdupv (package_ids); + transaction->priv->cached_force = recursive; +- transaction->priv->role = PK_ROLE_ENUM_GET_REQUIRES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_REQUIRES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -3875,7 +3889,7 @@ pk_transaction_get_update_detail (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_package_ids = g_strdupv (package_ids); +- transaction->priv->role = PK_ROLE_ENUM_GET_UPDATE_DETAIL; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_UPDATE_DETAIL); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -4004,7 +4018,7 @@ pk_transaction_get_updates (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_filters = filter; +- transaction->priv->role = PK_ROLE_ENUM_GET_UPDATES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_UPDATES); + + /* try and reuse cache */ + ret = pk_transaction_try_emit_cache (transaction); +@@ -4166,7 +4180,7 @@ pk_transaction_install_files (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_transaction_flags = transaction_flags; + transaction->priv->cached_full_paths = g_strdupv (full_paths); +- transaction->priv->role = PK_ROLE_ENUM_INSTALL_FILES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_INSTALL_FILES); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4239,7 +4253,7 @@ pk_transaction_install_packages (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_transaction_flags = transaction_flags; + transaction->priv->cached_package_ids = g_strdupv (package_ids); +- transaction->priv->role = PK_ROLE_ENUM_INSTALL_PACKAGES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_INSTALL_PACKAGES); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4309,7 +4323,7 @@ pk_transaction_install_signature (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_package_id = g_strdup (package_id); + transaction->priv->cached_key_id = g_strdup (key_id); +- transaction->priv->role = PK_ROLE_ENUM_INSTALL_SIGNATURE; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_INSTALL_SIGNATURE); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4357,7 +4371,7 @@ pk_transaction_refresh_cache (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_force = force; +- transaction->priv->role = PK_ROLE_ENUM_REFRESH_CACHE; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_REFRESH_CACHE); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4435,7 +4449,7 @@ pk_transaction_remove_packages (PkTransaction *transaction, + transaction->priv->cached_package_ids = g_strdupv (package_ids); + transaction->priv->cached_allow_deps = allow_deps; + transaction->priv->cached_autoremove = autoremove; +- transaction->priv->role = PK_ROLE_ENUM_REMOVE_PACKAGES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_REMOVE_PACKAGES); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4491,7 +4505,7 @@ pk_transaction_repo_enable (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_repo_id = g_strdup (repo_id); + transaction->priv->cached_enabled = enabled; +- transaction->priv->role = PK_ROLE_ENUM_REPO_ENABLE; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_REPO_ENABLE); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4550,7 +4564,7 @@ pk_transaction_repo_set_data (PkTransaction *transaction, + transaction->priv->cached_repo_id = g_strdup (repo_id); + transaction->priv->cached_parameter = g_strdup (parameter); + transaction->priv->cached_value = g_strdup (value); +- transaction->priv->role = PK_ROLE_ENUM_REPO_SET_DATA; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_REPO_SET_DATA); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -4630,7 +4644,7 @@ pk_transaction_resolve (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_package_ids = g_strdupv (packages); + transaction->priv->cached_filters = filter; +- transaction->priv->role = PK_ROLE_ENUM_RESOLVE; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_RESOLVE); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -4687,7 +4701,7 @@ pk_transaction_search_details (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_filters = filter; + transaction->priv->cached_values = g_strdupv (values); +- transaction->priv->role = PK_ROLE_ENUM_SEARCH_DETAILS; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_SEARCH_DETAILS); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -4754,7 +4768,7 @@ pk_transaction_search_files (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_filters = filter; + transaction->priv->cached_values = g_strdupv (values); +- transaction->priv->role = PK_ROLE_ENUM_SEARCH_FILE; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_SEARCH_FILE); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -4821,7 +4835,7 @@ pk_transaction_search_groups (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_filters = filter; + transaction->priv->cached_values = g_strdupv (values); +- transaction->priv->role = PK_ROLE_ENUM_SEARCH_GROUP; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_SEARCH_GROUP); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -4877,7 +4891,7 @@ pk_transaction_search_names (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_filters = filter; + transaction->priv->cached_values = g_strdupv (values); +- transaction->priv->role = PK_ROLE_ENUM_SEARCH_NAME; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_SEARCH_NAME); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -5112,7 +5126,7 @@ pk_transaction_update_packages (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_transaction_flags = transaction_flags; + transaction->priv->cached_package_ids = g_strdupv (package_ids); +- transaction->priv->role = PK_ROLE_ENUM_UPDATE_PACKAGES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPDATE_PACKAGES); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -5165,7 +5179,7 @@ pk_transaction_update_system (PkTransaction *transaction, + } + + transaction->priv->cached_transaction_flags = transaction_flags; +- transaction->priv->role = PK_ROLE_ENUM_UPDATE_SYSTEM; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPDATE_SYSTEM); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -5225,7 +5239,7 @@ pk_transaction_what_provides (PkTransaction *transaction, + transaction->priv->cached_filters = filter; + transaction->priv->cached_values = g_strdupv (values); + transaction->priv->cached_provides = provides; +- transaction->priv->role = PK_ROLE_ENUM_WHAT_PROVIDES; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_WHAT_PROVIDES); + + /* try to commit this */ + ret = pk_transaction_commit (transaction); +@@ -5274,7 +5288,7 @@ pk_transaction_upgrade_system (PkTransaction *transaction, + /* save so we can run later */ + transaction->priv->cached_value = g_strdup (distro_id); + transaction->priv->cached_provides = upgrade_kind; +- transaction->priv->role = PK_ROLE_ENUM_UPGRADE_SYSTEM; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPGRADE_SYSTEM); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +@@ -5319,7 +5333,7 @@ pk_transaction_repair_system (PkTransaction *transaction, + + /* save so we can run later */ + transaction->priv->cached_transaction_flags = transaction_flags; +- transaction->priv->role = PK_ROLE_ENUM_REPAIR_SYSTEM; ++ pk_transaction_set_role (transaction, PK_ROLE_ENUM_REPAIR_SYSTEM); + + /* try to get authorization */ + ret = pk_transaction_obtain_authorization (transaction, +diff --git a/src/plugins/pk-plugin-clear-firmware-requests.c b/src/plugins/pk-plugin-clear-firmware-requests.c +index 8b4216a..f9326f4 100644 +--- a/src/plugins/pk-plugin-clear-firmware-requests.c ++++ b/src/plugins/pk-plugin-clear-firmware-requests.c +@@ -51,6 +51,8 @@ pk_plugin_transaction_finished_end (PkPlugin *plugin, + + /* clear the firmware requests directory */ + filename = g_build_filename (LOCALSTATEDIR, "run", "PackageKit", "udev", NULL); ++ if (!g_file_test (filename, G_FILE_TEST_EXISTS)) ++ goto out; + g_debug ("clearing udev firmware requests at %s", filename); + ret = pk_directory_remove_contents (filename); + if (!ret) diff --git a/PackageKit.spec b/PackageKit.spec index 66836c2..a28ac88 100644 --- a/PackageKit.spec +++ b/PackageKit.spec @@ -3,7 +3,7 @@ Summary: Package management service Name: PackageKit Version: 0.8.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ and LGPLv2+ URL: http://www.packagekit.org Source0: http://www.packagekit.org/releases/%{name}-%{version}.tar.xz @@ -17,6 +17,9 @@ Patch1: PackageKit-0.4.4-Fedora-turn-off-time.conf.patch # Upstreamable? allow use of xulrunner2 for browser-plugin support Patch4: PackageKit-0.7.4-xulrunner2.patch +# Upstream already +Patch5: PackageKit-0.8.1-master.patch + Requires: PackageKit-glib = %{version}-%{release} Requires: PackageKit-backend Requires: shared-mime-info @@ -256,6 +259,7 @@ user to restart the computer or remove and re-insert the device. %patch0 -p1 -b .fedora %patch1 -p1 -b .no-time %patch4 -p1 -b .xulrunner2 +%patch5 -p1 -b .master NOCONFIGURE=1 ./autogen.sh %build @@ -468,6 +472,10 @@ update-mime-database %{_datadir}/mime &> /dev/null || : %{_libdir}/pkgconfig/packagekit-plugin.pc %changelog +* Thu Jun 28 2012 Richard Hughes - 0.8.1-2 +- Apply a combined patch from master to fix several reported issues + with the OS update feature. + * Mon Jun 25 2012 Richard Hughes - 0.8.1-1 - New upstream release