From 25057960cec97234e3a6cabbc96c9fcb0f18b933 Mon Sep 17 00:00:00 2001 From: Cole Helbling Date: Mon, 2 Mar 2020 22:24:40 -0800 Subject: [PATCH] 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 --- .../libraries/howard-hinnant-date/default.nix | 10 +++++++++- .../make-zoneinfo-available.diff | 13 +++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/howard-hinnant-date/make-zoneinfo-available.diff 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