From 6b6024a3a2e0297267ad8bc0ad1dd03d6d04265a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 15 Jan 2017 21:09:08 -0700 Subject: dtoc: Replace dot with underscore to avoid compiler errors If there is a '.' in a compatible string, then dtoc will produce a struct with a name containing a '.'. This won't work, so replace it with '_'. Also add a suitable test to the sandbox device tree to catch this. Signed-off-by: Simon Glass --- tools/dtoc/dtoc.py | 1 + 1 file changed, 1 insertion(+) (limited to 'tools') diff --git a/tools/dtoc/dtoc.py b/tools/dtoc/dtoc.py index 11050b6..6df7b0d 100755 --- a/tools/dtoc/dtoc.py +++ b/tools/dtoc/dtoc.py @@ -54,6 +54,7 @@ def Conv_name_to_c(name): str = name.replace('@', '_at_') str = str.replace('-', '_') str = str.replace(',', '_') + str = str.replace('.', '_') str = str.replace('/', '__') return str -- cgit v1.1 From 8aa41363ebf46b9ff63b311bd2aa793c67a49def Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 17 Jan 2017 16:52:23 -0700 Subject: patman: Format checkpatch messages for IDE throwback It is convenient to be able to deal with checkpatch warnings in the same way as build warnings. Tools such as emacs and kate can quickly locate the source file and line automatically. To achieve this, adjust the format to match the C compiler, and output to stderr. Signed-off-by: Simon Glass --- tools/patman/checkpatch.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/patman/checkpatch.py b/tools/patman/checkpatch.py index be78fc5..2915d97 100644 --- a/tools/patman/checkpatch.py +++ b/tools/patman/checkpatch.py @@ -138,7 +138,7 @@ def GetWarningMsg(col, msg_type, fname, line, msg): msg_type = col.Color(col.RED, msg_type) elif msg_type == 'check': msg_type = col.Color(col.MAGENTA, msg_type) - return '%s: %s,%d: %s' % (msg_type, fname, line, msg) + return '%s:%d: %s: %s\n' % (fname, line, msg_type, msg) def CheckPatches(verbose, args): '''Run the checkpatch.pl script on each patch''' @@ -157,7 +157,8 @@ def CheckPatches(verbose, args): result.checks): print("Internal error: some problems lost") for item in result.problems: - print(GetWarningMsg(col, item.get('type', ''), + sys.stderr.write( + GetWarningMsg(col, item.get('type', ''), item.get('file', ''), item.get('line', 0), item.get('msg', 'message'))) print -- cgit v1.1 From 8d7523c55c2c4000af15dfcba658eef35cc14302 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 23 Jan 2017 05:38:56 -0700 Subject: buildman: Allow showing the list of boards with -n As well as showing the number of boards, allow showing the actual list of boards that would be built, if -v is provided. Signed-off-by: Simon Glass --- tools/buildman/README | 2 +- tools/buildman/board.py | 10 +++++----- tools/buildman/control.py | 19 +++++++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) (limited to 'tools') diff --git a/tools/buildman/README b/tools/buildman/README index ccea13f..f665276 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -141,7 +141,7 @@ means to build all arm boards except nvidia, freescale and anything ending with 'ball'. It is convenient to use the -n option to see what will be built based on -the subset given. +the subset given. Use -v as well to get an actual list of boards. Buildman does not store intermediate object files. It optionally copies the binary output into a directory when a build is successful. Size diff --git a/tools/buildman/board.py b/tools/buildman/board.py index ae0e0b8..f842d3a 100644 --- a/tools/buildman/board.py +++ b/tools/buildman/board.py @@ -249,15 +249,15 @@ class Boards: exclude: List of boards to exclude, regardless of 'args' Returns: - Dictionary which holds the number of boards which were selected + Dictionary which holds the list of boards which were selected due to each argument, arranged by argument. """ result = {} terms = self._BuildTerms(args) - result['all'] = 0 + result['all'] = [] for term in terms: - result[str(term)] = 0 + result[str(term)] = [] exclude_list = [] for expr in exclude: @@ -285,7 +285,7 @@ class Boards: if build_it: board.build_it = True if matching_term: - result[matching_term] += 1 - result['all'] += 1 + result[matching_term].append(board.target) + result['all'].append(board.target) return result diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 545c2cb..73b1a14 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -48,9 +48,9 @@ def ShowActions(series, why_selected, boards_selected, builder, options): Args: series: Series object why_selected: Dictionary where each key is a buildman argument - provided by the user, and the value is the boards brought - in by that argument. For example, 'arm' might bring in - 400 boards, so in this case the key would be 'arm' and + provided by the user, and the value is the list of boards + brought in by that argument. For example, 'arm' might bring + in 400 boards, so in this case the key would be 'arm' and the value would be a list of board names. boards_selected: Dict of selected boards, key is target name, value is Board object @@ -75,9 +75,11 @@ def ShowActions(series, why_selected, boards_selected, builder, options): print for arg in why_selected: if arg != 'all': - print arg, ': %d boards' % why_selected[arg] + print arg, ': %d boards' % len(why_selected[arg]) + if options.verbose: + print ' %s' % ' '.join(why_selected[arg]) print ('Total boards to build for each commit: %d\n' % - why_selected['all']) + len(why_selected['all'])) def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, clean_dir=False): @@ -221,9 +223,10 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, options.git_dir, count, series=None, allow_overwrite=True) else: series = None - options.verbose = True - if not options.summary: - options.show_errors = True + if not options.dry_run: + options.verbose = True + if not options.summary: + options.show_errors = True # By default we have one thread per CPU. But if there are not enough jobs # we can have fewer threads and use a high '-j' value for make. -- cgit v1.1 From f11a0af713a714ee2efcd810dd81c6dfd59381aa Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Tue, 7 Feb 2017 20:11:00 +1300 Subject: patman: Handle non-ascii characters in names When gathering addresses for the Cc list patman would encounter a UnicodeDecodeError due to non-ascii characters in the author name. Address this by explicitly using utf-8 when building the Cc list. Signed-off-by: Chris Packham Acked-by: Simon Glass --- tools/patman/series.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/patman/series.py b/tools/patman/series.py index 38a452e..c1b8652 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -235,7 +235,8 @@ class Series(dict): if cover_fname: cover_cc = gitutil.BuildEmailList(self.get('cover_cc', '')) - print(cover_fname, ', '.join(set(cover_cc + all_ccs)), file=fd) + cc_list = ', '.join([x.decode('utf-8') for x in set(cover_cc + all_ccs)]) + print(cover_fname, cc_list.encode('utf-8'), file=fd) fd.close() return fname -- cgit v1.1