- Fix installing local files with a unicode path. Fixes rh#486720
- Fix the allow cancel duplicate filtering with a patch from upstream.
This commit is contained in:
parent
dacfd11cad
commit
7eb65f96b2
112
PackageKit-0.4.6-correct-allow-cancel-duplicate-logic.patch
Normal file
112
PackageKit-0.4.6-correct-allow-cancel-duplicate-logic.patch
Normal file
@ -0,0 +1,112 @@
|
||||
commit 826973135802ee453e014dc601168690b49af25d
|
||||
Author: Richard Hughes <richard@hughsie.com>
|
||||
Date: Wed Apr 1 12:25:02 2009 +0100
|
||||
|
||||
bugfix: correct the allow-cancel duplicate logic so we don't remember the state of the previous transaction
|
||||
|
||||
diff --git a/src/pk-backend.c b/src/pk-backend.c
|
||||
index 6bedd12..d55245d 100644
|
||||
--- a/src/pk-backend.c
|
||||
+++ b/src/pk-backend.c
|
||||
@@ -74,6 +74,13 @@
|
||||
*/
|
||||
#define PK_BACKEND_FINISHED_TIMEOUT_GRACE 10 /* ms */
|
||||
|
||||
+/* a boolean with unset */
|
||||
+typedef enum {
|
||||
+ PK_BACKEND_TRISTATE_FALSE = FALSE,
|
||||
+ PK_BACKEND_TRISTATE_TRUE = TRUE,
|
||||
+ PK_BACKEND_TRISTATE_UNSET
|
||||
+} PkBackendTristate;
|
||||
+
|
||||
struct _PkBackendPrivate
|
||||
{
|
||||
GModule *handle;
|
||||
@@ -101,7 +108,7 @@ struct _PkBackendPrivate
|
||||
PkBackendFileChanged file_changed_func;
|
||||
gpointer file_changed_data;
|
||||
gboolean during_initialize;
|
||||
- gboolean allow_cancel;
|
||||
+ PkBackendTristate allow_cancel;
|
||||
gboolean finished;
|
||||
guint last_percentage;
|
||||
guint last_subpercentage;
|
||||
@@ -1436,9 +1443,9 @@ pk_backend_set_allow_cancel (PkBackend *backend, gboolean allow_cancel)
|
||||
}
|
||||
|
||||
/* same as last state? */
|
||||
- if (backend->priv->allow_cancel == allow_cancel) {
|
||||
+ if (backend->priv->allow_cancel == (PkBackendTristate) allow_cancel) {
|
||||
egg_debug ("ignoring same allow-cancel state");
|
||||
- return TRUE;
|
||||
+ return FALSE;
|
||||
}
|
||||
|
||||
/* can we do the action? */
|
||||
@@ -1456,9 +1463,16 @@ pk_backend_set_allow_cancel (PkBackend *backend, gboolean allow_cancel)
|
||||
gboolean
|
||||
pk_backend_get_allow_cancel (PkBackend *backend)
|
||||
{
|
||||
+ gboolean allow_cancel = FALSE;
|
||||
+
|
||||
g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
|
||||
g_return_val_if_fail (backend->priv->locked != FALSE, FALSE);
|
||||
- return backend->priv->allow_cancel;
|
||||
+
|
||||
+ /* return FALSE if we never set state */
|
||||
+ if (backend->priv->allow_cancel != PK_BACKEND_TRISTATE_UNSET)
|
||||
+ allow_cancel = backend->priv->allow_cancel;
|
||||
+
|
||||
+ return allow_cancel;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1952,11 +1966,11 @@ pk_backend_reset (PkBackend *backend)
|
||||
backend->priv->set_error = FALSE;
|
||||
backend->priv->set_signature = FALSE;
|
||||
backend->priv->set_eula = FALSE;
|
||||
- backend->priv->allow_cancel = FALSE;
|
||||
backend->priv->finished = FALSE;
|
||||
backend->priv->has_sent_package = FALSE;
|
||||
backend->priv->thread = NULL;
|
||||
backend->priv->last_package = NULL;
|
||||
+ backend->priv->allow_cancel = PK_BACKEND_TRISTATE_UNSET;
|
||||
backend->priv->status = PK_STATUS_ENUM_UNKNOWN;
|
||||
backend->priv->exit = PK_EXIT_ENUM_UNKNOWN;
|
||||
backend->priv->role = PK_ROLE_ENUM_UNKNOWN;
|
||||
@@ -2327,6 +2341,35 @@ pk_backend_test (EggTest *test)
|
||||
egg_test_loop_wait (test, PK_BACKEND_FINISHED_ERROR_TIMEOUT + 400);
|
||||
egg_test_loop_check (test);
|
||||
|
||||
+ /************************************************************
|
||||
+ **************** CANCEL TRISTATE ******************
|
||||
+ ************************************************************/
|
||||
+ egg_test_title (test, "get allow cancel after reset");
|
||||
+ pk_backend_reset (backend);
|
||||
+ ret = pk_backend_get_allow_cancel (backend);
|
||||
+ egg_test_assert (test, !ret);
|
||||
+
|
||||
+ /************************************************************/
|
||||
+ egg_test_title (test, "set allow cancel TRUE");
|
||||
+ ret = pk_backend_set_allow_cancel (backend, TRUE);
|
||||
+ egg_test_assert (test, ret);
|
||||
+
|
||||
+ /************************************************************/
|
||||
+ egg_test_title (test, "set allow cancel TRUE (repeat)");
|
||||
+ ret = pk_backend_set_allow_cancel (backend, TRUE);
|
||||
+ egg_test_assert (test, !ret);
|
||||
+
|
||||
+ /************************************************************/
|
||||
+ egg_test_title (test, "set allow cancel FALSE");
|
||||
+ ret = pk_backend_set_allow_cancel (backend, FALSE);
|
||||
+ egg_test_assert (test, ret);
|
||||
+
|
||||
+ /************************************************************/
|
||||
+ egg_test_title (test, "set allow cancel FALSE (after reset)");
|
||||
+ pk_backend_reset (backend);
|
||||
+ ret = pk_backend_set_allow_cancel (backend, FALSE);
|
||||
+ egg_test_assert (test, ret);
|
||||
+
|
||||
#ifdef PK_IS_DEVELOPER
|
||||
egg_test_title (test, "check we enforce finished after error_code");
|
||||
if (number_messages == 1)
|
||||
25
PackageKit-0.4.6-fix-FakeRepository-for-unicode-paths.patch
Normal file
25
PackageKit-0.4.6-fix-FakeRepository-for-unicode-paths.patch
Normal file
@ -0,0 +1,25 @@
|
||||
commit 4dfcd53103ac572e27e67e85088b6dee48b2e171
|
||||
Author: Richard Hughes <richard@hughsie.com>
|
||||
Date: Thu Apr 2 11:20:55 2009 +0100
|
||||
|
||||
bugfix: yum cannot handle FakeRepository.repo, unlike a normal Repository, so just handle the local case specially. Fixes rh#486720
|
||||
|
||||
diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
|
||||
index f13bd9d..aade7bd 100755
|
||||
--- a/backends/yum/yumBackend.py
|
||||
+++ b/backends/yum/yumBackend.py
|
||||
@@ -2641,8 +2641,13 @@ class PackageKitCallback(RPMBaseCallback):
|
||||
# we don't know the summary text
|
||||
self.base.package(package_id, status, "")
|
||||
else:
|
||||
+ # local file shouldn't put the path in the package_id
|
||||
+ repo_id = _to_unicode(self.curpkg.repo.id)
|
||||
+ if repo_id.find("/") != -1:
|
||||
+ repo_id = 'local'
|
||||
+
|
||||
pkgver = _get_package_ver(self.curpkg)
|
||||
- package_id = self.base.get_package_id(self.curpkg.name, pkgver, self.curpkg.arch, self.curpkg.repo)
|
||||
+ package_id = self.base.get_package_id(self.curpkg.name, pkgver, self.curpkg.arch, repo_id)
|
||||
self.base.package(package_id, status, self.curpkg.summary)
|
||||
|
||||
def event(self, package, action, te_current, te_total, ts_current, ts_total):
|
||||
@ -10,7 +10,7 @@ Summary: Package management service
|
||||
Name: PackageKit
|
||||
Version: 0.4.6
|
||||
#Release: 0.3.%{?alphatag}git%{?dist}
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
License: GPLv2+
|
||||
Group: System Environment/Libraries
|
||||
URL: http://www.packagekit.org
|
||||
@ -18,11 +18,18 @@ URL: http://www.packagekit.org
|
||||
Source0: http://www.packagekit.org/releases/%{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
# Fedora-specific
|
||||
# Set Vendor.conf up for Fedora.
|
||||
# Fedora-specific: set Vendor.conf up for Fedora.
|
||||
Patch0: PackageKit-0.3.8-Fedora-Vendor.conf.patch
|
||||
|
||||
# Fedora specific: the yum backend doesn't do time estimation correctly
|
||||
Patch1: PackageKit-0.4.4-Fedora-turn-off-time.conf.patch
|
||||
|
||||
# Already upstream: 4dfcd53103ac572e27e67e85088b6dee48b2e171
|
||||
Patch2: PackageKit-0.4.6-fix-FakeRepository-for-unicode-paths.patch
|
||||
|
||||
# Already upstream: 826973135802ee453e014dc601168690b49af25d
|
||||
Patch3: PackageKit-0.4.6-correct-allow-cancel-duplicate-logic.patch
|
||||
|
||||
Requires: dbus >= %{dbus_version}
|
||||
Requires: dbus-glib >= %{dbus_glib_version}
|
||||
Requires: PackageKit-glib = %{version}-%{release}
|
||||
@ -223,6 +230,8 @@ using PackageKit.
|
||||
%setup -q
|
||||
%patch0 -p1 -b .fedora
|
||||
%patch1 -p1 -b .no-time
|
||||
%patch2 -p1 -b .fake-repo-unicode
|
||||
%patch3 -p1 -b .correct-allow-cancel
|
||||
|
||||
%build
|
||||
%configure --enable-yum --enable-smart --with-default-backend=yum --disable-local --disable-ruck
|
||||
@ -417,6 +426,10 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
|
||||
%{_includedir}/PackageKit/backend/*.h
|
||||
|
||||
%changelog
|
||||
* Thu Apr 02 2009 Richard Hughes <rhughes@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.
|
||||
|
||||
* Mon Mar 30 2009 Richard Hughes <rhughes@redhat.com> - 0.4.6-1
|
||||
- New upstream version
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user