Merge pull request #2895 from bridadan/build-test-fix

[Exporters] Resolving Python errors and uVision build issues
pull/2899/head
Sam Grove 2016-10-03 18:59:36 -05:00 committed by GitHub
commit 5713435d02
6 changed files with 35 additions and 16 deletions

View File

@ -18,7 +18,6 @@ from exporters import Exporter
from os.path import splitext, basename, join
from random import randint
from tools.utils import mkdir
from targets import Target
class Sw4STM32(Exporter):
@ -80,7 +79,7 @@ class Sw4STM32(Exporter):
def generate(self):
fp_hardware = "no"
fp_abi = "soft"
core = Target.get_target(self.target).core
core = self.target.core
if core == "Cortex-M4F" or core == "Cortex-M7F":
fp_hardware = "fpv4-sp-d16"
fp_abi = "soft-fp"

View File

@ -19,6 +19,7 @@ from project_generator_definitions.definitions import ProGenDef
from tools.export.exporters import Exporter, ExporterTargetsProperty
from tools.targets import TARGET_MAP, TARGET_NAMES
from tools.utils import remove_if_in
# If you wish to add a new target, add it to project_generator_definitions, and then
# define progen_target name in the target class (`` self.progen_target = 'my_target_name' ``)
@ -87,11 +88,11 @@ class Uvision4(Exporter):
+ self.flags['c_flags']
+ self.flags['cxx_flags']))
# not compatible with c99 flag set in the template
project_data['misc']['c_flags'].remove("--c99")
remove_if_in(project_data['misc']['c_flags'], "--c99")
# cpp is not required as it's implicit for cpp files
project_data['misc']['c_flags'].remove("--cpp")
remove_if_in(project_data['misc']['c_flags'], "--cpp")
# we want no-vla for only cxx, but it's also applied for C in IDE, thus we remove it
project_data['misc']['c_flags'].remove("--no_vla")
remove_if_in(project_data['misc']['c_flags'], "--no_vla")
project_data['misc']['ld_flags'] = self.flags['ld_flags']
project_data['build_dir'] = project_data['build_dir'] + '\\' + 'uvision4'

View File

@ -19,6 +19,7 @@ from project_generator_definitions.definitions import ProGenDef
from tools.export.exporters import Exporter, ExporterTargetsProperty
from tools.targets import TARGET_MAP, TARGET_NAMES
from tools.utils import remove_if_in
# If you wish to add a new target, add it to project_generator_definitions, and then
# define progen_target name in the target class (`` self.progen_target = 'my_target_name' ``)
@ -83,11 +84,12 @@ class Uvision5(Exporter):
+ self.flags['c_flags']
+ self.flags['cxx_flags']))
# not compatible with c99 flag set in the template
project_data['misc']['c_flags'].remove("--c99")
remove_if_in(project_data['misc']['c_flags'], "--c99")
# cpp is not required as it's implicit for cpp files
project_data['misc']['c_flags'].remove("--cpp")
remove_if_in(project_data['misc']['c_flags'], "--cpp")
# we want no-vla for only cxx, but it's also applied for C in IDE, thus we remove it
project_data['misc']['c_flags'].remove("--no_vla")
remove_if_in(project_data['misc']['c_flags'], "--no_vla")
# not compatible with c99 flag set in the template
project_data['misc']['ld_flags'] = self.flags['ld_flags']
i = 0

View File

@ -10,7 +10,7 @@ from shutil import move, rmtree
from argparse import ArgumentParser
from os.path import normpath, realpath
from tools.paths import EXPORT_DIR, MBED_BASE, MBED_LIBRARIES
from tools.paths import EXPORT_DIR, MBED_HAL, MBED_LIBRARIES
from tools.export import EXPORTERS, mcu_ide_matrix
from tools.tests import TESTS, TEST_MAP
from tools.tests import test_known, test_name_known, Test
@ -18,7 +18,7 @@ from tools.targets import TARGET_NAMES
from tools.utils import argparse_filestring_type, argparse_many, args_error
from tools.utils import argparse_force_lowercase_type
from tools.utils import argparse_force_uppercase_type
from tools.project_api import export_project
from tools.project_api import export_project, get_exporter_toolchain
from tools.options import extract_profile
@ -53,7 +53,8 @@ def setup_project(ide, target, program=None, source_dir=None, build=None, export
# Substitute the mbed library builds with their sources
if MBED_LIBRARIES in test.dependencies:
test.dependencies.remove(MBED_LIBRARIES)
test.dependencies.append(MBED_BASE)
test.dependencies.append(MBED_HAL)
src_paths = [test.source_dir]
lib_paths = test.dependencies

View File

@ -36,12 +36,14 @@ from tools.test_api import find_tests
from tools.project import export
from Queue import Queue
from threading import Thread, Lock
from tools.project_api import print_results
from tools.project_api import print_results, get_exporter_toolchain
from tools.tests import test_name_known, test_known, Test
from tools.export.exporters import FailedBuildException, \
TargetNotSupportedException
from tools.utils import argparse_force_lowercase_type, \
argparse_many, columnate, args_error
argparse_many, columnate, args_error, \
argparse_filestring_type
from tools.options import extract_profile
print_lock = Lock()
@ -72,13 +74,15 @@ class Reader (Thread) :
class ExportBuildTest(object):
"""Object to encapsulate logic for progen build testing"""
def __init__(self, tests):
def __init__(self, tests, parser, options):
"""
Initialize an instance of class ProgenBuildTest
Args:
tests: array of TestCase instances
"""
self.total = len(tests)
self.parser = parser
self.options = options
self.counter = 0
self.successes = []
self.failures = []
@ -155,11 +159,13 @@ class ExportBuildTest(object):
test_case.name))
try:
_, toolchain = get_exporter_toolchain(test_case.ide)
profile = extract_profile(self.parser, self.options, toolchain)
exporter = export(test_case.mcu, test_case.ide,
project_id=test_case.id, zip_proj=None,
clean=True, src=test_case.src,
export_path=join(EXPORT_DIR,name_str),
silent=True)
silent=True, build_profile=profile)
exporter.generated_files.append(join(EXPORT_DIR,name_str,test_case.log))
self.build_queue.put((exporter,test_case))
except TargetNotSupportedException:
@ -243,6 +249,12 @@ def main():
help="Which version of mbed to test",
default=RELEASE_VERSIONS[-1])
parser.add_argument("--profile",
dest="profile",
action="append",
type=argparse_filestring_type,
default=[])
options = parser.parse_args()
# targets in chosen release
targetnames = [target[0] for target in
@ -273,7 +285,7 @@ def main():
for test in v5_tests:
default_test.update({'name':test[0],'src':[test[1],ROOT]})
tests.append(copy(default_test))
test = ExportBuildTest(tests)
test = ExportBuildTest(tests, parser, options)
test.batch_tests(clean=options.clean)
print_results(test.successes, test.failures, test.skips)
sys.exit(len(test.failures))

View File

@ -28,6 +28,10 @@ import json
from collections import OrderedDict
import logging
def remove_if_in(lst, thing):
if thing in lst:
lst.remove(thing)
def compile_worker(job):
"""Standard task runner used for compiling