diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/pymupdf/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/pymupdf/default.nix | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/pymupdf/default.nix b/nixpkgs/pkgs/development/python-modules/pymupdf/default.nix index d7e69706e51f..1c21e6b90c1a 100644 --- a/nixpkgs/pkgs/development/python-modules/pymupdf/default.nix +++ b/nixpkgs/pkgs/development/python-modules/pymupdf/default.nix @@ -2,9 +2,10 @@ , stdenv , buildPythonPackage , pythonOlder -, fetchPypi +, fetchFromGitHub +, pytestCheckHook +, python , swig -, xcbuild , mupdf , freetype , harfbuzz @@ -13,33 +14,32 @@ , libjpeg_turbo , gumbo , memstreamHook +, fonttools }: -buildPythonPackage rec { +let + # PyMuPDF needs the C++ bindings generated + mupdf-cxx = mupdf.override { enableOcr = true; enableCxx = true; enablePython = true; python3 = python; }; +in buildPythonPackage rec { pname = "pymupdf"; - version = "1.23.3"; + version = "1.23.6"; format = "setuptools"; disabled = pythonOlder "3.7"; - src = fetchPypi { - pname = "PyMuPDF"; - inherit version; - hash = "sha256-AhR4rmx26IWSQdu5cGEskIColX2L1pe7oLRTHcHPT4c="; + src = fetchFromGitHub { + owner = "pymupdf"; + repo = "PyMuPDF"; + rev = version; + hash = "sha256-60KT5+EGP+s7HD4UIeaf9x2QVNU9IUbC5WKEJbrIBCI="; }; - postPatch = '' - substituteInPlace setup.py \ - --replace '/usr/include/mupdf' ${mupdf.dev}/include/mupdf - ''; nativeBuildInputs = [ + pytestCheckHook swig - ] ++ lib.optionals stdenv.isDarwin [ - xcbuild ]; buildInputs = [ - mupdf freetype harfbuzz openjpeg @@ -50,10 +50,40 @@ buildPythonPackage rec { memstreamHook ]; - doCheck = false; + propagatedBuildInputs = [ + mupdf-cxx + ]; + + env = { + # force using system MuPDF (must be defined in environment and empty) + PYMUPDF_SETUP_MUPDF_BUILD = ""; + # provide MuPDF paths + PYMUPDF_MUPDF_LIB = "${lib.getLib mupdf-cxx}/lib"; + PYMUPDF_MUPDF_INCLUDE = "${lib.getDev mupdf-cxx}/include"; + }; + + # TODO: manually add mupdf rpath until upstream fixes it + postInstall = lib.optionalString stdenv.isDarwin '' + for lib in */*.so $out/${python.sitePackages}/*/*.so; do + install_name_tool -add_rpath ${lib.getLib mupdf-cxx}/lib "$lib" + done + ''; + + checkInputs = [ + fonttools + ]; + + disabledTests = [ + # fails for indeterminate reasons + "test_color_count" + ] ++ lib.optionals stdenv.isDarwin [ + # darwin does not support OCR right now + "test_tesseract" + ]; pythonImportsCheck = [ "fitz" + "fitz_new" ]; meta = with lib; { |