diff --git a/gnome-keyring-2.20-add_new_keyrings.patch b/gnome-keyring-2.20-add_new_keyrings.patch new file mode 100644 index 0000000..904018f --- /dev/null +++ b/gnome-keyring-2.20-add_new_keyrings.patch @@ -0,0 +1,14 @@ +Index: daemon/gkr-daemon-ops.c +=================================================================== +--- daemon/gkr-daemon-ops.c (revision 838) ++++ daemon/gkr-daemon-ops.c (revision 839) +@@ -723,6 +723,9 @@ + g_warning ("couldn't create default keyring"); + ask->response = GKR_ASK_RESPONSE_FAILURE; + } else { ++ /* Add to our main list */ ++ gkr_keyrings_add (keyring); ++ + /* Set our newly created keyring as the default */ + gkr_keyrings_set_default (keyring); + } diff --git a/gnome-keyring-2.20-no-unset-default.patch b/gnome-keyring-2.20-no-unset-default.patch new file mode 100644 index 0000000..bde5805 --- /dev/null +++ b/gnome-keyring-2.20-no-unset-default.patch @@ -0,0 +1,91 @@ +diff -ur gnome-keyring-2.20.orig/daemon/gkr-daemon-ops.c gnome-keyring-2.20/daemon/gkr-daemon-ops.c +--- gnome-keyring-2.20.orig/daemon/gkr-daemon-ops.c 2007-10-03 15:01:34.000000000 +0200 ++++ gnome-keyring-2.20/daemon/gkr-daemon-ops.c 2007-10-03 15:01:48.000000000 +0200 +@@ -1136,7 +1136,7 @@ + g_free (keyring_name); + + if (res == GNOME_KEYRING_RESULT_OK) +- gkr_keyrings_remove (keyring); ++ gkr_keyrings_remove (keyring, TRUE); + + return TRUE; + } +Only in gnome-keyring-2.20/daemon: gkr-daemon-ops.c.orig +diff -ur gnome-keyring-2.20.orig/keyrings/gkr-keyring.c gnome-keyring-2.20/keyrings/gkr-keyring.c +--- gnome-keyring-2.20.orig/keyrings/gkr-keyring.c 2007-10-03 15:01:34.000000000 +0200 ++++ gnome-keyring-2.20/keyrings/gkr-keyring.c 2007-10-03 15:01:48.000000000 +0200 +@@ -1211,7 +1211,7 @@ + if (!gkr_keyring_update_from_disk (keyring, TRUE)) { + /* Failed to re-read, remove the keyring */ + g_warning ("Couldn't re-read keyring %s\n", keyring->keyring_name); +- gkr_keyrings_remove (keyring); ++ gkr_keyrings_remove (keyring, TRUE); + } + + return TRUE; +diff -ur gnome-keyring-2.20.orig/keyrings/gkr-keyrings.c gnome-keyring-2.20/keyrings/gkr-keyrings.c +--- gnome-keyring-2.20.orig/keyrings/gkr-keyrings.c 2007-10-03 15:01:34.000000000 +0200 ++++ gnome-keyring-2.20/keyrings/gkr-keyrings.c 2007-10-03 15:01:48.000000000 +0200 +@@ -235,7 +235,7 @@ + /* Try and update/load it */ + if (!gkr_keyring_update_from_disk (keyring, FALSE) || + !keyring->keyring_name || !keyring->keyring_name[0]) { +- gkr_keyrings_remove (keyring); ++ gkr_keyrings_remove (keyring, TRUE); + } + } + +@@ -257,7 +257,7 @@ + keyring = GKR_KEYRING (keyrings->data); + if (keyring == session_keyring) + session_keyring = NULL; +- gkr_keyrings_remove (keyring); ++ gkr_keyrings_remove (keyring, FALSE); + } + + g_free (default_keyring); +@@ -411,7 +411,7 @@ + if (!keyring->location) + continue; + if (g_hash_table_lookup (checks, GUINT_TO_POINTER (keyring->location))) +- gkr_keyrings_remove (keyring); ++ gkr_keyrings_remove (keyring, TRUE); + } + g_hash_table_destroy (checks); + +@@ -434,15 +434,19 @@ + } + + void +-gkr_keyrings_remove (GkrKeyring *keyring) ++gkr_keyrings_remove (GkrKeyring *keyring, ++ gboolean unset_if_default) + { + keyrings_init (); +- ++ + g_assert (GKR_IS_KEYRING (keyring)); + ++ ++ + if (g_list_find (keyrings, keyring)) { + +- if (default_keyring && ++ if (unset_if_default && ++ default_keyring && + strcmp (keyring->keyring_name, default_keyring) == 0) + gkr_keyrings_set_default (NULL); + +diff -ur gnome-keyring-2.20.orig/keyrings/gkr-keyrings.h gnome-keyring-2.20/keyrings/gkr-keyrings.h +--- gnome-keyring-2.20.orig/keyrings/gkr-keyrings.h 2007-10-03 15:01:34.000000000 +0200 ++++ gnome-keyring-2.20/keyrings/gkr-keyrings.h 2007-10-03 15:01:48.000000000 +0200 +@@ -36,7 +36,8 @@ + + void gkr_keyrings_add (GkrKeyring *keyring); + +-void gkr_keyrings_remove (GkrKeyring *keyring); ++void gkr_keyrings_remove (GkrKeyring *keyring, ++ gboolean unset_if_default); + + GkrKeyring* gkr_keyrings_find (const gchar *name); + diff --git a/gnome-keyring.spec b/gnome-keyring.spec index 5c87c8c..1536989 100644 --- a/gnome-keyring.spec +++ b/gnome-keyring.spec @@ -3,7 +3,7 @@ Summary: A framework for managing user passwords and other secrets Name: gnome-keyring Version: 2.20 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ and LGPLv2+ Group: System Environment/Libraries Source: http://download.gnome.org/sources/gnome-keyring/2.20/gnome-keyring-%{version}.tar.bz2 @@ -19,6 +19,10 @@ BuildRequires: autoconf, automake, libtool BuildRequires: intltool BuildRequires: perl(XML::Parser) +# Backport from svn +Patch1: gnome-keyring-2.20-add_new_keyrings.patch +Patch2: gnome-keyring-2.20-no-unset-default.patch + %description gnome-keyring manages passwords and other types of secrets for the user, storing them encrypted with a main password. @@ -57,6 +61,9 @@ and start the keyring daemon. %prep %setup -q -n gnome-keyring-%{version} +%patch1 -p0 -b .add_new_keyrings +%patch2 -p1 -b .no_unset_default + %build aclocal automake @@ -102,6 +109,11 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Oct 3 2007 Alexander Larsson - 2.20-2 +- Backport fix from svn where newly created keyrings weren't + found +- Don't unset default keyring on daemon shutdown + * Mon Sep 17 2007 Matthias Clasen - 2.20-1 - Update to 2.20