All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
@ 2014-08-25 15:58 Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 01/14] patman: Support the 'reverse' option for 'git log' Simon Glass
                   ` (14 more replies)
  0 siblings, 15 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

Buildman has been around for a little over a year and is used by a fair
number of U-Boot developers. However quite a few people still use MAKEALL.

Buildman was intended to replace MAKEALL, so perhaps now is a good time to
start that process.

The reasons to deprecate MAKEALL are:
- We don't want to maintain two build systems
- Buildman is typically faster
- Buildman has a lot more features

This series adds a few features to buildman to fill some gaps, adds some
information into the README on how to migrate from MAKEALL, and adds a
deprecation message to MAKEALL.

Changes in v9:
- Add new patch to avoid changing the order of tags
- Add new patch to set the return code to indicate build result
- Add new patch to allow make-flags variables to include '-' and '_'
- Add new patch to implement --exclude option
- Add new patch to remove the directory prefix from each error line
- Add new patch to support showing which boards caused which errors
- Add new patch to separate out display of warnings and errors
- Add new patch to fix detection of git version

Changes in v8:
- Add new patch to disable the pager in git

Changes in v7:
- Add new patch to fix the 'reverse' bug
- Remove already-applied patches from the series
- Add the deprecation message at the end of the build also
- Drop the 'colour' patch sadly

Changes in v6:
- Add new patch to fix indentation in teminal.py
- Add new patch to fix patman unit tests
- Add new patch to remove patman's -a option

Changes in v5:
- Drop patch to search for *cc instead of *gcc for the compiler

Simon Glass (14):
  patman: Support the 'reverse' option for 'git log'
  patman: Fix indentation in terminal.py
  patman: Correct unit tests to run correctly
  patman: Remove the -a option
  patman: Use --no-pager' to stop git from forking a pager
  patman: Avoid changing the order of tags
  buildman: Set the return code to indicate build result
  buildman: Allow make-flags variables to include '-' and '_'
  buildman: Implement an option to exclude boards from the build
  buildman: Remove the directory prefix from each error line
  buildman: Add an option to show which boards caused which errors
  buildman: Separate out display of warnings and errors
  patman: Fix detection of git version
  RFC: Deprecate MAKEALL

 MAKEALL                         |  10 +++
 tools/buildman/README           |  27 ++++++--
 tools/buildman/board.py         |  31 +++++++---
 tools/buildman/builder.py       | 133 ++++++++++++++++++++++++++++++++++------
 tools/buildman/builderthread.py |  22 ++++++-
 tools/buildman/buildman.py      |   8 ++-
 tools/buildman/control.py       |  20 ++++--
 tools/buildman/toolchain.py     |   2 +-
 tools/patman/gitutil.py         | 102 +++---------------------------
 tools/patman/patchstream.py     |  21 ++-----
 tools/patman/patman.py          |   7 ---
 tools/patman/terminal.py        | 112 +++++++++++++++++----------------
 tools/patman/test.py            |  13 ++--
 13 files changed, 298 insertions(+), 210 deletions(-)

-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 01/14] patman: Support the 'reverse' option for 'git log'
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 02/14] patman: Fix indentation in terminal.py Simon Glass
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

This option is currently not supported, but needs to be, for buildman to
operate as expected.

Reported-by: York Sun <yorksun@freescale.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8: None
Changes in v7:
- Add new patch to fix the 'reverse' bug

Changes in v6: None
Changes in v5: None

 tools/patman/gitutil.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 735c8dd..e2b4959 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -38,6 +38,8 @@ def LogCmd(commit_range, git_dir=None, oneline=False, reverse=False,
         cmd.append('--oneline')
     if use_no_decorate:
         cmd.append('--no-decorate')
+    if reverse:
+        cmd.append('--reverse')
     if count is not None:
         cmd.append('-n%d' % count)
     if commit_range:
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 02/14] patman: Fix indentation in terminal.py
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 01/14] patman: Support the 'reverse' option for 'git log' Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 03/14] patman: Correct unit tests to run correctly Simon Glass
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

This code came from a different project with 2-character indentation. Fix
it for U-Boot.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add new patch to fix indentation in teminal.py

Changes in v5: None

 tools/patman/terminal.py | 108 ++++++++++++++++++++++++-----------------------
 1 file changed, 55 insertions(+), 53 deletions(-)

diff --git a/tools/patman/terminal.py b/tools/patman/terminal.py
index 597d526..11f80d8 100644
--- a/tools/patman/terminal.py
+++ b/tools/patman/terminal.py
@@ -15,66 +15,68 @@ import sys
 COLOR_IF_TERMINAL, COLOR_ALWAYS, COLOR_NEVER = range(3)
 
 class Color(object):
-  """Conditionally wraps text in ANSI color escape sequences."""
-  BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
-  BOLD = -1
-  BRIGHT_START = '\033[1;%dm'
-  NORMAL_START = '\033[22;%dm'
-  BOLD_START = '\033[1m'
-  RESET = '\033[0m'
+    """Conditionally wraps text in ANSI color escape sequences."""
+    BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
+    BOLD = -1
+    BRIGHT_START = '\033[1;%dm'
+    NORMAL_START = '\033[22;%dm'
+    BOLD_START = '\033[1m'
+    RESET = '\033[0m'
 
-  def __init__(self, colored=COLOR_IF_TERMINAL):
-    """Create a new Color object, optionally disabling color output.
+    def __init__(self, colored=COLOR_IF_TERMINAL):
+        """Create a new Color object, optionally disabling color output.
 
-    Args:
-      enabled: True if color output should be enabled. If False then this
-        class will not add color codes at all.
-    """
-    self._enabled = (colored == COLOR_ALWAYS or
-        (colored == COLOR_IF_TERMINAL and os.isatty(sys.stdout.fileno())))
+        Args:
+          enabled: True if color output should be enabled. If False then this
+            class will not add color codes at all.
+        """
+        self._enabled = (colored == COLOR_ALWAYS or
+            (colored == COLOR_IF_TERMINAL and os.isatty(sys.stdout.fileno())))
 
-  def Start(self, color, bright=True):
-    """Returns a start color code.
+    def Start(self, color, bright=True):
+        """Returns a start color code.
 
-    Args:
-      color: Color to use, .e.g BLACK, RED, etc.
+        Args:
+          color: Color to use, .e.g BLACK, RED, etc.
 
-    Returns:
-      If color is enabled, returns an ANSI sequence to start the given color,
-      otherwise returns empty string
-    """
-    if self._enabled:
-        base = self.BRIGHT_START if bright else self.NORMAL_START
-        return base % (color + 30)
-    return ''
+        Returns:
+          If color is enabled, returns an ANSI sequence to start the given
+          color, otherwise returns empty string
+        """
+        if self._enabled:
+            base = self.BRIGHT_START if bright else self.NORMAL_START
+            return base % (color + 30)
+        return ''
 
-  def Stop(self):
-    """Retruns a stop color code.
+    def Stop(self):
+        """Retruns a stop color code.
 
-    Returns:
-      If color is enabled, returns an ANSI color reset sequence, otherwise
-      returns empty string
-    """
-    if self._enabled:
-        return self.RESET
-    return ''
+        Returns:
+          If color is enabled, returns an ANSI color reset sequence,
+          otherwise returns empty string
+        """
+        if self._enabled:
+            return self.RESET
+        return ''
 
-  def Color(self, color, text, bright=True):
-    """Returns text with conditionally added color escape sequences.
+    def Color(self, color, text, bright=True):
+        """Returns text with conditionally added color escape sequences.
 
-    Keyword arguments:
-      color: Text color -- one of the color constants defined in this class.
-      text: The text to color.
+        Keyword arguments:
+          color: Text color -- one of the color constants defined in this
+                  class.
+          text: The text to color.
 
-    Returns:
-      If self._enabled is False, returns the original text. If it's True,
-      returns text with color escape sequences based on the value of color.
-    """
-    if not self._enabled:
-        return text
-    if color == self.BOLD:
-        start = self.BOLD_START
-    else:
-        base = self.BRIGHT_START if bright else self.NORMAL_START
-        start = base % (color + 30)
-    return start + text + self.RESET
+        Returns:
+          If self._enabled is False, returns the original text. If it's True,
+          returns text with color escape sequences based on the value of
+          color.
+        """
+        if not self._enabled:
+            return text
+        if color == self.BOLD:
+            start = self.BOLD_START
+        else:
+            base = self.BRIGHT_START if bright else self.NORMAL_START
+            start = base % (color + 30)
+        return start + text + self.RESET
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 03/14] patman: Correct unit tests to run correctly
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 01/14] patman: Support the 'reverse' option for 'git log' Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 02/14] patman: Fix indentation in terminal.py Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 04/14] patman: Remove the -a option Simon Glass
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

It seems that doctest behaves differently now, and some of the unit tests
do not run. Adjust the tests to work correctly.

 ./tools/patman/patman --test
<unittest.result.TestResult run=10 errors=0 failures=0>

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add new patch to fix patman unit tests

Changes in v5: None

 tools/patman/gitutil.py     |  8 ++++----
 tools/patman/patchstream.py |  7 +++++--
 tools/patman/terminal.py    |  8 ++++++--
 tools/patman/test.py        | 13 +++++++------
 4 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index e2b4959..29e6fdd 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -478,13 +478,13 @@ def LookupEmail(lookup_name, alias=None, raise_on_error=True, level=0):
     ...
     OSError: Recursive email alias at 'other'
     >>> LookupEmail('odd', alias, raise_on_error=False)
-    \033[1;31mAlias 'odd' not found\033[0m
+    Alias 'odd' not found
     []
     >>> # In this case the loop part will effectively be ignored.
     >>> LookupEmail('loop', alias, raise_on_error=False)
-    \033[1;31mRecursive email alias at 'other'\033[0m
-    \033[1;31mRecursive email alias at 'john'\033[0m
-    \033[1;31mRecursive email alias at 'mary'\033[0m
+    Recursive email alias at 'other'
+    Recursive email alias at 'john'
+    Recursive email alias at 'mary'
     ['j.bloggs at napier.co.nz', 'm.poppins at cloud.net']
     """
     if not alias:
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 0040468..322374c 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -275,7 +275,7 @@ class PatchStream:
 
         # Suppress duplicate signoffs
         elif signoff_match:
-            if (self.is_log or
+            if (self.is_log or not self.commit or
                 self.commit.CheckDuplicateSignoff(signoff_match.group(1))):
                 out = [line]
 
@@ -312,7 +312,10 @@ class PatchStream:
                 out = []
                 log = self.series.MakeChangeLog(self.commit)
                 out += self.FormatTags(self.tags)
-                out += [line] + self.commit.notes + [''] + log
+                out += [line]
+                if self.commit:
+                    out += self.commit.notes
+                out += [''] + log
             elif self.found_test:
                 if not re_allowed_after_test.match(line):
                     self.lines_after_test += 1
diff --git a/tools/patman/terminal.py b/tools/patman/terminal.py
index 11f80d8..963f2f8 100644
--- a/tools/patman/terminal.py
+++ b/tools/patman/terminal.py
@@ -30,8 +30,12 @@ class Color(object):
           enabled: True if color output should be enabled. If False then this
             class will not add color codes at all.
         """
-        self._enabled = (colored == COLOR_ALWAYS or
-            (colored == COLOR_IF_TERMINAL and os.isatty(sys.stdout.fileno())))
+        try:
+            self._enabled = (colored == COLOR_ALWAYS or
+                    (colored == COLOR_IF_TERMINAL and
+                     os.isatty(sys.stdout.fileno())))
+        except:
+            self._enabled = False
 
     def Start(self, color, bright=True):
         """Returns a start color code.
diff --git a/tools/patman/test.py b/tools/patman/test.py
index 8fcfe53..e8f7472 100644
--- a/tools/patman/test.py
+++ b/tools/patman/test.py
@@ -55,6 +55,7 @@ This adds functions to enable/disable clocks and reset to on-chip peripherals.
 
 Signed-off-by: Simon Glass <sjg@chromium.org>
 ---
+
  arch/arm/cpu/armv7/tegra2/Makefile         |    2 +-
  arch/arm/cpu/armv7/tegra2/ap20.c           |   57 ++----
  arch/arm/cpu/armv7/tegra2/clock.c          |  163 +++++++++++++++++
@@ -200,7 +201,7 @@ index 0000000..2234c87
         self.assertEqual(result.errors, 0)
         self.assertEqual(result.warnings, 0)
         self.assertEqual(result.checks, 0)
-        self.assertEqual(result.lines, 67)
+        self.assertEqual(result.lines, 56)
         os.remove(inf)
 
     def testNoSignoff(self):
@@ -211,18 +212,18 @@ index 0000000..2234c87
         self.assertEqual(result.errors, 1)
         self.assertEqual(result.warnings, 0)
         self.assertEqual(result.checks, 0)
-        self.assertEqual(result.lines, 67)
+        self.assertEqual(result.lines, 56)
         os.remove(inf)
 
     def testSpaces(self):
         inf = self.SetupData('spaces')
         result = checkpatch.CheckPatch(inf)
         self.assertEqual(result.ok, False)
-        self.assertEqual(len(result.problems), 1)
+        self.assertEqual(len(result.problems), 2)
         self.assertEqual(result.errors, 0)
-        self.assertEqual(result.warnings, 1)
+        self.assertEqual(result.warnings, 2)
         self.assertEqual(result.checks, 0)
-        self.assertEqual(result.lines, 67)
+        self.assertEqual(result.lines, 56)
         os.remove(inf)
 
     def testIndent(self):
@@ -233,7 +234,7 @@ index 0000000..2234c87
         self.assertEqual(result.errors, 0)
         self.assertEqual(result.warnings, 0)
         self.assertEqual(result.checks, 1)
-        self.assertEqual(result.lines, 67)
+        self.assertEqual(result.lines, 56)
         os.remove(inf)
 
 
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 04/14] patman: Remove the -a option
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (2 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 03/14] patman: Correct unit tests to run correctly Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 05/14] patman: Use --no-pager' to stop git from forking a pager Simon Glass
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

It seems that this is no longer needed, since checkpatch.pl will catch
whitespace problems in patches. Also the option is not widely used, so
it seems safe to just remove it.

Suggested-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add new patch to remove patman's -a option

Changes in v5: None

 tools/patman/gitutil.py | 88 -------------------------------------------------
 tools/patman/patman.py  |  7 ----
 2 files changed, 95 deletions(-)

diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 29e6fdd..45276e6 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -215,94 +215,6 @@ def CreatePatches(start, count, series):
     else:
        return None, files
 
-def ApplyPatch(verbose, fname):
-    """Apply a patch with git am to test it
-
-    TODO: Convert these to use command, with stderr option
-
-    Args:
-        fname: filename of patch file to apply
-    """
-    col = terminal.Color()
-    cmd = ['git', 'am', fname]
-    pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE)
-    stdout, stderr = pipe.communicate()
-    re_error = re.compile('^error: patch failed: (.+):(\d+)')
-    for line in stderr.splitlines():
-        if verbose:
-            print line
-        match = re_error.match(line)
-        if match:
-            print checkpatch.GetWarningMsg(col, 'warning', match.group(1),
-                                           int(match.group(2)), 'Patch failed')
-    return pipe.returncode == 0, stdout
-
-def ApplyPatches(verbose, args, start_point):
-    """Apply the patches with git am to make sure all is well
-
-    Args:
-        verbose: Print out 'git am' output verbatim
-        args: List of patch files to apply
-        start_point: Number of commits back from HEAD to start applying.
-            Normally this is len(args), but it can be larger if a start
-            offset was given.
-    """
-    error_count = 0
-    col = terminal.Color()
-
-    # Figure out our current position
-    cmd = ['git', 'name-rev', 'HEAD', '--name-only']
-    pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-    stdout, stderr = pipe.communicate()
-    if pipe.returncode:
-        str = 'Could not find current commit name'
-        print col.Color(col.RED, str)
-        print stdout
-        return False
-    old_head = stdout.splitlines()[0]
-    if old_head == 'undefined':
-        str = "Invalid HEAD '%s'" % stdout.strip()
-        print col.Color(col.RED, str)
-        return False
-
-    # Checkout the required start point
-    cmd = ['git', 'checkout', 'HEAD~%d' % start_point]
-    pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE)
-    stdout, stderr = pipe.communicate()
-    if pipe.returncode:
-        str = 'Could not move to commit before patch series'
-        print col.Color(col.RED, str)
-        print stdout, stderr
-        return False
-
-    # Apply all the patches
-    for fname in args:
-        ok, stdout = ApplyPatch(verbose, fname)
-        if not ok:
-            print col.Color(col.RED, 'git am returned errors for %s: will '
-                    'skip this patch' % fname)
-            if verbose:
-                print stdout
-            error_count += 1
-            cmd = ['git', 'am', '--skip']
-            pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-            stdout, stderr = pipe.communicate()
-            if pipe.returncode != 0:
-                print col.Color(col.RED, 'Unable to skip patch! Aborting...')
-                print stdout
-                break
-
-    # Return to our previous position
-    cmd = ['git', 'checkout', old_head]
-    pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    stdout, stderr = pipe.communicate()
-    if pipe.returncode:
-        print col.Color(col.RED, 'Could not move back to head commit')
-        print stdout, stderr
-    return error_count == 0
-
 def BuildEmailList(in_list, tag=None, alias=None, raise_on_error=True):
     """Build a list of email addresses based on an input list.
 
diff --git a/tools/patman/patman.py b/tools/patman/patman.py
index ca34cb9..5ab74fa 100755
--- a/tools/patman/patman.py
+++ b/tools/patman/patman.py
@@ -25,9 +25,6 @@ import test
 
 
 parser = OptionParser()
-parser.add_option('-a', '--no-apply', action='store_false',
-                  dest='apply_patches', default=True,
-                  help="Don't test-apply patches with git am")
 parser.add_option('-H', '--full-help', action='store_true', dest='full_help',
        default=False, help='Display the README file')
 parser.add_option('-c', '--count', dest='count', type='int',
@@ -143,10 +140,6 @@ else:
         ok = checkpatch.CheckPatches(options.verbose, args)
     else:
         ok = True
-    if options.apply_patches:
-        if not gitutil.ApplyPatches(options.verbose, args,
-                                    options.count + options.start):
-            ok = False
 
     cc_file = series.MakeCcFile(options.process_tags, cover_fname,
                                 not options.ignore_bad_tags)
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 05/14] patman: Use --no-pager' to stop git from forking a pager
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (3 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 04/14] patman: Remove the -a option Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 06/14] patman: Avoid changing the order of tags Simon Glass
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

In a headless environment the pager can apparently hang. We don't want a
pager anyway so let's request that none be used.

Reported-by: Tom Rini <trini@ti.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8:
- Add new patch to disable the pager in git

Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/patman/gitutil.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 45276e6..fbd170f 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -33,7 +33,7 @@ def LogCmd(commit_range, git_dir=None, oneline=False, reverse=False,
     cmd = ['git']
     if git_dir:
         cmd += ['--git-dir', git_dir]
-    cmd += ['log', '--no-color']
+    cmd += ['--no-pager', 'log', '--no-color']
     if oneline:
         cmd.append('--oneline')
     if use_no_decorate:
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 06/14] patman: Avoid changing the order of tags
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (4 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 05/14] patman: Use --no-pager' to stop git from forking a pager Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 07/14] buildman: Set the return code to indicate build result Simon Glass
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

patman collects tags that it sees in the commit and places them nicely
sorted at the end of the patch. However, this is not really necessary and
in fact is apparently not desirable.

Suggested-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to avoid changing the order of tags

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/patman/patchstream.py | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 322374c..b0b8153 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -72,7 +72,6 @@ class PatchStream:
         self.in_change = 0               # Non-zero if we are in a change list
         self.blank_count = 0             # Number of blank lines stored up
         self.state = STATE_MSG_HEADER    # What state are we in?
-        self.tags = []                   # Tags collected, like Tested-by...
         self.signoff = []                # Contents of signoff line
         self.commit = None               # Current commit
 
@@ -113,16 +112,6 @@ class PatchStream:
             self.series.AddCommit(self.commit)
             self.commit = None
 
-    def FormatTags(self, tags):
-        out_list = []
-        for tag in sorted(tags):
-            if tag.startswith('Cc:'):
-                tag_list = tag[4:].split(',')
-                out_list += gitutil.BuildEmailList(tag_list, 'Cc:')
-            else:
-                out_list.append(tag)
-        return out_list
-
     def ProcessLine(self, line):
         """Process a single line of a patch file or commit log
 
@@ -271,7 +260,7 @@ class PatchStream:
             elif tag_match.group(1) == 'Patch-cc':
                 self.commit.AddCc(tag_match.group(2).split(','))
             else:
-                self.tags.append(line);
+                out = [line]
 
         # Suppress duplicate signoffs
         elif signoff_match:
@@ -311,7 +300,6 @@ class PatchStream:
                 # Output the tags (signeoff first), then change list
                 out = []
                 log = self.series.MakeChangeLog(self.commit)
-                out += self.FormatTags(self.tags)
                 out += [line]
                 if self.commit:
                     out += self.commit.notes
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 07/14] buildman: Set the return code to indicate build result
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (5 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 06/14] patman: Avoid changing the order of tags Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 08/14] buildman: Allow make-flags variables to include '-' and '_' Simon Glass
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

When buildman finds errors/warnings when building, set the return code to
indicate this.

Suggested-by: York Sun <yorksun@freescale.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to set the return code to indicate build result

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/README      | 6 ++++++
 tools/buildman/builder.py  | 5 +++++
 tools/buildman/buildman.py | 3 ++-
 tools/buildman/control.py  | 9 +++++++--
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/tools/buildman/README b/tools/buildman/README
index d4e8404..d20508f 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -690,6 +690,12 @@ Other options
 
 Buildman has various other command line options. Try --help to see them.
 
+When doing builds, Buildman's return code will reflect the overall result:
+
+    0 (success)     No errors or warnings found
+    128             Errors found
+    129             Warnings found
+
 
 How to change from MAKEALL
 ==========================
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index a555bd8..106fde0 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -1031,6 +1031,10 @@ class Builder:
                     value is Board object
             keep_outputs: True to save build output files
             verbose: Display build results as they are completed
+        Returns:
+            Tuple containing:
+                - number of boards that failed to build
+                - number of boards that issued warnings
         """
         self.commit_count = len(commits) if commits else 1
         self.commits = commits
@@ -1060,3 +1064,4 @@ class Builder:
         self.out_queue.join()
         print
         self.ClearLine(0)
+        return (self.fail, self.warned)
diff --git a/tools/buildman/buildman.py b/tools/buildman/buildman.py
index e18859b..fbd3125 100755
--- a/tools/buildman/buildman.py
+++ b/tools/buildman/buildman.py
@@ -136,4 +136,5 @@ elif options.full_help:
 
 # Build selected commits for selected boards
 else:
-    control.DoBuildman(options, args)
+    ret_code = control.DoBuildman(options, args)
+    sys.exit(ret_code)
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index d98e50a..239c423 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -94,7 +94,7 @@ def DoBuildman(options, args):
     if options.list_tool_chains:
         toolchains.List()
         print
-        return
+        return 0
 
     # Work out how many commits to build. We want to build everything on the
     # branch. We also build the upstream commit as a control so we can see
@@ -219,5 +219,10 @@ def DoBuildman(options, args):
                 options.show_detail = True
             builder.ShowSummary(commits, board_selected)
         else:
-            builder.BuildBoards(commits, board_selected,
+            fail, warned = builder.BuildBoards(commits, board_selected,
                                 options.keep_outputs, options.verbose)
+            if fail:
+                return 128
+            elif warned:
+                return 129
+    return 0
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 08/14] buildman: Allow make-flags variables to include '-' and '_'
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (6 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 07/14] buildman: Set the return code to indicate build result Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 09/14] buildman: Implement an option to exclude boards from the build Simon Glass
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

These characters are commonly used in variables, so permit them. Also
document the permitted characters.

Reported-by: Tom Rini <trini@ti.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to allow make-flags variables to include '-' and '_'

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/README       | 4 +++-
 tools/buildman/toolchain.py | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/buildman/README b/tools/buildman/README
index d20508f..68465b4 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -670,7 +670,9 @@ snapper9g45=${at91-boards} BUILD_TAG=443
 This will use 'make ENABLE_AT91_TEST=1 BUILD_TAG=442' for snapper9260
 and 'make ENABLE_AT91_TEST=1 BUILD_TAG=443' for snapper9g45. A special
 variable ${target} is available to access the target name (snapper9260 and
-snapper9g20 in this case). Variables are resolved recursively.
+snapper9g20 in this case). Variables are resolved recursively. Note that
+variables can only contain the characters A-Z, a-z, 0-9, hyphen (-) and
+underscore (_).
 
 It is expected that any variables added are dealt with in U-Boot's
 config.mk file and documented in the README.
diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py
index 1b9771f..0e91294 100644
--- a/tools/buildman/toolchain.py
+++ b/tools/buildman/toolchain.py
@@ -198,7 +198,7 @@ class Toolchains:
         >>> tcs.ResolveReferences(var_dict, 'this=${oblique}_set${first}nd')
         'this=OBLIQUE_setfi2ndrstnd'
         """
-        re_var = re.compile('(\$\{[a-z0-9A-Z]{1,}\})')
+        re_var = re.compile('(\$\{[-_a-z0-9A-Z]{1,}\})')
 
         while True:
             m = re_var.search(args)
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 09/14] buildman: Implement an option to exclude boards from the build
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (7 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 08/14] buildman: Allow make-flags variables to include '-' and '_' Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line Simon Glass
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

Some boards are known to be broken and it is convenient to be able to
exclude them from the build.

Add an --exclude option to specific boards to exclude. This uses the
same matching rules as the normal 'include' arguments, and is a comma-
separated list of regular expressions.

Suggested-by: York Sun <yorksun@freescale.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to implement --exclude option

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/README      |  7 +++++++
 tools/buildman/board.py    | 31 ++++++++++++++++++++++++-------
 tools/buildman/buildman.py |  3 +++
 tools/buildman/control.py  |  8 +++++++-
 4 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/tools/buildman/README b/tools/buildman/README
index 68465b4..b8c2bd6 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -114,6 +114,13 @@ the '&' operator to limit the selection:
 * 'freescale & arm sandbox'  All Freescale boards with ARM architecture,
                              plus sandbox
 
+You can also use -x to specifically exclude some boards. For example:
+
+ buildmand arm -x nvidia,freescale,.*ball$
+
+means to build all arm boards except nvidia, freescale and anything ending
+with 'ball'.
+
 It is convenient to use the -n option to see whaat will be built based on
 the subset given.
 
diff --git a/tools/buildman/board.py b/tools/buildman/board.py
index a333287..5d536d5 100644
--- a/tools/buildman/board.py
+++ b/tools/buildman/board.py
@@ -239,13 +239,14 @@ class Boards:
             terms.append(term)
         return terms
 
-    def SelectBoards(self, args):
+    def SelectBoards(self, args, exclude=[]):
         """Mark boards selected based on args
 
         Args:
-            List of strings specifying boards to include, either named, or
-            by their target, architecture, cpu, vendor or soc. If empty, all
-            boards are selected.
+            args: List of strings specifying boards to include, either named,
+                  or by their target, architecture, cpu, vendor or soc. If
+                  empty, all boards are selected.
+            exclude: List of boards to exclude, regardless of 'args'
 
         Returns:
             Dictionary which holds the number of boards which were selected
@@ -258,17 +259,33 @@ class Boards:
         for term in terms:
             result[str(term)] = 0
 
+        exclude_list = []
+        for expr in exclude:
+            exclude_list.append(Expr(expr))
+
         for board in self._boards:
+            matching_term = None
+            build_it = False
             if terms:
                 match = False
                 for term in terms:
                     if term.Matches(board.props):
-                        board.build_it = True
-                        result[str(term)] += 1
-                        result['all'] += 1
+                        matching_term = str(term)
+                        build_it = True
                         break
             else:
+                build_it = True
+
+            # Check that it is not specifically excluded
+            for expr in exclude_list:
+                if expr.Matches(board.props):
+                    build_it = False
+                    break
+
+            if build_it:
                 board.build_it = True
+                if matching_term:
+                    result[matching_term] += 1
                 result['all'] += 1
 
         return result
diff --git a/tools/buildman/buildman.py b/tools/buildman/buildman.py
index fbd3125..53592e5 100755
--- a/tools/buildman/buildman.py
+++ b/tools/buildman/buildman.py
@@ -117,6 +117,9 @@ parser.add_option('-u', '--show_unknown', action='store_true',
        default=False, help='Show boards with unknown build result')
 parser.add_option('-v', '--verbose', action='store_true',
        default=False, help='Show build results while the build progresses')
+parser.add_option('-x', '--exclude', dest='exclude',
+      type='string', action='append',
+      help='Specify a list of boards to exclude, separated by comma')
 
 parser.usage += """
 
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 239c423..7991c74 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -129,7 +129,13 @@ def DoBuildman(options, args):
 
     boards = board.Boards()
     boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
-    why_selected = boards.SelectBoards(args)
+
+    exclude = []
+    if options.exclude:
+        for arg in options.exclude:
+            exclude += arg.split(',')
+
+    why_selected = boards.SelectBoards(args, exclude)
     selected = boards.GetSelected()
     if not len(selected):
         sys.exit(col.Color(col.RED, 'No matching boards found'))
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (8 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 09/14] buildman: Implement an option to exclude boards from the build Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-26 14:13   ` Tom Rini
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors Simon Glass
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

