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
	
	 Joel Challis
						Joel Challis