summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorTimothy Sample <samplet@ngyro.com>2019-07-19 10:36:21 -0400
committerTimothy Sample <samplet@ngyro.com>2019-07-19 12:56:03 -0400
commite1f174ae284d9954840f1723ac012c0d3fbcecb4 (patch)
tree7cc4e75dfe3bc41ff4bbd4e7a38d466769193db6 /gnu/packages
parentda9adfc7f7e11e6aeaa6322331e867bbafdab055 (diff)
downloadguix-e1f174ae284d9954840f1723ac012c0d3fbcecb4.tar.gz
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.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/gnome.scm17
-rw-r--r--gnu/packages/patches/evolution-data-server-locales.patch33
2 files changed, 34 insertions, 16 deletions
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index beaba3b4c5..9190301ee9 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5162,6 +5162,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
               (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 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                            "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"
diff --git a/gnu/packages/patches/evolution-data-server-locales.patch b/gnu/packages/patches/evolution-data-server-locales.patch
new file mode 100644
index 0000000000..48baefb0d8
--- /dev/null
+++ b/gnu/packages/patches/evolution-data-server-locales.patch
@@ -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
+