The full path is long and also includes buildman private directories.
Clean this up, so that only a relative U-Boot path is shown.

This will change warnings like these:

/home/sjg/c/src/third_party/u-boot/buildman5/.bm-work/00/arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
/home/sjg/c/src/third_party/u-boot/buildman5/.bm-work/00/arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]

/home/sjg/c/src/third_party/u-boot/files/arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
/home/sjg/c/src/third_party/u-boot/files/arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]

to:

arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to remove the directory prefix from each error line

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/builderthread.py | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py
index 8214662..7fb24bc 100644
--- a/tools/buildman/builderthread.py
+++ b/tools/buildman/builderthread.py
@@ -103,6 +103,23 @@ class BuilderThread(threading.Thread):
         return self.builder.do_make(commit, brd, stage, cwd, *args,
                 **kwargs)
 
+    def _FilterOutDir(self, text, dirname):
+        """Filter out a directory name from each line of a block of text
+
+        Args:
+            text: Text to process (can be multiple lines separated by \n)
+            dirname: Directory name to remove from the start of each text
+                line
+        Returns:
+            Filtered text.
+        """
+        out = []
+        for line in text.split('\n'):
+            if line.startswith(dirname):
+                line = line[len(dirname):]
+            out.append(line)
+        return '\n'.join(out)
+
     def RunCommit(self, commit_upto, brd, work_dir, do_config, force_build,
                   force_build_failures):
         """Build a particular commit.
@@ -177,6 +194,7 @@ class BuilderThread(threading.Thread):
                 Mkdir(out_dir)
                 args = []
                 cwd = work_dir
+                src_dir = os.path.realpath(work_dir)
                 if not self.builder.in_tree:
                     if commit_upto is None:
                         # In this case we are building in the original source
@@ -189,6 +207,7 @@ class BuilderThread(threading.Thread):
                         work_dir = os.path.realpath(work_dir)
                         args.append('O=%s/build' % work_dir)
                         cwd = None
+                        src_dir = os.getcwd()
                     else:
                         args.append('O=build')
                 args.append('-s')
@@ -209,7 +228,8 @@ class BuilderThread(threading.Thread):
                 if result.return_code == 0:
                     result = self.Make(commit, brd, 'build', cwd, *args,
                             env=env)
-                    result.stdout = config_out + result.stdout
+                    result.stderr = self._FilterOutDir(result.stderr,
+                                            src_dir + '/')
             else:
                 result.return_code = 1
                 result.stderr = 'No tool chain for %s\n' % brd.arch
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (9 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 19:14   ` Tom Rini
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 12/14] buildman: Separate out display of warnings and errors Simon Glass
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

Add a -l option to display a list of offending boards against each
error/warning line. The information will be shown in brackets as below:

02: wip
   sandbox: +   sandbox
       arm: +   seaboard
+(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
+(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
+(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
+(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
+(seaboard)      int fred;
+(seaboard)          ^

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to support showing which boards caused which errors

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/README      |  7 ++++---
 tools/buildman/builder.py  | 51 ++++++++++++++++++++++++++++++++++++++--------
 tools/buildman/buildman.py |  2 ++
 tools/buildman/control.py  |  3 ++-
 4 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/tools/buildman/README b/tools/buildman/README
index b8c2bd6..fbc8449 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -442,7 +442,8 @@ is fixed, but there is a new one at line 126. This is probably only because
 we added some code and moved the broken line father down the file.
 
 If many boards have the same error, then -e will display the error only
-once. This makes the output as concise as possible.
+once. This makes the output as concise as possible. To see which boards have
+each error, use -l.
 
 The full build output in this case is available in:
 
@@ -745,10 +746,10 @@ followed by (afterwards, or perhaps concurrently in another terminal):
 to see the results of the build. Rather than showing you all the output,
 buildman just shows a summary, with red indicating that a commit introduced
 an error and green indicating that a commit fixed an error. Use the -e
-flag to see the full errors.
+flag to see the full errors and -l to see which boards caused which errors.
 
 If you really want to see build results as they happen, use -v when doing a
-build (and -e if you want to see errors as well).
+build (-e will be enabled automatically).
 
 You don't need to stick around on that branch while buildman is running. It
 checks out its own copy of the source code, so you can change branches,
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index 106fde0..b90d7e1 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -237,18 +237,21 @@ class Builder:
             del t
 
     def SetDisplayOptions(self, show_errors=False, show_sizes=False,
-                          show_detail=False, show_bloat=False):
+                          show_detail=False, show_bloat=False,
+                          list_error_boards=False):
         """Setup display options for the builder.
 
         show_errors: True to show summarised error/warning info
         show_sizes: Show size deltas
         show_detail: Show detail for each board
         show_bloat: Show detail for each function
