diff --git a/gnu/local.mk b/gnu/local.mk index 8f9ed312bb..0fd2f788c0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1513,7 +1513,6 @@ dist_patch_DATA = \ %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch \ %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \ %D%/packages/patches/python-axolotl-AES-fix.patch \ - %D%/packages/patches/python-cairocffi-dlopen-path.patch \ %D%/packages/patches/python-cross-compile.patch \ %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \ %D%/packages/patches/python-configobj-setuptools.patch \ diff --git a/gnu/packages/patches/python-cairocffi-dlopen-path.patch b/gnu/packages/patches/python-cairocffi-dlopen-path.patch deleted file mode 100644 index e7a7fe3737..0000000000 --- a/gnu/packages/patches/python-cairocffi-dlopen-path.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- cairocffi-0.8.0/cairocffi/__init__.py.orig 2018-07-16 11:00:59.075664158 +0200 -+++ cairocffi-0.8.0/cairocffi/__init__.py 2018-07-16 17:09:42.471958015 +0200 -@@ -35,6 +35,7 @@ - return lib - except OSError: - pass -+ return ffi.dlopen(name) - raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names)) - - diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 30dacdc8af..931786846a 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -6056,59 +6056,70 @@ support for Python 3 and PyPy. It is based on cffi.") (define-public python-cairocffi (package (name "python-cairocffi") - (version "0.9.0") + (version "1.2.0") (source (origin - (method url-fetch) - (uri (pypi-uri "cairocffi" version)) + ;; The PyPI archive does not include the documentation, so use Git. + (method git-fetch) + (uri (git-reference + (url "https://github.com/Kozea/cairocffi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0dq3k4zhqd8cwsf3nyjqvjqm8wkvrjn1wjf44rl3v0h8kqx6qf0m")) - (patches (search-patches "python-cairocffi-dlopen-path.patch")))) + "1ypw0c2lr43acn57hbmckk183zq4h477j7p4ig2zjvw0mcpvia50")))) (build-system python-build-system) (outputs '("out" "doc")) (inputs `(("glib" ,glib) ("gtk+" ,gtk+) ("gdk-pixbuf" ,gdk-pixbuf) - ("cairo" ,cairo) - ("pango" ,pango))) + ("cairo" ,cairo))) (native-inputs - `(("pkg-config" ,pkg-config) + `(("python-numpy" ,python-numpy) ("python-pytest" ,python-pytest) ("python-pytest-cov" ,python-pytest-cov) ("python-pytest-runner" ,python-pytest-runner) ("python-sphinx" ,python-sphinx) - ("python-docutils" ,python-docutils))) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) (propagated-inputs `(("python-xcffib" ,python-xcffib))) ; used at run time (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-paths - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* (find-files "." "\\.py$") - (("dlopen\\(ffi, 'cairo'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "cairo") - "/lib/libcairo.so.2'")) - (("dlopen\\(ffi, 'gdk-3'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "gtk+") - "/lib/libgtk-3.so.0'")) - (("dlopen\\(ffi, 'gdk_pixbuf-2.0'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "gdk-pixbuf") - "/lib/libgdk_pixbuf-2.0.so.0'")) - (("dlopen\\(ffi, 'glib-2.0'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "glib") - "/lib/libglib-2.0.so.0'")) - (("dlopen\\(ffi, 'gobject-2.0'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "glib") - "/lib/libgobject-2.0.so.0'")) - (("dlopen\\(ffi, 'pangocairo-1.0'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "pango") - "/lib/libpangocairo-1.0.so.0'")) - (("dlopen\\(ffi, 'pango-1.0'") - (string-append "dlopen(ffi, '" (assoc-ref inputs "pango") - "/lib/libpango-1.0.so.0'"))) + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "cairocffi/__init__.py" + ;; Hack the dynamic library loading mechanism. + (("find_library\\(library_name\\)") + "\"found\"") + (("filenames = \\(library_filename,\\) \\+ filenames") + "pass") + (("libcairo.so.2") + (string-append (assoc-ref inputs "cairo") + "/lib/libcairo.so.2"))) + (substitute* "cairocffi/pixbuf.py" + (("libgdk_pixbuf-2.0.so.0") + (string-append (assoc-ref inputs "gdk-pixbuf") + "/lib/libgdk_pixbuf-2.0.so.0")) + (("libgobject-2.0.so.0") + (string-append (assoc-ref inputs "glib") + "/lib/libgobject-2.0.so.0")) + (("libglib-2.0.so.0") + (string-append (assoc-ref inputs "glib") + "/lib/libglib-2.0.so.0")) + (("libgdk-3.so.0") + (string-append (assoc-ref inputs "gtk+") + "/lib/libgdk-3.so.0"))) + #t)) + (add-after 'unpack 'disable-linters + ;; Their check fails; none of our business. + (lambda _ + (substitute* "setup.cfg" + ((".*pytest-flake8.*") "") + ((".*pytest-isort.*") "") + (("--flake8") "") + (("--isort") "")) #t)) (add-after 'install 'install-doc (lambda* (#:key inputs outputs #:allow-other-keys) @@ -6123,7 +6134,7 @@ support for Python 3 and PyPy. It is based on cffi.") (for-each (lambda (file) (copy-file (string-append "." file) (string-append doc file))) - '("/README.rst" "/CHANGES" "/LICENSE")) + '("/README.rst" "/NEWS.rst")) (system* "python" "setup.py" "build_sphinx") (copy-recursively "docs/_build/html" html) #t))))))