aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/cli/doctor.py
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2020-06-19 04:37:47 +1000
committerGitHub <noreply@github.com>2020-06-18 19:37:47 +0100
commitdb80209e697770cca0ba44e437efa548247b387f (patch)
treec24f46b26d83f23aeaff302968e84b07c25519e2 /lib/python/qmk/cli/doctor.py
parent716924de3e07eb4a6f39a9c8da9ba0fc64c7f796 (diff)
downloadqmk_firmware-db80209e697770cca0ba44e437efa548247b387f.tar.gz
qmk_firmware-db80209e697770cca0ba44e437efa548247b387f.zip
Parse version better in `qmk doctor` GCC version checks (#9324)
Diffstat (limited to 'lib/python/qmk/cli/doctor.py')
-rwxr-xr-xlib/python/qmk/cli/doctor.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py
index 011c3dd3c..4d7ba5218 100755
--- a/lib/python/qmk/cli/doctor.py
+++ b/lib/python/qmk/cli/doctor.py
@@ -3,6 +3,7 @@
3Check out the user's QMK environment and make sure it's ready to compile. 3Check out the user's QMK environment and make sure it's ready to compile.
4""" 4"""
5import platform 5import platform
6import re
6import shutil 7import shutil
7import subprocess 8import subprocess
8from pathlib import Path 9from pathlib import Path
@@ -50,6 +51,16 @@ def _deprecated_udev_rule(vid, pid=None):
50 return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid 51 return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid
51 52
52 53
54def parse_gcc_version(version):
55 m = re.match(r"(\d+)(?:\.(\d+))?(?:\.(\d+))?", version)
56
57 return {
58 'major': int(m.group(1)),
59 'minor': int(m.group(2)) if m.group(2) else 0,
60 'patch': int(m.group(3)) if m.group(3) else 0
61 }
62
63
53def check_arm_gcc_version(): 64def check_arm_gcc_version():
54 """Returns True if the arm-none-eabi-gcc version is not known to cause problems. 65 """Returns True if the arm-none-eabi-gcc version is not known to cause problems.
55 """ 66 """
@@ -66,8 +77,8 @@ def check_avr_gcc_version():
66 if 'output' in ESSENTIAL_BINARIES['avr-gcc']: 77 if 'output' in ESSENTIAL_BINARIES['avr-gcc']:
67 version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() 78 version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip()
68 79
69 major, minor, rest = version_number.split('.', 2) 80 parsed_version = parse_gcc_version(version_number)
70 if int(major) > 8: 81 if parsed_version['major'] > 8:
71 cli.log.error('We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.') 82 cli.log.error('We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.')
72 return False 83 return False
73 84