Skip to content

Commit d6355bc

Browse files
committed
sysconfig.get_platform(): use consistent naming
Currently, the platform names are hardcoded in many places, and are not named consistently. This commit fixes it by standardizing the names to be returned by `sysconfig.get_platform`. The naming is based on #167 (comment) Similarly, `EXT_SUFFIX` is also standardized to be consistent with the platform names. Signed-off-by: Naveen M K <[email protected]>
1 parent ce773f3 commit d6355bc

File tree

5 files changed

+83
-75
lines changed

5 files changed

+83
-75
lines changed

Lib/site.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -314,21 +314,27 @@ def joinuser(*args):
314314
def _get_platform():
315315
if os.name == 'nt':
316316
if 'gcc' in sys.version.lower():
317+
platform = 'mingw'
318+
if 'amd64' in sys.version.lower():
319+
platform += '_x86_64'
320+
elif 'arm64' in sys.version.lower():
321+
platform += '_aarch64'
322+
elif 'arm' in sys.version.lower():
323+
platform += '_armv7'
324+
else:
325+
platform += '_i686'
326+
317327
if 'ucrt' in sys.version.lower():
318-
if 'amd64' in sys.version.lower():
319-
return 'mingw_x86_64_ucrt'
320-
return 'mingw_i686_ucrt'
328+
platform += '_ucrt'
329+
else:
330+
platform += "_msvcrt"
331+
321332
if 'clang' in sys.version.lower():
322-
if 'amd64' in sys.version.lower():
323-
return 'mingw_x86_64_clang'
324-
if 'arm64' in sys.version.lower():
325-
return 'mingw_aarch64'
326-
if 'arm' in sys.version.lower():
327-
return 'mingw_armv7'
328-
return 'mingw_i686_clang'
329-
if 'amd64' in sys.version.lower():
330-
return 'mingw_x86_64'
331-
return 'mingw_i686'
333+
platform += "_llvm"
334+
else:
335+
platform += "_gnu"
336+
337+
return platform
332338
return sys.platform
333339

334340
# Same to sysconfig.get_path('purelib', os.name+'_user')