+        list_error_boards: Show the boards which caused each error/warning
         """
         self._show_errors = show_errors
         self._show_sizes = show_sizes
         self._show_detail = show_detail
         self._show_bloat = show_bloat
+        self._list_error_boards = list_error_boards
 
     def _AddTimestamp(self):
         """Add a new timestamp to the list and record the build period.
@@ -570,18 +573,26 @@ class Builder:
                 Dict containing boards which passed building this commit.
                     keyed by board.target
                 List containing a summary of error/warning lines
+                Dict keyed by error line, containing a list of the Board
+                    objects with that error
         """
         board_dict = {}
         err_lines_summary = []
+        err_lines_boards = {}
 
         for board in boards_selected.itervalues():
             outcome = self.GetBuildOutcome(commit_upto, board.target,
                                            read_func_sizes)
             board_dict[board.target] = outcome
             for err in outcome.err_lines:
-                if err and not err.rstrip() in err_lines_summary:
-                    err_lines_summary.append(err.rstrip())
-        return board_dict, err_lines_summary
+                if err:
+                    err = err.rstrip()
+                    if err in err_lines_boards:
+                        err_lines_boards[err].append(board)
+                    else:
+                        err_lines_boards[err] = [board]
+                        err_lines_summary.append(err.rstrip())
+        return board_dict, err_lines_summary, err_lines_boards
 
     def AddOutcome(self, board_dict, arch_list, changes, char, color):
         """Add an output to our list of outcomes for each architecture
