| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import subprocess
- import re
- import logging
- from gpustack.utils import platform
- from gpustack.utils.command import is_command_available
- logger = logging.getLogger(__name__)
- def check_glibc_version(min_version='2.29'):
- """
- Check if the glibc version is greater than or equal to the specified minimum version.
- Raises an exception if the version is lower than the minimum required version.
- """
- if platform.system() != 'linux':
- return
- if not is_command_available('ldd'):
- logger.debug("ldd command not found. Skipping glibc version check.")
- return
- try:
- output = subprocess.check_output(['ldd', '--version'], text=True)
- first_line = output.splitlines()[0]
- match = re.search(r'(\d+\.\d+)', first_line)
- if not match:
- logger.debug(f"Failed to parse glibc version. Output: {first_line}")
- return
- version = match.group(1)
- def parse_ver(v):
- return [int(x) for x in v.split('.')]
- v1 = parse_ver(version)
- v2 = parse_ver(min_version)
- length = max(len(v1), len(v2))
- v1 += [0] * (length - len(v1))
- v2 += [0] * (length - len(v2))
- if v1 >= v2:
- return
- else:
- raise RuntimeError(
- f"glibc version {version} is lower than required {min_version}. Consider using Docker as an alternative."
- )
- except subprocess.CalledProcessError as e:
- logger.debug(f"Error checking glibc version: {e}")
- return
|