gnu: Add python-pyvips.

* gnu/packages/python-xyz.scm (python-pyvips): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Paul A. Patience 2022-05-02 21:17:23 +00:00 committed by Ludovic Courtès
parent 62f16063a1
commit 3a36e5409c
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -179,6 +179,7 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages inkscape)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages jupyter)
#:use-module (gnu packages kerberos)
@ -7739,6 +7740,65 @@ write a wide range of image data, including animated images, video, volumetric
data, and scientific formats.")
(license license:bsd-2)))
(define-public python-pyvips
(package
(name "python-pyvips")
(version "2.2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyvips" version))
(sha256
(base32 "0lq71iiic4pc8qhxr60gi141w25pjnn4vsh05d5l0fjkgjsv137b"))))
(build-system python-build-system)
(arguments
(list #:phases
#~(modify-phases %standard-phases
;; Maybe switch to API mode (i.e., build the C extension)?
;; It is advertised as faster to start up and run.
;; However, even with pkg-config and python-pkgconfig in
;; native-inputs, the API mode build fails with:
;;
;; Falling back to ABI mode. Details: unable to find pkg-config package "vips"
;;
;; The build doesn't actually fail without the below
;; substitution, it's just slower because setup.py tries
;; (unsuccessfully) to download the Python pkgconfig module.
(add-after 'unpack 'fix-build
(lambda _
(substitute* "setup.py"
(("^( +setup_)API\\(\\)\n" _ prefix)
(string-append prefix "ABI()\n")))))
(add-after 'unpack 'fix-paths
(lambda _
(substitute* "pyvips/__init__.py"
(("^( +_vips_libname) = '(libvips.so.42)'"
_ var libname)
(format #f "~a = '~a/lib/~a'"
var #$(this-package-input "vips") libname))
(("^( +_gobject_libname) = '(libgobject-2.0.so.0)'"
_ var libname)
(format #f "~a = '~a/lib/~a'"
var #$(this-package-input "glib") libname)))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python" "setup.py" "test")))))))
(native-inputs
(list python-pyperf
python-pytest
python-pytest-flake8
python-pytest-runner))
(inputs
(list glib vips))
(propagated-inputs
(list python-cffi))
(home-page "https://github.com/libvips/pyvips")
(synopsis "Python bindings for VIPS")
(description "The @code{pyvips} package provides Python bindings for VIPS,
a multithreaded image-processing system with low memory needs.")
(license license:expat)))
(define-public python-pycparser
(package
(name "python-pycparser")