summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2013-04-21 20:15:38 +0000
committerVladimír Čunát <vcunat@gmail.com>2013-04-21 20:15:38 +0000
commit5e4aa511733c693dde3320a620ccc7ea35feddcd (patch)
treeed59b8d9dd298349c6e981b582b7db076ad7b936 /pkgs
parentb37b73a56c26d1d77acefdaf66fce580c73e3149 (diff)
downloadnixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar.gz
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar.bz2
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar.lz
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar.xz
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.tar.zst
nixlib-5e4aa511733c693dde3320a620ccc7ea35feddcd.zip
poppler: share most things between glib and qt4 versions
Most of the stuff was duplicated (headers, the core library).
The new solution makes the _qt4 package use the _glib one,
because it depended on glib through cairo anyway
(and _glib bindings themselves are just ~350kB).

This also fixes a problem that mergeAttrsByFuncDefaultsClean
didn't merge patches, which affected dbus.libs.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/poppler/default.nix82
-rw-r--r--pkgs/lib/misc.nix3
-rw-r--r--pkgs/top-level/all-packages.nix15
3 files changed, 53 insertions, 47 deletions
diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix
index 12bd73b4b321..263162336485 100644
--- a/pkgs/development/libraries/poppler/default.nix
+++ b/pkgs/development/libraries/poppler/default.nix
@@ -1,17 +1,12 @@
 { stdenv, fetchurl, fetchgit, cairo, freetype, fontconfig, zlib
 , libjpeg, curl, libpthreadstubs, xorg, openjpeg
 , libxml2, pkgconfig, cmake, lcms2
-, glibSupport ? false, glib, gtk3Support ? false, gtk3 # gtk2 no longer accepted
 , qt4Support ? false, qt4 ? null
 }:
 
-stdenv.mkDerivation rec {
-  name = "poppler-0.22.3";
-
-  src = fetchurl {
-    url = "${meta.homepage}${name}.tar.gz";
-    sha256 = "0ca4jci8xmbdz4fhahdcck0cqms6ax55yggi2ih3clgrpqf96sli";
-  };
+let
+  version = "0.22.3";
+  sha256 = "0ca4jci8xmbdz4fhahdcck0cqms6ax55yggi2ih3clgrpqf96sli";
 
   qtcairo_patches =
     let qtcairo = fetchgit { # the version for poppler-0.22
@@ -23,42 +18,59 @@ stdenv.mkDerivation rec {
         "${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 = with xorg;
+      [ zlib cairo freetype fontconfig libjpeg lcms2 curl
+        libpthreadstubs libxml2
+        libXau libXdmcp libxcb libXrender libXext
+        openjpeg
+      ];
+
+    nativeBuildInputs = [ pkgconfig cmake ];
 
-  propagatedBuildInputs = with xorg;
-    [ zlib cairo freetype fontconfig libjpeg lcms2 curl
-      libpthreadstubs libxml2 stdenv.gcc.libc
-      libXau libXdmcp libxcb libXrender libXext
-      openjpeg
-    ]
-    ++ stdenv.lib.optional glibSupport glib
-    ++ stdenv.lib.optional gtk3Support gtk3
-    ++ 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 ] ++ stdenv.lib.optionals qt4Support qtcairo_patches;
+    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";
+    };
+  } 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;
+    postConfigure = "cd qt4";
   };
 }
diff --git a/pkgs/lib/misc.nix b/pkgs/lib/misc.nix
index 9a1539dfee8c..32390b0d192f 100644
--- a/pkgs/lib/misc.nix
+++ b/pkgs/lib/misc.nix
@@ -319,7 +319,8 @@ rec {
 
   # sane defaults (same name as attr name so that inherit can be used)
   mergeAttrBy = # { buildInputs = concatList; [...]; passthru = mergeAttr; [..]; }
-    listToAttrs (map (n : nameValuePair n lib.concat) [ "nativeBuildInputs" "buildInputs" "propagatedBuildInputs" "configureFlags" "prePhases" "postAll" ])
+    listToAttrs (map (n : nameValuePair n lib.concat)
+      [ "nativeBuildInputs" "buildInputs" "propagatedBuildInputs" "configureFlags" "prePhases" "postAll" "patches" ])
     // listToAttrs (map (n : nameValuePair n lib.mergeAttrs) [ "passthru" "meta" "cfg" "flags" ])
     // listToAttrs (map (n : nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ])
   ;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 93e5802b2907..b22f86a79690 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4810,23 +4810,16 @@ let
 
   policykit = callPackage ../development/libraries/policykit { };
 
-  poppler = callPackage ../development/libraries/poppler {
-    glibSupport = true;
-    gtk3Support = false;
-    qt4Support  = false;
-  };
+  poppler = let popplers = callPackage ../development/libraries/poppler { };
+    in popplers // popplers.poppler_glib;
+  popplerQt4 = poppler.poppler_qt4;
+
   poppler_0_18 = callPackage ../development/libraries/poppler/0.18.nix {
     glibSupport = true;
     gtk3Support = false;
     qt4Support  = false;
   };
 
-  popplerQt4 = poppler.override {
-    glibSupport = false;
-    gtk3Support = false;
-    qt4Support  = true;
-  };
-
   popt = callPackage ../development/libraries/popt { };
 
   portaudio = callPackage ../development/libraries/portaudio { };