Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python-modules / pymupdf / default.nix
blob1c21e6b90c1a4427f750db1a195801a4c31d10cb
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , pythonOlder
5 , fetchFromGitHub
6 , pytestCheckHook
7 , python
8 , swig
9 , mupdf
10 , freetype
11 , harfbuzz
12 , openjpeg
13 , jbig2dec
14 , libjpeg_turbo
15 , gumbo
16 , memstreamHook
17 , fonttools
20 let
21   # PyMuPDF needs the C++ bindings generated
22   mupdf-cxx = mupdf.override { enableOcr = true; enableCxx = true; enablePython = true; python3 = python; };
23 in buildPythonPackage rec {
24   pname = "pymupdf";
25   version = "1.23.6";
26   format = "setuptools";
28   disabled = pythonOlder "3.7";
30   src = fetchFromGitHub {
31     owner = "pymupdf";
32     repo = "PyMuPDF";
33     rev = version;
34     hash = "sha256-60KT5+EGP+s7HD4UIeaf9x2QVNU9IUbC5WKEJbrIBCI=";
35   };
37   nativeBuildInputs = [
38     pytestCheckHook
39     swig
40   ];
42   buildInputs = [
43     freetype
44     harfbuzz
45     openjpeg
46     jbig2dec
47     libjpeg_turbo
48     gumbo
49   ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [
50     memstreamHook
51   ];
53   propagatedBuildInputs = [
54     mupdf-cxx
55   ];
57   env = {
58     # force using system MuPDF (must be defined in environment and empty)
59     PYMUPDF_SETUP_MUPDF_BUILD = "";
60     # provide MuPDF paths
61     PYMUPDF_MUPDF_LIB = "${lib.getLib mupdf-cxx}/lib";
62     PYMUPDF_MUPDF_INCLUDE = "${lib.getDev mupdf-cxx}/include";
63   };
65   # TODO: manually add mupdf rpath until upstream fixes it
66   postInstall = lib.optionalString stdenv.isDarwin ''
67     for lib in */*.so $out/${python.sitePackages}/*/*.so; do
68       install_name_tool -add_rpath ${lib.getLib mupdf-cxx}/lib "$lib"
69     done
70   '';
72   checkInputs = [
73     fonttools
74   ];
76   disabledTests = [
77     # fails for indeterminate reasons
78     "test_color_count"
79   ] ++ lib.optionals stdenv.isDarwin [
80     # darwin does not support OCR right now
81     "test_tesseract"
82   ];
84   pythonImportsCheck = [
85     "fitz"
86     "fitz_new"
87   ];
89   meta = with lib; {
90     description = "Python bindings for MuPDF's rendering library";
91     homepage = "https://github.com/pymupdf/PyMuPDF";
92     changelog = "https://github.com/pymupdf/PyMuPDF/releases/tag/${version}";
93     license = licenses.agpl3Only;
94     maintainers = with maintainers; [ teto ];
95     platforms = platforms.unix;
96   };