From 66f62690bdfefc1da5341077a1357983795b735a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 19 Oct 2007 16:59:47 +0000 Subject: [PATCH] - Porting a couple patches over from RHEL5: - Add patch for RH bug #212106 (address book error on fresh install). - Add patch for RH bug #215702 (bad search filter for LDAP address books). --- evolution-data-server-1.8.0-db4.patch | 56 +++++++++++++++ ...ion-data-server-1.8.0-fix-ldap-query.patch | 72 +++++++++++++++++++ evolution-data-server.spec | 31 +++++--- 3 files changed, 150 insertions(+), 9 deletions(-) create mode 100644 evolution-data-server-1.8.0-db4.patch create mode 100644 evolution-data-server-1.8.0-fix-ldap-query.patch diff --git a/evolution-data-server-1.8.0-db4.patch b/evolution-data-server-1.8.0-db4.patch new file mode 100644 index 0000000..443d628 --- /dev/null +++ b/evolution-data-server-1.8.0-db4.patch @@ -0,0 +1,56 @@ +diff -up evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4 evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c +--- evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4 2007-10-12 02:29:47.000000000 -0400 ++++ evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c 2007-10-19 11:56:03.000000000 -0400 +@@ -1137,23 +1137,30 @@ e_book_backend_file_load_source (EBookBa + return db_error_to_status (db_error); + } + ++ db->close (db, 0); ++ db_error = db_create (&db, env, 0); ++ if (db_error != 0) { ++ g_warning ("db_create failed with %s", db_strerror (db_error)); ++ g_free (dirname); ++ g_free (filename); ++ return db_error_to_status (db_error); ++ } ++ + db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_THREAD, 0666); + } + +- bf->priv->file_db = db; +- + if (db_error == 0) { + writable = TRUE; + } else { + db->close (db, 0); +- + db_error = db_create (&db, env, 0); + if (db_error != 0) { + g_warning ("db_create failed with %s", db_strerror (db_error)); + g_free (dirname); + g_free (filename); +- return GNOME_Evolution_Addressbook_OtherError; ++ return db_error_to_status (db_error); + } ++ + db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_RDONLY | DB_THREAD, 0666); + + if (db_error != 0 && !only_if_exists) { +@@ -1178,7 +1185,7 @@ e_book_backend_file_load_source (EBookBa + g_warning ("db_create failed with %s", db_strerror (db_error)); + g_free (dirname); + g_free (filename); +- return GNOME_Evolution_Addressbook_OtherError; ++ return db_error_to_status (db_error); + } + + db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_CREATE | DB_THREAD, 0666); +@@ -1201,6 +1208,8 @@ e_book_backend_file_load_source (EBookBa + } + } + ++ bf->priv->file_db = db; ++ + if (db_error != 0) { + bf->priv->file_db = NULL; + g_free (dirname); diff --git a/evolution-data-server-1.8.0-fix-ldap-query.patch b/evolution-data-server-1.8.0-fix-ldap-query.patch new file mode 100644 index 0000000..ee05ae0 --- /dev/null +++ b/evolution-data-server-1.8.0-fix-ldap-query.patch @@ -0,0 +1,72 @@ +--- evolution-data-server-1.8.0/addressbook/backends/ldap/e-book-backend-ldap.c.fix-ldap-query 2006-09-02 02:36:49.000000000 -0400 ++++ evolution-data-server-1.8.0/addressbook/backends/ldap/e-book-backend-ldap.c 2007-07-02 14:21:14.000000000 -0400 +@@ -3209,22 +3209,28 @@ + char ** strings; + + if (argc > 0) { +- int i; ++ int i, empty; + + strings = g_new0(char*, argc+3); + strings[0] = g_strdup ("(&"); + strings[argc+3 - 2] = g_strdup (")"); + ++ empty = 0; + for (i = 0; i < argc; i ++) { + GList *list_head = ldap_data->list; + if (!list_head) + break; ++ if (strlen (list_head->data) == 0) ++ empty++; + strings[argc - i] = list_head->data; + ldap_data->list = g_list_remove_link(list_head, list_head); + g_list_free_1(list_head); + } + +- ldap_data->list = g_list_prepend(ldap_data->list, g_strjoinv(" ", strings)); ++ if (empty == argc) ++ ldap_data->list = g_list_prepend(ldap_data->list, g_strdup(" ")); ++ else ++ ldap_data->list = g_list_prepend(ldap_data->list, g_strjoinv(" ", strings)); + + for (i = 0 ; i < argc + 2; i ++) + g_free (strings[i]); +@@ -3246,22 +3252,28 @@ + char ** strings; + + if (argc > 0) { +- int i; ++ int i, empty; + + strings = g_new0(char*, argc+3); + strings[0] = g_strdup ("(|"); + strings[argc+3 - 2] = g_strdup (")"); + ++ empty = 0; + for (i = 0; i < argc; i ++) { + GList *list_head = ldap_data->list; + if (!list_head) + break; ++ if (strlen (list_head->data) == 0) ++ empty++; + strings[argc - i] = list_head->data; + ldap_data->list = g_list_remove_link(list_head, list_head); + g_list_free_1(list_head); + } + +- ldap_data->list = g_list_prepend(ldap_data->list, g_strjoinv(" ", strings)); ++ if (empty == argc) ++ ldap_data->list = g_list_prepend(ldap_data->list, g_strdup(" ")); ++ else ++ ldap_data->list = g_list_prepend(ldap_data->list, g_strjoinv(" ", strings)); + + for (i = 0 ; i < argc + 2; i ++) + g_free (strings[i]); +@@ -3410,6 +3422,7 @@ + char *ldap_attr = query_prop_to_ldap(propname); + + if (strlen (str) == 0) { ++ ldap_data->list = g_list_prepend(ldap_data->list, g_strdup ("")); + r = e_sexp_result_new (f, ESEXP_RES_BOOL); + r->value.bool = FALSE; + return r; diff --git a/evolution-data-server.spec b/evolution-data-server.spec index 1d1e159..255afc0 100644 --- a/evolution-data-server.spec +++ b/evolution-data-server.spec @@ -27,7 +27,7 @@ Name: evolution-data-server Version: 1.12.1 -Release: 2%{?dist} +Release: 3%{?dist} License: LGPL Group: System Environment/Libraries Summary: Backend data server for Evolution @@ -46,21 +46,27 @@ Patch11: evolution-data-server-1.8.0-no-gnome-common.patch # RH bug #202309 Patch12: evolution-data-server-1.7.91-maybe-fix-crash.patch +# RH bug #212106 +Patch13: evolution-data-server-1.8.0-db4.patch + +# RH bug #215702 / GNOME bug #487988 +Patch14: evolution-data-server-1.8.0-fix-ldap-query.patch + # GNOME bug #363695 -Patch14: evolution-data-server-1.9.1-kill-ememory.patch +Patch15: evolution-data-server-1.9.1-kill-ememory.patch # GNOME bug #376991 # XXX Disabled due to outstanding issues. #Patch16: evolution-data-server-1.9.92-e-passwords.patch # GNOME bug #417999 -Patch18: evolution-data-server-1.10.0-code-cleanup.patch +Patch17: evolution-data-server-1.10.0-code-cleanup.patch # GNOME bug #373146 -Patch19: evolution-data-server-1.10.1-camel-folder-summary-crash.patch +Patch18: evolution-data-server-1.10.1-camel-folder-summary-crash.patch # RH bug #243296 -Patch20: evolution-data-server-1.11.5-fix-64bit-acinclude.patch +Patch19: evolution-data-server-1.11.5-fix-64bit-acinclude.patch ### Dependencies ### @@ -145,11 +151,13 @@ evolution-data-server. %patch10 -p1 -b .ldaphack %patch11 -p1 -b .no-gnome-common %patch12 -p1 -b .maybe-fix-crash -%patch14 -p1 -b .kill-ememory +%patch13 -p1 -b .db4 +%patch14 -p1 -b .fix-ldap-query +%patch15 -p1 -b .kill-ememory #%patch16 -p1 -b .e-passwords -%patch18 -p1 -b .code-cleanup -%patch19 -p1 -b .camel-folder-symmary-crash -%patch20 -p1 -b .fix-64bit-acinclude +%patch17 -p1 -b .code-cleanup +%patch18 -p1 -b .camel-folder-summary-crash +%patch19 -p1 -b .fix-64bit-acinclude mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -382,6 +390,11 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/libexchange-storage-%{eds_api_version}.pc %changelog +* Thu Oct 18 2007 Matthew Barnes - 1.12.1-3.fc9 +- Porting a couple patches over from RHEL5: +- Add patch for RH bug #212106 (address book error on fresh install). +- Add patch for RH bug #215702 (bad search filter for LDAP address books). + * Tue Oct 16 2007 Matthew Barnes - 1.12.1-2.fc8 - Disable patch for GNOME bug #376991 for now. It may be contributing to password prompting problems as described in RH bug #296671.