From fcc10b1f4a9968af5cda1adb9e449df92939d5f2 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= Date: Fri, 4 Nov 2016 15:58:46 -0400 Subject: [PATCH 3/3] Make it compatible with python3 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Python scripts are now compatible with both version of python, 2 and 3. Helped-by: Damien Riegel Helped-by: Alexandre Leblanc Signed-off-by: Gaƫl PORTAY --- maketables | 135 ++++++++++++++++++++++++++++++----------------------------- makewrappers | 8 ++-- 2 files changed, 73 insertions(+), 70 deletions(-) diff --git a/maketables b/maketables index 0726485..f74f2b1 100755 --- a/maketables +++ b/maketables @@ -51,6 +51,7 @@ value. (This is for consistency with C array bounds.) import glob import sys import string +import os from templatefile import TemplateFile class DataType: @@ -58,74 +59,74 @@ class DataType: def __init__(self, path): """read the first line of path, then make tuples of the rest""" - source = file(path) - definition = source.readline().rstrip() - self.name, qualifiers = string.split(definition, ': ', 2) - if '; ' in qualifiers: - self.prefix, columns = string.split(qualifiers, '; ') - else: - self.prefix = qualifiers - columns = [] - self.flags = False - if len(columns): - self.columns = [] - columns = string.split(columns, ', ') - for col in columns: - indexed = False - if col.startswith("FLAGS"): - print("Flags: set for %s" % self.name) - self.flags = True + with open(path,'r') as source: + definition = source.readline().rstrip() + self.name, qualifiers = definition.split(': ', 2) + if '; ' in qualifiers: + self.prefix, columns = qualifiers.split('; ') + else: + self.prefix = qualifiers + columns = [] + self.flags = False + if len(columns): + self.columns = [] + columns = columns.split(', ') + for col in columns: + indexed = False + if col.startswith("FLAGS"): + print("Flags: set for %s" % self.name) + self.flags = True + continue + if col.startswith("INDEXED "): + col = col[8:] + indexed = True + if "=" in col: + name, default = col.split(' = ') + else: + name, default = col, "" + if " " in name: + words = name.split(' ') + name = words[-1] + del words[-1] + type = ' '.join(words) + else: + type = "char *" + self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) + else: + self.columns = [] + self.data = [] + self.comments = [] + index = 1 + for line in source.readlines(): + item = {} + if line.startswith('#'): + self.comments.append(line.rstrip().replace('#', '')) continue - if col.startswith("INDEXED "): - col = col[8:] - indexed = True - if "=" in col: - name, default = string.split(col, ' = ') - else: - name, default = col, "" - if " " in name: - words = string.split(name, ' ') - name = words[-1] - del words[-1] - type = ' '.join(words) - else: - type = "char *" - self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) - else: - self.columns = [] - self.data = [] - self.comments = [] - index = 1 - for line in source.readlines(): - item = {} - if line.startswith('#'): - self.comments.append(line.rstrip().replace('#', '')) - continue - # first entry on the line is the "real" name/id, following hunks - # are additional columns - cols = string.split(line.rstrip(), ', ') - item["name"] = cols.pop(0) - item["upper"] = item["name"].replace('-', '_').upper() - column_list = [] - for col in self.columns: - if len(cols) > 0: - value = cols.pop(0) - if col["indexed"]: - if not "max" in col: - col["max"] = value - if value > col["max"]: - col["max"] = value - if not "min" in col: - col["min"] = value - if value < col["min"]: - col["min"] = value - column_list.append({"name":col["name"], "value":value}) - else: - column_list.append({"name":col["name"], "value":col["value"]}) - item["cols"] = column_list - item["index"] = index - index = index + 1 - self.data.append(item) + # first entry on the line is the "real" name/id, following hunks + # are additional columns + cols = line.rstrip().split(', ') + item["name"] = cols.pop(0) + item["upper"] = item["name"].replace('-', '_').upper() + column_list = [] + for col in self.columns: + if len(cols) > 0: + value = cols.pop(0) + if col["indexed"]: + if not "max" in col: + col["max"] = value + if value > col["max"]: + col["max"] = value + if not "min" in col: + col["min"] = value + if value < col["min"]: + col["min"] = value + column_list.append({"name":col["name"], "value":value}) + else: + column_list.append({"name":col["name"], "value":col["value"]}) + item["cols"] = column_list + item["index"] = index + index = index + 1 + self.data.append(item) def __getitem__(self, key): """Make this object look like a dict for Templates to use""" diff --git a/makewrappers b/makewrappers index bac856b..ff08ba0 100755 --- a/makewrappers +++ b/makewrappers @@ -453,6 +453,8 @@ additional ports to include. """ def __init__(self, port, sources): + if type(port) is not str: + port = str(port, encoding="ascii") self.name = port self.subports = [] self.preports = [] @@ -483,7 +485,7 @@ additional ports to include. if retcode: raise Exception("preports script failed for port %s" % self.name) - for preport in string.split(portlist): + for preport in portlist.split(): next = Port(preport, sources) self.preports.append(next) @@ -494,7 +496,7 @@ additional ports to include. if retcode: raise Exception("subports script failed for port %s" % self.name) - for subport in string.split(portlist): + for subport in portlist.split(): next = Port(subport, sources) self.subports.append(next) @@ -519,7 +521,7 @@ additional ports to include. return mergedfuncs def define(self): - return '#define PSEUDO_PORT_%s 1' % string.upper(self.name).replace('/', '_') + return '#define PSEUDO_PORT_%s 1' % self.name.upper().replace('/', '_') def portdeps(self): deps = [] -- 2.10.1