diff --git a/tools/config/__init__.py b/tools/config/__init__.py index e1ad2be77d..9dc7ddc3d9 100644 --- a/tools/config/__init__.py +++ b/tools/config/__init__.py @@ -1124,10 +1124,14 @@ class Config(object): Config._check_required_parameters(params) params_with_values = [p for p in params.values() if p.value is not None] ctx = { - "cfg_params" : [(p.macro_name, str(p.value), p.set_by) - for p in params_with_values], - "macros": [(m.macro_name, str(m.macro_value or ""), m.defined_by) - for m in macros.values()], + "cfg_params": sorted([ + (p.macro_name, str(p.value), p.set_by) + for p in params_with_values + ]), + "macros": sorted([ + (m.macro_name, str(m.macro_value or ""), m.defined_by) + for m in macros.values() + ]), "name_len": max([len(m.macro_name) for m in macros.values()] + [len(m.macro_name) for m in params_with_values] + [0]), diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index 3ff1f60e12..65dfcc928b 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -312,12 +312,17 @@ class mbedToolchain: """ Generate a via file for a pile of defines ARM, GCC, IAR cross compatible """ - option_md5 = md5(' '.join(options).encode('utf-8')).hexdigest() - via_file = join(self.build_dir, naming.format(option_md5)) - if not exists(via_file): + to_write = " ".join(options).encode('utf-8') + new_md5 = md5(to_write).hexdigest() + via_file = join(self.build_dir, naming.format(new_md5)) + try: + with open(via_file, "r") as fd: + old_md5 = md5(fd.read().encode('utf-8')).hexdigest() + except IOError: + old_md5 = None + if old_md5 != new_md5: with open(via_file, "w") as fd: - string = " ".join(options) - fd.write(string) + fd.write(to_write) return via_file def get_inc_file(self, includes):