From 63959f2a5aa7a337b569ed8a3b6a0a236100b1f2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 19 Sep 2011 08:35:30 +0000 Subject: [PATCH] Let poppler use ${POPPLER_DATADIR} Also upgrade poppler-data svn path=/nixpkgs/trunk/; revision=29342 --- pkgs/data/misc/poppler-data/default.nix | 17 +++-- .../libraries/poppler/datadir_env.patch | 65 ++++--------------- .../development/libraries/poppler/default.nix | 2 + pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 24 insertions(+), 62 deletions(-) diff --git a/pkgs/data/misc/poppler-data/default.nix b/pkgs/data/misc/poppler-data/default.nix index b121d30824e..14a41cf84fc 100644 --- a/pkgs/data/misc/poppler-data/default.nix +++ b/pkgs/data/misc/poppler-data/default.nix @@ -1,20 +1,23 @@ { fetchurl, stdenv, cmake }: stdenv.mkDerivation rec { - name = "poppler-data-0.4.3"; + name = "poppler-data-0.4.5"; src = fetchurl { url = "http://poppler.freedesktop.org/${name}.tar.gz"; - sha256 = "19jq5miinzzrzlv6696j82hr60ga2r4msk6a34s9537vid410q22"; + sha256 = "1zbh1zd083wfwrcw7vxc2bn32h42y6iyh24syxcb3r5ggd2vr41i"; }; buildInputs = [ cmake ]; - postInstall = '' - ensureDir ''${out}/etc/profile.d - echo "export POPPLER_DATADIR=''${out}/share/poppler" > \ - ''${out}/etc/profile.d/60-poppler.sh - ''; +# TODO: actually use $prefix/etc/profile.d in NixOS + postInstall = + '' + mkdir -pv ''${out}/etc/profile.d + echo "export POPPLER_DATADIR=''${out}/share/poppler" | + tee ''${out}/etc/profile.d/60-poppler.sh + chmod -c +x ''${out}/etc/profile.d/60-poppler.sh + ''; meta = { homepage = http://poppler.freedesktop.org/; diff --git a/pkgs/development/libraries/poppler/datadir_env.patch b/pkgs/development/libraries/poppler/datadir_env.patch index dfe024a5b23..fd111d71355 100644 --- a/pkgs/development/libraries/poppler/datadir_env.patch +++ b/pkgs/development/libraries/poppler/datadir_env.patch @@ -1,56 +1,13 @@ -diff -ur poppler-0.6.1/poppler/GlobalParams.cc poppler-0.6.1-patched/poppler/GlobalParams.cc ---- poppler-0.6.1/poppler/GlobalParams.cc 2007-09-17 20:37:58.000000000 +0200 -+++ poppler-0.6.1-patched/poppler/GlobalParams.cc 2007-11-06 16:11:55.995595933 +0100 -@@ -654,27 +654,39 @@ +diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc +index 2e11bb0..a277ab9 100644 +--- a/poppler/GlobalParams.cc ++++ b/poppler/GlobalParams.cc +@@ -748,7 +748,7 @@ GlobalParams::GlobalParams(const char *customPopplerDataDir) + void GlobalParams::scanEncodingDirs() { GDir *dir; GDirEntry *entry; - -- dir = new GDir(POPPLER_DATADIR "/nameToUnicode", gFalse); -+ GooString *real_datadir = new GooString (getenv("POPPLER_DATADIR")); -+ if (!real_datadir->getCString()) -+ real_datadir->Set(POPPLER_DATADIR); -+ GooString *dirname; -+ -+ dirname = real_datadir->copy(); -+ dir = new GDir(dirname->append("/nameToUnicode")->getCString(), gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { - parseNameToUnicode(entry->getFullPath()); - delete entry; - } - delete dir; -+ delete dirname; - -- dir = new GDir(POPPLER_DATADIR "/cidToUnicode", gFalse); -+ dirname = real_datadir->copy(); -+ dir = new GDir(dirname->append("/cidToUnicode")->getCString(), gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { - addCIDToUnicode(entry->getName(), entry->getFullPath()); - delete entry; - } - delete dir; -+ delete dirname; - -- dir = new GDir(POPPLER_DATADIR "/unicodeMap", gFalse); -+ dirname = real_datadir->copy(); -+ dir = new GDir(dirname->append("/unicodeMap")->getCString(), gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { - addUnicodeMap(entry->getName(), entry->getFullPath()); - delete entry; - } - delete dir; -+ delete dirname; - -+ dirname = real_datadir->copy(); - dir = new GDir(POPPLER_DATADIR "/cMap", gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { - addCMapDir(entry->getName(), entry->getFullPath()); -@@ -682,6 +694,9 @@ - delete entry; - } - delete dir; -+ delete dirname; -+ -+ delete real_datadir; - } - - void GlobalParams::parseNameToUnicode(GooString *name) { +- const char *dataRoot = popplerDataDir ? popplerDataDir : POPPLER_DATADIR; ++ const char *dataRoot = popplerDataDir ? popplerDataDir : ( getenv("POPPLER_DATADIR") ? getenv("POPPLER_DATADIR") : POPPLER_DATADIR ); + + // allocate buffer large enough to append "/nameToUnicode" + size_t bufSize = strlen(dataRoot) + strlen("/nameToUnicode") + 1; diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix index 3091c6497e5..bb19338cc88 100644 --- a/pkgs/development/libraries/poppler/default.nix +++ b/pkgs/development/libraries/poppler/default.nix @@ -24,6 +24,8 @@ stdenv.mkDerivation rec { cmakeFlags = "-DENABLE_XPDF_HEADERS=ON -DENABLE_LIBCURL=ON -DENABLE_ZLIB=ON"; + patches = [ ./datadir_env.patch ]; + # XXX: The Poppler/Qt4 test suite refers to non-existent PDF files # such as `../../../test/unittestcases/UseNone.pdf'. #doCheck = !qt4Support; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ebef833c06c..a8e69f34a72 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6080,7 +6080,7 @@ let iana_etc = callPackage ../data/misc/iana-etc { }; - popplerData = callPackage ../data/misc/poppler-data { }; + poppler_data = callPackage ../data/misc/poppler-data { }; r3rs = callPackage ../data/documentation/rnrs/r3rs.nix { };