diff options
Diffstat (limited to 'pkgs/development/libraries/poppler/default.nix')
-rw-r--r-- | pkgs/development/libraries/poppler/default.nix | 94 |
1 files changed, 60 insertions, 34 deletions
diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix index 1d796789210c..263162336485 100644 --- a/pkgs/development/libraries/poppler/default.nix +++ b/pkgs/development/libraries/poppler/default.nix @@ -1,50 +1,76 @@ -{ 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, cairo, freetype, fontconfig, zlib +, libjpeg, curl, libpthreadstubs, xorg, openjpeg +, libxml2, pkgconfig, cmake, lcms2 , qt4Support ? false, qt4 ? null }: -stdenv.mkDerivation rec { - name = "poppler-0.22.4"; +let + version = "0.22.3"; + sha256 = "0ca4jci8xmbdz4fhahdcck0cqms6ax55yggi2ih3clgrpqf96sli"; - 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 = with xorg; + [ zlib cairo freetype fontconfig libjpeg lcms2 curl + libpthreadstubs libxml2 + libXau libXdmcp libxcb libXrender libXext + openjpeg + ]; + + nativeBuildInputs = [ pkgconfig cmake ]; - 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"; + }; + } 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"; }; } |