Python package: fix .libs on macOS with external Python (#33410)
For some instances of externally-provided Python (e.g. Homebrew), the LDLIBRARY/LIBRARY config variables don't actually refer to libraries and should therefore be excluded from ".libs".
This commit is contained in:
parent
13565df027
commit
33e5e77225
@ -1250,12 +1250,29 @@ def libs(self):
|
|||||||
# The values of LDLIBRARY and LIBRARY aren't reliable. Intel Python uses a
|
# The values of LDLIBRARY and LIBRARY aren't reliable. Intel Python uses a
|
||||||
# static binary but installs shared libraries, so sysconfig reports
|
# static binary but installs shared libraries, so sysconfig reports
|
||||||
# libpythonX.Y.a but only libpythonX.Y.so exists. So we add our own paths, too.
|
# libpythonX.Y.a but only libpythonX.Y.so exists. So we add our own paths, too.
|
||||||
shared_libs = [
|
|
||||||
self.config_vars["LDLIBRARY"],
|
# With framework python on macOS, self.config_vars["LDLIBRARY"] can point
|
||||||
|
# to a library that is not linkable because it does not have the required
|
||||||
|
# suffix of a shared library (it is called "Python" without extention).
|
||||||
|
# The linker then falls back to libPython.tbd in the default macOS
|
||||||
|
# software tree, which security settings prohibit to link against
|
||||||
|
# (your binary is not an allowed client of /path/to/libPython.tbd).
|
||||||
|
# To avoid this, we replace the entry in config_vars with a default value.
|
||||||
|
file_extension_shared = os.path.splitext(self.config_vars["LDLIBRARY"])[-1]
|
||||||
|
if file_extension_shared == "":
|
||||||
|
shared_libs = []
|
||||||
|
else:
|
||||||
|
shared_libs = [self.config_vars["LDLIBRARY"]]
|
||||||
|
shared_libs += [
|
||||||
"{}python{}.{}".format(lib_prefix, py_version, dso_suffix),
|
"{}python{}.{}".format(lib_prefix, py_version, dso_suffix),
|
||||||
]
|
]
|
||||||
static_libs = [
|
# Like LDLIBRARY for Python on Mac OS, LIBRARY may refer to an un-linkable object
|
||||||
self.config_vars["LIBRARY"],
|
file_extension_static = os.path.splitext(self.config_vars["LIBRARY"])[-1]
|
||||||
|
if file_extension_static == "":
|
||||||
|
static_libs = []
|
||||||
|
else:
|
||||||
|
static_libs = [self.config_vars["LIBRARY"]]
|
||||||
|
static_libs += [
|
||||||
"{}python{}.{}".format(lib_prefix, py_version, stat_suffix),
|
"{}python{}.{}".format(lib_prefix, py_version, stat_suffix),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user