aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/buildman/kconfiglib.py22
-rwxr-xr-xtools/genboardscfg.py7
-rwxr-xr-xtools/moveconfig.py6
-rw-r--r--tools/patman/README12
-rw-r--r--tools/patman/series.py5
-rw-r--r--tools/patman/settings.py18
6 files changed, 59 insertions, 11 deletions
diff --git a/tools/buildman/kconfiglib.py b/tools/buildman/kconfiglib.py
index d28bbf0..352ad43 100644
--- a/tools/buildman/kconfiglib.py
+++ b/tools/buildman/kconfiglib.py
@@ -204,6 +204,7 @@ class Config(object):
self.print_warnings = print_warnings
self.print_undef_assign = print_undef_assign
+ self._warnings = []
# For parsing routines that stop when finding a line belonging to a
# different construct, these holds that line and the tokenized version
@@ -398,8 +399,12 @@ class Config(object):
need to refer to the top-level kernel directory with "$srctree".
replace (default: True): True if the configuration should replace the
- old configuration; False if it should add to it."""
+ old configuration; False if it should add to it.
+ Returns a list or warnings (hopefully empty)
+ """
+
+ self._warnings = []
# Put this first so that a missing file doesn't screw up our state
filename = os.path.expandvars(filename)
line_feeder = _FileFeed(filename)
@@ -449,7 +454,7 @@ class Config(object):
while 1:
line = line_feeder.get_next()
if line is None:
- return
+ return self._warnings
line = line.rstrip()
@@ -1763,8 +1768,10 @@ class Config(object):
def _warn(self, msg, filename=None, linenr=None):
"""For printing warnings to stderr."""
+ msg = _build_msg("warning: " + msg, filename, linenr)
if self.print_warnings:
- _stderr_msg("warning: " + msg, filename, linenr)
+ sys.stderr.write(msg + "\n")
+ self._warnings.append(msg)
class Item(object):
@@ -3369,10 +3376,13 @@ def _clean_up_path(path):
path = path[2:]
return path.rstrip("/")
-def _stderr_msg(msg, filename, linenr):
+def _build_msg(msg, filename, linenr):
if filename is not None:
- sys.stderr.write("{0}:{1}: ".format(_clean_up_path(filename), linenr))
- sys.stderr.write(msg + "\n")
+ msg = "{0}:{1}: ".format(_clean_up_path(filename), linenr) + msg
+ return msg
+
+def _stderr_msg(msg, filename, linenr):
+ sys.stderr.write(_build_msg(msg, filename, linenr) + "\n")
def _tokenization_error(s, filename, linenr):
loc = "" if filename is None else "{0}:{1}: ".format(filename, linenr)
diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py
index 2e871fea..2345a19 100755
--- a/tools/genboardscfg.py
+++ b/tools/genboardscfg.py
@@ -124,7 +124,7 @@ class KconfigScanner:
os.environ['srctree'] = os.getcwd()
os.environ['UBOOTVERSION'] = 'dummy'
os.environ['KCONFIG_OBJDIR'] = ''
- self._conf = kconfiglib.Config()
+ self._conf = kconfiglib.Config(print_warnings=False)
def __del__(self):
"""Delete a leftover temporary file before exit.
@@ -166,7 +166,10 @@ class KconfigScanner:
else:
f.write(line[colon + 1:])
- self._conf.load_config(self._tmpfile)
+ warnings = self._conf.load_config(self._tmpfile)
+ if warnings:
+ for warning in warnings:
+ print '%s: %s' % (defconfig, warning)
try_remove(self._tmpfile)
self._tmpfile = None
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 8a03850..6f549a5 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -1877,10 +1877,10 @@ def main():
if options.build_db:
with open(CONFIG_DATABASE, 'w') as fd:
for defconfig, configs in config_db.iteritems():
- print >>fd, '%s' % defconfig
+ fd.write('%s\n' % defconfig)
for config in sorted(configs.keys()):
- print >>fd, ' %s=%s' % (config, configs[config])
- print >>fd
+ fd.write(' %s=%s\n' % (config, configs[config]))
+ fd.write('\n')
if __name__ == '__main__':
main()
diff --git a/tools/patman/README b/tools/patman/README
index e36857d..8582ed6 100644
--- a/tools/patman/README
+++ b/tools/patman/README
@@ -84,6 +84,18 @@ Aliases are recursive.
The checkpatch.pl in the U-Boot tools/ subdirectory will be located and
used. Failing that you can put it into your path or ~/bin/checkpatch.pl
+If you want to avoid sending patches to email addresses that are picked up
+by patman but are known to bounce you can add a [bounces] section to your
+.patman file. Unlike the [alias] section these are simple key: value pairs
+that are not recursive.
+
+>>>
+
+[bounces]
+gonefishing: Fred Bloggs <f.bloggs@napier.net>
+
+<<<
+
If you want to change the defaults for patman's command-line arguments,
you can add a [settings] section to your .patman file. This can be used
diff --git a/tools/patman/series.py b/tools/patman/series.py
index d3947a7..73ee394 100644
--- a/tools/patman/series.py
+++ b/tools/patman/series.py
@@ -10,6 +10,7 @@ import os
import get_maintainer
import gitutil
+import settings
import terminal
# Series-xxx tags that we understand
@@ -218,6 +219,7 @@ class Series(dict):
Return:
Filename of temp file created
"""
+ col = terminal.Color()
# Look for commit tags (of the form 'xxx:' at the start of the subject)
fname = '/tmp/patman.%d' % os.getpid()
fd = open(fname, 'w')
@@ -233,6 +235,9 @@ class Series(dict):
cc += add_maintainers
elif add_maintainers:
cc += get_maintainer.GetMaintainer(commit.patch)
+ for x in set(cc) & set(settings.bounces):
+ print(col.Color(col.YELLOW, 'Skipping "%s"' % x))
+ cc = set(cc) - set(settings.bounces)
cc = [m.encode('utf-8') if type(m) != str else m for m in cc]
all_ccs += cc
print(commit.patch, ', '.join(set(cc)), file=fd)
diff --git a/tools/patman/settings.py b/tools/patman/settings.py
index 5f207f5..d735ff9 100644
--- a/tools/patman/settings.py
+++ b/tools/patman/settings.py
@@ -269,6 +269,19 @@ def _ReadAliasFile(fname):
if bad_line:
print(bad_line)
+def _ReadBouncesFile(fname):
+ """Read in the bounces file if it exists
+
+ Args:
+ fname: Filename to read.
+ """
+ if os.path.exists(fname):
+ with open(fname) as fd:
+ for line in fd:
+ if line.startswith('#'):
+ continue
+ bounces.add(line.strip())
+
def Setup(parser, project_name, config_fname=''):
"""Set up the settings module by reading config files.
@@ -293,10 +306,15 @@ def Setup(parser, project_name, config_fname=''):
for name, value in config.items('alias'):
alias[name] = value.split(',')
+ _ReadBouncesFile('doc/bounces')
+ for name, value in config.items('bounces'):
+ bounces.add(value)
+
_UpdateDefaults(parser, config)
# These are the aliases we understand, indexed by alias. Each member is a list.
alias = {}
+bounces = set()
if __name__ == "__main__":
import doctest