nixpkgs/pkgs/development/libraries/poppler/default.nix
Trolli Schmittlauch 84aa23742f
poppler: build with nss by default for signature support (#124294)
Since 21.01, poppler supports PDF signing. As applications like okular
start to make use of that feature, nss support for poppler is enabled by
default to avoid unnecessary package duplication.
When building a `minimal` version of poppler, nss is disabled as well.

closes #120928
2021-05-26 15:57:38 -04:00

113 lines
2.4 KiB
Nix

{ stdenv
, lib
, fetchurl
, fetchpatch
, cmake
, ninja
, pkg-config
, libiconv
, libintl
, zlib
, curl
, cairo
, freetype
, fontconfig
, lcms
, libjpeg
, openjpeg
, withData ? true, poppler_data
, qt5Support ? false, qtbase ? null
, introspectionSupport ? false, gobject-introspection ? null
, utils ? false, nss ? null
, minimal ? false
, suffix ? "glib"
, inkscape
, cups-filters
, texlive
, scribusUnstable
}:
let
mkFlag = optset: flag: "-DENABLE_${flag}=${if optset then "on" else "off"}";
in
stdenv.mkDerivation rec {
name = "poppler-${suffix}-${version}";
version = "21.05.0"; # beware: updates often break cups-filters build, check texlive and scribusUnstable too!
outputs = [ "out" "dev" ];
src = fetchurl {
url = "${meta.homepage}/poppler-${version}.tar.xz";
sha256 = "sha256-2v1Te2gPrRIVvED8U9HzjoRJ18GFvGDVqJ4dJskNvYw=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
buildInputs = [
libiconv
libintl
] ++ lib.optional withData [
poppler_data
];
# TODO: reduce propagation to necessary libs
propagatedBuildInputs = [
zlib
freetype
fontconfig
libjpeg
openjpeg
] ++ lib.optionals (!minimal) [
cairo
lcms
curl
nss
] ++ lib.optionals qt5Support [
qtbase
] ++ lib.optionals introspectionSupport [
gobject-introspection
];
cmakeFlags = [
(mkFlag true "UNSTABLE_API_ABI_HEADERS") # previously "XPDF_HEADERS"
(mkFlag (!minimal) "GLIB")
(mkFlag (!minimal) "CPP")
(mkFlag (!minimal) "LIBCURL")
(mkFlag utils "UTILS")
(mkFlag qt5Support "QT5")
];
dontWrapQtApps = true;
# Workaround #54606
preConfigure = lib.optionalString stdenv.isDarwin ''
sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt
'';
passthru = {
tests = {
# These depend on internal poppler code that frequently changes.
inherit inkscape cups-filters texlive scribusUnstable;
};
};
meta = with lib; {
homepage = "https://poppler.freedesktop.org/";
description = "A PDF rendering library";
longDescription = ''
Poppler is a PDF rendering library based on the xpdf-3.0 code
base. In addition it provides a number of tools that can be
installed separately.
'';
license = licenses.gpl2Plus;
platforms = platforms.all;
maintainers = with maintainers; [ ttuegel ] ++ teams.freedesktop.members;
};
}