mirror of
https://github.com/python/cpython.git
synced 2025-10-19 16:03:42 +00:00
[3.14] gh-140041: Fix import of ctypes
on Android and Cygwin when ABI flags are present (GH-140178) (#140180)
Use sysconfig to determine the full name of libpython, rather than hardcoding
a library name that doesn't have ABI flags.
(cherry picked from commit 7f371ed84b
)
Co-authored-by: Malcolm Smith <smith@chaquo.com>
This commit is contained in:
parent
5caf64335c
commit
504bf76dd2
3 changed files with 12 additions and 9 deletions
|
@ -47,7 +47,7 @@ for ((i, prefix) in prefixes.withIndex()) {
|
|||
val libDir = file("$prefix/lib")
|
||||
val version = run {
|
||||
for (filename in libDir.list()!!) {
|
||||
"""python(\d+\.\d+)""".toRegex().matchEntire(filename)?.let {
|
||||
"""python(\d+\.\d+[a-z]*)""".toRegex().matchEntire(filename)?.let {
|
||||
return@run it.groupValues[1]
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +64,8 @@ for ((i, prefix) in prefixes.withIndex()) {
|
|||
val libPythonDir = file("$libDir/python$pythonVersion")
|
||||
val triplet = run {
|
||||
for (filename in libPythonDir.list()!!) {
|
||||
"""_sysconfigdata__android_(.+).py""".toRegex().matchEntire(filename)?.let {
|
||||
"""_sysconfigdata_[a-z]*_android_(.+).py""".toRegex()
|
||||
.matchEntire(filename)?.let {
|
||||
return@run it.groupValues[1]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
"""create and manipulate C data types in Python"""
|
||||
|
||||
import os as _os, sys as _sys
|
||||
import os as _os
|
||||
import sys as _sys
|
||||
import sysconfig as _sysconfig
|
||||
import types as _types
|
||||
|
||||
__version__ = "1.1.0"
|
||||
|
@ -556,10 +558,9 @@ def LoadLibrary(self, name):
|
|||
|
||||
if _os.name == "nt":
|
||||
pythonapi = PyDLL("python dll", None, _sys.dllhandle)
|
||||
elif _sys.platform == "android":
|
||||
pythonapi = PyDLL("libpython%d.%d.so" % _sys.version_info[:2])
|
||||
elif _sys.platform == "cygwin":
|
||||
pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2])
|
||||
elif _sys.platform in ["android", "cygwin"]:
|
||||
# These are Unix-like platforms which use a dynamically-linked libpython.
|
||||
pythonapi = PyDLL(_sysconfig.get_config_var("LDLIBRARY"))
|
||||
else:
|
||||
pythonapi = PyDLL(None)
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix import of :mod:`ctypes` on Android and Cygwin when ABI flags are present.
|
Loading…
Add table
Add a link
Reference in a new issue