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.
This commit is contained in:
parent
b37b73a56c
commit
5e4aa51173
|
@ -1,17 +1,12 @@
|
||||||
{ stdenv, fetchurl, fetchgit, cairo, freetype, fontconfig, zlib
|
{ stdenv, fetchurl, fetchgit, cairo, freetype, fontconfig, zlib
|
||||||
, libjpeg, curl, libpthreadstubs, xorg, openjpeg
|
, libjpeg, curl, libpthreadstubs, xorg, openjpeg
|
||||||
, libxml2, pkgconfig, cmake, lcms2
|
, libxml2, pkgconfig, cmake, lcms2
|
||||||
, glibSupport ? false, glib, gtk3Support ? false, gtk3 # gtk2 no longer accepted
|
|
||||||
, qt4Support ? false, qt4 ? null
|
, qt4Support ? false, qt4 ? null
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
name = "poppler-0.22.3";
|
version = "0.22.3";
|
||||||
|
sha256 = "0ca4jci8xmbdz4fhahdcck0cqms6ax55yggi2ih3clgrpqf96sli";
|
||||||
src = fetchurl {
|
|
||||||
url = "${meta.homepage}${name}.tar.gz";
|
|
||||||
sha256 = "0ca4jci8xmbdz4fhahdcck0cqms6ax55yggi2ih3clgrpqf96sli";
|
|
||||||
};
|
|
||||||
|
|
||||||
qtcairo_patches =
|
qtcairo_patches =
|
||||||
let qtcairo = fetchgit { # the version for poppler-0.22
|
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}/0002-Setting-default-Qt4-backend-to-Cairo.patch"
|
||||||
"${qtcairo}/0003-Forcing-subpixel-rendering-in-Cairo-backend.patch" ];
|
"${qtcairo}/0003-Forcing-subpixel-rendering-in-Cairo-backend.patch" ];
|
||||||
|
|
||||||
|
poppler_drv = nameSuff: merge: stdenv.mkDerivation (stdenv.lib.mergeAttrsByFuncDefaultsClean [
|
||||||
|
rec {
|
||||||
|
name = "poppler-${nameSuff}-${version}";
|
||||||
|
|
||||||
propagatedBuildInputs = with xorg;
|
src = fetchurl {
|
||||||
[ zlib cairo freetype fontconfig libjpeg lcms2 curl
|
url = "${meta.homepage}/poppler-${version}.tar.gz";
|
||||||
libpthreadstubs libxml2 stdenv.gcc.libc
|
inherit sha256;
|
||||||
libXau libXdmcp libxcb libXrender libXext
|
};
|
||||||
openjpeg
|
|
||||||
]
|
|
||||||
++ stdenv.lib.optional glibSupport glib
|
|
||||||
++ stdenv.lib.optional gtk3Support gtk3
|
|
||||||
++ stdenv.lib.optional qt4Support qt4;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig cmake ];
|
propagatedBuildInputs = with xorg;
|
||||||
|
[ zlib cairo freetype fontconfig libjpeg lcms2 curl
|
||||||
|
libpthreadstubs libxml2
|
||||||
|
libXau libXdmcp libxcb libXrender libXext
|
||||||
|
openjpeg
|
||||||
|
];
|
||||||
|
|
||||||
cmakeFlags = "-DENABLE_XPDF_HEADERS=ON -DENABLE_LIBCURL=ON -DENABLE_ZLIB=ON";
|
nativeBuildInputs = [ pkgconfig cmake ];
|
||||||
|
|
||||||
patches = [ ./datadir_env.patch ] ++ stdenv.lib.optionals qt4Support qtcairo_patches;
|
cmakeFlags = "-DENABLE_XPDF_HEADERS=ON -DENABLE_LIBCURL=ON -DENABLE_ZLIB=ON";
|
||||||
|
|
||||||
# XXX: The Poppler/Qt4 test suite refers to non-existent PDF files
|
patches = [ ./datadir_env.patch ];
|
||||||
# such as `../../../test/unittestcases/UseNone.pdf'.
|
|
||||||
#doCheck = !qt4Support;
|
|
||||||
checkTarget = "test";
|
|
||||||
|
|
||||||
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 = {
|
enableParallelBuilding = true;
|
||||||
homepage = http://poppler.freedesktop.org/;
|
|
||||||
description = "Poppler, a PDF rendering library";
|
|
||||||
|
|
||||||
longDescription = ''
|
meta = {
|
||||||
Poppler is a PDF rendering library based on the xpdf-3.0 code base.
|
homepage = http://poppler.freedesktop.org/;
|
||||||
'';
|
description = "A PDF rendering library";
|
||||||
|
|
||||||
platforms = if qt4Support
|
longDescription = ''
|
||||||
then qt4.meta.platforms
|
Poppler is a PDF rendering library based on the xpdf-3.0 code base.
|
||||||
else stdenv.lib.platforms.all;
|
'';
|
||||||
|
|
||||||
license = "GPLv2";
|
license = "GPLv2";
|
||||||
|
};
|
||||||
|
} merge ]); # poppler_drv
|
||||||
|
|
||||||
|
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).
|
||||||
|
*/
|
||||||
|
|
||||||
|
poppler_glib = poppler_drv "glib" { };
|
||||||
|
|
||||||
|
poppler_qt4 = poppler_drv "qt4" {
|
||||||
|
propagatedBuildInputs = [ qt4 poppler_glib ];
|
||||||
|
patches = qtcairo_patches;
|
||||||
|
postConfigure = "cd qt4";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -319,7 +319,8 @@ rec {
|
||||||
|
|
||||||
# sane defaults (same name as attr name so that inherit can be used)
|
# sane defaults (same name as attr name so that inherit can be used)
|
||||||
mergeAttrBy = # { buildInputs = concatList; [...]; passthru = mergeAttr; [..]; }
|
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 lib.mergeAttrs) [ "passthru" "meta" "cfg" "flags" ])
|
||||||
// listToAttrs (map (n : nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ])
|
// listToAttrs (map (n : nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ])
|
||||||
;
|
;
|
||||||
|
|
|
@ -4810,23 +4810,16 @@ let
|
||||||
|
|
||||||
policykit = callPackage ../development/libraries/policykit { };
|
policykit = callPackage ../development/libraries/policykit { };
|
||||||
|
|
||||||
poppler = callPackage ../development/libraries/poppler {
|
poppler = let popplers = callPackage ../development/libraries/poppler { };
|
||||||
glibSupport = true;
|
in popplers // popplers.poppler_glib;
|
||||||
gtk3Support = false;
|
popplerQt4 = poppler.poppler_qt4;
|
||||||
qt4Support = false;
|
|
||||||
};
|
|
||||||
poppler_0_18 = callPackage ../development/libraries/poppler/0.18.nix {
|
poppler_0_18 = callPackage ../development/libraries/poppler/0.18.nix {
|
||||||
glibSupport = true;
|
glibSupport = true;
|
||||||
gtk3Support = false;
|
gtk3Support = false;
|
||||||
qt4Support = false;
|
qt4Support = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
popplerQt4 = poppler.override {
|
|
||||||
glibSupport = false;
|
|
||||||
gtk3Support = false;
|
|
||||||
qt4Support = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
popt = callPackage ../development/libraries/popt { };
|
popt = callPackage ../development/libraries/popt { };
|
||||||
|
|
||||||
portaudio = callPackage ../development/libraries/portaudio { };
|
portaudio = callPackage ../development/libraries/portaudio { };
|
||||||
|
|
Loading…
Reference in a new issue