Skip to content

Commit bd5af5e

Browse files
naveen521kklazka
authored andcommitted
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 f5a51b2 commit bd5af5e

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
@@ -818,21 +818,27 @@ def get_platform():
818818
"""
819819
if os.name == 'nt':
820820
if 'gcc' in sys.version.lower():
821+
platform = 'mingw'
822+
if 'amd64' in sys.version.lower():
823+
platform += '_x86_64'
824+
elif 'arm64' in sys.version.lower():
825+
platform += '_aarch64'
826+
elif 'arm' in sys.version.lower():
827+
platform += '_armv7'
828+
else:
829+
platform += '_i686'
830+
821831
if 'ucrt' in sys.version.lower():
822-
if 'amd64' in sys.version.lower():
823-
return 'mingw_x86_64_ucrt'
824-
return 'mingw_i686_ucrt'
832+
platform += '_ucrt'
833+
else:
834+
platform += "_msvcrt"
835+
825836
if 'clang' in sys.version.lower():
826-
if 'amd64' in sys.version.lower():
827-
return 'mingw_x86_64_clang'
828-
if 'arm64' in sys.version.lower():
829-
return 'mingw_aarch64'
830-
if 'arm' in sys.version.lower():
831-
return 'mingw_armv7'
832-
return 'mingw_i686_clang'
833-
if 'amd64' in sys.version.lower():
834-
return 'mingw_x86_64'
835-
return 'mingw_i686'
837+
platform += "_llvm"
838+
else:
839+
platform += "_gnu"
840+
841+
return platform
836842
if 'amd64' in sys.version.lower():
837843
return 'win-amd64'
838844
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
@@ -6335,16 +6335,12 @@ AC_C_BIGENDIAN
63356335

63366336
AC_SUBST(PYD_PLATFORM_TAG)
63376337
# Special case of PYD_PLATFORM_TAG with python build with mingw.
6338-
# Python can with compiled with clang or gcc and linked
6339-
# to msvcrt or ucrt. To avoid conflicts between them
6340-
# we are selecting the extension as based on the compiler
6341-
# and the runtime they link to
6342-
# gcc + x86_64 + msvcrt = cp{version number}-x86_64
6343-
# gcc + i686 + msvcrt = cp{version number}-i686
6344-
# gcc + x86_64 + ucrt = cp{version number}-x86_64-ucrt
6345-
# clang + x86_64 + ucrt = cp{version number}-x86_64-clang
6346-
# clang + i686 + ucrt = cp{version number}-i686-clang
6347-
6338+
# Python can with different cpu arch and c runtime as well as different
6339+
# toolchain. We follow this`mingw_<cpu_arch>_<c_runtime>_<toolchain>`
6340+
# convention for PYD_PLATFORM_TAG. Where:
6341+
# `cpu_arch` = `x86_64`, `aarch64` or `i686`
6342+
# `c_runtime` = `msvcrt` or `ucrt`
6343+
# `toolchain` = `gnu` or `llvm`
63486344
PYD_PLATFORM_TAG=""
63496345
case $host in
63506346
*-*-mingw*)
@@ -6363,38 +6359,32 @@ esac
63636359
case $host_os in
63646360
mingw*)
63656361
AC_MSG_CHECKING(PYD_PLATFORM_TAG)
6362+
PYD_PLATFORM_TAG="mingw"
63666363
case $host in
63676364
i686-*-mingw*)
6368-
if test -n "${cc_is_clang}"; then
6369-
# it is CLANG32
6370-
PYD_PLATFORM_TAG="mingw_i686_clang"
6371-
else
6372-
if test $linking_to_ucrt = no; then
6373-
PYD_PLATFORM_TAG="mingw_i686"
6374-
else
6375-
PYD_PLATFORM_TAG="mingw_i686_ucrt"
6376-
fi
6377-
fi
6365+
PYD_PLATFORM_TAG+="_i686"
63786366
;;
63796367
x86_64-*-mingw*)
6380-
if test -n "${cc_is_clang}"; then
6381-
# it is CLANG64
6382-
PYD_PLATFORM_TAG="mingw_x86_64_clang"
6383-
else
6384-
if test $linking_to_ucrt = no; then
6385-
PYD_PLATFORM_TAG="mingw_x86_64"
6386-
else
6387-
PYD_PLATFORM_TAG="mingw_x86_64_ucrt"
6388-
fi
6389-
fi
6368+
PYD_PLATFORM_TAG+="_x86_64"
63906369
;;
63916370
aarch64-*-mingw*)
6392-
PYD_PLATFORM_TAG+="mingw_aarch64"
6371+
PYD_PLATFORM_TAG+="_aarch64"
63936372
;;
63946373
armv7-*-mingw*)
6395-
PYD_PLATFORM_TAG+="mingw_armv7"
6374+
PYD_PLATFORM_TAG+="_armv7"
63966375
;;
63976376
esac
6377+
if test $linking_to_ucrt = no; then
6378+
PYD_PLATFORM_TAG+="_msvcrt"
6379+
else
6380+
PYD_PLATFORM_TAG += "_ucrt"
6381+
fi
6382+
if test -n "${cc_is_clang}"; then
6383+
# it is CLANG32
6384+
PYD_PLATFORM_TAG+="_llvm"
6385+
else
6386+
PYD_PLATFORM_TAG+="_gnu"
6387+
fi
63986388
AC_MSG_RESULT($PYD_PLATFORM_TAG)
63996389
esac
64006390

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)