[Exporters] Build method documentation. Removal of unused Exception classes.

pull/3172/head
Sarah Marsh 2016-11-01 11:18:40 -05:00
parent d8fc362c11
commit cc154a48cd
6 changed files with 31 additions and 17 deletions

View File

@ -18,7 +18,6 @@
from tools.export import codered, ds5_5, iar, makefile from tools.export import codered, ds5_5, iar, makefile
from tools.export import emblocks, coide, kds, simplicityv3, atmelstudio from tools.export import emblocks, coide, kds, simplicityv3, atmelstudio
from tools.export import sw4stm32, e2studio, zip, cmsis, uvision, cdt from tools.export import sw4stm32, e2studio, zip, cmsis, uvision, cdt
from tools.export.exporters import OldLibrariesException, FailedBuildException
from tools.targets import TARGET_NAMES from tools.targets import TARGET_NAMES
EXPORTERS = { EXPORTERS = {

View File

@ -30,7 +30,8 @@ class DeviceCMSIS():
"""CMSIS Device class """CMSIS Device class
Encapsulates target information retrieved by arm-pack-manager""" Encapsulates target information retrieved by arm-pack-manager"""
cache = Cache(True, False)
CACHE = Cache(True, False)
def __init__(self, target): def __init__(self, target):
target_info = self.check_supported(target) target_info = self.check_supported(target)
if not target_info: if not target_info:
@ -52,7 +53,7 @@ class DeviceCMSIS():
t = TARGET_MAP[target] t = TARGET_MAP[target]
try: try:
cpu_name = t.device_name cpu_name = t.device_name
target_info = DeviceCMSIS.cache.index[cpu_name] target_info = DeviceCMSIS.CACHE.index[cpu_name]
# Target does not have device name or pdsc file # Target does not have device name or pdsc file
except: except:
try: try:

View File

@ -11,16 +11,6 @@ import copy
from tools.targets import TARGET_MAP from tools.targets import TARGET_MAP
class OldLibrariesException(Exception):
"""Exception that indicates an export can not complete due to an out of date
library version.
"""
pass
class FailedBuildException(Exception):
"""Exception that indicates that a build failed"""
pass
class TargetNotSupportedException(Exception): class TargetNotSupportedException(Exception):
"""Indicates that an IDE does not support a particular MCU""" """Indicates that an IDE does not support a particular MCU"""
pass pass
@ -146,9 +136,31 @@ class Exporter(object):
def group_project_files(self, sources): def group_project_files(self, sources):
"""Group the source files by their encompassing directory """Group the source files by their encompassing directory
Positional Arguments: Positional Arguments:
sources - array of sourc locations sources - array of source locations
Returns a dictionary of {group name: list of source locations} Returns a dictionary of {group name: list of source locations}
""" """
data = sorted(sources, key=self.make_key) data = sorted(sources, key=self.make_key)
return {k: list(g) for k,g in groupby(data, self.make_key)} return {k: list(g) for k,g in groupby(data, self.make_key)}
@staticmethod
def build(project_name, log_name='build_log.txt', cleanup=True):
"""Invoke exporters build command within a subprocess.
This method is assumed to be executed at the same level as exporter
project files and project source code.
See uvision/__init__.py, iar/__init__.py, and makefile/__init__.py for
example implemenation.
Positional Arguments:
project_name - the name of the project to build; often required by
exporter's build command.
Keyword Args:
log_name - name of the build log to create. Written and printed out,
deleted if cleanup = True
cleanup - a boolean dictating whether exported project files and
build log are removed after build
Returns -1 on failure and 0 on success
"""
raise NotImplemented("Implement in derived Exporter class.")

View File

@ -7,7 +7,7 @@ import re
import sys import sys
from tools.targets import TARGET_MAP from tools.targets import TARGET_MAP
from tools.export.exporters import Exporter, FailedBuildException from tools.export.exporters import Exporter
import json import json
from tools.export.cmsis import DeviceCMSIS from tools.export.cmsis import DeviceCMSIS
from multiprocessing import cpu_count from multiprocessing import cpu_count

View File

@ -108,7 +108,7 @@ class Makefile(Exporter):
@staticmethod @staticmethod
def build(project_name, log_name="build_log.txt", cleanup=True): def build(project_name, log_name="build_log.txt", cleanup=True):
""" Build Make project """ """ Build Make project """
# > Make -C [project directory] -j # > Make -j
cmd = ["make", "-j"] cmd = ["make", "-j"]
p = Popen(cmd, stdout=PIPE, stderr=PIPE) p = Popen(cmd, stdout=PIPE, stderr=PIPE)
ret = p.communicate() ret = p.communicate()

View File

@ -9,7 +9,7 @@ import re
from tools.arm_pack_manager import Cache from tools.arm_pack_manager import Cache
from tools.targets import TARGET_MAP from tools.targets import TARGET_MAP
from tools.export.exporters import Exporter, FailedBuildException from tools.export.exporters import Exporter
from tools.export.cmsis import DeviceCMSIS from tools.export.cmsis import DeviceCMSIS
cache_d = False cache_d = False
@ -207,6 +207,8 @@ class Uvision(Exporter):
@staticmethod @staticmethod
def build(project_name, log_name='build_log.txt', cleanup=True): def build(project_name, log_name='build_log.txt', cleanup=True):
""" Build Uvision project """
# > UV4.exe -r -j0 -o [log_name] [project_name].uvprojx
success = 0 success = 0
warn = 1 warn = 1
cmd = ["UV4.exe", '-r', '-j0', '-o', log_name, project_name+".uvprojx"] cmd = ["UV4.exe", '-r', '-j0', '-o', log_name, project_name+".uvprojx"]