mirror of https://github.com/ARMmbed/mbed-os.git
Python2+3: working through many has_attr exceptions
parent
68737f2762
commit
380ecb1b0e
|
@ -32,7 +32,7 @@ from jsonschema import Draft4Validator, RefResolver
|
|||
from tools.utils import json_file_to_dict, intelhex_offset
|
||||
from tools.arm_pack_manager import Cache
|
||||
from tools.targets import CUMULATIVE_ATTRIBUTES, TARGET_MAP, \
|
||||
generate_py_target, get_resolution_order
|
||||
generate_py_target, get_resolution_order, Target
|
||||
|
||||
PATH_OVERRIDES = set(["target.bootloader_img"])
|
||||
BOOTLOADER_OVERRIDES = set(["target.bootloader_img", "target.restrict_size",
|
||||
|
@ -432,15 +432,14 @@ class Config(object):
|
|||
self.lib_config_data = {}
|
||||
# Make sure that each config is processed only once
|
||||
self.processed_configs = {}
|
||||
if isinstance(tgt, basestring):
|
||||
if isinstance(tgt, Target):
|
||||
self.target = tgt
|
||||
else:
|
||||
if tgt in TARGET_MAP:
|
||||
self.target = TARGET_MAP[tgt]
|
||||
else:
|
||||
self.target = generate_py_target(
|
||||
self.app_config_data.get("custom_targets", {}), tgt)
|
||||
|
||||
else:
|
||||
self.target = tgt
|
||||
self.target = deepcopy(self.target)
|
||||
self.target_labels = self.target.labels
|
||||
for override in BOOTLOADER_OVERRIDES:
|
||||
|
@ -465,7 +464,7 @@ class Config(object):
|
|||
continue
|
||||
full_path = os.path.normpath(os.path.abspath(config_file))
|
||||
# Check that we didn't already process this file
|
||||
if self.processed_configs.has_key(full_path):
|
||||
if full_path in self.processed_configs:
|
||||
continue
|
||||
self.processed_configs[full_path] = True
|
||||
# Read the library configuration and add a "__full_config_path"
|
||||
|
@ -496,7 +495,7 @@ class Config(object):
|
|||
|
||||
# If there's already a configuration for a module with the same
|
||||
# name, exit with error
|
||||
if self.lib_config_data.has_key(cfg["name"]):
|
||||
if cfg["name"] in self.lib_config_data:
|
||||
raise ConfigException(
|
||||
"Library name '%s' is not unique (defined in '%s' and '%s')"
|
||||
% (cfg["name"], full_path,
|
||||
|
@ -729,7 +728,7 @@ class Config(object):
|
|||
unit_kind,
|
||||
label)))))
|
||||
|
||||
for cumulatives in self.cumulative_overrides.itervalues():
|
||||
for cumulatives in self.cumulative_overrides.values():
|
||||
cumulatives.update_target(self.target)
|
||||
|
||||
return params
|
||||
|
|
|
@ -30,14 +30,14 @@ def hook_tool(function):
|
|||
return function(t_self, *args, **kwargs)
|
||||
_RUNNING_HOOKS[tool] = True
|
||||
# If this tool isn't hooked, return original function
|
||||
if not _HOOKS.has_key(tool):
|
||||
if tool not in _HOOKS:
|
||||
res = function(t_self, *args, **kwargs)
|
||||
_RUNNING_HOOKS[tool] = False
|
||||
return res
|
||||
tooldesc = _HOOKS[tool]
|
||||
setattr(t_self, tool_flag, False)
|
||||
# If there is a replace hook, execute the replacement instead
|
||||
if tooldesc.has_key("replace"):
|
||||
if "replace" in tooldesc:
|
||||
res = tooldesc["replace"](t_self, *args, **kwargs)
|
||||
# If the replacement has set the "done" flag, exit now
|
||||
# Otherwise continue as usual
|
||||
|
@ -45,12 +45,12 @@ def hook_tool(function):
|
|||
_RUNNING_HOOKS[tool] = False
|
||||
return res
|
||||
# Execute pre-function before main function if specified
|
||||
if tooldesc.has_key("pre"):
|
||||
if "pre" in tooldesc:
|
||||
tooldesc["pre"](t_self, *args, **kwargs)
|
||||
# Execute the main function now
|
||||
res = function(t_self, *args, **kwargs)
|
||||
# Execute post-function after main function if specified
|
||||
if tooldesc.has_key("post"):
|
||||
if "post" in tooldesc:
|
||||
post_res = tooldesc["post"](t_self, *args, **kwargs)
|
||||
_RUNNING_HOOKS[tool] = False
|
||||
return post_res or res
|
||||
|
@ -173,7 +173,7 @@ class Hook(object):
|
|||
hook_type - one of the _HOOK_TYPES
|
||||
cmdline - the initial command line
|
||||
"""
|
||||
if self._cmdline_hooks.has_key(hook_type):
|
||||
if hook_type in self._cmdline_hooks:
|
||||
cmdline = self._cmdline_hooks[hook_type](
|
||||
self.toolchain.__class__.__name__, cmdline)
|
||||
return cmdline
|
||||
|
|
|
@ -246,7 +246,7 @@ if __name__ == '__main__':
|
|||
search_path = TOOLCHAIN_PATHS[toolchain] or "No path set"
|
||||
args_error(parser, "Could not find executable for %s.\n"
|
||||
"Currently set search path: %s"
|
||||
%(toolchain,search_path))
|
||||
%(toolchain, search_path))
|
||||
|
||||
# Test
|
||||
build_data_blob = {} if options.build_data else None
|
||||
|
|
|
@ -214,16 +214,16 @@ class Target(namedtuple("Target", "name json_data resolution_order resolution_or
|
|||
# inheritance level, left to right order to figure out all the
|
||||
# other classes that change the definition by adding or removing
|
||||
# elements
|
||||
for idx in xrange(self.resolution_order[def_idx][1] - 1, -1, -1):
|
||||
for idx in range(self.resolution_order[def_idx][1] - 1, -1, -1):
|
||||
same_level_targets = [tar[0] for tar in self.resolution_order
|
||||
if tar[1] == idx]
|
||||
for tar in same_level_targets:
|
||||
data = tdata[tar]
|
||||
# Do we have anything to add ?
|
||||
if data.has_key(attrname + "_add"):
|
||||
if (attrname + "_add") in data:
|
||||
starting_value.extend(data[attrname + "_add"])
|
||||
# Do we have anything to remove ?
|
||||
if data.has_key(attrname + "_remove"):
|
||||
if (attrname + "_remove") in data:
|
||||
# Macros can be defined either without a value (MACRO)
|
||||
# or with a value (MACRO=10). When removing, we specify
|
||||
# only the name of the macro, without the value. So we
|
||||
|
@ -335,7 +335,7 @@ class Target(namedtuple("Target", "name json_data resolution_order resolution_or
|
|||
# "class_name" must refer to a class in this file, so check if the
|
||||
# class exists
|
||||
mdata = self.get_module_data()
|
||||
if not mdata.has_key(class_name) or \
|
||||
if class_name not in mdata or \
|
||||
not inspect.isclass(mdata[class_name]):
|
||||
raise HookError(
|
||||
("Class '%s' required by '%s' in target '%s'"
|
||||
|
|
|
@ -590,7 +590,7 @@ class mbedToolchain:
|
|||
if not d or not exists(d):
|
||||
return True
|
||||
|
||||
if not self.stat_cache.has_key(d):
|
||||
if d not in self.stat_cache:
|
||||
self.stat_cache[d] = stat(d).st_mtime
|
||||
|
||||
if self.stat_cache[d] >= target_mod_time:
|
||||
|
@ -801,7 +801,7 @@ class mbedToolchain:
|
|||
files_paths.remove(source)
|
||||
|
||||
for source in files_paths:
|
||||
if resources is not None and resources.file_basepath.has_key(source):
|
||||
if resources is not None and source in resources.file_basepath:
|
||||
relative_path = relpath(source, resources.file_basepath[source])
|
||||
elif rel_path is not None:
|
||||
relative_path = relpath(source, rel_path)
|
||||
|
@ -831,7 +831,7 @@ class mbedToolchain:
|
|||
def get_inc_file(self, includes):
|
||||
include_file = join(self.build_dir, ".includes_%s.txt" % self.inc_md5)
|
||||
if not exists(include_file):
|
||||
with open(include_file, "wb") as f:
|
||||
with open(include_file, "w") as f:
|
||||
cmd_list = []
|
||||
for c in includes:
|
||||
if c:
|
||||
|
@ -892,7 +892,7 @@ class mbedToolchain:
|
|||
# Sort include paths for consistency
|
||||
inc_paths = sorted(set(inc_paths))
|
||||
# Unique id of all include paths
|
||||
self.inc_md5 = md5(' '.join(inc_paths)).hexdigest()
|
||||
self.inc_md5 = md5(' '.join(inc_paths).encode('utf-8')).hexdigest()
|
||||
|
||||
objects = []
|
||||
queue = []
|
||||
|
@ -968,7 +968,7 @@ class mbedToolchain:
|
|||
sleep(0.01)
|
||||
pending = 0
|
||||
for r in results:
|
||||
if r._ready is True:
|
||||
if r.ready():
|
||||
try:
|
||||
result = r.get()
|
||||
results.remove(r)
|
||||
|
@ -1055,7 +1055,7 @@ class mbedToolchain:
|
|||
buff[0] = re.sub('^(.*?)\: ', '', buff[0])
|
||||
for line in buff:
|
||||
filename = line.replace('\\\n', '').strip()
|
||||
if file:
|
||||
if filename:
|
||||
filename = filename.replace('\\ ', '\a')
|
||||
dependencies.extend(((self.CHROOT if self.CHROOT else '') +
|
||||
f.replace('\a', ' '))
|
||||
|
@ -1319,7 +1319,7 @@ class mbedToolchain:
|
|||
@staticmethod
|
||||
def _overwrite_when_not_equal(filename, content):
|
||||
if not exists(filename) or content != open(filename).read():
|
||||
with open(filename, "wb") as out:
|
||||
with open(filename, "w") as out:
|
||||
out.write(content)
|
||||
|
||||
@staticmethod
|
||||
|
|
Loading…
Reference in New Issue