From 18c9d69b2d75e38c9e0d05df576cf3a85d7a2392 Mon Sep 17 00:00:00 2001 From: Martin Kemp Date: Thu, 30 Jul 2015 15:59:54 +0100 Subject: Initial py3 compatibility. --- amalgamate/merge_all.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'amalgamate/merge_all.py') diff --git a/amalgamate/merge_all.py b/amalgamate/merge_all.py index fe7b50f..275e930 100644 --- a/amalgamate/merge_all.py +++ b/amalgamate/merge_all.py @@ -1,5 +1,6 @@ -import glob -import os +"""Merges all the header files.""" +from glob import glob +from os import path as pt import re from collections import defaultdict import sys @@ -10,11 +11,11 @@ if len(sys.argv) > 1: OUTPUT = 'crow_all.h' re_depends = re.compile('^#include "(.*)"', re.MULTILINE) -headers = [x.rsplit('/',1)[-1] for x in glob.glob(os.path.join(header_path,'*.h'))] -print headers +headers = [x.rsplit('/', 1)[-1] for x in glob(pt.join(header_path, '*.h'))] +print(headers) edges = defaultdict(list) for header in headers: - d = open(os.path.join(header_path, header)).read().decode('utf8') + d = open(pt.join(header_path, header)).read().decode('utf8') match = re_depends.findall(d) for m in match: # m should included before header @@ -22,30 +23,32 @@ for header in headers: visited = defaultdict(bool) order = [] + + def dfs(x): + """Ensure all header files are visited.""" visited[x] = True for y in edges[x]: if not visited[y]: dfs(y) order.append(x) - + for header in headers: if not visited[header]: dfs(header) order = order[::-1] for x in edges: - print x, edges[x] + print(x, edges[x]) for x in edges: for y in edges[x]: assert order.index(x) < order.index(y), 'cyclic include detected' -print order +print(order) build = [] for header in order: - d = open(os.path.join(header_path, header)).read().decode('utf8') - build.append(re_depends.sub(lambda x:'\n', d)) + d = open(pt.join(header_path, header)).read().decode('utf8') + build.append(re_depends.sub(lambda x: '\n', d)) build.append('\n') -open(OUTPUT,'w').write('\n'.join(build)) - +open(OUTPUT, 'w').write('\n'.join(build)) -- cgit v1.2.3-54-g00ecf From 7a3cb4347393ae08151dcb15074f44783fe86dcf Mon Sep 17 00:00:00 2001 From: Martin Kemp Date: Thu, 30 Jul 2015 16:05:57 +0100 Subject: No need to decode utf-8 strings already. --- amalgamate/merge_all.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'amalgamate/merge_all.py') diff --git a/amalgamate/merge_all.py b/amalgamate/merge_all.py index 275e930..273ea87 100644 --- a/amalgamate/merge_all.py +++ b/amalgamate/merge_all.py @@ -15,7 +15,7 @@ headers = [x.rsplit('/', 1)[-1] for x in glob(pt.join(header_path, '*.h'))] print(headers) edges = defaultdict(list) for header in headers: - d = open(pt.join(header_path, header)).read().decode('utf8') + d = open(pt.join(header_path, header)).read() match = re_depends.findall(d) for m in match: # m should included before header @@ -47,7 +47,7 @@ for x in edges: print(order) build = [] for header in order: - d = open(pt.join(header_path, header)).read().decode('utf8') + d = open(pt.join(header_path, header)).read() build.append(re_depends.sub(lambda x: '\n', d)) build.append('\n') -- cgit v1.2.3-54-g00ecf