forked from mirrors/qmk_userspace
		
	Print distro in doctor output (#19633)
This commit is contained in:
		
					parent
					
						
							
								3723c0e3d5
							
						
					
				
			
			
				commit
				
					
						4973950ddc
					
				
			
		
					 3 changed files with 41 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -158,3 +158,21 @@ def is_executable(command):
 | 
			
		|||
 | 
			
		||||
    cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg)
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def release_info(file='/etc/os-release'):
 | 
			
		||||
    """Parse release info to dict
 | 
			
		||||
    """
 | 
			
		||||
    ret = {}
 | 
			
		||||
    try:
 | 
			
		||||
        with open(file) as f:
 | 
			
		||||
            for line in f:
 | 
			
		||||
                if '=' in line:
 | 
			
		||||
                    key, value = map(str.strip, line.split('=', 1))
 | 
			
		||||
                    if value.startswith('"') and value.endswith('"'):
 | 
			
		||||
                        value = value[1:-1]
 | 
			
		||||
                    ret[key] = value
 | 
			
		||||
    except (PermissionError, FileNotFoundError):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    return ret
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,11 @@ from pathlib import Path
 | 
			
		|||
from milc import cli
 | 
			
		||||
 | 
			
		||||
from qmk.constants import QMK_FIRMWARE, BOOTLOADER_VIDS_PIDS
 | 
			
		||||
from .check import CheckStatus
 | 
			
		||||
from .check import CheckStatus, release_info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _is_wsl():
 | 
			
		||||
    return 'microsoft' in platform.uname().release.lower()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _udev_rule(vid, pid=None, *args):
 | 
			
		||||
| 
						 | 
				
			
			@ -130,17 +134,22 @@ def check_modem_manager():
 | 
			
		|||
def os_test_linux():
 | 
			
		||||
    """Run the Linux specific tests.
 | 
			
		||||
    """
 | 
			
		||||
    # Don't bother with udev on WSL, for now
 | 
			
		||||
    if 'microsoft' in platform.uname().release.lower():
 | 
			
		||||
        cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.")
 | 
			
		||||
    info = release_info()
 | 
			
		||||
    release_id = info.get('PRETTY_NAME', info.get('ID', 'Unknown'))
 | 
			
		||||
    plat = 'WSL, ' if _is_wsl() else ''
 | 
			
		||||
 | 
			
		||||
    cli.log.info(f"Detected {{fg_cyan}}Linux ({plat}{release_id}){{fg_reset}}.")
 | 
			
		||||
 | 
			
		||||
    # Don't bother with udev on WSL, for now
 | 
			
		||||
    if _is_wsl():
 | 
			
		||||
        # https://github.com/microsoft/WSL/issues/4197
 | 
			
		||||
        if QMK_FIRMWARE.as_posix().startswith("/mnt"):
 | 
			
		||||
            cli.log.warning("I/O performance on /mnt may be extremely slow.")
 | 
			
		||||
            return CheckStatus.WARNING
 | 
			
		||||
 | 
			
		||||
        return CheckStatus.OK
 | 
			
		||||
    else:
 | 
			
		||||
        cli.log.info("Detected {fg_cyan}Linux{fg_reset}.")
 | 
			
		||||
        rc = check_udev_rules()
 | 
			
		||||
        if rc != CheckStatus.OK:
 | 
			
		||||
            return rc
 | 
			
		||||
 | 
			
		||||
        return check_udev_rules()
 | 
			
		||||
    return CheckStatus.OK
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@ import platform
 | 
			
		|||
 | 
			
		||||
from milc import cli
 | 
			
		||||
 | 
			
		||||
from .check import CheckStatus
 | 
			
		||||
from .check import CheckStatus, release_info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def os_test_windows():
 | 
			
		||||
| 
						 | 
				
			
			@ -11,4 +11,10 @@ def os_test_windows():
 | 
			
		|||
    win32_ver = platform.win32_ver()
 | 
			
		||||
    cli.log.info("Detected {fg_cyan}Windows %s (%s){fg_reset}.", win32_ver[0], win32_ver[1])
 | 
			
		||||
 | 
			
		||||
    # MSYS really does not like "/" files - resolve manually
 | 
			
		||||
    file = cli.run(['cygpath', '-m', '/etc/qmk-release']).stdout.strip()
 | 
			
		||||
    qmk_distro_version = release_info(file).get('VERSION', None)
 | 
			
		||||
    if qmk_distro_version:
 | 
			
		||||
        cli.log.info('QMK MSYS version: %s', qmk_distro_version)
 | 
			
		||||
 | 
			
		||||
    return CheckStatus.OK
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue