More essential binaries.

This commit is contained in:
Nick Brassel 2025-03-19 14:01:02 +11:00
parent ddd0f54c94
commit 99f2b767be
No known key found for this signature in database

View File

@ -1,7 +1,6 @@
"""Check for specific programs. """Check for specific programs.
""" """
from enum import Enum from enum import Enum
import re
import shutil import shutil
from subprocess import DEVNULL, TimeoutExpired from subprocess import DEVNULL, TimeoutExpired
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
@ -18,6 +17,18 @@ class CheckStatus(Enum):
ESSENTIAL_BINARIES = { ESSENTIAL_BINARIES = {
'make': {
'version_arg': '--version'
},
'git': {
'version_arg': '--version'
},
'dos2unix': {
'version_arg': '--version'
},
'diff': {
'version_arg': '--version'
},
'dfu-programmer': {}, 'dfu-programmer': {},
'avrdude': {}, 'avrdude': {},
'dfu-util': {}, 'dfu-util': {},
@ -30,14 +41,36 @@ ESSENTIAL_BINARIES = {
} }
def _parse_gcc_version(version): def _check_make_version():
m = re.match(r"(\d+)(?:\.(\d+))?(?:\.(\d+))?", version) last_line = ESSENTIAL_BINARIES['make']['output'].split('\n')[0]
version_number = last_line.split()[2]
cli.log.info('Found make version %s', version_number)
return { return CheckStatus.OK
'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_git_version():
} last_line = ESSENTIAL_BINARIES['git']['output'].split('\n')[0]
version_number = last_line.split()[2]
cli.log.info('Found git version %s', version_number)
return CheckStatus.OK
def _check_dos2unix_version():
last_line = ESSENTIAL_BINARIES['dos2unix']['output'].split('\n')[0]
version_number = last_line.split()[1]
cli.log.info('Found dos2unix version %s', version_number)
return CheckStatus.OK
def _check_diff_version():
last_line = ESSENTIAL_BINARIES['diff']['output'].split('\n')[0]
version_number = last_line.split()[3]
cli.log.info('Found diff version %s', version_number)
return CheckStatus.OK
def _check_arm_gcc_version(): def _check_arm_gcc_version():
@ -159,6 +192,10 @@ def check_binary_versions():
"""Check the versions of ESSENTIAL_BINARIES """Check the versions of ESSENTIAL_BINARIES
""" """
checks = { checks = {
'make': _check_make_version,
'git': _check_git_version,
'dos2unix': _check_dos2unix_version,
'diff': _check_diff_version,
'arm-none-eabi-gcc': _check_arm_gcc_version, 'arm-none-eabi-gcc': _check_arm_gcc_version,
'avr-gcc': _check_avr_gcc_version, 'avr-gcc': _check_avr_gcc_version,
'avrdude': _check_avrdude_version, 'avrdude': _check_avrdude_version,