From 29bd8e4b8fcd332f110dc6d7bb99755300b76299 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 16 Apr 2020 15:50:40 -0400 Subject: [PATCH] gnu: libical: Dynamically bind the time zones with TZDIR. * gnu/packages/patches/libical-honor-TZDIR.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/calendar.scm (libical)[source]: Use it. [arguments]: Remove the 'patch-paths' phase. [inputs]: Remove tzdata. --- gnu/local.mk | 1 + gnu/packages/calendar.scm | 24 +++---------- .../patches/libical-honor-TZDIR.patch | 36 +++++++++++++++++++ 3 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 gnu/packages/patches/libical-honor-TZDIR.patch diff --git a/gnu/local.mk b/gnu/local.mk index 9f212434a9..0b7569b245 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1075,6 +1075,7 @@ dist_patch_DATA = \ %D%/packages/patches/jsoncpp-fix-inverted-case.patch \ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \ + %D%/packages/patches/libical-honor-TZDIR.patch \ %D%/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch \ %D%/packages/patches/libvirt-create-machine-cgroup.patch \ %D%/packages/patches/libziparchive-add-includes.patch \ diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 81b2b436c1..701cd7d6aa 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -119,6 +119,8 @@ the library for handling time zones and leap seconds.") (base32 "1z33wzaazbd7drl6qbh1750whd78xl2cg0gjnxyya9m83vgndgha")) (patches + (append + (search-patches "libical-honor-TZDIR.patch") ;; Add a patch slated for 3.0.8 which preserves backwards- ;; compatibility in the icalattach_new_from_data() function, ;; which accidentally changed in 3.0.7 and could break some uses. @@ -132,34 +134,18 @@ the library for handling time zones and leap seconds.") (file-name "libical-3.0.7-preserve-icalattach-api.patch") (sha256 (base32 - "0v8qcxn8a6sh78grzxd61j9478928dx38l5mf8mkdrbxv47vmvvp"))))))) + "0v8qcxn8a6sh78grzxd61j9478928dx38l5mf8mkdrbxv47vmvvp")))))))) (build-system cmake-build-system) (arguments '(#:tests? #f ; test suite appears broken - #:configure-flags '("-DSHARED_ONLY=true") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-paths - (lambda* (#:key inputs #:allow-other-keys) - ;; TODO: libical 3.1.0 supports using TZDIR instead of a hard-coded - ;; zoneinfo database. When that is released we can drop - ;; the tzdata dependency. - (let ((tzdata (assoc-ref inputs "tzdata"))) - (substitute* "src/libical/icaltz-util.c" - (("\\\"/usr/share/zoneinfo\\\",") - (string-append "\"" tzdata "/share/zoneinfo\"")) - (("\\\"/usr/lib/zoneinfo\\\",") "") - (("\\\"/etc/zoneinfo\\\",") "") - (("\\\"/usr/share/lib/zoneinfo\\\"") ""))) - #t))))) + #:configure-flags '("-DSHARED_ONLY=true"))) (native-inputs `(("gtk-doc" ,gtk-doc) ("perl" ,perl) ("pkg-config" ,pkg-config))) (inputs `(("glib" ,glib) - ("libxml2" ,libxml2) - ("tzdata" ,tzdata))) + ("libxml2" ,libxml2))) (propagated-inputs ;; In Requires.private of libical.pc. `(("icu4c" ,icu4c))) diff --git a/gnu/packages/patches/libical-honor-TZDIR.patch b/gnu/packages/patches/libical-honor-TZDIR.patch new file mode 100644 index 0000000000..c8c6edcd83 --- /dev/null +++ b/gnu/packages/patches/libical-honor-TZDIR.patch @@ -0,0 +1,36 @@ +Make libical look for the time zone database in the directory pointed to +by TZDIR. + +Patch copied from nixpkgs: + +https://github.com/NixOS/nixpkgs/blob/19.09/pkgs/development/libraries/libical/respect-env-tzdir.patch + +--- a/src/libical/icaltz-util.c ++++ b/src/libical/icaltz-util.c +@@ -94,9 +94,9 @@ + static const char *zdir = NULL; + + static const char *search_paths[] = { ++ "/etc/zoneinfo", + "/usr/share/zoneinfo", + "/usr/lib/zoneinfo", +- "/etc/zoneinfo", + "/usr/share/lib/zoneinfo" + }; + +@@ -178,6 +178,15 @@ + const char *fname = ZONES_TAB_SYSTEM_FILENAME; + size_t i, num_search_paths; + ++ const char *env_tzdir = getenv ("TZDIR"); ++ if (env_tzdir) { ++ sprintf (file_path, "%s/%s", env_tzdir, fname); ++ if (!access (file_path, F_OK|R_OK)) { ++ zdir = env_tzdir; ++ return; ++ } ++ } ++ + num_search_paths = sizeof(search_paths) / sizeof(search_paths[0]); + for (i = 0; i < num_search_paths; i++) { + snprintf(file_path, MAXPATHLEN, "%s/%s", search_paths[i], fname); -- 2.26.2