|
25 | 25 | from copy import copy
|
26 | 26 | from inspect import getmro
|
27 | 27 | from collections import namedtuple, Mapping
|
| 28 | +from future.utils import raise_from |
28 | 29 | from tools.resources import FileType
|
29 | 30 | from tools.targets.LPC import patch
|
30 | 31 | from tools.paths import TOOLS_BOOTLOADERS
|
31 |
| -from tools.utils import json_file_to_dict |
| 32 | +from tools.utils import json_file_to_dict, NotSupportedException |
32 | 33 |
|
33 | 34 | __all__ = ["target", "TARGETS", "TARGET_MAP", "TARGET_NAMES", "CORE_LABELS",
|
34 | 35 | "CORE_ARCH", "HookError", "generate_py_target", "Target",
|
@@ -116,7 +117,12 @@ def get_resolution_order(json_data, target_name, order, level=0):
|
116 | 117 |
|
117 | 118 | def target(name, json_data):
|
118 | 119 | """Construct a target object"""
|
119 |
| - resolution_order = get_resolution_order(json_data, name, []) |
| 120 | + try: |
| 121 | + resolution_order = get_resolution_order(json_data, name, []) |
| 122 | + except KeyError as exc: |
| 123 | + raise_from(NotSupportedException( |
| 124 | + "target {} has an incomplete target definition".format(name) |
| 125 | + ), exc) |
120 | 126 | resolution_order_names = [tgt for tgt, _ in resolution_order]
|
121 | 127 | return Target(name=name,
|
122 | 128 | json_data={key: value for key, value in json_data.items()
|
|
0 commit comments