7ff2638b7f
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
61 lines
2 KiB
Diff
61 lines
2 KiB
Diff
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>
|
|
|
|
---
|
|
cairocffi/__init__.py | 34 ++++++++++++++++------------------
|
|
1 file changed, 16 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
|
|
index 307d58c..43c29e3 100644
|
|
--- a/cairocffi/__init__.py
|
|
+++ b/cairocffi/__init__.py
|
|
@@ -21,28 +21,26 @@ VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip()
|
|
version = '1.17.2'
|
|
version_info = (1, 17, 2)
|
|
|
|
+# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be
|
|
+# required for runtime
|
|
+_LIBS = {
|
|
+ 'cairo': '@cairo@/lib/libcairo@ext@',
|
|
+ 'glib-2.0': '@glib@/lib/libglib-2.0@ext@',
|
|
+ 'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@',
|
|
+ 'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@',
|
|
+}
|
|
+
|
|
|
|
def dlopen(ffi, library_names, filenames):
|
|
"""Try various names for the same library, for different platforms."""
|
|
- exceptions = []
|
|
-
|
|
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:
|
|
- return ffi.dlopen(filename)
|
|
- except OSError as exception: # pragma: no cover
|
|
- exceptions.append(exception)
|
|
-
|
|
- error_message = '\n'.join( # pragma: no cover
|
|
- str(exception) for exception in exceptions)
|
|
- raise OSError(error_message) # pragma: no cover
|
|
+ path = _LIBS.get(library_name, None)
|
|
+ if path:
|
|
+ lib = ffi.dlopen(path)
|
|
+ if lib:
|
|
+ return lib
|
|
+
|
|
+ raise OSError("dlopen() failed to load a library: %s as %s" % (library_name, path))
|
|
|
|
|
|
cairo = dlopen(
|
|
--
|
|
2.19.2
|