Parse version better in `qmk doctor` GCC version checks (#9324)
parent
716924de3e
commit
db80209e69
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue