From c3fc0f3025a5ef1661bac73b654e037cdf986efd Mon Sep 17 00:00:00 2001 From: Yoni Rozenshein Date: Mon, 18 Jun 2018 12:44:08 +0300 Subject: [PATCH 1/2] Support nanoconfig on OS X --- _nanomsg_ctypes/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_nanomsg_ctypes/__init__.py b/_nanomsg_ctypes/__init__.py index 43aefc1..58ebd8e 100644 --- a/_nanomsg_ctypes/__init__.py +++ b/_nanomsg_ctypes/__init__.py @@ -273,6 +273,8 @@ def nn_recv(socket, *args): try: if sys.platform in ('win32', 'cygwin'): _nclib = ctypes.windll.nanoconfig + elif sys.platform == 'darwin': + _nclib = ctypes.cdll.LoadLibrary('libnanoconfig.dylib') else: _nclib = ctypes.cdll.LoadLibrary('libnanoconfig.so') except OSError: From e05ee8a490e982ba2546e784e78c099f98fc76bb Mon Sep 17 00:00:00 2001 From: Yoni Rozenshein Date: Mon, 18 Jun 2018 12:46:50 +0300 Subject: [PATCH 2/2] Allow configuring library paths via env variables --- _nanomsg_ctypes/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/_nanomsg_ctypes/__init__.py b/_nanomsg_ctypes/__init__.py index 58ebd8e..d25a43a 100644 --- a/_nanomsg_ctypes/__init__.py +++ b/_nanomsg_ctypes/__init__.py @@ -2,18 +2,19 @@ unicode_literals import ctypes +import os import platform import sys if sys.platform in ('win32', 'cygwin'): _functype = ctypes.WINFUNCTYPE - _lib = ctypes.windll.nanomsg + _lib = ctypes.windll.LoadLibrary(os.environ.get('NN_CTYPES_LIB_PATH', 'nanomsg')) elif sys.platform == 'darwin': _functype = ctypes.CFUNCTYPE - _lib = ctypes.cdll.LoadLibrary('libnanomsg.dylib') + _lib = ctypes.cdll.LoadLibrary(os.environ.get('NN_CTYPES_LIB_PATH', 'libnanomsg.dylib')) else: _functype = ctypes.CFUNCTYPE - _lib = ctypes.cdll.LoadLibrary('libnanomsg.so') + _lib = ctypes.cdll.LoadLibrary(os.environ.get('NN_CTYPES_LIB_PATH', 'libnanomsg.so')) def _c_func_wrapper_factory(cdecl_text): @@ -272,11 +273,11 @@ def nn_recv(socket, *args): try: if sys.platform in ('win32', 'cygwin'): - _nclib = ctypes.windll.nanoconfig + _nclib = ctypes.windll.LoadLibrary(os.environ.get('NN_CTYPES_NCLIB_PATH', 'nanoconfig')) elif sys.platform == 'darwin': - _nclib = ctypes.cdll.LoadLibrary('libnanoconfig.dylib') + _nclib = ctypes.cdll.LoadLibrary(os.environ.get('NN_CTYPES_NCLIB_PATH', 'libnanoconfig.dylib')) else: - _nclib = ctypes.cdll.LoadLibrary('libnanoconfig.so') + _nclib = ctypes.cdll.LoadLibrary(os.environ.get('NN_CTYPES_NCLIB_PATH', 'libnanoconfig.so')) except OSError: pass # No nanoconfig, sorry else: