~ruther/qmk_firmware

4973950ddcef28d94a1fc589951e024a91a240d7 — Joel Challis 2 years ago 3723c0e
Print distro in doctor output (#19633)

M lib/python/qmk/cli/doctor/check.py => lib/python/qmk/cli/doctor/check.py +18 -0
@@ 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

M lib/python/qmk/cli/doctor/linux.py => lib/python/qmk/cli/doctor/linux.py +16 -7
@@ 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

M lib/python/qmk/cli/doctor/windows.py => lib/python/qmk/cli/doctor/windows.py +7 -1
@@ 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