Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2024-11-14 09:43:56 +00:00
commit f8b4e24d37

View File

@ -4,6 +4,8 @@ from enum import Enum
import re import re
import shutil import shutil
from subprocess import DEVNULL, TimeoutExpired from subprocess import DEVNULL, TimeoutExpired
from tempfile import TemporaryDirectory
from pathlib import Path
from milc import cli from milc import cli
from qmk import submodules from qmk import submodules
@ -44,7 +46,35 @@ def _check_arm_gcc_version():
version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip() version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip()
cli.log.info('Found arm-none-eabi-gcc version %s', version_number) cli.log.info('Found arm-none-eabi-gcc version %s', version_number)
return CheckStatus.OK # Right now all known arm versions are ok # Right now all known ARM versions are ok, so check that it can produce binaries
return _check_arm_gcc_installation()
def _check_arm_gcc_installation():
"""Returns OK if the arm-none-eabi-gcc is fully installed and can produce binaries.
"""
with TemporaryDirectory() as temp_dir:
temp_file = Path(temp_dir) / 'test.elf'
args = ['arm-none-eabi-gcc', '-mcpu=cortex-m0', '-mthumb', '-mno-thumb-interwork', '--specs=nosys.specs', '--specs=nano.specs', '-x', 'c', '-o', str(temp_file), '-']
result = cli.run(args, stdin=None, stdout=None, stderr=None, input='#include <newlib.h>\nint main() { return __NEWLIB__ * __NEWLIB_MINOR__ * __NEWLIB_PATCHLEVEL__; }')
if result.returncode == 0:
cli.log.info('Successfully compiled using arm-none-eabi-gcc')
else:
cli.log.error(f'Failed to compile a simple program with arm-none-eabi-gcc, return code {result.returncode}')
cli.log.error(f'Command: {" ".join(args)}')
return CheckStatus.ERROR
args = ['arm-none-eabi-size', str(temp_file)]
result = cli.run(args, stdin=None, stdout=None, stderr=None)
if result.returncode == 0:
cli.log.info('Successfully tested arm-none-eabi-binutils using arm-none-eabi-size')
else:
cli.log.error(f'Failed to execute arm-none-eabi-size, perhaps corrupt arm-none-eabi-binutils, return code {result.returncode}')
cli.log.error(f'Command: {" ".join(args)}')
return CheckStatus.ERROR
return CheckStatus.OK
def _check_avr_gcc_version(): def _check_avr_gcc_version():
@ -53,7 +83,35 @@ def _check_avr_gcc_version():
version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip()
cli.log.info('Found avr-gcc version %s', version_number) cli.log.info('Found avr-gcc version %s', version_number)
return CheckStatus.OK # Right now all known AVR versions are ok, so check that it can produce binaries
return _check_avr_gcc_installation()
def _check_avr_gcc_installation():
"""Returns OK if the avr-gcc is fully installed and can produce binaries.
"""
with TemporaryDirectory() as temp_dir:
temp_file = Path(temp_dir) / 'test.elf'
args = ['avr-gcc', '-mmcu=atmega32u4', '-x', 'c', '-o', str(temp_file), '-']
result = cli.run(args, stdin=None, stdout=None, stderr=None, input='int main() { return 0; }')
if result.returncode == 0:
cli.log.info('Successfully compiled using avr-gcc')
else:
cli.log.error(f'Failed to compile a simple program with avr-gcc, return code {result.returncode}')
cli.log.error(f'Command: {" ".join(args)}')
return CheckStatus.ERROR
args = ['avr-size', str(temp_file)]
result = cli.run(args, stdin=None, stdout=None, stderr=None)
if result.returncode == 0:
cli.log.info('Successfully tested avr-binutils using avr-size')
else:
cli.log.error(f'Failed to execute avr-size, perhaps corrupt avr-binutils, return code {result.returncode}')
cli.log.error(f'Command: {" ".join(args)}')
return CheckStatus.ERROR
return CheckStatus.OK
def _check_avrdude_version(): def _check_avrdude_version():