gnu: evolution-data-server: Use a proper patch for locales.

See <https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00265.html>.

* gnu/packages/patches/evolution-data-server-locales.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/gnome.scm (evolution-data-server): Replace the
'patch-locale-canonicalization' phase with the new patch.
This commit is contained in:
Timothy Sample 2019-07-19 10:36:21 -04:00
parent da9adfc7f7
commit e1f174ae28
No known key found for this signature in database
GPG key ID: 2AC6A5EC1C357C59
3 changed files with 35 additions and 16 deletions

View file

@ -780,6 +780,7 @@ dist_patch_DATA = \
%D%/packages/patches/erlang-man-path.patch \
%D%/packages/patches/eudev-rules-directory.patch \
%D%/packages/patches/evilwm-lost-focus-bug.patch \
%D%/packages/patches/evolution-data-server-locales.patch \
%D%/packages/patches/exiv2-CVE-2017-14860.patch \
%D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch \
%D%/packages/patches/extundelete-e2fsprogs-1.44.patch \

View file

@ -5162,6 +5162,7 @@ (define-public evolution-data-server
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(patches (search-patches "evolution-data-server-locales.patch"))
(sha256
(base32
"1s952wyhgcbmq9nfgk75v15zdy1h3wy5p5rmkqibaavmc0pk3mli"))))
@ -5205,22 +5206,6 @@ (define-public evolution-data-server
"tests/libedata-cal/test-cal-cache-utils.c")
(("/bin/rm") (which "rm")))
#t))
;; This phase fixes locale canonicalization when using newer
;; versions of ICU. The bug has been fixed upstream, and
;; should appear starting in version 3.33.5.
;; <https://gitlab.gnome.org/GNOME/evolution-data-server/issues/137>.
(add-after 'unpack 'patch-locale-canonicalization
(lambda _
(substitute* "src/libedataserver/e-collator.c"
(("len = uloc_canonicalize \\(posix_locale,.*" x)
((lambda (xs) (string-join xs "\n" 'suffix))
(list
"if (posix_locale && ("
" g_ascii_strcasecmp(posix_locale, \"C\") == 0 ||"
" g_ascii_strcasecmp(posix_locale, \"POSIX\") == 0))"
" posix_locale = \"en_US_POSIX\";"
x))))
#t))
(add-before 'configure 'dont-override-rpath
(lambda _
(substitute* "CMakeLists.txt"

View file

@ -0,0 +1,33 @@
This patch fixes locale canonicalization when using newer versions of
ICU. It comes from the upstream repo, and should appear starting in
version 3.33.5.
From fe4ac94ce3c14f200e049a5d102fc0e4b811c71e Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Tue, 16 Jul 2019 07:22:07 +0200
Subject: [PATCH] I#137 - POSIX locale tests fail with ICU 64.x
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/137
---
src/libedataserver/e-collator.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/libedataserver/e-collator.c b/src/libedataserver/e-collator.c
index 718eac5da..ec2cf7951 100644
--- a/src/libedataserver/e-collator.c
+++ b/src/libedataserver/e-collator.c
@@ -132,6 +132,11 @@ canonicalize_locale (const gchar *posix_locale,
gint len;
const gchar *collation_type = NULL;
+ if (posix_locale && (
+ g_ascii_strcasecmp (posix_locale, "C") == 0 ||
+ g_ascii_strcasecmp (posix_locale, "POSIX") == 0))
+ posix_locale = "en_US_POSIX";
+
len = uloc_canonicalize (posix_locale, locale_buffer, LOCALE_BUFFER_LEN, &status);
if (U_FAILURE (status)) {
--
2.22.0