Parse version better in qmk doctor GCC version checks (#9324)

This commit is contained in:
Ryan 2020-06-19 04:37:47 +10:00 committed by GitHub
parent 716924de3e
commit db80209e69
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View file

@ -3,6 +3,7 @@
Check out the user's QMK environment and make sure it's ready to compile. Check out the user's QMK environment and make sure it's ready to compile.
""" """
import platform import platform
import re
import shutil import shutil
import subprocess import subprocess
from pathlib import Path from pathlib import Path
@ -50,6 +51,16 @@ def _deprecated_udev_rule(vid, pid=None):
return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid
def parse_gcc_version(version):
m = re.match(r"(\d+)(?:\.(\d+))?(?:\.(\d+))?", version)
return {
'major': int(m.group(1)),
'minor': int(m.group(2)) if m.group(2) else 0,
'patch': int(m.group(3)) if m.group(3) else 0
}
def check_arm_gcc_version(): def check_arm_gcc_version():
"""Returns True if the arm-none-eabi-gcc version is not known to cause problems. """Returns True if the arm-none-eabi-gcc version is not known to cause problems.
""" """
@ -66,8 +77,8 @@ def check_avr_gcc_version():
if 'output' in ESSENTIAL_BINARIES['avr-gcc']: if 'output' in ESSENTIAL_BINARIES['avr-gcc']:
version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip()
major, minor, rest = version_number.split('.', 2) parsed_version = parse_gcc_version(version_number)
if int(major) > 8: if parsed_version['major'] > 8:
cli.log.error('We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.') cli.log.error('We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.')
return False return False

View file

@ -115,7 +115,7 @@ def test_list_keymaps_no_keyboard_found():
def test_json2c(): def test_json2c():
result = check_subcommand('json2c', 'keyboards/handwired/onekey/keymaps/default_json/keymap.json') result = check_subcommand('json2c', 'keyboards/handwired/onekey/keymaps/default_json/keymap.json')
check_returncode(result, 0) check_returncode(result, 0)
assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n\n' assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n'
def test_info(): def test_info():
@ -132,7 +132,7 @@ def test_info_keyboard_render():
check_returncode(result) check_returncode(result)
assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
assert 'Processor: STM32F303' in result.stdout assert 'Processor: STM32F303' in result.stdout
assert 'Layout:' in result.stdout assert 'Layouts:' in result.stdout
assert 'k0' in result.stdout assert 'k0' in result.stdout
@ -149,6 +149,6 @@ def test_info_matrix_render():
check_returncode(result) check_returncode(result)
assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
assert 'Processor: STM32F303' in result.stdout assert 'Processor: STM32F303' in result.stdout
assert 'LAYOUT' in result.stdout assert 'LAYOUT_ortho_1x1' in result.stdout
assert '│0A│' in result.stdout assert '│0A│' in result.stdout
assert 'Matrix for "LAYOUT"' in result.stdout assert 'Matrix for "LAYOUT_ortho_1x1"' in result.stdout