Print distro in doctor output (#19633)
parent
3723c0e3d5
commit
4973950ddc
|
@ -158,3 +158,21 @@ def is_executable(command):
|
||||||
|
|
||||||
cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg)
|
cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg)
|
||||||
return False
|
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 milc import cli
|
||||||
|
|
||||||
from qmk.constants import QMK_FIRMWARE, BOOTLOADER_VIDS_PIDS
|
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):
|
def _udev_rule(vid, pid=None, *args):
|
||||||
|
@ -130,17 +134,22 @@ def check_modem_manager():
|
||||||
def os_test_linux():
|
def os_test_linux():
|
||||||
"""Run the Linux specific tests.
|
"""Run the Linux specific tests.
|
||||||
"""
|
"""
|
||||||
# Don't bother with udev on WSL, for now
|
info = release_info()
|
||||||
if 'microsoft' in platform.uname().release.lower():
|
release_id = info.get('PRETTY_NAME', info.get('ID', 'Unknown'))
|
||||||
cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.")
|
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
|
# https://github.com/microsoft/WSL/issues/4197
|
||||||
if QMK_FIRMWARE.as_posix().startswith("/mnt"):
|
if QMK_FIRMWARE.as_posix().startswith("/mnt"):
|
||||||
cli.log.warning("I/O performance on /mnt may be extremely slow.")
|
cli.log.warning("I/O performance on /mnt may be extremely slow.")
|
||||||
return CheckStatus.WARNING
|
return CheckStatus.WARNING
|
||||||
|
|
||||||
return CheckStatus.OK
|
|
||||||
else:
|
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 milc import cli
|
||||||
|
|
||||||
from .check import CheckStatus
|
from .check import CheckStatus, release_info
|
||||||
|
|
||||||
|
|
||||||
def os_test_windows():
|
def os_test_windows():
|
||||||
|
@ -11,4 +11,10 @@ def os_test_windows():
|
||||||
win32_ver = platform.win32_ver()
|
win32_ver = platform.win32_ver()
|
||||||
cli.log.info("Detected {fg_cyan}Windows %s (%s){fg_reset}.", win32_ver[0], win32_ver[1])
|
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
|
return CheckStatus.OK
|
||||||
|
|
Loading…
Reference in New Issue