diff --git a/tools/mx2conf.py b/tools/mx2conf.py index 5afc8693..ec0d2cb0 100755 --- a/tools/mx2conf.py +++ b/tools/mx2conf.py @@ -3,7 +3,7 @@ __author__ = 'Fabien Poussin' __version__ = '0.1' -from os.path import expanduser, sep, dirname, abspath +from os.path import dirname, abspath from argparse import ArgumentParser import re diff --git a/tools/update_configs.py b/tools/update_configs.py index b12a24af..363fc7da 100755 --- a/tools/update_configs.py +++ b/tools/update_configs.py @@ -4,21 +4,19 @@ __author__ = 'Fabien Poussin' __version__ = '0.1' import os -import re from argparse import ArgumentParser -from traceback import print_exc from shutil import copy + parser = ArgumentParser(description='Generate ChibiOS-Contrib config and Makefiles from ChibiOS') parser.add_argument('-s', '--src', default='../../ChibiOS', type=str, help="ChibiOS folder") parser.add_argument('-d', '--dst', default='..', type=str, help='ChibiOS-Contrib folder') FOLDERS = ['testhal'] + def makefile(lines): - for l in range(len(lines)): - if 'CHIBIOS =' in lines[l]: lines[l] = lines[l][:-1] + '/../ChibiOS\n' lines.insert(l + 1, 'CHIBIOS_CONTRIB = $(CHIBIOS)/../ChibiOS-Contrib\n') @@ -31,7 +29,6 @@ def makefile(lines): def halconf(lines): - idx_end = lines.index('#endif /* HALCONF_H */\n') lines.insert(idx_end - 1, '\n') lines.insert(idx_end - 1, '#include "halconf_community.h"') @@ -41,7 +38,6 @@ def halconf(lines): def mcuconf(lines): - idx_end = lines.index('#endif /* MCUCONF_H */\n') lines.insert(idx_end - 1, '\n') lines.insert(idx_end - 1, '#include "mcuconf_community.h"') diff --git a/tools/upgrades/upgrade.py b/tools/upgrade.py similarity index 60% rename from tools/upgrades/upgrade.py rename to tools/upgrade.py index 4a3c6d36..72ccd57c 100644 --- a/tools/upgrades/upgrade.py +++ b/tools/upgrade.py @@ -1,24 +1,14 @@ #!/usr/bin/python3 +# -*- coding: utf-8 -*- +__author__ = 'Fabien Poussin' +__version__ = '0.1' import os import argparse -parser = argparse.ArgumentParser(description='Project upgrade script for ChibiOS') -parser.add_argument('-p', '--path', dest='path', help='Where project files are located', required=True) -parser.add_argument('-c', '--chibios', dest='chpath', help='Where ChibiOS is located', required=True) -parser.add_argument('-v', '--verbose', dest='verbose', action='store_true') -args = parser.parse_args() +verbose = False -verbose = args.verbose - -if not os.path.exists(args.chpath): - print('Invalid Chibios path', args.chpath) - exit(1) - -new_chconf = os.path.abspath('{}/os/rt/templates/chconf.h'.format(args.chpath)) -new_nilconf = os.path.abspath('{}/os/nil/templates/chconf.h'.format(args.chpath)) -new_halconf = os.path.abspath('{}/os/hal/templates/halconf.h'.format(args.chpath)) def find(name, path): ret = [] @@ -44,7 +34,7 @@ def get_values(path): line_num = 0 for l in f.readlines(): if l.startswith('#define') or continuation != None: - if continuation == None: + if continuation is None: words = l.split(' ') if len(words) > 2: defname = words[1] @@ -56,7 +46,7 @@ def get_values(path): else: values[continuation]['data'].append(l) # multi line define - if l.rstrip().endswith('\\') and continuation == None: + if l.rstrip().endswith('\\') and continuation is None: continuation = defname # one line define elif not l.rstrip().endswith('\\'): @@ -116,35 +106,54 @@ def write_changes(path, source, values): with open(path, 'w') as f: f.write(''.join(file_lines)) -new_chconf_values = get_values(new_chconf) -new_nilconf_values = get_values(new_nilconf) -new_halconf_values = get_values(new_halconf) -chconf_files = find('chconf.h', args.path) -halconf_files = find('halconf.h', args.path) +if __name__ == '__main__': + + parser = argparse.ArgumentParser(description='Project upgrade script for ChibiOS') + parser.add_argument('-p', '--path', dest='path', help='Where project files are located', required=True) + parser.add_argument('-c', '--chibios', dest='chpath', help='Where ChibiOS is located', required=True) + parser.add_argument('-v', '--verbose', dest='verbose', action='store_true') + args = parser.parse_args() + + verbose = args.verbose + + if not os.path.exists(args.chpath): + print('Invalid Chibios path', args.chpath) + exit(1) + + new_chconf = os.path.abspath('{}/os/rt/templates/chconf.h'.format(args.chpath)) + new_nilconf = os.path.abspath('{}/os/nil/templates/chconf.h'.format(args.chpath)) + new_halconf = os.path.abspath('{}/os/hal/templates/halconf.h'.format(args.chpath)) + + new_chconf_values = get_values(new_chconf) + new_nilconf_values = get_values(new_nilconf) + new_halconf_values = get_values(new_halconf) + + chconf_files = find('chconf.h', args.path) + halconf_files = find('halconf.h', args.path) + + for c in chconf_files: + values = get_values(c) + if verbose: + print(c) + for k, v in values.items(): + print(k, v) + if is_nil(c): + new_format = new_nilconf_values.copy() + set_values(values, new_format) + write_changes(c, new_nilconf, new_format) + else: + new_format = new_chconf_values.copy() + set_values(values, new_format) + write_changes(c, new_chconf, new_format) + + for h in halconf_files: + values = get_values(h) + if verbose: + print(h) + for k, v in values.items(): + print(k, v) + new_format = new_halconf_values.copy() -for c in chconf_files: - values = get_values(c) - if verbose: - print(c) - for k, v in values.items(): - print(k, v) - if is_nil(c): - new_format = new_nilconf_values.copy() set_values(values, new_format) - write_changes(c, new_nilconf, new_format) - else: - new_format = new_chconf_values.copy() - set_values(values, new_format) - write_changes(c, new_chconf, new_format) - -for h in halconf_files: - values = get_values(h) - if verbose: - print(h) - for k, v in values.items(): - print(k, v) - new_format = new_halconf_values.copy() - - set_values(values, new_format) - write_changes(h, new_halconf, new_format) + write_changes(h, new_halconf, new_format)