From d5686a61d64a7c7424d6d4c93ac60cf5e324f3ad Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 22 May 2017 13:48:52 -0400 Subject: buildman: Fix bloat option when 'new' only drops functions In the case where a new build only decreases sizes and does not increase any size we still want to report what functions have been dropped when doing a bloat comparison. Cc: Simon Glass Signed-off-by: Tom Rini Reviewed-by: Simon Glass --- tools/buildman/builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index b0ea57ebb4a..acb0810457e 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -847,7 +847,7 @@ class Builder: delta.reverse() args = [add, -remove, grow, -shrink, up, -down, up - down] - if max(args) == 0: + if max(args) == 0 and min(args) == 0: return args = [self.ColourNum(x) for x in args] indent = ' ' * 15 -- cgit v1.2.3 From 21caa558ca1811a9995ed1c1b0e2c01cbdf25662 Mon Sep 17 00:00:00 2001 From: Philipp Tomsich Date: Mon, 29 May 2017 15:31:22 -0600 Subject: patman: encode CC list to UTF-8 This change encodes the CC list to UTF-8 to avoid failures on maintainer-addresses that include non-ASCII characters (observed on Debian 7.11 with Python 2.7.3). Without this, I get the following failure: Traceback (most recent call last): File "tools/patman/patman", line 159, in options.add_maintainers) File "[snip]/u-boot/tools/patman/series.py", line 234, in MakeCcFile print(commit.patch, ', '.join(set(list)), file=fd) UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 81: ordinal not in range(128) from Heiko's email address: [..., u'"Heiko St\xfcbner" ', ...] While with this change added this encodes to: "=?UTF-8?q?Heiko=20St=C3=BCbner?= " Signed-off-by: Philipp Tomsich Reviewed-by: Simon Glass Signed-off-by: Simon Glass Tested-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/series.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/patman/series.py b/tools/patman/series.py index c1b86521aa4..134a381ae31 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -119,7 +119,7 @@ class Series(dict): email = col.Color(col.YELLOW, "" % tag) if email: - print(' Cc: ', email) + print(' Cc: ', email.encode('utf-8')) print for item in to_set: print('To:\t ', item) @@ -230,7 +230,7 @@ class Series(dict): if add_maintainers: list += get_maintainer.GetMaintainer(commit.patch) all_ccs += list - print(commit.patch, ', '.join(set(list)), file=fd) + print(commit.patch, ', '.join(set(list)).encode('utf-8'), file=fd) self._generated_cc[commit.patch] = list if cover_fname: -- cgit v1.2.3 From 6f8abf765b9a8be4a32d84677cbbff1a1706b325 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:23 -0600 Subject: patman: Adjust handling of unicode email address Don't mess with the email address when outputting them. Just make sure they are encoded with utf-8. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/gitutil.py | 2 ++ tools/patman/series.py | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py index 0d23079a3ab..167bda38fc1 100644 --- a/tools/patman/gitutil.py +++ b/tools/patman/gitutil.py @@ -407,6 +407,8 @@ def EmailPatches(series, cover_fname, args, dry_run, raise_on_error, cc_fname, cc = [] cmd = ['git', 'send-email', '--annotate'] if in_reply_to: + if type(in_reply_to) != str: + in_reply_to = in_reply_to.encode('utf-8') cmd.append('--in-reply-to="%s"' % in_reply_to) if thread: cmd.append('--thread') diff --git a/tools/patman/series.py b/tools/patman/series.py index 134a381ae31..7a3534fee9a 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -119,7 +119,7 @@ class Series(dict): email = col.Color(col.YELLOW, "" % tag) if email: - print(' Cc: ', email.encode('utf-8')) + print(' Cc: ', email) print for item in to_set: print('To:\t ', item) @@ -229,13 +229,17 @@ class Series(dict): raise_on_error=raise_on_error) if add_maintainers: list += get_maintainer.GetMaintainer(commit.patch) + list = [m.encode('utf-8') if type(m) != str else m for m in list] all_ccs += list - print(commit.patch, ', '.join(set(list)).encode('utf-8'), file=fd) + print(commit.patch, ', '.join(set(list)), file=fd) self._generated_cc[commit.patch] = list if cover_fname: cover_cc = gitutil.BuildEmailList(self.get('cover_cc', '')) - cc_list = ', '.join([x.decode('utf-8') for x in set(cover_cc + all_ccs)]) + cover_cc = [m.encode('utf-8') if type(m) != str else m + for m in cover_cc] + 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() -- cgit v1.2.3 From 5c724dc4403c63b86fef8cccd2baa47cfa870986 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:24 -0600 Subject: patman: Don't convert input data to unicode The communication filter reads data in blocks and converts each block to unicode (if necessary) one at a time. In the unlikely event that a unicode character in the input spans a block this will not work. We get an error like: UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1022-1023: unexpected end of data There is no need to change the input to unicode, so the easiest fix is to drop this feature. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/cros_subprocess.py | 4 ---- 1 file changed, 4 deletions(-) (limited to 'tools') diff --git a/tools/patman/cros_subprocess.py b/tools/patman/cros_subprocess.py index 7c760143407..ebd4300dfd5 100644 --- a/tools/patman/cros_subprocess.py +++ b/tools/patman/cros_subprocess.py @@ -190,8 +190,6 @@ class Popen(subprocess.Popen): # We will get an error on read if the pty is closed try: data = os.read(self.stdout.fileno(), 1024) - if isinstance(data, bytes): - data = data.decode('utf-8') except OSError: pass if data == "": @@ -207,8 +205,6 @@ class Popen(subprocess.Popen): # We will get an error on read if the pty is closed try: data = os.read(self.stderr.fileno(), 1024) - if isinstance(data, bytes): - data = data.decode('utf-8') except OSError: pass if data == "": -- cgit v1.2.3 From 2df3a01974a06145cc20c53d5f1309ccdb2b6946 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:25 -0600 Subject: patman: Rename 'str' variable in EmailPatches() This is not a good variable name in Python because 'str' is a type. It shows up highlighted in some editors. Rename it. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/gitutil.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py index 167bda38fc1..08be9377ceb 100644 --- a/tools/patman/gitutil.py +++ b/tools/patman/gitutil.py @@ -419,10 +419,10 @@ def EmailPatches(series, cover_fname, args, dry_run, raise_on_error, cc_fname, if cover_fname: cmd.append(cover_fname) cmd += args - str = ' '.join(cmd) + cmdstr = ' '.join(cmd) if not dry_run: - os.system(str) - return str + os.system(cmdstr) + return cmdstr def LookupEmail(lookup_name, alias=None, raise_on_error=True, level=0): -- cgit v1.2.3 From 04f7870635dff90ddc1b8465b5b8304c2d429a92 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:26 -0600 Subject: patman: Don't report unicode character Unicode characters may appear in input patches so we should not warn about them. Drop this warning. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/patchstream.py | 9 --------- 1 file changed, 9 deletions(-) (limited to 'tools') diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py index cd4667f61ce..324c65442f4 100644 --- a/tools/patman/patchstream.py +++ b/tools/patman/patchstream.py @@ -308,15 +308,6 @@ class PatchStream: # Well that means this is an ordinary line else: - pos = 1 - # Look for ugly ASCII characters - for ch in line: - # TODO: Would be nicer to report source filename and line - if ord(ch) > 0x80: - self.warn.append("Line %d/%d ('%s') has funny ascii char" % - (self.linenum, pos, line)) - pos += 1 - # Look for space before tab m = re_space_before_tab.match(line) if m: -- cgit v1.2.3 From db116cc8d095ec499ae748ea864fa0def54ca3d6 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:27 -0600 Subject: patman: Don't return the series in FixPatches() There is no need for this function to return the same object that was passed in. Drop the return value. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/patchstream.py | 1 - tools/patman/patman.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py index 324c65442f4..6098728aa11 100644 --- a/tools/patman/patchstream.py +++ b/tools/patman/patchstream.py @@ -477,7 +477,6 @@ def FixPatches(series, fnames): print count += 1 print('Cleaned %d patches' % count) - return series def InsertCoverLetter(fname, series, count): """Inserts a cover letter with the required info into patch 0 diff --git a/tools/patman/patman.py b/tools/patman/patman.py index fdbee67f559..63da3f32009 100755 --- a/tools/patman/patman.py +++ b/tools/patman/patman.py @@ -141,8 +141,8 @@ else: series) # Fix up the patch files to our liking, and insert the cover letter - series = patchstream.FixPatches(series, args) - if series and cover_fname and series.get('cover'): + patchstream.FixPatches(series, args) + if cover_fname and series.get('cover'): patchstream.InsertCoverLetter(cover_fname, series, options.count) # Do a few checks on the series -- cgit v1.2.3 From 2eb5fc13b3494ab2d32edb6235826f3442254749 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:28 -0600 Subject: patman: Add unicode to test patches Add some unicode to the test patches to make sure that patman does the right thing. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/test.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tools') diff --git a/tools/patman/test.py b/tools/patman/test.py index 8c39f66e730..20dc9c1e0df 100644 --- a/tools/patman/test.py +++ b/tools/patman/test.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # # Copyright (c) 2011 The Chromium OS Authors. # @@ -31,6 +32,10 @@ Subject: [PATCH (resend) 3/7] Tegra2: Add more clock support This adds functions to enable/disable clocks and reset to on-chip peripherals. +cmd/pci.c:152:11: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘u64 {aka long unsigned int}’ [-Wformat=] + BUG=chromium-os:13875 TEST=build U-Boot for Seaboard, boot @@ -53,6 +58,10 @@ Subject: [PATCH (resend) 3/7] Tegra2: Add more clock support This adds functions to enable/disable clocks and reset to on-chip peripherals. +cmd/pci.c:152:11: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘u64 {aka long unsigned int}’ [-Wformat=] + Signed-off-by: Simon Glass --- -- cgit v1.2.3 From 1f487f85d2d2a78a8d4e533253ed5c853540aea1 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:29 -0600 Subject: patman: Add a maintainer test feature to MakeCcFile() Allow the add_maintainers parameter to be a list of maintainers, thus allowing us to simulate calling the script in tests without actually needing it to work. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/series.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/patman/series.py b/tools/patman/series.py index 7a3534fee9a..395b9ea99be 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -212,7 +212,9 @@ class Series(dict): cover_fname: If non-None the name of the cover letter. raise_on_error: True to raise an error when an alias fails to match, False to just print a message. - add_maintainers: Call the get_maintainers to CC maintainers + add_maintainers: Either: + True/False to call the get_maintainers to CC maintainers + List of maintainers to include (for testing) Return: Filename of temp file created """ @@ -227,7 +229,9 @@ class Series(dict): raise_on_error=raise_on_error) list += gitutil.BuildEmailList(commit.cc_list, raise_on_error=raise_on_error) - if add_maintainers: + if type(add_maintainers) == type(list): + list += add_maintainers + elif add_maintainers: list += get_maintainer.GetMaintainer(commit.patch) list = [m.encode('utf-8') if type(m) != str else m for m in list] all_ccs += list -- cgit v1.2.3 From a44f4fb72bcb954bf38385e2953f7320b9f25aa3 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:30 -0600 Subject: patman: Rename 'list' variable in MakeCcFile() This is not a good variable name in Python because 'list' is a type. It shows up highlighted in some editors. Rename it. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/series.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'tools') diff --git a/tools/patman/series.py b/tools/patman/series.py index 395b9ea99be..d3947a7c2ac 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -223,20 +223,20 @@ class Series(dict): fd = open(fname, 'w') all_ccs = [] for commit in self.commits: - list = [] + cc = [] if process_tags: - list += gitutil.BuildEmailList(commit.tags, + cc += gitutil.BuildEmailList(commit.tags, raise_on_error=raise_on_error) - list += gitutil.BuildEmailList(commit.cc_list, + cc += gitutil.BuildEmailList(commit.cc_list, raise_on_error=raise_on_error) - if type(add_maintainers) == type(list): - list += add_maintainers + if type(add_maintainers) == type(cc): + cc += add_maintainers elif add_maintainers: - list += get_maintainer.GetMaintainer(commit.patch) - list = [m.encode('utf-8') if type(m) != str else m for m in list] - all_ccs += list - print(commit.patch, ', '.join(set(list)), file=fd) - self._generated_cc[commit.patch] = list + cc += get_maintainer.GetMaintainer(commit.patch) + 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) + self._generated_cc[commit.patch] = cc if cover_fname: cover_cc = gitutil.BuildEmailList(self.get('cover_cc', '')) -- cgit v1.2.3 From 6e87ae1c0730ec99b6824c2a3dc8510813f92b98 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 29 May 2017 15:31:31 -0600 Subject: patman: Add a functional test The existing test (patman --test) only covers basic checkpatch output. We have had some problems with unicode processing and could use test coverage for the various tags patman supports. Add a new functional test which runs most of the patman flow on a few test commits and checks that the results are correct. See the documentation in the test for a description of what it does. Signed-off-by: Simon Glass Tested-by: Philipp Tomsich --- tools/patman/func_test.py | 242 +++++++++++++++++++++ tools/patman/patchstream.py | 13 ++ tools/patman/patman.py | 6 +- tools/patman/test/0000-cover-letter.patch | 23 ++ .../test/0001-pci-Correct-cast-for-sandbox.patch | 48 ++++ ...-cast-for-sandbox-in-fdtdec_setup_memory_.patch | 73 +++++++ tools/patman/test/test01.txt | 56 +++++ 7 files changed, 459 insertions(+), 2 deletions(-) create mode 100644 tools/patman/func_test.py create mode 100644 tools/patman/test/0000-cover-letter.patch create mode 100644 tools/patman/test/0001-pci-Correct-cast-for-sandbox.patch create mode 100644 tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch create mode 100644 tools/patman/test/test01.txt (limited to 'tools') diff --git a/tools/patman/func_test.py b/tools/patman/func_test.py new file mode 100644 index 00000000000..2c0da84b308 --- /dev/null +++ b/tools/patman/func_test.py @@ -0,0 +1,242 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2017 Google, Inc +# +# SPDX-License-Identifier: GPL-2.0+ +# + +import contextlib +import os +import re +import shutil +import sys +import tempfile +import unittest + +import gitutil +import patchstream +import settings + + +@contextlib.contextmanager +def capture(): + import sys + from cStringIO import StringIO + oldout,olderr = sys.stdout, sys.stderr + try: + out=[StringIO(), StringIO()] + sys.stdout,sys.stderr = out + yield out + finally: + sys.stdout,sys.stderr = oldout, olderr + out[0] = out[0].getvalue() + out[1] = out[1].getvalue() + + +class TestFunctional(unittest.TestCase): + def setUp(self): + self.tmpdir = tempfile.mkdtemp(prefix='patman.') + + def tearDown(self): + shutil.rmtree(self.tmpdir) + + @staticmethod + def GetPath(fname): + return os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), + 'test', fname) + + @classmethod + def GetText(self, fname): + return open(self.GetPath(fname)).read() + + @classmethod + def GetPatchName(self, subject): + fname = re.sub('[ :]', '-', subject) + return fname.replace('--', '-') + + def CreatePatchesForTest(self, series): + cover_fname = None + fname_list = [] + for i, commit in enumerate(series.commits): + clean_subject = self.GetPatchName(commit.subject) + src_fname = '%04d-%s.patch' % (i + 1, clean_subject[:52]) + fname = os.path.join(self.tmpdir, src_fname) + shutil.copy(self.GetPath(src_fname), fname) + fname_list.append(fname) + if series.get('cover'): + src_fname = '0000-cover-letter.patch' + cover_fname = os.path.join(self.tmpdir, src_fname) + fname = os.path.join(self.tmpdir, src_fname) + shutil.copy(self.GetPath(src_fname), fname) + + return cover_fname, fname_list + + def testBasic(self): + """Tests the basic flow of patman + + This creates a series from some hard-coded patches build from a simple + tree with the following metadata in the top commit: + + Series-to: u-boot + Series-prefix: RFC + Series-cc: Stefan Brüns + Cover-letter-cc: Lord Mëlchett + Series-version: 2 + Series-changes: 4 + - Some changes + + Cover-letter: + test: A test patch series + This is a test of how the cover + leter + works + END + + and this in the first commit: + + Series-notes: + some notes + about some things + from the first commit + END + + Commit-notes: + Some notes about + the first commit + END + + with the following commands: + + git log -n2 --reverse >/path/to/tools/patman/test/test01.txt + git format-patch --subject-prefix RFC --cover-letter HEAD~2 + mv 00* /path/to/tools/patman/test + + It checks these aspects: + - git log can be processed by patchstream + - emailing patches uses the correct command + - CC file has information on each commit + - cover letter has the expected text and subject + - each patch has the correct subject + - dry-run information prints out correctly + - unicode is handled correctly + - Series-to, Series-cc, Series-prefix, Cover-letter + - Cover-letter-cc, Series-version, Series-changes, Series-notes + - Commit-notes + """ + process_tags = True + ignore_bad_tags = True + stefan = u'Stefan Brüns ' + rick = 'Richard III ' + mel = u'Lord Mëlchett ' + ed = u'Lond Edmund Blackaddër +Date: Sat, 27 May 2017 20:52:11 -0600 +Subject: [RFC 0/2] *** SUBJECT HERE *** +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +*** BLURB HERE *** + +Simon Glass (2): + pci: Correct cast for sandbox + fdt: Correct cast for sandbox in fdtdec_setup_memory_size() + + cmd/pci.c | 3 ++- + fs/fat/fat.c | 1 + + lib/efi_loader/efi_memory.c | 1 + + lib/fdtdec.c | 3 ++- + 4 files changed, 6 insertions(+), 2 deletions(-) + +-- +2.7.4 + diff --git a/tools/patman/test/0001-pci-Correct-cast-for-sandbox.patch b/tools/patman/test/0001-pci-Correct-cast-for-sandbox.patch new file mode 100644 index 00000000000..7191176f752 --- /dev/null +++ b/tools/patman/test/0001-pci-Correct-cast-for-sandbox.patch @@ -0,0 +1,48 @@ +From b9da5f937bd5ea4931ea17459bf79b2905d9594d Mon Sep 17 00:00:00 2001 +From: Simon Glass +Date: Sat, 15 Apr 2017 15:39:08 -0600 +Subject: [RFC 1/2] pci: Correct cast for sandbox +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This gives a warning with some native compilers: + +cmd/pci.c:152:11: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘u64 {aka long unsigned int}’ [-Wformat=] + +Fix it with a cast. + +Signed-off-by: Simon Glass +Series-notes: +some notes +about some things +from the first commit +END + +Commit-notes: +Some notes about +the first commit +END +--- + cmd/pci.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/cmd/pci.c b/cmd/pci.c +index 41b4fff..fe27b4f 100644 +--- a/cmd/pci.c ++++ b/cmd/pci.c +@@ -150,7 +150,8 @@ int pci_bar_show(struct udevice *dev) + if ((!is_64 && size_low) || (is_64 && size)) { + size = ~size + 1; + printf(" %d %#016llx %#016llx %d %s %s\n", +- bar_id, base, size, is_64 ? 64 : 32, ++ bar_id, (unsigned long long)base, ++ (unsigned long long)size, is_64 ? 64 : 32, + is_io ? "I/O" : "MEM", + prefetchable ? "Prefetchable" : ""); + } +-- +2.7.4 + diff --git a/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch b/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch new file mode 100644 index 00000000000..e3284973a0d --- /dev/null +++ b/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch @@ -0,0 +1,73 @@ +From 5ab48490f03051875ab13d288a4bf32b507d76fd Mon Sep 17 00:00:00 2001 +From: Simon Glass +Date: Sat, 15 Apr 2017 15:39:08 -0600 +Subject: [RFC 2/2] fdt: Correct cast for sandbox in fdtdec_setup_memory_size() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This gives a warning with some native compilers: + +lib/fdtdec.c:1203:8: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘long unsigned int’ [-Wformat=] + +Fix it with a cast. + +Signed-off-by: Simon Glass +Series-to: u-boot +Series-prefix: RFC +Series-cc: Stefan Brüns +Cover-letter-cc: Lord Mëlchett +Series-version: 3 +Patch-cc: fred +Series-changes: 4 +- Some changes + +Cover-letter: +test: A test patch series +This is a test of how the cover +leter +works +END +--- + fs/fat/fat.c | 1 + + lib/efi_loader/efi_memory.c | 1 + + lib/fdtdec.c | 3 ++- + 3 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/fs/fat/fat.c b/fs/fat/fat.c +index a71bad1..ba169dc 100644 +--- a/fs/fat/fat.c ++++ b/fs/fat/fat.c +@@ -1,3 +1,4 @@ ++ + /* + * fat.c + * +diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c +index db2ae19..05f75d1 100644 +--- a/lib/efi_loader/efi_memory.c ++++ b/lib/efi_loader/efi_memory.c +@@ -1,3 +1,4 @@ ++ + /* + * EFI application memory management + * +diff --git a/lib/fdtdec.c b/lib/fdtdec.c +index c072e54..942244f 100644 +--- a/lib/fdtdec.c ++++ b/lib/fdtdec.c +@@ -1200,7 +1200,8 @@ int fdtdec_setup_memory_size(void) + } + + gd->ram_size = (phys_size_t)(res.end - res.start + 1); +- debug("%s: Initial DRAM size %llx\n", __func__, (u64)gd->ram_size); ++ debug("%s: Initial DRAM size %llx\n", __func__, ++ (unsigned long long)gd->ram_size); + + return 0; + } +-- +2.7.4 + diff --git a/tools/patman/test/test01.txt b/tools/patman/test/test01.txt new file mode 100644 index 00000000000..8ad9587aef5 --- /dev/null +++ b/tools/patman/test/test01.txt @@ -0,0 +1,56 @@ +commit b9da5f937bd5ea4931ea17459bf79b2905d9594d +Author: Simon Glass +Date: Sat Apr 15 15:39:08 2017 -0600 + + pci: Correct cast for sandbox + + This gives a warning with some native compilers: + + cmd/pci.c:152:11: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘u64 {aka long unsigned int}’ [-Wformat=] + + Fix it with a cast. + + Signed-off-by: Simon Glass + Series-notes: + some notes + about some things + from the first commit + END + + Commit-notes: + Some notes about + the first commit + END + +commit 5ab48490f03051875ab13d288a4bf32b507d76fd +Author: Simon Glass +Date: Sat Apr 15 15:39:08 2017 -0600 + + fdt: Correct cast for sandbox in fdtdec_setup_memory_size() + + This gives a warning with some native compilers: + + lib/fdtdec.c:1203:8: warning: format ‘%llx’ expects argument of type + ‘long long unsigned int’, but argument 3 has type + ‘long unsigned int’ [-Wformat=] + + Fix it with a cast. + + Signed-off-by: Simon Glass + Series-to: u-boot + Series-prefix: RFC + Series-cc: Stefan Brüns + Cover-letter-cc: Lord Mëlchett + Series-version: 3 + Patch-cc: fred + Series-changes: 4 + - Some changes + + Cover-letter: + test: A test patch series + This is a test of how the cover + leter + works + END -- cgit v1.2.3 From b0e994c29e726dc0ba02a44adbd050f5f9f0b995 Mon Sep 17 00:00:00 2001 From: Daniel Schwierzeck Date: Thu, 8 Jun 2017 03:07:08 +0200 Subject: buildman: disable localized and unicode output of all build tools Build tools like Make, gcc or binutils support localized output or unicode encoded output dependent on the default system locale. This is not useful for buildman, where we want reproducible warning or error messages or where the output of binutils is further processed. Signed-off-by: Daniel Schwierzeck --- tools/buildman/toolchain.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index 5cf97ac8148..2076323d5d3 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -144,7 +144,9 @@ class Toolchain: """Returns an environment for using the toolchain. Thie takes the current environment and adds CROSS_COMPILE so that - the tool chain will operate correctly. + the tool chain will operate correctly. This also disables localized + output and possibly unicode encoded output of all build tools by + adding LC_ALL=C. Args: full_path: Return the full path in CROSS_COMPILE and don't set @@ -159,6 +161,8 @@ class Toolchain: env['CROSS_COMPILE'] = wrapper + self.cross env['PATH'] = self.path + ':' + env['PATH'] + env['LC_ALL'] = 'C' + return env -- cgit v1.2.3 From aafbe82fb6ffc233f0db57b675c2577cf37c846b Mon Sep 17 00:00:00 2001 From: Daniel Schwierzeck Date: Thu, 8 Jun 2017 03:07:09 +0200 Subject: buildman: properly translate strings for log and err files to ASCII The build output can still produce unicode encoded output. But in the buildman's log and err files we only want plain ASCII characters. To handle all situations with unicode and non-unicode output, encode the stdout and stderr strings to UTF-8 and afterwards to ASCII with replacing all special characters. Signed-off-by: Daniel Schwierzeck --- tools/buildman/builderthread.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py index acaf5007f50..9e8ca80c5b5 100644 --- a/tools/buildman/builderthread.py +++ b/tools/buildman/builderthread.py @@ -280,13 +280,15 @@ class BuilderThread(threading.Thread): outfile = os.path.join(build_dir, 'log') with open(outfile, 'w') as fd: if result.stdout: - fd.write(result.stdout.encode('latin-1', 'ignore')) + # We don't want unicode characters in log files + fd.write(result.stdout.decode('UTF-8').encode('ASCII', 'replace')) errfile = self.builder.GetErrFile(result.commit_upto, result.brd.target) if result.stderr: with open(errfile, 'w') as fd: - fd.write(result.stderr.encode('latin-1', 'ignore')) + # We don't want unicode characters in log files + fd.write(result.stderr.decode('UTF-8').encode('ASCII', 'replace')) elif os.path.exists(errfile): os.remove(errfile) -- cgit v1.2.3