summary refs log tree commit diff
path: root/pkgs/development/libraries/poppler/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/poppler/default.nix')
-rw-r--r--pkgs/development/libraries/poppler/default.nix90
1 files changed, 56 insertions, 34 deletions
diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix
index 1d796789210..7c392832406 100644
--- a/pkgs/development/libraries/poppler/default.nix
+++ b/pkgs/development/libraries/poppler/default.nix
@@ -1,50 +1,72 @@
-{ fetchurl, stdenv, cairo, freetype, fontconfig, zlib
-, libjpeg, pixman, curl, libpthreadstubs, libXau, libXdmcp, openjpeg
-, libxml2, pkgconfig, cmake, lcms
-, gtkSupport ? false, glib ? null, gtk ? null
+{ stdenv, fetchurl, fetchgit, pkgconfig, cmake, libiconvOrEmpty, libintlOrEmpty
+, zlib, curl, cairo, freetype, fontconfig, lcms2, libjpeg, openjpeg
 , qt4Support ? false, qt4 ? null
 }:
 
-stdenv.mkDerivation rec {
-  name = "poppler-0.22.4";
+let
+  version = "0.22.4"; # even major numbers are stable
+  sha256 = "0fz1vk0rbxvnv7ssj8l910k1rx0gjhzl5wr7hkdf4r9jwqs8yhsg";
 
-  src = fetchurl {
-    url = "${meta.homepage}${name}.tar.gz";
-    sha256 = "0fz1vk0rbxvnv7ssj8l910k1rx0gjhzl5wr7hkdf4r9jwqs8yhsg";
-  };
+  qtcairo_patches =
+    let qtcairo = fetchgit { # the version for poppler-0.22
+      url = "git://github.com/giddie/poppler-qt4-cairo-backend.git";
+      rev = "7a12c58e5cefc2b7a5179c53b387fca8963195c0";
+      sha256 = "1jg2d5y62d0bv206nijb63x426zfb2awy70505nx22d0fx1v1p9k";
+    }; in
+      [ "${qtcairo}/0001-Cairo-backend-added-to-Qt4-wrapper.patch"
+        "${qtcairo}/0002-Setting-default-Qt4-backend-to-Cairo.patch"
+        "${qtcairo}/0003-Forcing-subpixel-rendering-in-Cairo-backend.patch" ];
+
+  poppler_drv = nameSuff: merge: stdenv.mkDerivation (stdenv.lib.mergeAttrsByFuncDefaultsClean [
+  rec {
+    name = "poppler-${nameSuff}-${version}";
+
+    src = fetchurl {
+      url = "${meta.homepage}/poppler-${version}.tar.gz";
+      inherit sha256;
+    };
+
+    propagatedBuildInputs = [ zlib cairo freetype fontconfig libjpeg lcms2 curl openjpeg ];
+
+    nativeBuildInputs = [ pkgconfig cmake ] ++ libiconvOrEmpty ++ libintlOrEmpty;
 
-  propagatedBuildInputs =
-    [ zlib cairo freetype fontconfig libjpeg lcms pixman curl
-      libpthreadstubs libXau libXdmcp openjpeg libxml2 stdenv.gcc.libc
-    ]
-    ++ stdenv.lib.optionals gtkSupport [ glib gtk ]
-    ++ stdenv.lib.optional qt4Support qt4;
+    cmakeFlags = "-DENABLE_XPDF_HEADERS=ON -DENABLE_LIBCURL=ON -DENABLE_ZLIB=ON";
 
-  nativeBuildInputs = [ pkgconfig cmake ];
+    patches = [ ./datadir_env.patch ];
 
-  cmakeFlags = "-DENABLE_XPDF_HEADERS=ON -DENABLE_LIBCURL=ON -DENABLE_ZLIB=ON";
+    # XXX: The Poppler/Qt4 test suite refers to non-existent PDF files
+    # such as `../../../test/unittestcases/UseNone.pdf'.
+    #doCheck = !qt4Support;
+    checkTarget = "test";
 
-  patches = [ ./datadir_env.patch ];
+    enableParallelBuilding = true;
 
-  # XXX: The Poppler/Qt4 test suite refers to non-existent PDF files
-  # such as `../../../test/unittestcases/UseNone.pdf'.
-  #doCheck = !qt4Support;
-  checkTarget = "test";
+    meta = {
+      homepage = http://poppler.freedesktop.org/;
+      description = "A PDF rendering library";
 
-  enableParallelBuilding = true;
+      longDescription = ''
+        Poppler is a PDF rendering library based on the xpdf-3.0 code base.
+      '';
 
-  meta = {
-    homepage = http://poppler.freedesktop.org/;
-    description = "Poppler, a PDF rendering library";
+      license = "GPLv2";
+      platforms = stdenv.lib.platforms.all;
+    };
+  } merge ]); # poppler_drv
 
-    longDescription = ''
-      Poppler is a PDF rendering library based on the xpdf-3.0 code base.
-    '';
+in rec {
+  /* We always use cairo in poppler, so we always depend on glib,
+     so we always build the glib wrapper (~350kB).
+     We also always build the cpp wrapper (<100kB).
+     ToDo: around half the size could be saved by splitting out headers and tools (1.5 + 0.5 MB).
+  */
 
-    platforms = if qt4Support
-      then qt4.meta.platforms
-      else stdenv.lib.platforms.all;
+  poppler_glib = poppler_drv "glib" { };
 
-    license = "GPLv2";
+  poppler_qt4 = poppler_drv "qt4" {
+    propagatedBuildInputs = [ qt4 poppler_glib ];
+    patches = qtcairo_patches;
+    NIX_LDFLAGS = "-lpoppler";
+    postConfigure = "cd qt4";
   };
 }