From 8b5a7600c489f601b2ff2eea33ddec348f167b19 Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Thu, 31 May 2018 08:00:02 -0500 Subject: [PATCH 1/7] Encapsulated Windows file separator for proper regex parsing --- tools/memap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/memap.py b/tools/memap.py index 83201745ba..13e0f4fbe5 100644 --- a/tools/memap.py +++ b/tools/memap.py @@ -79,7 +79,7 @@ class _Parser(object): class _GccParser(_Parser): RE_OBJECT_FILE = re.compile(r'^(.+\/.+\.o)$') - RE_LIBRARY_OBJECT = re.compile(r'^.+' + sep + r'lib((.+\.a)\((.+\.o)\))$') + RE_LIBRARY_OBJECT = re.compile(r'^.+' + re.escape(sep) + r'lib((.+\.a)\((.+\.o)\))$') RE_STD_SECTION = re.compile(r'^\s+.*0x(\w{8,16})\s+0x(\w+)\s(.+)$') RE_FILL_SECTION = re.compile(r'^\s*\*fill\*\s+0x(\w{8,16})\s+0x(\w+).*$') From 2abae9e1d1759551fc84eafc58ed46e623316f50 Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Thu, 31 May 2018 21:26:26 -0500 Subject: [PATCH 2/7] Modified memap path separator parsing to support Py3. Had to remove part of test that was incompatible with Py3 on Windows. --- tools/memap.py | 2 +- tools/test/memap/parse_test.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/memap.py b/tools/memap.py index 13e0f4fbe5..3e419e8eb7 100644 --- a/tools/memap.py +++ b/tools/memap.py @@ -79,7 +79,7 @@ class _Parser(object): class _GccParser(_Parser): RE_OBJECT_FILE = re.compile(r'^(.+\/.+\.o)$') - RE_LIBRARY_OBJECT = re.compile(r'^.+' + re.escape(sep) + r'lib((.+\.a)\((.+\.o)\))$') + RE_LIBRARY_OBJECT = re.compile(r'^.+' + r''.format(sep) + r'lib((.+\.a)\((.+\.o)\))$') RE_STD_SECTION = re.compile(r'^\s+.*0x(\w{8,16})\s+0x(\w+)\s(.+)$') RE_FILL_SECTION = re.compile(r'^\s*\*fill\*\s+0x(\w{8,16})\s+0x(\w+).*$') diff --git a/tools/test/memap/parse_test.py b/tools/test/memap/parse_test.py index 92877ad8e2..6ed7ecd7e5 100644 --- a/tools/test/memap/parse_test.py +++ b/tools/test/memap/parse_test.py @@ -64,8 +64,6 @@ def test_parse_gcc(): parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_GCC_DATA[k] assert memap.modules == parsed_data_os_agnostic - memap.parse(join(dirname(__file__), "gcc.map"), "GCC_CR") - assert memap.modules == parsed_data_os_agnostic def test_add_empty_module(): From 27d0255cb3666c4bb357f26447abc20aefe6153e Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Thu, 31 May 2018 08:11:47 -0500 Subject: [PATCH 3/7] Sets module no longer needed to use set() --- tools/test/examples/examples_lib.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/test/examples/examples_lib.py b/tools/test/examples/examples_lib.py index 8fda2d3f55..9b064cadc7 100644 --- a/tools/test/examples/examples_lib.py +++ b/tools/test/examples/examples_lib.py @@ -10,7 +10,6 @@ import os.path import sys import subprocess from shutil import rmtree -from sets import Set ROOT = abspath(dirname(dirname(dirname(dirname(__file__))))) sys.path.insert(0, ROOT) @@ -254,11 +253,11 @@ def export_repos(config, ides, targets, examples): ides - List of IDES to export to """ results = {} - valid_examples = Set(examples) + valid_examples = set(examples) print("\nExporting example repos....\n") for example in config['examples']: example_names = [basename(x['repo']) for x in get_repo_list(example)] - common_examples = valid_examples.intersection(Set(example_names)) + common_examples = valid_examples.intersection(set(example_names)) if not common_examples: continue export_failures = [] @@ -337,11 +336,11 @@ def compile_repos(config, toolchains, targets, profile, examples): """ results = {} - valid_examples = Set(examples) + valid_examples = set(examples) print("\nCompiling example repos....\n") for example in config['examples']: example_names = [basename(x['repo']) for x in get_repo_list(example)] - common_examples = valid_examples.intersection(Set(example_names)) + common_examples = valid_examples.intersection(set(example_names)) if not common_examples: continue failures = [] From 6e9b7ea276af249dae3e7dd064dd0c3ae4170ad2 Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Thu, 31 May 2018 08:02:57 -0500 Subject: [PATCH 4/7] Added basestring import for proper string concatenation in Py3 --- tools/notifier/term.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/notifier/term.py b/tools/notifier/term.py index 55f49409bc..e8bb352d25 100644 --- a/tools/notifier/term.py +++ b/tools/notifier/term.py @@ -14,6 +14,7 @@ # limitations under the License. from __future__ import print_function, division, absolute_import +from past.builtins import basestring import re import sys From e65537790e30a1e371cd27fed03c2cd36b967dfb Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Thu, 31 May 2018 08:10:46 -0500 Subject: [PATCH 5/7] Modified LazyDict to inherit from object instead of dict, and removed iteration over values. Py3 no longer supports dictionaries that self-modify their item lists during iteration. --- tools/toolchains/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index ef4b3974f7..ead4707617 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -45,7 +45,7 @@ from ..memap import MemapParser CPU_COUNT_MIN = 1 CPU_COEF = 1 -class LazyDict(dict): +class LazyDict(object): def __init__(self): self.eager = {} self.lazy = {} @@ -252,8 +252,6 @@ class Resources: headername = basename(filename) dupe_headers.setdefault(headername, set()) dupe_headers[headername] |= set([headername]) - for res in self.features.values(): - res._collect_duplicates(dupe_dict, dupe_headers) return dupe_dict, dupe_headers def detect_duplicates(self, toolchain): From cdbae994d101904f51631f9bb59075a67bfe2d4f Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Fri, 1 Jun 2018 16:33:13 -0500 Subject: [PATCH 6/7] Modified IntelHex tofile parameter to use path. Py3 open(...) returns a BufferedReader instead of a file. --- tools/build_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build_api.py b/tools/build_api.py index b2247fe264..8a786673cf 100644 --- a/tools/build_api.py +++ b/tools/build_api.py @@ -459,7 +459,7 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'): notify.info("Space used after regions merged: 0x%x" % (merged.maxaddr() - merged.minaddr() + 1)) with open(destination, "wb+") as output: - merged.tofile(output, format=format.strip(".")) + merged.tofile(destination, format=format.strip(".")) def scan_resources(src_paths, toolchain, dependencies_paths=None, inc_dirs=None, base_path=None, collect_ignores=False): From f689ace3e347f9495bd1e02593bcea6f8a0885d7 Mon Sep 17 00:00:00 2001 From: Cruz Monrreal II Date: Mon, 4 Jun 2018 12:02:49 -0500 Subject: [PATCH 7/7] Removed extraneous file open --- tools/build_api.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/build_api.py b/tools/build_api.py index 8a786673cf..cb2c0eaa76 100644 --- a/tools/build_api.py +++ b/tools/build_api.py @@ -458,8 +458,7 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'): makedirs(dirname(destination)) notify.info("Space used after regions merged: 0x%x" % (merged.maxaddr() - merged.minaddr() + 1)) - with open(destination, "wb+") as output: - merged.tofile(destination, format=format.strip(".")) + merged.tofile(destination, format=format.strip(".")) def scan_resources(src_paths, toolchain, dependencies_paths=None, inc_dirs=None, base_path=None, collect_ignores=False):