Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						f8b4e24d37
					
				
					 1 changed files with 60 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -4,6 +4,8 @@ from enum import Enum
 | 
			
		|||
import re
 | 
			
		||||
import shutil
 | 
			
		||||
from subprocess import DEVNULL, TimeoutExpired
 | 
			
		||||
from tempfile import TemporaryDirectory
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
from milc import cli
 | 
			
		||||
from qmk import submodules
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +46,35 @@ def _check_arm_gcc_version():
 | 
			
		|||
    version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip()
 | 
			
		||||
    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():
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +83,35 @@ def _check_avr_gcc_version():
 | 
			
		|||
    version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip()
 | 
			
		||||
    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():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue