From c7d1851ebdfd551949744432bd2de6888a50fe43 Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 12 Apr 2020 00:40:26 +0300 Subject: [PATCH] rework to better use generator in the loop --- packaging/tags.py | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/packaging/tags.py b/packaging/tags.py index 1002792c..58463a62 100644 --- a/packaging/tags.py +++ b/packaging/tags.py @@ -662,12 +662,14 @@ def _linux_platforms(is_32bit=_32_BIT_INTERPRETER): linux = "linux_i686" elif linux == "linux_aarch64": linux = "linux_armv7l" - manylinux_support = [] _, arch = linux.split("_", 1) if _have_compatible_manylinux_abi(arch): + map_glibc_to_manylinux = {} + # glibc in manylinux2014 is 2.17 + min_minor = 16 if arch in {"x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "s390x"}: # CentOS 7 w/ glibc 2.17 (PEP 599) - map_glibc_to_manylinux = {(2, 17): "manylinux2014"} + map_glibc_to_manylinux[(2, 17)] = "manylinux2014" if arch in {"x86_64", "i686"}: # CentOS 6 w/ glibc 2.12 (PEP 571) map_glibc_to_manylinux[(2, 12)] = "manylinux2010" @@ -675,26 +677,25 @@ def _linux_platforms(is_32bit=_32_BIT_INTERPRETER): map_glibc_to_manylinux[(2, 5)] = "manylinux1" # glibc in manylinux1 is 2.5 min_minor = 4 - else: - # glibc in manylinux2014 is 2.17 - min_minor = 16 - cur_glibc = _get_glibc_version() - for glibc_minor in range(cur_glibc[1], min_minor, -1): - if _have_compatible_glibc(2, glibc_minor): - manylinux_support.append( - ("manylinux_2_{}".format(glibc_minor), (2, glibc_minor)) - ) - if (2, glibc_minor) in map_glibc_to_manylinux: - manylinux_support.append( - (map_glibc_to_manylinux[(2, glibc_minor)], (2, glibc_minor)) - ) - manylinux_support_iter = iter(manylinux_support) - for name, glibc_version in manylinux_support_iter: - if _is_manylinux_compatible(name, glibc_version): - yield linux.replace("linux", name) - break - for name, _ in manylinux_support_iter: - yield linux.replace("linux", name) + cur_glibc = _get_glibc_version() + manylinux_compat = False + for glibc_minor in range(cur_glibc[1], min_minor, -1): + plat = "manylinux_2_{}".format(glibc_minor) + # Once _is_manylinux_compatible() is True, it is True for any + # lower manylinux tag. + manylinux_compat = manylinux_compat or _is_manylinux_compatible( + plat, (2, glibc_minor) + ) + if manylinux_compat: + yield linux.replace("linux", plat) + # Handle the manylinux1, manylinux2010, manylinux2014 tags + if (2, glibc_minor) in map_glibc_to_manylinux: + plat = map_glibc_to_manylinux[(2, glibc_minor)] + manylinux_compat = manylinux_compat or _is_manylinux_compatible( + plat, (2, glibc_minor) + ) + if manylinux_compat: + yield linux.replace("linux", plat) yield linux