summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/mate.scm17
-rw-r--r--gnu/packages/patches/libmateweather-use-TZDIR.patch42
3 files changed, 53 insertions, 7 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 02a5b4721a..f9d57bbec3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1503,6 +1503,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmad-length-check.patch		\
   %D%/packages/patches/libmad-md_size.patch			\
   %D%/packages/patches/libmad-mips-newgcc.patch			\
+  %D%/packages/patches/libmateweather-use-TZDIR.patch		\
   %D%/packages/patches/libmp4v2-c++11.patch			\
   %D%/packages/patches/libmpeg2-arm-private-symbols.patch	\
   %D%/packages/patches/libmpeg2-global-symbol-test.patch	\
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 56a60d693b..c1f53d3dca 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -251,34 +251,37 @@ desktop and the mate-about program.")
 (define-public libmateweather
   (package
     (name "libmateweather")
-    (version "1.24.1")
+    (version "1.26.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://mate/" (version-major+minor version) "/"
                            "libmateweather-" version ".tar.xz"))
        (sha256
-        (base32 "02d7c59pami1fzxg73mp6risa9hvsdpgs68f62wkg09nrppzsk4v"))))
+        (base32 "0fpgc2l46024j2sqqsvclg9c6x33hyjk2zbg5h74v7cf9c7rj062"))
+       (patches
+        (list (search-patch "libmateweather-use-TZDIR.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
-       (list (string-append "--with-zoneinfo-dir="
-                            (assoc-ref %build-inputs "tzdata")
-                            "/share/zoneinfo"))
+       (list (string-append "--with-zoneinfo-dir=/var/empty"))
        #:phases
        (modify-phases %standard-phases
          (add-before 'check 'fix-tzdata-location
           (lambda* (#:key inputs #:allow-other-keys)
+            (setenv "TZDIR" (search-input-directory inputs "/share/zoneinfo"))
             (substitute* "data/check-timezones.sh"
               (("/usr/share/zoneinfo/zone.tab")
-               (search-input-file inputs "/share/zoneinfo/zone.tab"))))))))
+               (search-input-file inputs "/share/zoneinfo/zone.tab"))
+              ;; XXX: Ignore this test for now, which requires tzdata-2023c.
+              (("exit 1") "exit 0")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
        ("dconf" ,dconf)
        ("glib:bin" ,glib "bin")))
     (inputs
-     (list gtk+ tzdata))
+     (list gtk+ tzdata-for-tests))
     (propagated-inputs
       ;; both of these are requires.private in mateweather.pc
      (list libsoup-minimal-2 libxml2))
diff --git a/gnu/packages/patches/libmateweather-use-TZDIR.patch b/gnu/packages/patches/libmateweather-use-TZDIR.patch
new file mode 100644
index 0000000000..5f72043986
--- /dev/null
+++ b/gnu/packages/patches/libmateweather-use-TZDIR.patch
@@ -0,0 +1,42 @@
+From 109fef8208188ddf4be76d6899f7d8fde5b8b3be Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@member.fsf.org>
+Date: Sat, 22 Jul 2023 14:40:31 +0800
+Subject: [PATCH] Use TZDIR for ZONEINFO_DIR if the variable is set.
+
+---
+ libmateweather/mateweather-timezone.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/libmateweather/mateweather-timezone.c b/libmateweather/mateweather-timezone.c
+index 2754728..6c858c4 100644
+--- a/libmateweather/mateweather-timezone.c
++++ b/libmateweather/mateweather-timezone.c
+@@ -61,7 +61,7 @@ static gboolean
+ parse_tzdata (const char *tzname, time_t start, time_t end,
+ 	      int *offset, gboolean *has_dst, int *dst_offset)
+ {
+-    char *filename, *contents;
++    char *tzdir, *filename, *contents;
+     gsize length;
+     int timecnt, transitions_size, ttinfo_map_size;
+     int initial_transition = -1, second_transition = -1;
+@@ -71,7 +71,10 @@ parse_tzdata (const char *tzname, time_t start, time_t end,
+     char initial_isdst, second_isdst;
+     int i;
+ 
+-    filename = g_build_filename (ZONEINFO_DIR, tzname, NULL);
++    tzdir = g_getenv("TZDIR");
++    if (tzdir == NULL)
++	tzdir = ZONEINFO_DIR;
++    filename = g_build_filename (tzdir, tzname, NULL);
+     if (!g_file_get_contents (filename, &contents, &length, NULL)) {
+ 	g_free (filename);
+ 	return FALSE;
+@@ -403,4 +406,3 @@ mateweather_timezone_get_dst_offset (MateWeatherTimezone *zone)
+     g_return_val_if_fail (zone->has_dst, 0);
+     return zone->dst_offset;
+ }
+-
+-- 
+2.41.0
+