about summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorCole Helbling <cole.e.helbling@outlook.com>2020-03-02 22:24:40 -0800
committerCole Helbling <cole.e.helbling@outlook.com>2020-03-02 22:48:52 -0800
commit25057960cec97234e3a6cabbc96c9fcb0f18b933 (patch)
treeac65818ca5c3efa4e592eb56311575d53d9476da /pkgs/development/libraries
parentc16f2218da6928ca52bb500cbebe4c62a67f90f8 (diff)
downloadnixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar.gz
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar.bz2
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar.lz
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar.xz
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.tar.zst
nixlib-25057960cec97234e3a6cabbc96c9fcb0f18b933.zip
howard-hinnant-date: allow access to zoneinfo
This fixes the situtation where, if `/usr/share/zoneinfo` was
inaccessible/didn't otherwise exist, `howard-hinnant-date` would
download and drop a `~/Downloads/tzdata` directory containing some
timezone information from IANA [1]. To avoid this, we make use of the
`tzdata`'s `zoneinfo`, preventing the dropping of random directories and
files.

[1] https://data.iana.org/time-zones/releases/tzdata2019c.tar.gz
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/howard-hinnant-date/default.nix10
-rw-r--r--pkgs/development/libraries/howard-hinnant-date/make-zoneinfo-available.diff13
2 files changed, 22 insertions, 1 deletions
diff --git a/pkgs/development/libraries/howard-hinnant-date/default.nix b/pkgs/development/libraries/howard-hinnant-date/default.nix
index 30e5c92b8f09..185af3dff319 100644
--- a/pkgs/development/libraries/howard-hinnant-date/default.nix
+++ b/pkgs/development/libraries/howard-hinnant-date/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, curl, fetchpatch }:
+{ stdenv, fetchFromGitHub, cmake, curl, tzdata, fetchpatch, substituteAll }:
 
 stdenv.mkDerivation rec {
   pname = "howard-hinnant-date-unstable";
@@ -16,6 +16,13 @@ stdenv.mkDerivation rec {
       url = "https://github.com/HowardHinnant/date/commit/e56b2dce7e89a92e1b9b35caa13b3e938c4cedea.patch";
       sha256 = "0m3qbhq7kmm9qa3jm6d2px7c1dxdj5k9lffgdvqnrwmhxwj1p9n2";
     })
+    # Without this patch, this library will drop a `tzdata` directory into
+    # `~/Downloads` if it cannot find `/usr/share/zoneinfo`. Make the path it
+    # searches for `zoneinfo` be the one from the `tzdata` package.
+    (substituteAll {
+      src = ./make-zoneinfo-available.diff;
+      inherit tzdata;
+    })
   ];
 
   nativeBuildInputs = [ cmake ];
@@ -24,6 +31,7 @@ stdenv.mkDerivation rec {
   cmakeFlags = [
     "-DBUILD_TZ_LIB=true"
     "-DBUILD_SHARED_LIBS=true"
+    "-DUSE_SYSTEM_TZ_DB=true"
   ];
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/howard-hinnant-date/make-zoneinfo-available.diff b/pkgs/development/libraries/howard-hinnant-date/make-zoneinfo-available.diff
new file mode 100644
index 000000000000..f9e69ff38cbb
--- /dev/null
+++ b/pkgs/development/libraries/howard-hinnant-date/make-zoneinfo-available.diff
@@ -0,0 +1,13 @@
+diff --git a/src/tz.cpp b/src/tz.cpp
+index 68436c3..2bfe19e 100644
+--- a/src/tz.cpp
++++ b/src/tz.cpp
+@@ -349,7 +349,7 @@ discover_tz_dir()
+     struct stat sb;
+     using namespace std;
+ #  ifndef __APPLE__
+-    CONSTDATA auto tz_dir_default = "/usr/share/zoneinfo";
++    CONSTDATA auto tz_dir_default = "@tzdata@/share/zoneinfo";
+     CONSTDATA auto tz_dir_buildroot = "/usr/share/zoneinfo/uclibc";
+ 
+     // Check special path which is valid for buildroot with uclibc builds