diff options
author | Chris Liechti <cliechti@gmx.net> | 2020-09-15 20:13:39 +0200 |
---|---|---|
committer | Chris Liechti <cliechti@gmx.net> | 2020-09-15 20:13:39 +0200 |
commit | b2b36cfc956e86d54e681bf25059a5bcb28d7ce5 (patch) | |
tree | 13883609b9dc081035427c49e3e52775b6308f8a | |
parent | 690a8d0992c6374c1892308ea798acc379c736f6 (diff) | |
download | pyserial-git-518-osx-workaround.tar.gz |
osx: possible workaround for loading libraries on Mac OS 11518-osx-workaround
try different paths before using find_libary()
related to #518
-rw-r--r-- | serial/tools/list_ports_osx.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/serial/tools/list_ports_osx.py b/serial/tools/list_ports_osx.py index 34a7f5a..712964e 100644 --- a/serial/tools/list_ports_osx.py +++ b/serial/tools/list_ports_osx.py @@ -28,8 +28,23 @@ import ctypes.util from serial.tools import list_ports_common -iokit = ctypes.cdll.LoadLibrary(ctypes.util.find_library('IOKit')) -cf = ctypes.cdll.LoadLibrary(ctypes.util.find_library('CoreFoundation')) + +def load_library(name): + # osx changed some things which triggers a python issue (python/cpython#21241) + # try loading with paths first before falling back to find_library + for candidate in [ + '/System/Library/Frameworks/{0}.framework/{0}'.format(name), + '/System/Library/Frameworks/{0}.framework/Versions/A/{0}'.format(name), + ]: + try: + return ctypes.cdll.LoadLibrary(candidate) + except OSError: + pass + return ctypes.cdll.LoadLibrary(ctypes.util.find_library(name)) + + +iokit = load_library('IOKit') +cf = load_library('CoreFoundation') kIOMasterPortDefault = ctypes.c_void_p.in_dll(iokit, "kIOMasterPortDefault") kCFAllocatorDefault = ctypes.c_void_p.in_dll(cf, "kCFAllocatorDefault") |