def _is_manylinux_compatible(name, arch, glibc_version): # type: (str, str, GlibcVersion) -> bool sys_glibc = _get_glibc_version() if sys_glibc < glibc_version: return False # Check for presence of _manylinux module. try: import _manylinux # noqa except ImportError: pass else: if hasattr(_manylinux, "manylinux_compatible"): result = _manylinux.manylinux_compatible( glibc_version[0], glibc_version[1], arch ) if result is not None: return bool(result) else: if glibc_version == (2, 5): if hasattr(_manylinux, "manylinux1_compatible"): return bool(_manylinux.manylinux1_compatible) if glibc_version == (2, 12): if hasattr(_manylinux, "manylinux2010_compatible"): return bool(_manylinux.manylinux2010_compatible) if glibc_version == (2, 17): if hasattr(_manylinux, "manylinux2014_compatible"): return bool(_manylinux.manylinux2014_compatible) return True
def manylinux_tag_is_compatible_with_this_system(tag): # Pulled from PEP 600 # Normalize and parse the tag glibc_version = get_glibc_version() if glibc_version is None: return False tag = LEGACY_ALIASES.get(tag, tag) manylinux_match = re.match(MANYLINUX_REGEX, tag) if not manylinux_match: return False tag_major_str, tag_minor_str, tag_arch = manylinux_match.groups() tag_major = int(tag_major_str) tag_minor = int(tag_minor_str) sys_major, sys_minor = glibc_version if (sys_major, sys_minor) < (tag_major, tag_minor): return False sys_arch = get_system_arch() if sys_arch != tag_arch: return False # Check for manual override try: import _manylinux # type: ignore # pylint: disable=bad-option-value,import-outside-toplevel except ImportError: pass else: if hasattr(_manylinux, "manylinux_compatible"): result = _manylinux.manylinux_compatible( tag_major, tag_minor, tag_arch, ) if result is not None: return bool(result) else: if (tag_major, tag_minor) == (2, 5): if hasattr(_manylinux, "manylinux1_compatible"): return bool(_manylinux.manylinux1_compatible) if (tag_major, tag_minor) == (2, 12): if hasattr(_manylinux, "manylinux2010_compatible"): return bool(_manylinux.manylinux2010_compatible) return True
def _is_compatible(name: str, arch: str, version: _GLibCVersion) -> bool: sys_glibc = _get_glibc_version() if sys_glibc < version: return False # Check for presence of _manylinux module. try: import _manylinux # noqa except ImportError: return True if hasattr(_manylinux, "manylinux_compatible"): result = _manylinux.manylinux_compatible(version[0], version[1], arch) if result is not None: return bool(result) return True if version == _GLibCVersion(2, 5): if hasattr(_manylinux, "manylinux1_compatible"): return bool(_manylinux.manylinux1_compatible) if version == _GLibCVersion(2, 12): if hasattr(_manylinux, "manylinux2010_compatible"): return bool(_manylinux.manylinux2010_compatible) if version == _GLibCVersion(2, 17): if hasattr(_manylinux, "manylinux2014_compatible"): return bool(_manylinux.manylinux2014_compatible) return True