@@ -828,7 +839,8 @@ class Builder:
 
 
     def PrintResultSummary(self, board_selected, board_dict, err_lines,
-                           show_sizes, show_detail, show_bloat):
+                           err_line_boards, show_sizes, show_detail,
+                           show_bloat):
         """Compare results with the base results and display delta.
 
         Only boards mentioned in board_selected will be considered. This
@@ -843,10 +855,30 @@ class Builder:
                 commit, keyed by board.target. The value is an Outcome object.
             err_lines: A list of errors for this commit, or [] if there is
                 none, or we don't want to print errors
+            err_line_boards: Dict keyed by error line, containing a list of
+                the Board objects with that error
             show_sizes: Show image size deltas
             show_detail: Show detail for each board
             show_bloat: Show detail for each function
         """
+        def _BoardList(line):
+            """Helper function to get a line of boards containing a line
+
+            Args:
+                line: Error line to search for
+            Return:
+                String containing a list of boards with that error line, or
+                '' if the user has not requested such a list
+            """
+            if self._list_error_boards:
+                names = []
+                for board in err_line_boards[line]:
+                    names.append(board.target)
+                names_str = '(%s) ' % ','.join(names)
+            else:
+                names_str = ''
+            return names_str
+
         better = []     # List of boards fixed since last commit
         worse = []      # List of new broken boards since last commit
         new = []        # List of boards that didn't exist last time
@@ -874,7 +906,7 @@ class Builder:
         worse_err = []
         for line in err_lines:
             if line not in self._base_err_lines:
-                worse_err.append('+' + line)
+                worse_err.append('+' + _BoardList(line) + line)
         for line in self._base_err_lines:
             if line not in err_lines:
                 better_err.append('-' + line)
@@ -918,14 +950,15 @@ class Builder:
                     ', '.join(not_built))
 
     def ProduceResultSummary(self, commit_upto, commits, board_selected):
-            board_dict, err_lines = self.GetResultSummary(board_selected,
-                    commit_upto, read_func_sizes=self._show_bloat)
+            board_dict, err_lines, err_line_boards = self.GetResultSummary(
+                    board_selected, commit_upto,
+                    read_func_sizes=self._show_bloat)
             if commits:
                 msg = '%02d: %s' % (commit_upto + 1,
                         commits[commit_upto].subject)
                 print self.col.Color(self.col.BLUE, msg)
             self.PrintResultSummary(board_selected, board_dict,
-                    err_lines if self._show_errors else [],
+                    err_lines if self._show_errors else [], err_line_boards,
                     self._show_sizes, self._show_detail, self._show_bloat)
 
     def ShowSummary(self, commits, board_selected):
diff --git a/tools/buildman/buildman.py b/tools/buildman/buildman.py
index 53592e5..1258b76 100755
--- a/tools/buildman/buildman.py
+++ b/tools/buildman/buildman.py
@@ -94,6 +94,8 @@ parser.add_option('-j', '--jobs', dest='jobs', type='int',
        default=None, help='Number of jobs to run at once (passed to make)')
 parser.add_option('-k', '--keep-outputs', action='store_true',
        default=False, help='Keep all build output files (e.g. binaries)')
+parser.add_option('-l', '--list-error-boards', action='store_true',
+       default=False, help='Show a list of boards next to each error/warning')
 parser.add_option('--list-tool-chains', action='store_true', default=False,
        help='List available tool chains')
 parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 7991c74..0785840 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -218,7 +218,8 @@ def DoBuildman(options, args):
                                options)
 
         builder.SetDisplayOptions(options.show_errors, options.show_sizes,
-                                  options.show_detail, options.show_bloat)
+                                  options.show_detail, options.show_bloat,
+                                  options.list_error_boards)
         if options.summary:
             # We can't show function sizes without board details at present
             if options.show_bloat:
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 12/14] buildman: Separate out display of warnings and errors
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (10 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 13/14] patman: Fix detection of git version Simon Glass
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

Some boards unfortunately build with warnings and it is useful to be able
to easily distinguish the warnings from the errors.

Use a simple pattern match to categorise gcc output into warnings and
errors, and display each separately. New warnings are shown in magenta (with
a w+ prefix) and fixed warnings are shown in yellow with a w- prefix.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to separate out display of warnings and errors

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/buildman/README     |   3 ++
 tools/buildman/builder.py | 105 ++++++++++++++++++++++++++++++++++++----------
 2 files changed, 85 insertions(+), 23 deletions(-)

diff --git a/tools/buildman/README b/tools/buildman/README
index fbc8449..8ba19ec 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -445,6 +445,9 @@ If many boards have the same error, then -e will display the error only
 once. This makes the output as concise as possible. To see which boards have
 each error, use -l.
 
+Buildman tries to distinguish warnings from errors, and shows warning lines
+separately with a 'w' prefix.
+
 The full build output in this case is available in:
 
 ../lcd9b/12_of_18_gd92aff7_lcd--Add-support-for/lubbock/
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index b90d7e1..40cb8cc 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -140,6 +140,7 @@ class Builder:
     Private members:
         _base_board_dict: Last-summarised Dict of boards
         _base_err_lines: Last-summarised list of errors
+        _base_warn_lines: Last-summarised list of warnings
         _build_period_us: Time taken for a single build (float object).
         _complete_delay: Expected delay until completion (timedelta)
         _next_delay_update: Next time we plan to display a progress update
@@ -214,6 +215,9 @@ class Builder:
 
         self.col = terminal.Color()
 
+        self._re_function = re.compile('(.*): In function.*')
+        self._re_warning = re.compile('(.*):(\d*):(\d*): warning: .*')
+
         self.queue = Queue.Queue()
         self.out_queue = Queue.Queue()
         for i in range(self.num_threads):
@@ -572,27 +576,53 @@ class Builder:
             Tuple:
                 Dict containing boards which passed building this commit.
                     keyed by board.target
-                List containing a summary of error/warning lines
+                List containing a summary of error lines
                 Dict keyed by error line, containing a list of the Board
                     objects with that error
+                List containing a summary of warning lines
+                Dict keyed by error line, containing a list of the Board
+                    objects with that warning
         """
+        def AddLine(lines_summary, lines_boards, line, board):
+            line = line.rstrip()
+            if line in lines_boards:
+                lines_boards[line].append(board)
+            else:
+                lines_boards[line] = [board]
+                lines_summary.append(line)
+
         board_dict = {}
         err_lines_summary = []
         err_lines_boards = {}
+        warn_lines_summary = []
+        warn_lines_boards = {}
 
         for board in boards_selected.itervalues():
             outcome = self.GetBuildOutcome(commit_upto, board.target,
                                            read_func_sizes)
             board_dict[board.target] = outcome
-            for err in outcome.err_lines:
-                if err:
-                    err = err.rstrip()
-                    if err in err_lines_boards:
-                        err_lines_boards[err].append(board)
+            last_func = None
+            for line in outcome.err_lines:
+                if line:
+                    if self._re_function.match(line):
+                        last_func = line
                     else:
-                        err_lines_boards[err] = [board]
-                        err_lines_summary.append(err.rstrip())
-        return board_dict, err_lines_summary, err_lines_boards
+                        is_error = not self._re_warning.match(line)
+                        if is_error:
+                            if last_func:
+                                AddLine(err_lines_summary, err_lines_boards,
+                                        last_func, board)
+                            AddLine(err_lines_summary, err_lines_boards,
+                                    line, board)
+                        else:
+                            if last_func:
+                                AddLine(warn_lines_summary, warn_lines_boards,
+                                        last_func, board)
+                            AddLine(warn_lines_summary, warn_lines_boards,
+                                    line, board)
+                        last_func = None
+        return (board_dict, err_lines_summary, err_lines_boards,
+                warn_lines_summary, warn_lines_boards)
 
     def AddOutcome(self, board_dict, arch_list, changes, char, color):
         """Add an output to our list of outcomes for each architecture