Lib/sysconfig.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -800,21 +800,27 @@ def get_platform():
800800
"""
801801
if os.name == 'nt':
802802
if 'gcc' in sys.version.lower():
803+
platform = 'mingw'
804+
if 'amd64' in sys.version.lower():
805+
platform += '_x86_64'
806+
elif 'arm64' in sys.version.lower():
807+
platform += '_aarch64'
808+
elif 'arm' in sys.version.lower():
809+
platform += '_armv7'
810+
else:
811+
platform += '_i686'
812+
803813
if 'ucrt' in sys.version.lower():
804-
if 'amd64' in sys.version.lower():
805-
return 'mingw_x86_64_ucrt'
806-
return 'mingw_i686_ucrt'
814+
platform += '_ucrt'
815+
else:
816+
platform += "_msvcrt"
817+
807818
if 'clang' in sys.version.lower():
808-
if 'amd64' in sys.version.lower():
809-
return 'mingw_x86_64_clang'
810-
if 'arm64' in sys.version.lower():
811-
return 'mingw_aarch64'
812-
if 'arm' in sys.version.lower():
813-
return 'mingw_armv7'
814-
return 'mingw_i686_clang'
815-
if 'amd64' in sys.version.lower():
816-
return 'mingw_x86_64'
817-
return 'mingw_i686'
819+
platform += "_llvm"
820+
else:
821+
platform += "_gnu"
822+
823+
return platform
818824
if 'amd64' in sys.version.lower():
819825
return 'win-amd64'
820826
if '(arm)' in sys.version.lower():

Lib/test/test_importlib/test_windows.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,28 @@ def get_platform():
2525
'arm' : 'win-arm32',
2626
}
2727
if os.name == 'nt':
28-
if 'gcc' in sys.version.lower():
29-
if 'ucrt' in sys.version.lower():
30-
if 'amd64' in sys.version.lower():
31-
return 'mingw_x86_64_ucrt'
32-
return 'mingw_i686_ucrt'
33-
if 'clang' in sys.version.lower():
34-
if 'amd64' in sys.version.lower():
35-
return 'mingw_x86_64_clang'
36-
if 'arm64' in sys.version.lower():
37-
return 'mingw_aarch64'
38-
if 'arm' in sys.version.lower():
39-
return 'mingw_armv7'
40-
return 'mingw_i686_clang'
41-
if 'amd64' in sys.version.lower():
42-
return 'mingw_x86_64'
43-
return 'mingw_i686'
28+
if "gcc" in sys.version.lower():
29+
platform = "mingw"
30+
if "amd64" in sys.version.lower():
31+
platform += "_x86_64"
32+
elif "arm64" in sys.version.lower():
33+
platform += "_aarch64"
34+
elif "arm" in sys.version.lower():
35+
platform += "_armv7"
36+
else:
37+
platform += "_i686"
38+
39+
if "ucrt" in sys.version.lower():
40+
platform += "_ucrt"
41+
else:
42+
platform += "_msvcrt"
43+
44+
if "clang" in sys.version.lower():
45+
platform += "_llvm"
46+
else:
47+
platform += "_gnu"
48+
49+
return platform
4450
if ('VSCMD_ARG_TGT_ARCH' in os.environ and
4551
os.environ['VSCMD_ARG_TGT_ARCH'] in TARGET_TO_PLAT):
4652
return TARGET_TO_PLAT[os.environ['VSCMD_ARG_TGT_ARCH']]

configure.ac

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6311,16 +6311,12 @@ AC_C_BIGENDIAN
63116311

63126312
AC_SUBST(PYD_PLATFORM_TAG)
63136313
# Special case of PYD_PLATFORM_TAG with python build with mingw.
6314-
# Python can with compiled with clang or gcc and linked
6315-
# to msvcrt or ucrt. To avoid conflicts between them
6316-
# we are selecting the extension as based on the compiler
6317-
# and the runtime they link to
6318-
# gcc + x86_64 + msvcrt = cp{version number}-x86_64
6319-
# gcc + i686 + msvcrt = cp{version number}-i686
6320-
# gcc + x86_64 + ucrt = cp{version number}-x86_64-ucrt
6321-
# clang + x86_64 + ucrt = cp{version number}-x86_64-clang
6322-
# clang + i686 + ucrt = cp{version number}-i686-clang
6323-
6314+
# Python can with different cpu arch and c runtime as well as different
6315+
# toolchain. We follow this`mingw_<cpu_arch>_<c_runtime>_<toolchain>`
6316+
# convention for PYD_PLATFORM_TAG. Where:
6317+
# `cpu_arch` = `x86_64`, `aarch64` or `i686`
6318+
# `c_runtime` = `msvcrt` or `ucrt`
6319+
# `toolchain` = `gnu` or `llvm`
63246320
PYD_PLATFORM_TAG=""
63256321
case $host in
63266322
*-*-mingw*)
@@ -6339,38 +6335,32 @@ esac
63396335
case $host_os in
63406336
mingw*)
63416337
AC_MSG_CHECKING(PYD_PLATFORM_TAG)
6338+
PYD_PLATFORM_TAG="mingw"
63426339
case $host in
63436340
i686-*-mingw*)
6344-
if test -n "${cc_is_clang}"; then
6345-
# it is CLANG32
6346-
PYD_PLATFORM_TAG="mingw_i686_clang"
6347-
else
6348-
if test $linking_to_ucrt = no; then
6349-
PYD_PLATFORM_TAG="mingw_i686"
6350-
else
6351-
PYD_PLATFORM_TAG="mingw_i686_ucrt"
6352-
fi
6353-
fi
6341+
PYD_PLATFORM_TAG+="_i686"
63546342
;;
63556343
x86_64-*-mingw*)
6356-
if test -n "${cc_is_clang}"; then
6357-
# it is CLANG64
6358-
PYD_PLATFORM_TAG="mingw_x86_64_clang"
6359-
else
6360-
if test $linking_to_ucrt = no; then
6361-
PYD_PLATFORM_TAG="mingw_x86_64"
6362-
else
6363-
PYD_PLATFORM_TAG="mingw_x86_64_ucrt"
6364-
fi
6365-
fi
6344+
PYD_PLATFORM_TAG+="_x86_64"
63666345
;;
63676346
aarch64-*-mingw*)
6368-
PYD_PLATFORM_TAG+="mingw_aarch64"
6347+
PYD_PLATFORM_TAG+="_aarch64"
63696348
;;
63706349
armv7-*-mingw*)
6371-
PYD_PLATFORM_TAG+="mingw_armv7"
6350+
PYD_PLATFORM_TAG+="_armv7"
63726351
;;
63736352
esac
6353+
if test $linking_to_ucrt = no; then
6354+
PYD_PLATFORM_TAG+="_msvcrt"
6355+
else
6356+
PYD_PLATFORM_TAG += "_ucrt"
6357+
fi
6358+
if test -n "${cc_is_clang}"; then
6359+
# it is CLANG32
6360+
PYD_PLATFORM_TAG+="_llvm"
6361+
else
6362+
PYD_PLATFORM_TAG+="_gnu"
6363+
fi
63746364
AC_MSG_RESULT($PYD_PLATFORM_TAG)
63756365
esac
63766366

mingw_smoketests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
if sysconfig.is_python_build():
3838
os.environ["PYTHONLEGACYWINDOWSDLLLOADING"] = "1"
3939

40-
_UCRT = sysconfig.get_platform() not in ('mingw_x86_64', 'mingw_i686')
40+
_UCRT = 'ucrt' in sysconfig.get_platform()
4141

4242

4343
class Tests(unittest.TestCase):

0 commit comments

Comments
 (0)