Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
2.0 kB · 54 lines
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455Patch dlopen() to allow direct paths to all required libs
diff --git a/cairocffi/__init__.py b/cairocffi/__init__.pyindex f917d90..31dab12 100644--- a/cairocffi/__init__.py+++ b/cairocffi/__init__.py@@ -22,6 +22,14 @@ VERSION = __version__ = '1.7.1' 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@',+} # Python 3.8 no longer searches for DLLs in PATH, so we can add everything in # CAIROCFFI_DLL_DIRECTORIES manually. Note that unlike PATH, add_dll_directory@@ -36,26 +44,14 @@ if dll_directories and hasattr(os, 'add_dll_directory'): 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( ffi, ('cairo-2', 'cairo', 'libcairo-2'),