@@ -647,6 +677,9 @@ class Builder:
         for board in board_selected:
             self._base_board_dict[board] = Builder.Outcome(0, [], [], {})
         self._base_err_lines = []
+        self._base_warn_lines = []
+        self._base_err_line_boards = {}
+        self._base_warn_line_boards = {}
 
     def PrintFuncSizeDetail(self, fname, old, new):
         grow, shrink, add, remove, up, down = 0, 0, 0, 0, 0, 0
@@ -839,8 +872,8 @@ class Builder:
 
 
     def PrintResultSummary(self, board_selected, board_dict, err_lines,
-                           err_line_boards, show_sizes, show_detail,
-                           show_bloat):
+                           err_line_boards, warn_lines, warn_line_boards,
+                           show_sizes, show_detail, show_bloat):
         """Compare results with the base results and display delta.
 
         Only boards mentioned in board_selected will be considered. This
@@ -857,11 +890,15 @@ class Builder:
                 none, or we don't want to print errors
             err_line_boards: Dict keyed by error line, containing a list of
                 the Board objects with that error
+            warn_lines: A list of warnings for this commit, or [] if there is
+                none, or we don't want to print errors
+            warn_line_boards: Dict keyed by warning line, containing a list of
+                the Board objects with that warning
             show_sizes: Show image size deltas
             show_detail: Show detail for each board
             show_bloat: Show detail for each function
         """
-        def _BoardList(line):
+        def _BoardList(line, line_boards):
             """Helper function to get a line of boards containing a line
 
             Args:
@@ -872,13 +909,27 @@ class Builder:
             """
             if self._list_error_boards:
                 names = []
-                for board in err_line_boards[line]:
+                for board in line_boards[line]:
                     names.append(board.target)
                 names_str = '(%s) ' % ','.join(names)
             else:
                 names_str = ''
             return names_str
 
+        def _CalcErrorDelta(base_lines, base_line_boards, lines, line_boards,
+                            char):
+            better_lines = []
+            worse_lines = []
+            for line in lines:
+                if line not in base_lines:
+                    worse_lines.append(char + '+' +
+                            _BoardList(line, line_boards) + line)
+            for line in base_lines:
+                if line not in lines:
+                    better_lines.append(char + '-' +
+                            _BoardList(line, base_line_boards) + line)
+            return better_lines, worse_lines
+
         better = []     # List of boards fixed since last commit
         worse = []      # List of new broken boards since last commit
         new = []        # List of boards that didn't exist last time
@@ -902,17 +953,14 @@ class Builder:
                 new.append(target)
 
         # Get a list of errors that have appeared, and disappeared
-        better_err = []
-        worse_err = []
-        for line in err_lines:
-            if line not in self._base_err_lines:
-                worse_err.append('+' + _BoardList(line) + line)
-        for line in self._base_err_lines:
-            if line not in err_lines:
-                better_err.append('-' + line)
+        better_err, worse_err = _CalcErrorDelta(self._base_err_lines,
+                self._base_err_line_boards, err_lines, err_line_boards, '')
+        better_warn, worse_warn = _CalcErrorDelta(self._base_warn_lines,
+                self._base_warn_line_boards, warn_lines, warn_line_boards, 'w')
 
         # Display results by arch
-        if better or worse or unknown or new or worse_err or better_err:
+        if (better or worse or unknown or new or worse_err or better_err
+                or worse_warn or better_warn):
             arch_list = {}
             self.AddOutcome(board_selected, arch_list, better, '',
                     self.col.GREEN)
@@ -931,6 +979,12 @@ class Builder:
             if worse_err:
                 print self.col.Color(self.col.RED, '\n'.join(worse_err))
                 self._error_lines += 1
+            if better_warn:
+                print self.col.Color(self.col.YELLOW, '\n'.join(better_warn))
+                self._error_lines += 1
+            if worse_warn:
+                print self.col.Color(self.col.MAGENTA, '\n'.join(worse_warn))
+                self._error_lines += 1
 
         if show_sizes:
             self.PrintSizeSummary(board_selected, board_dict, show_detail,
@@ -939,6 +993,9 @@ class Builder:
         # Save our updated information for the next call to this function
         self._base_board_dict = board_dict
         self._base_err_lines = err_lines
+        self._base_warn_lines = warn_lines
+        self._base_err_line_boards = err_line_boards
+        self._base_warn_line_boards = warn_line_boards
 
         # Get a list of boards that did not get built, if needed
         not_built = []
@@ -950,7 +1007,8 @@ class Builder:
                     ', '.join(not_built))
 
     def ProduceResultSummary(self, commit_upto, commits, board_selected):
-            board_dict, err_lines, err_line_boards = self.GetResultSummary(
+            (board_dict, err_lines, err_line_boards, warn_lines,
+                    warn_line_boards) = self.GetResultSummary(
                     board_selected, commit_upto,
                     read_func_sizes=self._show_bloat)
             if commits:
@@ -959,6 +1017,7 @@ class Builder:
                 print self.col.Color(self.col.BLUE, msg)
             self.PrintResultSummary(board_selected, board_dict,
                     err_lines if self._show_errors else [], err_line_boards,
+                    warn_lines if self._show_errors else [], warn_line_boards,
                     self._show_sizes, self._show_detail, self._show_bloat)
 
     def ShowSummary(self, commits, board_selected):
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 13/14] patman: Fix detection of git version
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (11 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 12/14] buildman: Separate out display of warnings and errors Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 14/14] RFC: Deprecate MAKEALL Simon Glass
  2014-08-25 18:54 ` [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Tom Rini
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

A missing 'global' declaration means that this feature does not currently
work. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9:
- Add new patch to fix detection of git version

Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None

 tools/patman/gitutil.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index fbd170f..80edc7c 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -481,6 +481,8 @@ def GetDefaultUserEmail():
 def Setup():
     """Set up git utils, by reading the alias files."""
     # Check for a git alias file also
+    global use_no_decorate
+
     alias_fname = GetAliasFile()
     if alias_fname:
         settings.ReadGitAliases(alias_fname)
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 14/14] RFC: Deprecate MAKEALL
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (12 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 13/14] patman: Fix detection of git version Simon Glass
@ 2014-08-25 15:58 ` Simon Glass
  2014-08-25 18:54 ` [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Tom Rini
  14 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-25 15:58 UTC (permalink / raw)
  To: u-boot

Since buildman now includes most of the features of MAKEALL it is probably
time to talk about deprecating MAKEALL.

Comments welcome.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v9: None
Changes in v8: None
Changes in v7:
- Remove already-applied patches from the series
- Add the deprecation message at the end of the build also
- Drop the 'colour' patch sadly

Changes in v6: None
Changes in v5:
- Drop patch to search for *cc instead of *gcc for the compiler

 MAKEALL | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/MAKEALL b/MAKEALL
index 392ea8d..2321df0 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -60,6 +60,14 @@ usage()
 	exit ${ret}
 }
 
+deprecation() {
+	echo "** Note: MAKEALL is deprecated - please use buildman instead"
+	echo "** See tools/buildman/README for details"
+	echo
+}
+
+deprecation
+
 SHORT_OPTS="ha:c:v:s:b:lmMCnr"
 LONG_OPTS="help,arch:,cpu:,vendor:,soc:,board:,list,maintainers,mails,check,continue,rebuild-errors"
 
@@ -849,6 +857,8 @@ print_stats() {
 		kill_children
 	fi
 
+	deprecation
+
 	exit $RC
 }
 
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
                   ` (13 preceding siblings ...)
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 14/14] RFC: Deprecate MAKEALL Simon Glass
@ 2014-08-25 18:54 ` Tom Rini
  2014-08-25 19:00   ` Simon Glass
  14 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-08-25 18:54 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:

> Buildman has been around for a little over a year and is used by a fair
> number of U-Boot developers. However quite a few people still use MAKEALL.
> 
> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
> start that process.
> 
> The reasons to deprecate MAKEALL are:
> - We don't want to maintain two build systems
> - Buildman is typically faster
> - Buildman has a lot more features
> 
> This series adds a few features to buildman to fill some gaps, adds some
> information into the README on how to migrate from MAKEALL, and adds a
> deprecation message to MAKEALL.

I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
access to but so far I'm still finding that test for --no-decorate isn't
working and I have to manually set it to False.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140825/c368ef17/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-25 18:54 ` [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Tom Rini
@ 2014-08-25 19:00   ` Simon Glass
  2014-08-25 20:21     ` Tom Rini
  0 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-08-25 19:00 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
> On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
>
>> Buildman has been around for a little over a year and is used by a fair
>> number of U-Boot developers. However quite a few people still use MAKEALL.
>>
>> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
>> start that process.
>>
>> The reasons to deprecate MAKEALL are:
>> - We don't want to maintain two build systems
>> - Buildman is typically faster
>> - Buildman has a lot more features
>>
>> This series adds a few features to buildman to fill some gaps, adds some
>> information into the README on how to migrate from MAKEALL, and adds a
>> deprecation message to MAKEALL.
>
> I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
> access to but so far I'm still finding that test for --no-decorate isn't
> working and I have to manually set it to False.

Oh dear. I wrote a test for this in the second series. So if you apply
that series, do the tests pass? It is in func_test.py and is called
testGitSetup().

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors Simon Glass
@ 2014-08-25 19:14   ` Tom Rini
  2014-08-26 14:09     ` Tom Rini
  2014-08-27  2:59     ` Simon Glass
  0 siblings, 2 replies; 31+ messages in thread
From: Tom Rini @ 2014-08-25 19:14 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
> Add a -l option to display a list of offending boards against each
> error/warning line. The information will be shown in brackets as below:
> 
> 02: wip
>    sandbox: +   sandbox
>        arm: +   seaboard
> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
> +(seaboard)      int fred;
> +(seaboard)          ^
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Doing buildman ... ; buildman ... -svl (since I want to spit out the
summary at once due to how LSF mangles output to file), I don't see
anything for what caused powerpc failures say (where there's lot of
things complaining about generic board).  So something isn't right, is
this something you can reproduce locally?  I'm going to make sure that
-e really is implied like the doc says.  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140825/7aafa960/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-25 19:00   ` Simon Glass
@ 2014-08-25 20:21     ` Tom Rini
  2014-08-27  2:54       ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-08-25 20:21 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 25, 2014 at 01:00:05PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
