pythonPackages.cairocffi: v1.0.2 -> v.1.1.0

The tests were failing due the switch to pytest5.
This issue has been addressed upstream in
a500f20866
which is included in v.1.1.0, so bumping the version and
updating the old patch.

Hydra log of the failure:
https://hydra.nixos.org/build/100785460/nixlog/6
This commit is contained in:
Dima 2019-09-22 16:27:36 +02:00
parent 980a309219
commit 7ff2638b7f
2 changed files with 46 additions and 31 deletions

@ -19,8 +19,8 @@
}@args: }@args:
import ./generic.nix ({ import ./generic.nix ({
version = "1.0.2"; version = "1.1.0";
sha256 = "01ac51ae12c4324ca5809ce270f9dd1b67f5166fe63bd3e497e9ea3ca91946ff"; sha256 = "1nq53f5jipgy9jgyfxp43j40qfbmrhgn1cj8bp5rrb3liy3wbh7i";
dlopen_patch = ./dlopen-paths.patch; dlopen_patch = ./dlopen-paths.patch;
disabled = pythonOlder "3.5"; disabled = pythonOlder "3.5";
inherit withXcffib; inherit withXcffib;

@ -1,46 +1,61 @@
commit 0435bc2577d4b18f54b78b2f5185abb2b2005982 Patch dlopen() to allow direct paths to all required libs
Author: Alexander V. Nikolaev <avn@avnik.info>
Date: Sat Feb 6 08:09:06 2016 +0200
Patch dlopen() to allow direct paths to all required libs This is an update of the patch submitted in
https://github.com/NixOS/nixpkgs/commit/b13e44e094989d3a902f8c73b22e8d3c0cc7acf4
by Alexander V. Nikolaev <avn@avnik.info>
This patch is NixOS specific ---
cairocffi/__init__.py | 34 ++++++++++++++++------------------
1 file changed, 16 insertions(+), 18 deletions(-)
diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
index 6061973..3538a58 100644 index 307d58c..43c29e3 100644
--- a/cairocffi/__init__.py --- a/cairocffi/__init__.py
+++ b/cairocffi/__init__.py +++ b/cairocffi/__init__.py
@@ -21,19 +21,22 @@ VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip() @@ -21,28 +21,26 @@ VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip()
version = '1.16.0' version = '1.17.2'
version_info = (1, 16, 0) version_info = (1, 17, 2)
+# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be required for runtime +# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be
+# required for runtime
+_LIBS = { +_LIBS = {
+ 'cairo': '@cairo@/lib/libcairo@ext@', + 'cairo': '@cairo@/lib/libcairo@ext@',
+ 'glib-2.0': '@glib@/lib/libglib-2.0@ext@', + 'glib-2.0': '@glib@/lib/libglib-2.0@ext@',
+ 'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@', + 'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@',
+ 'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@', + 'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@',
+} +}
+
-def dlopen(ffi, *names): def dlopen(ffi, library_names, filenames):
+def dlopen(ffi, name, *names):
"""Try various names for the same library, for different platforms.""" """Try various names for the same library, for different platforms."""
- for name in names: - exceptions = []
- for lib_name in (name, 'lib' + name): -
for library_name in library_names:
- library_filename = find_library(library_name)
- if library_filename:
- filenames = (library_filename,) + filenames
- else:
- exceptions.append(
- 'no library called "{}" was found'.format(library_name))
-
- for filename in filenames:
- try: - try:
- path = ctypes.util.find_library(lib_name) - return ffi.dlopen(filename)
- lib = ffi.dlopen(path or lib_name) - except OSError as exception: # pragma: no cover
- if lib: - exceptions.append(exception)
- return lib -
- except OSError: - error_message = '\n'.join( # pragma: no cover
- pass - str(exception) for exception in exceptions)
- raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names)) - raise OSError(error_message) # pragma: no cover
+ path = _LIBS.get(name, None) + path = _LIBS.get(library_name, None)
+ if path: + if path:
+ lib = ffi.dlopen(path) + lib = ffi.dlopen(path)
+ if lib: + if lib:
+ return lib + return lib
+ raise OSError("dlopen() failed to load a library: %s as %s" % (name, path)) +
+ raise OSError("dlopen() failed to load a library: %s as %s" % (library_name, path))
cairo = dlopen(ffi, 'cairo', 'cairo-2', 'cairo-gobject-2', 'cairo.so.2') cairo = dlopen(
--
2.19.2