From c03efbd8f9201c6c852b5f60016700ebdacea976 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 8 Aug 2012 13:10:36 +0400 Subject: Fix libical Libical searched zoneinfo in /usr/share/zoneinfo, and failed to find it. This leads to, e.g., random Kontact freezes. --- pkgs/development/libraries/libical/default.nix | 15 ++++++---- .../libraries/libical/respect-env-tzdir.patch | 32 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 pkgs/development/libraries/libical/respect-env-tzdir.patch (limited to 'pkgs/development') diff --git a/pkgs/development/libraries/libical/default.nix b/pkgs/development/libraries/libical/default.nix index 54dfc1aecc62c..80f3a1b8e71fa 100644 --- a/pkgs/development/libraries/libical/default.nix +++ b/pkgs/development/libraries/libical/default.nix @@ -1,10 +1,13 @@ -{stdenv, fetchurl, perl}: +{stdenv, fetchsvn, perl, cmake}: stdenv.mkDerivation rec { - name = "libical-0.48"; - src = fetchurl { - url = "mirror://sourceforge/freeassociation/${name}.tar.gz"; - sha256 = "1w6znkh0xxhbcm717mbzfva9ycrqs2lajhng391i7pghaw3qprra"; + name = "libical-0.48-p20120623"; + src = fetchsvn { + url = "https://freeassociation.svn.sourceforge.net/svnroot/freeassociation/trunk/libical"; + rev = "1130"; + sha256 = "56caf19abdf44807fda75a67ef0886319551e53c4e4ece4da4fc862e34c64e1a"; }; - buildNativeInputs = [ perl ]; + buildNativeInputs = [ perl cmake ]; + + patches = [ ./respect-env-tzdir.patch ]; } diff --git a/pkgs/development/libraries/libical/respect-env-tzdir.patch b/pkgs/development/libraries/libical/respect-env-tzdir.patch new file mode 100644 index 0000000000000..12da8d41c7b58 --- /dev/null +++ b/pkgs/development/libraries/libical/respect-env-tzdir.patch @@ -0,0 +1,32 @@ +* Remove /usr/*/zoneinfo from the default search path +* Respect $TZDIR +diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c +index adf7598..d2fd5c8 100644 +--- a/src/libical/icaltz-util.c ++++ b/src/libical/icaltz-util.c +@@ -108,7 +108,7 @@ typedef struct + + static int r_pos [] = {1, 2, 3, -2, -1}; + +-static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"}; ++static char *search_paths [] = {"/etc/zoneinfo"}; + static char *zdir = NULL; + + #define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0])) +@@ -195,6 +195,16 @@ set_zonedir (void) + const char *fname = ZONES_TAB_SYSTEM_FILENAME; + int i; + ++ const char *env_tzdir = strdup (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; ++ } ++ free (env_tzdir); ++ } ++ + for (i = 0;i < NUM_SEARCH_PATHS; i++) { + sprintf (file_path, "%s/%s", search_paths [i], fname); + if (!access (file_path, F_OK|R_OK)) { -- cgit 1.4.1