> > On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
> >
> >> Buildman has been around for a little over a year and is used by a fair
> >> number of U-Boot developers. However quite a few people still use MAKEALL.
> >>
> >> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
> >> start that process.
> >>
> >> The reasons to deprecate MAKEALL are:
> >> - We don't want to maintain two build systems
> >> - Buildman is typically faster
> >> - Buildman has a lot more features
> >>
> >> This series adds a few features to buildman to fill some gaps, adds some
> >> information into the README on how to migrate from MAKEALL, and adds a
> >> deprecation message to MAKEALL.
> >
> > I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
> > access to but so far I'm still finding that test for --no-decorate isn't
> > working and I have to manually set it to False.
> 
> Oh dear. I wrote a test for this in the second series. So if you apply
> that series, do the tests pass? It is in func_test.py and is called
> testGitSetup().

With my local kludge removed yes, all tests pass.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140825/36677754/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-25 19:14   ` Tom Rini
@ 2014-08-26 14:09     ` Tom Rini
  2014-08-27  2:59     ` Simon Glass
  1 sibling, 0 replies; 31+ messages in thread
From: Tom Rini @ 2014-08-26 14:09 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 25, 2014 at 03:14:38PM -0400, Tom Rini wrote:
> On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
> > Add a -l option to display a list of offending boards against each
> > error/warning line. The information will be shown in brackets as below:
> > 
> > 02: wip
> >    sandbox: +   sandbox
> >        arm: +   seaboard
> > +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
> > +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
> > +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
> > +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
> > +(seaboard)      int fred;
> > +(seaboard)          ^
> > 
> > Signed-off-by: Simon Glass <sjg@chromium.org>
> 
> Doing buildman ... ; buildman ... -svl (since I want to spit out the
> summary at once due to how LSF mangles output to file), I don't see
> anything for what caused powerpc failures say (where there's lot of
> things complaining about generic board).  So something isn't right, is
> this something you can reproduce locally?  I'm going to make sure that
> -e really is implied like the doc says.  Thanks!

yeah, OK, the doc is wrong and it needs to have -e passed as well.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140826/b0472ccc/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line
  2014-08-25 15:58 ` [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line Simon Glass
@ 2014-08-26 14:13   ` Tom Rini
  2014-08-27  3:00     ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-08-26 14:13 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 25, 2014 at 09:58:31AM -0600, Simon Glass wrote:

> The full path is long and also includes buildman private directories.
> Clean this up, so that only a relative U-Boot path is shown.

This is missing a global somewhere perhaps?  I do buildman ... -o
/tmp/username/toolchain/ and see things like:
"In file included from /tmp/username/toolchain/master/.bm-work/00/..path
in u-boot"

But other things are corrected.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140826/55bd647f/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-25 20:21     ` Tom Rini
@ 2014-08-27  2:54       ` Simon Glass
  2014-08-28 12:48         ` Tom Rini
  0 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-08-27  2:54 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 25 August 2014 14:21, Tom Rini <trini@ti.com> wrote:
> On Mon, Aug 25, 2014 at 01:00:05PM -0600, Simon Glass wrote:
>> Hi Tom,
>>
>> On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
>> > On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
>> >
>> >> Buildman has been around for a little over a year and is used by a fair
>> >> number of U-Boot developers. However quite a few people still use MAKEALL.
>> >>
>> >> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
>> >> start that process.
>> >>
>> >> The reasons to deprecate MAKEALL are:
>> >> - We don't want to maintain two build systems
>> >> - Buildman is typically faster
>> >> - Buildman has a lot more features
>> >>
>> >> This series adds a few features to buildman to fill some gaps, adds some
>> >> information into the README on how to migrate from MAKEALL, and adds a
>> >> deprecation message to MAKEALL.
>> >
>> > I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
>> > access to but so far I'm still finding that test for --no-decorate isn't
>> > working and I have to manually set it to False.
>>
>> Oh dear. I wrote a test for this in the second series. So if you apply
>> that series, do the tests pass? It is in func_test.py and is called
>> testGitSetup().
>
> With my local kludge removed yes, all tests pass.

It's quite mysterious. I installed Ubuntu 10.04 and it runs python 2.6.5.

The --no-decorate patch does work, although it does print an error. I
could suppress that easily enough, just adding another arg
'capture_stderr=True' to the RunPipe() call in gitutil.py.Setup().

I see a problem with timedelta not having total_seconds. After that
the threading dies. So I'm quite impressed you can get buildman to run
at all. Are you using one of the later 10.04 releases?

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-25 19:14   ` Tom Rini
  2014-08-26 14:09     ` Tom Rini
@ 2014-08-27  2:59     ` Simon Glass
  2014-08-28 12:51       ` Tom Rini
  1 sibling, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-08-27  2:59 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 25 August 2014 13:14, Tom Rini <trini@ti.com> wrote:
> On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
>> Add a -l option to display a list of offending boards against each
>> error/warning line. The information will be shown in brackets as below:
>>
>> 02: wip
>>    sandbox: +   sandbox
>>        arm: +   seaboard
>> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
>> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
>> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
>> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
>> +(seaboard)      int fred;
>> +(seaboard)          ^
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>
> Doing buildman ... ; buildman ... -svl (since I want to spit out the
> summary at once due to how LSF mangles output to file), I don't see

What is -s?

> anything for what caused powerpc failures say (where there's lot of
> things complaining about generic board).  So something isn't right, is
> this something you can reproduce locally?  I'm going to make sure that
> -e really is implied like the doc says.  Thanks!

 ./tools/buildman/buildman -vl sandbox
Building current source for 1 boards (1 thread, 4 jobs per thread)
   sandbox: +   sandbox
+(sandbox) arch/sandbox/cpu/cpu.c: In function ?__udelay?:
+(sandbox) arch/sandbox/cpu/cpu.c:36:5: error: unknown type name ?oijew?
+(sandbox) arch/sandbox/cpu/cpu.c:37:2: error: conflicting types for ?os_usleep?
+(sandbox) include/os.h:155:6: note: previous declaration of
?os_usleep? was here
+(sandbox) make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
+(sandbox) make[1]: *** [arch/sandbox/cpu] Error 2
+(sandbox) make: *** [sub-make] Error 2
w+(sandbox) arch/sandbox/cpu/cpu.c: In function ?do_reset?:
w+(sandbox) arch/sandbox/cpu/cpu.c:27:13: warning: unused variable ?i?
[-Wunused-variable]
w+(sandbox) arch/sandbox/cpu/cpu.c:37:2: warning: parameter names
(without types) in function declaration [enabled by default]
    0    0    1 /1      sandbox

This shows warnings and errors, and -e is implied (but note you should
test with both series - I pushed 'buildman5' to u-boot-x86.git just in
case you only have one).

I might be able to repeat your problem, except for the LSF part. What
command line are you using?

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line
  2014-08-26 14:13   ` Tom Rini
@ 2014-08-27  3:00     ` Simon Glass
  0 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-08-27  3:00 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 26 August 2014 08:13, Tom Rini <trini@ti.com> wrote:
> On Mon, Aug 25, 2014 at 09:58:31AM -0600, Simon Glass wrote:
>
>> The full path is long and also includes buildman private directories.
>> Clean this up, so that only a relative U-Boot path is shown.
>
> This is missing a global somewhere perhaps?  I do buildman ... -o
> /tmp/username/toolchain/ and see things like:
> "In file included from /tmp/username/toolchain/master/.bm-work/00/..path
> in u-boot"
>
> But other things are corrected.

Sorry, you've hit a case that isn't covered. I'll see if I can tweak it.

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-27  2:54       ` Simon Glass
@ 2014-08-28 12:48         ` Tom Rini
  2014-09-01  5:07           ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-08-28 12:48 UTC (permalink / raw)
  To: u-boot

On Tue, Aug 26, 2014 at 08:54:03PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On 25 August 2014 14:21, Tom Rini <trini@ti.com> wrote:
> > On Mon, Aug 25, 2014 at 01:00:05PM -0600, Simon Glass wrote:
> >> Hi Tom,
> >>
> >> On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
> >> > On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
> >> >
> >> >> Buildman has been around for a little over a year and is used by a fair
> >> >> number of U-Boot developers. However quite a few people still use MAKEALL.
> >> >>
> >> >> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
> >> >> start that process.
> >> >>
> >> >> The reasons to deprecate MAKEALL are:
> >> >> - We don't want to maintain two build systems
> >> >> - Buildman is typically faster
> >> >> - Buildman has a lot more features
> >> >>
> >> >> This series adds a few features to buildman to fill some gaps, adds some
> >> >> information into the README on how to migrate from MAKEALL, and adds a
> >> >> deprecation message to MAKEALL.
> >> >
> >> > I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
> >> > access to but so far I'm still finding that test for --no-decorate isn't
> >> > working and I have to manually set it to False.
> >>
> >> Oh dear. I wrote a test for this in the second series. So if you apply
> >> that series, do the tests pass? It is in func_test.py and is called
> >> testGitSetup().
> >
> > With my local kludge removed yes, all tests pass.
> 
> It's quite mysterious. I installed Ubuntu 10.04 and it runs python 2.6.5.
> 
> The --no-decorate patch does work, although it does print an error. I
> could suppress that easily enough, just adding another arg
> 'capture_stderr=True' to the RunPipe() call in gitutil.py.Setup().
> 
> I see a problem with timedelta not having total_seconds. After that
> the threading dies. So I'm quite impressed you can get buildman to run
> at all. Are you using one of the later 10.04 releases?

*shakes fist at corporate IT*

The box I use to launch jobs is Ubuntu 10.04.4.  The boxes the jobs run
on are actually Ubuntu 12.04.1 (I had assumed it was all the same for
some reason.

They also have git 1.7.9.5.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140828/bc6274d9/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-27  2:59     ` Simon Glass
@ 2014-08-28 12:51       ` Tom Rini
  2014-09-01  5:09         ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-08-28 12:51 UTC (permalink / raw)
  To: u-boot

On Tue, Aug 26, 2014 at 08:59:52PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On 25 August 2014 13:14, Tom Rini <trini@ti.com> wrote:
> > On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
> >> Add a -l option to display a list of offending boards against each
> >> error/warning line. The information will be shown in brackets as below:
> >>
> >> 02: wip
> >>    sandbox: +   sandbox
> >>        arm: +   seaboard
> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
> >> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
> >> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
> >> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
> >> +(seaboard)      int fred;
> >> +(seaboard)          ^
> >>
> >> Signed-off-by: Simon Glass <sjg@chromium.org>
> >
> > Doing buildman ... ; buildman ... -svl (since I want to spit out the
> > summary at once due to how LSF mangles output to file), I don't see
> 
> What is -s?

summary.

> > anything for what caused powerpc failures say (where there's lot of
> > things complaining about generic board).  So something isn't right, is
> > this something you can reproduce locally?  I'm going to make sure that
> > -e really is implied like the doc says.  Thanks!
> 
>  ./tools/buildman/buildman -vl sandbox
> Building current source for 1 boards (1 thread, 4 jobs per thread)
>    sandbox: +   sandbox
> +(sandbox) arch/sandbox/cpu/cpu.c: In function ?__udelay?:
> +(sandbox) arch/sandbox/cpu/cpu.c:36:5: error: unknown type name ?oijew?
> +(sandbox) arch/sandbox/cpu/cpu.c:37:2: error: conflicting types for ?os_usleep?
> +(sandbox) include/os.h:155:6: note: previous declaration of
> ?os_usleep? was here
> +(sandbox) make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
> +(sandbox) make[1]: *** [arch/sandbox/cpu] Error 2
> +(sandbox) make: *** [sub-make] Error 2
> w+(sandbox) arch/sandbox/cpu/cpu.c: In function ?do_reset?:
> w+(sandbox) arch/sandbox/cpu/cpu.c:27:13: warning: unused variable ?i?
> [-Wunused-variable]
> w+(sandbox) arch/sandbox/cpu/cpu.c:37:2: warning: parameter names
> (without types) in function declaration [enabled by default]
>     0    0    1 /1      sandbox
> 
> This shows warnings and errors, and -e is implied (but note you should
> test with both series - I pushed 'buildman5' to u-boot-x86.git just in
> case you only have one).
> 
> I might be able to repeat your problem, except for the LSF part. What
> command line are you using?

I do:
./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
    -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc'
./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
    -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc' -svel

Doing '-svl' would omit the information I expected, adding in -e worked.
I do it this way since LSF only lets me log raw stdout to a file so
doing a build then a summary pass gives me more easily readable output.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140828/9df4ad82/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-08-28 12:48         ` Tom Rini
@ 2014-09-01  5:07           ` Simon Glass
  2014-09-04 18:25             ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-09-01  5:07 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 28 August 2014 05:48, Tom Rini <trini@ti.com> wrote:
> On Tue, Aug 26, 2014 at 08:54:03PM -0600, Simon Glass wrote:
>> Hi Tom,
>>
>> On 25 August 2014 14:21, Tom Rini <trini@ti.com> wrote:
>> > On Mon, Aug 25, 2014 at 01:00:05PM -0600, Simon Glass wrote:
>> >> Hi Tom,
>> >>
>> >> On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
>> >> > On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
>> >> >
>> >> >> Buildman has been around for a little over a year and is used by a fair
>> >> >> number of U-Boot developers. However quite a few people still use MAKEALL.
>> >> >>
>> >> >> Buildman was intended to replace MAKEALL, so perhaps now is a good time to
>> >> >> start that process.
>> >> >>
>> >> >> The reasons to deprecate MAKEALL are:
>> >> >> - We don't want to maintain two build systems
>> >> >> - Buildman is typically faster
>> >> >> - Buildman has a lot more features
>> >> >>
>> >> >> This series adds a few features to buildman to fill some gaps, adds some
>> >> >> information into the README on how to migrate from MAKEALL, and adds a
>> >> >> deprecation message to MAKEALL.
>> >> >
>> >> > I'm testing this out again in the Ubuntu 10.04 / LSF environment I have
>> >> > access to but so far I'm still finding that test for --no-decorate isn't
>> >> > working and I have to manually set it to False.
>> >>
>> >> Oh dear. I wrote a test for this in the second series. So if you apply
>> >> that series, do the tests pass? It is in func_test.py and is called
>> >> testGitSetup().
>> >
>> > With my local kludge removed yes, all tests pass.
>>
>> It's quite mysterious. I installed Ubuntu 10.04 and it runs python 2.6.5.
>>
>> The --no-decorate patch does work, although it does print an error. I
>> could suppress that easily enough, just adding another arg
>> 'capture_stderr=True' to the RunPipe() call in gitutil.py.Setup().
>>
>> I see a problem with timedelta not having total_seconds. After that
>> the threading dies. So I'm quite impressed you can get buildman to run
>> at all. Are you using one of the later 10.04 releases?
>
> *shakes fist at corporate IT*
>
> The box I use to launch jobs is Ubuntu 10.04.4.  The boxes the jobs run
> on are actually Ubuntu 12.04.1 (I had assumed it was all the same for
> some reason.
>
> They also have git 1.7.9.5.

Well they obviously can't make it *too* easy. So where does this leave
us in trying to figure this out?

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-08-28 12:51       ` Tom Rini
@ 2014-09-01  5:09         ` Simon Glass
  2014-09-01 11:23           ` Tom Rini
  0 siblings, 1 reply; 31+ messages in thread
From: Simon Glass @ 2014-09-01  5:09 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 28 August 2014 05:51, Tom Rini <trini@ti.com> wrote:
> On Tue, Aug 26, 2014 at 08:59:52PM -0600, Simon Glass wrote:
>> Hi Tom,
>>
>> On 25 August 2014 13:14, Tom Rini <trini@ti.com> wrote:
>> > On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
>> >> Add a -l option to display a list of offending boards against each
>> >> error/warning line. The information will be shown in brackets as below:
>> >>
>> >> 02: wip
>> >>    sandbox: +   sandbox
>> >>        arm: +   seaboard
>> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
>> >> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
>> >> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
>> >> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
>> >> +(seaboard)      int fred;
>> >> +(seaboard)          ^
>> >>
>> >> Signed-off-by: Simon Glass <sjg@chromium.org>
>> >
>> > Doing buildman ... ; buildman ... -svl (since I want to spit out the
>> > summary at once due to how LSF mangles output to file), I don't see
>>
>> What is -s?
>
> summary.
>
>> > anything for what caused powerpc failures say (where there's lot of
>> > things complaining about generic board).  So something isn't right, is
>> > this something you can reproduce locally?  I'm going to make sure that
>> > -e really is implied like the doc says.  Thanks!
>>
>>  ./tools/buildman/buildman -vl sandbox
>> Building current source for 1 boards (1 thread, 4 jobs per thread)
>>    sandbox: +   sandbox
>> +(sandbox) arch/sandbox/cpu/cpu.c: In function ?__udelay?:
>> +(sandbox) arch/sandbox/cpu/cpu.c:36:5: error: unknown type name ?oijew?
>> +(sandbox) arch/sandbox/cpu/cpu.c:37:2: error: conflicting types for ?os_usleep?
>> +(sandbox) include/os.h:155:6: note: previous declaration of
>> ?os_usleep? was here
>> +(sandbox) make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
>> +(sandbox) make[1]: *** [arch/sandbox/cpu] Error 2
>> +(sandbox) make: *** [sub-make] Error 2
>> w+(sandbox) arch/sandbox/cpu/cpu.c: In function ?do_reset?:
>> w+(sandbox) arch/sandbox/cpu/cpu.c:27:13: warning: unused variable ?i?
>> [-Wunused-variable]
>> w+(sandbox) arch/sandbox/cpu/cpu.c:37:2: warning: parameter names
>> (without types) in function declaration [enabled by default]
>>     0    0    1 /1      sandbox
>>
>> This shows warnings and errors, and -e is implied (but note you should
>> test with both series - I pushed 'buildman5' to u-boot-x86.git just in
>> case you only have one).
>>
>> I might be able to repeat your problem, except for the LSF part. What
>> command line are you using?
>
> I do:
> ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
>     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc'
> ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
>     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc' -svel
>
> Doing '-svl' would omit the information I expected, adding in -e worked.
> I do it this way since LSF only lets me log raw stdout to a file so
> doing a build then a summary pass gives me more easily readable output.

OK I missed that you were doing two steps.

-v is only meaningful *without* -s: it makes the *build* verbose. When
building, -v implies -e,

The summary (-s) is always verbose, so doesn't need -v.

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-09-01  5:09         ` Simon Glass
@ 2014-09-01 11:23           ` Tom Rini
  2014-09-02  0:18             ` Simon Glass
  0 siblings, 1 reply; 31+ messages in thread
From: Tom Rini @ 2014-09-01 11:23 UTC (permalink / raw)
  To: u-boot

On Sun, Aug 31, 2014 at 10:09:44PM -0700, Simon Glass wrote:
> Hi Tom,
> 
> On 28 August 2014 05:51, Tom Rini <trini@ti.com> wrote:
> > On Tue, Aug 26, 2014 at 08:59:52PM -0600, Simon Glass wrote:
> >> Hi Tom,
> >>
> >> On 25 August 2014 13:14, Tom Rini <trini@ti.com> wrote:
> >> > On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
> >> >> Add a -l option to display a list of offending boards against each
> >> >> error/warning line. The information will be shown in brackets as below:
> >> >>
> >> >> 02: wip
> >> >>    sandbox: +   sandbox
> >> >>        arm: +   seaboard
> >> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
> >> >> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
> >> >> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
> >> >> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
> >> >> +(seaboard)      int fred;
> >> >> +(seaboard)          ^
> >> >>
> >> >> Signed-off-by: Simon Glass <sjg@chromium.org>
> >> >
> >> > Doing buildman ... ; buildman ... -svl (since I want to spit out the
> >> > summary at once due to how LSF mangles output to file), I don't see
> >>
> >> What is -s?
> >
> > summary.
> >
> >> > anything for what caused powerpc failures say (where there's lot of
> >> > things complaining about generic board).  So something isn't right, is
> >> > this something you can reproduce locally?  I'm going to make sure that
> >> > -e really is implied like the doc says.  Thanks!
> >>
> >>  ./tools/buildman/buildman -vl sandbox
> >> Building current source for 1 boards (1 thread, 4 jobs per thread)
> >>    sandbox: +   sandbox
> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function ?__udelay?:
> >> +(sandbox) arch/sandbox/cpu/cpu.c:36:5: error: unknown type name ?oijew?
> >> +(sandbox) arch/sandbox/cpu/cpu.c:37:2: error: conflicting types for ?os_usleep?
> >> +(sandbox) include/os.h:155:6: note: previous declaration of
> >> ?os_usleep? was here
> >> +(sandbox) make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
> >> +(sandbox) make[1]: *** [arch/sandbox/cpu] Error 2
> >> +(sandbox) make: *** [sub-make] Error 2
> >> w+(sandbox) arch/sandbox/cpu/cpu.c: In function ?do_reset?:
> >> w+(sandbox) arch/sandbox/cpu/cpu.c:27:13: warning: unused variable ?i?
> >> [-Wunused-variable]
> >> w+(sandbox) arch/sandbox/cpu/cpu.c:37:2: warning: parameter names
> >> (without types) in function declaration [enabled by default]
> >>     0    0    1 /1      sandbox
> >>
> >> This shows warnings and errors, and -e is implied (but note you should
> >> test with both series - I pushed 'buildman5' to u-boot-x86.git just in
> >> case you only have one).
> >>
> >> I might be able to repeat your problem, except for the LSF part. What
> >> command line are you using?
> >
> > I do:
> > ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
> >     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc'
> > ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
> >     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc' -svel
> >
> > Doing '-svl' would omit the information I expected, adding in -e worked.
> > I do it this way since LSF only lets me log raw stdout to a file so
> > doing a build then a summary pass gives me more easily readable output.
> 
> OK I missed that you were doing two steps.
> 
> -v is only meaningful *without* -s: it makes the *build* verbose. When
> building, -v implies -e,
> 
> The summary (-s) is always verbose, so doesn't need -v.

OK, but in step #2, -svl _doesn't_ give me information about what boards
have what problem and -svel does.  You're saying -sel should work too,
but commit text (and help text?) says that -l implies -e, but it's not.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140901/ed77660d/attachment.pgp>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors
  2014-09-01 11:23           ` Tom Rini
@ 2014-09-02  0:18             ` Simon Glass
  0 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-09-02  0:18 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 1 September 2014 04:23, Tom Rini <trini@ti.com> wrote:
> On Sun, Aug 31, 2014 at 10:09:44PM -0700, Simon Glass wrote:
>> Hi Tom,
>>
>> On 28 August 2014 05:51, Tom Rini <trini@ti.com> wrote:
>> > On Tue, Aug 26, 2014 at 08:59:52PM -0600, Simon Glass wrote:
>> >> Hi Tom,
>> >>
>> >> On 25 August 2014 13:14, Tom Rini <trini@ti.com> wrote:
>> >> > On Mon, Aug 25, 2014 at 09:58:32AM -0600, Simon Glass wrote:
>> >> >> Add a -l option to display a list of offending boards against each
>> >> >> error/warning line. The information will be shown in brackets as below:
>> >> >>
>> >> >> 02: wip
>> >> >>    sandbox: +   sandbox
>> >> >>        arm: +   seaboard
>> >> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
>> >> >> +(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
>> >> >> +(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
>> >> >> +(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
>> >> >> +(seaboard)      int fred;
>> >> >> +(seaboard)          ^
>> >> >>
>> >> >> Signed-off-by: Simon Glass <sjg@chromium.org>
>> >> >
>> >> > Doing buildman ... ; buildman ... -svl (since I want to spit out the
>> >> > summary at once due to how LSF mangles output to file), I don't see
>> >>
>> >> What is -s?
>> >
>> > summary.
>> >
>> >> > anything for what caused powerpc failures say (where there's lot of
>> >> > things complaining about generic board).  So something isn't right, is
>> >> > this something you can reproduce locally?  I'm going to make sure that
>> >> > -e really is implied like the doc says.  Thanks!
>> >>
>> >>  ./tools/buildman/buildman -vl sandbox
>> >> Building current source for 1 boards (1 thread, 4 jobs per thread)
>> >>    sandbox: +   sandbox
>> >> +(sandbox) arch/sandbox/cpu/cpu.c: In function ?__udelay?:
>> >> +(sandbox) arch/sandbox/cpu/cpu.c:36:5: error: unknown type name ?oijew?
>> >> +(sandbox) arch/sandbox/cpu/cpu.c:37:2: error: conflicting types for ?os_usleep?
>> >> +(sandbox) include/os.h:155:6: note: previous declaration of
>> >> ?os_usleep? was here
>> >> +(sandbox) make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
>> >> +(sandbox) make[1]: *** [arch/sandbox/cpu] Error 2
>> >> +(sandbox) make: *** [sub-make] Error 2
>> >> w+(sandbox) arch/sandbox/cpu/cpu.c: In function ?do_reset?:
>> >> w+(sandbox) arch/sandbox/cpu/cpu.c:27:13: warning: unused variable ?i?
>> >> [-Wunused-variable]
>> >> w+(sandbox) arch/sandbox/cpu/cpu.c:37:2: warning: parameter names
>> >> (without types) in function declaration [enabled by default]
>> >>     0    0    1 /1      sandbox
>> >>
>> >> This shows warnings and errors, and -e is implied (but note you should
>> >> test with both series - I pushed 'buildman5' to u-boot-x86.git just in
>> >> case you only have one).
>> >>
>> >> I might be able to repeat your problem, except for the LSF part. What
>> >> command line are you using?
>> >
>> > I do:
>> > ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
>> >     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc'
>> > ./tools/buildman/buildman -b master -c 1 -T 1 -j 24 \
>> >     -o /tmp/trini/eldk521 -G ~/.buildman.eldk521 'arm|powerpc' -svel
>> >
>> > Doing '-svl' would omit the information I expected, adding in -e worked.
>> > I do it this way since LSF only lets me log raw stdout to a file so
>> > doing a build then a summary pass gives me more easily readable output.
>>
>> OK I missed that you were doing two steps.
>>
>> -v is only meaningful *without* -s: it makes the *build* verbose. When
>> building, -v implies -e,
>>
>> The summary (-s) is always verbose, so doesn't need -v.
>
> OK, but in step #2, -svl _doesn't_ give me information about what boards
> have what problem and -svel does.  You're saying -sel should work too,
> but commit text (and help text?) says that -l implies -e, but it's not.

-v implies -e if you are building (no -s)
-v means nothing if you are not building (-s)

I don't think -l implies anything. I suspect I have stuffed up
something in the docs but I can't see what, so will await your
response. Sorry for the trouble.

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL
  2014-09-01  5:07           ` Simon Glass
@ 2014-09-04 18:25             ` Simon Glass
  0 siblings, 0 replies; 31+ messages in thread
From: Simon Glass @ 2014-09-04 18:25 UTC (permalink / raw)
  To: u-boot

Hi Tom,


On 31 August 2014 23:07, Simon Glass <sjg@chromium.org> wrote:

> Hi Tom,
>
> On 28 August 2014 05:48, Tom Rini <trini@ti.com> wrote:
> > On Tue, Aug 26, 2014 at 08:54:03PM -0600, Simon Glass wrote:
> >> Hi Tom,
> >>
> >> On 25 August 2014 14:21, Tom Rini <trini@ti.com> wrote:
> >> > On Mon, Aug 25, 2014 at 01:00:05PM -0600, Simon Glass wrote:
> >> >> Hi Tom,
> >> >>
> >> >> On 25 August 2014 12:54, Tom Rini <trini@ti.com> wrote:
> >> >> > On Mon, Aug 25, 2014 at 09:58:21AM -0600, Simon Glass wrote:
> >> >> >
> >> >> >> Buildman has been around for a little over a year and is used by
> a fair
> >> >> >> number of U-Boot developers. However quite a few people still use
> MAKEALL.
> >> >> >>
> >> >> >> Buildman was intended to replace MAKEALL, so perhaps now is a
> good time to
> >> >> >> start that process.
> >> >> >>
> >> >> >> The reasons to deprecate MAKEALL are:
> >> >> >> - We don't want to maintain two build systems
> >> >> >> - Buildman is typically faster
> >> >> >> - Buildman has a lot more features
> >> >> >>
> >> >> >> This series adds a few features to buildman to fill some gaps,
> adds some
> >> >> >> information into the README on how to migrate from MAKEALL, and
> adds a
> >> >> >> deprecation message to MAKEALL.
> >> >> >
> >> >> > I'm testing this out again in the Ubuntu 10.04 / LSF environment I
> have
> >> >> > access to but so far I'm still finding that test for --no-decorate
> isn't
> >> >> > working and I have to manually set it to False.
> >> >>
> >> >> Oh dear. I wrote a test for this in the second series. So if you
> apply
> >> >> that series, do the tests pass? It is in func_test.py and is called
> >> >> testGitSetup().
> >> >
> >> > With my local kludge removed yes, all tests pass.
> >>
> >> It's quite mysterious. I installed Ubuntu 10.04 and it runs python
> 2.6.5.
> >>
> >> The --no-decorate patch does work, although it does print an error. I
> >> could suppress that easily enough, just adding another arg
> >> 'capture_stderr=True' to the RunPipe() call in gitutil.py.Setup().
> >>
> >> I see a problem with timedelta not having total_seconds. After that
> >> the threading dies. So I'm quite impressed you can get buildman to run
> >> at all. Are you using one of the later 10.04 releases?
> >
> > *shakes fist at corporate IT*
> >
> > The box I use to launch jobs is Ubuntu 10.04.4.  The boxes the jobs run
> > on are actually Ubuntu 12.04.1 (I had assumed it was all the same for
> > some reason.
> >
> > They also have git 1.7.9.5.
>
> Well they obviously can't make it *too* easy. So where does this leave
> us in trying to figure this out?
>

It feels like we should probably get the current patches in and see where
this leaves us. I'll work on a pull request, unless you think we should
wait.

Regards,
Simon

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-09-04 18:25 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-25 15:58 [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 01/14] patman: Support the 'reverse' option for 'git log' Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 02/14] patman: Fix indentation in terminal.py Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 03/14] patman: Correct unit tests to run correctly Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 04/14] patman: Remove the -a option Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 05/14] patman: Use --no-pager' to stop git from forking a pager Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 06/14] patman: Avoid changing the order of tags Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 07/14] buildman: Set the return code to indicate build result Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 08/14] buildman: Allow make-flags variables to include '-' and '_' Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 09/14] buildman: Implement an option to exclude boards from the build Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 10/14] buildman: Remove the directory prefix from each error line Simon Glass
2014-08-26 14:13   ` Tom Rini
2014-08-27  3:00     ` Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 11/14] buildman: Add an option to show which boards caused which errors Simon Glass
2014-08-25 19:14   ` Tom Rini
2014-08-26 14:09     ` Tom Rini
2014-08-27  2:59     ` Simon Glass
2014-08-28 12:51       ` Tom Rini
2014-09-01  5:09         ` Simon Glass
2014-09-01 11:23           ` Tom Rini
2014-09-02  0:18             ` Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 12/14] buildman: Separate out display of warnings and errors Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 13/14] patman: Fix detection of git version Simon Glass
2014-08-25 15:58 ` [U-Boot] [PATCH v9 14/14] RFC: Deprecate MAKEALL Simon Glass
2014-08-25 18:54 ` [U-Boot] [PATCH v9 0/14] Add some missing buildman features and deprecate MAKEALL Tom Rini
2014-08-25 19:00   ` Simon Glass
2014-08-25 20:21     ` Tom Rini
2014-08-27  2:54       ` Simon Glass
2014-08-28 12:48         ` Tom Rini
2014-09-01  5:07           ` Simon Glass
2014-09-04 18:25             ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.