[New-bugs-announce] [issue41179] find_library on macOS Big Sur
report at bugs.python.org
Tue Jun 30 22:10:57 EDT 2020
New submission from Sumanth Ratna <sumanthratna at gmail.com>:
The following all return None on macOS Big Sur, but return a valid path (str) on macOS Catalina:
python3.6 -c "from ctypes import util; print(util.find_library('objc'))"
python3.7 -c "from ctypes import util; print(util.find_library('objc'))"
python3.8 -c "from ctypes import util; print(util.find_library('objc'))"
The solution I'm thinking of is using platform.mac_ver() in ctypes.util.find_library to see if the macOS version is either 10.16 or 11.0; if so, use an alternative method to locate the path of the library somehow—else, use the current functionality. I'm hoping that looking in /System/Library/Frameworks/ is enough.
>From the macOS Big Sur release notes (https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11-beta-release-notes):
> New in macOS Big Sur 11 beta, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to `dlopen()` the path, which will correctly check for the library in the cache. (62986286)
- https://bugs.python.org/issue41116 (this is a build issue, but is related I think)
This is my first issue in Python; sorry in advance if I've made a mistake anywhere.
nosy: Sumanth Ratna
title: find_library on macOS Big Sur
versions: Python 3.6, Python 3.7, Python 3.8
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce