Skip to contentSkip to conversation

patman: Fix indentation in terminal.py

PATCH New Simon Glass 6 participants 43 messages Aug 28, 2014 – Jul 14, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v10 2/14 patman: Fix indentation in terminal.py

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

---

Changes in v10: None
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(-)
tools/patman/terminal.py +55 -53
index 597d526..11f80d8 100644
@@ -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
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#1 lore raw

PATCH v10 2/14 patman: Fix indentation in terminal.py

Applied to u-boot-x86 branch 'patman'

#2 lore raw

PATCH v10 3/14 patman: Correct unit tests to run correctly

In reply to Simon Glass

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>

---

Changes in v10: None
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(-)
tools/patman/gitutil.py +4 -4
index e2b4959..29e6fdd 100644
@@ -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:
tools/patman/patchstream.py +5 -2
index 0040468..322374c 100644
@@ -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
tools/patman/terminal.py +6 -2
index 11f80d8..963f2f8 100644
@@ -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.
tools/patman/test.py +7 -6
index 8fcfe53..e8f7472 100644
@@ -55,6 +55,7 @@ This adds functions to enable/disable clocks and reset to on-chip peripherals.
 
 Signed-off-by: Simon Glass <[email protected]>
 ---
+
  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)
 
 
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#3 lore raw

PATCH v10 3/14 patman: Correct unit tests to run correctly

Applied to u-boot-x86 branch 'patman'

#4 lore raw

PATCH v10 4/14 patman: Remove the -a option

In reply to Simon Glass

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.

---

Changes in v10: None
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(-)
tools/patman/gitutil.py +0 -88
index 29e6fdd..45276e6 100644
@@ -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.
 
tools/patman/patman.py +0 -7
index ca34cb9..5ab74fa 100755
@@ -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)
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#5 lore raw

PATCH v10 4/14 patman: Remove the -a option

Applied to u-boot-x86 branch 'patman'

#6 lore raw

PATCH v10 5/14 patman: Use --no-pager' to stop git from forking a pager

In reply to Simon Glass

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

---

Changes in v10: None
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(-)
tools/patman/gitutil.py +1 -1
index 45276e6..fbd170f 100644
@@ -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:
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#7 lore raw

PATCH v10 5/14 patman: Use --no-pager' to stop git from forking a pager

Applied to u-boot-x86 branch 'patman'

#8 lore raw

PATCH v10 6/14 patman: Avoid changing the order of tags

In reply to Simon Glass

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.

---

Changes in v10: None
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(-)
tools/patman/patchstream.py +1 -13
index 322374c..b0b8153 100644
@@ -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
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#9 lore raw

PATCH v10 6/14 patman: Avoid changing the order of tags

2014-08-29 0:43 GMT+09:00 Simon Glass <[email protected]>:

Quoted 7 lines

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.

---

#10 lore raw

PATCH v10 6/14 patman: Avoid changing the order of tags

Applied to u-boot-x86 branch 'patman'

#11 lore raw

PATCH v10 7/14 buildman: Set the return code to indicate build result

In reply to Simon Glass

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

---

Changes in v10: None
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(-)
tools/buildman/README +6 -0
index d4e8404..d20508f 100644
@@ -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
 ==========================
tools/buildman/builder.py +5 -0
index a555bd8..106fde0 100644
@@ -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)
tools/buildman/buildman.py +2 -1
index e18859b..fbd3125 100755
@@ -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)
tools/buildman/control.py +7 -2
index d98e50a..239c423 100644
@@ -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
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#12 lore raw

PATCH v10 7/14 buildman: Set the return code to indicate build result

Applied to u-boot-x86 branch 'patman'

#13 lore raw

PATCH v10 8/14 buildman: Allow make-flags variables to include '-' and '_'

In reply to Simon Glass

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

---

Changes in v10: None
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(-)
tools/buildman/README +3 -1
index d20508f..68465b4 100644
@@ -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.
tools/buildman/toolchain.py +1 -1
index 1b9771f..0e91294 100644
@@ -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)
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#14 lore raw

PATCH v10 8/14 buildman: Allow make-flags variables to include '-' and '_'

Applied to u-boot-x86 branch 'patman'

#15 lore raw

PATCH v10 9/14 buildman: Implement an option to exclude boards from the build

In reply to Simon Glass

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.

---

Changes in v10: None
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(-)
tools/buildman/README +7 -0
index 68465b4..b8c2bd6 100644
@@ -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.
 
tools/buildman/board.py +24 -7
index a333287..5d536d5 100644
@@ -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
tools/buildman/buildman.py +3 -0
index fbd3125..53592e5 100755
@@ -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 += """
 
tools/buildman/control.py +7 -1
index 239c423..7991c74 100644
@@ -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'))
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#16 lore raw

PATCH v10 9/14 buildman: Implement an option to exclude boards from the build

Applied to u-boot-x86 branch 'patman'

#17 lore raw

PATCH v10 10/14 buildman: Remove the directory prefix from each error line

In reply to Simon Glass

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]

---

Changes in v10:
- Remove the directory prefix more aggressively

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 | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
tools/buildman/builderthread.py +3 -1
index 8214662..0246375 100644
@@ -177,6 +177,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 +190,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 +211,7 @@ 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 = result.stderr.replace(src_dir + '/', '')
             else:
                 result.return_code = 1
                 result.stderr = 'No tool chain for %s\n' % brd.arch
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#18 lore raw

PATCH v10 10/14 buildman: Remove the directory prefix from each error line

Applied to u-boot-x86 branch 'patman'

#19 lore raw

PATCH v10 11/14 buildman: Add an option to show which boards caused which errors

In reply to Simon Glass

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) ^

---

Changes in v10: None
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(-)
tools/buildman/README +4 -3
index b8c2bd6..fbc8449 100644
@@ -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,
tools/buildman/builder.py +42 -9

116 lines not on this page · raw message

tools/buildman/buildman.py +2 -0
index 53592e5..1258b76 100755
@@ -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',
tools/buildman/control.py +2 -1
index 7991c74..0785840 100644
@@ -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:
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#20 lore raw

PATCH v10 11/14 buildman: Add an option to show which boards caused which errors

Quoted 2 lines · Simon Glass

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:

[snip]

Quoted 4 lines
tools/buildman/README +0 -0
index b8c2bd6..fbc8449 100644

[snip]

tools/buildman/README followed by (afterwards, or perhaps concurrently in another terminal): · line 752

Quoted 3 lines

If you really want to see build results as they happen, use -v when doing a

tools/buildman/README +1 -1
-build (and -e if you want to see errors as well).
+build (-e will be enabled automatically).

OK, so here is my confusion. I didn't get from the help that -s implies -v. If I do:
-s -v -e -l
I get a verbose summary with per-board warning/error information. If I do:
-s -v -l
I don't get that information. If I follow what you're saying and the help right, I should do:

$ export COMMON="-b master -c 1 -T 1 -j 24 -o /tmp/trini/eldk521 -G ~/.buildman.eldk521"
$ ./tools/buildman/buildman $COMMON 'arm|powerpc'
$ ./tools/buildman/buildman $COMMON 'arm|powerpc' -s

And that should give me errors as well as which boards gave which?

Signature · 8 lines
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/20140902/bfd52de6/attachment.pgp>
#21 lore raw

PATCH v10 11/14 buildman: Add an option to show which boards caused which errors

Hi Tom,

Quoted 23 lines · Tom Rini
Quoted 2 lines · Simon Glass

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:

[snip]

Quoted 4 lines
tools/buildman/README +0 -0
index b8c2bd6..fbc8449 100644

[snip]

tools/buildman/README followed by (afterwards, or perhaps concurrently in another terminal): · line 752

Quoted 3 lines

If you really want to see build results as they happen, use -v when doing a

tools/buildman/README +1 -1
-build (and -e if you want to see errors as well).
+build (-e will be enabled automatically).

OK, so here is my confusion. I didn't get from the help that -s implies

(quoted diff) +0 -2
-v.  If I do:
-s -v -e -l

I get a verbose summary with per-board warning/error information. If I do:
-s -v -l
I don't get that information. If I follow what you're saying and the help right, I should do:

Quoted 5 lines
$ export COMMON="-b master -c 1 -T 1 -j 24 -o /tmp/trini/eldk521 -G ~/.buildman.eldk521"
$ ./tools/buildman/buildman $COMMON 'arm|powerpc'
$ ./tools/buildman/buildman $COMMON 'arm|powerpc' -s

And that should give me errors as well as which boards gave which?

I don't think that's quite right. There are two completely separate modes for buildman:

building (no -s)
not building (-s)

I added the -v feature to let you see build results while building. So -v only applies to the 'building' mode, and implies -e.

For the 'not building' mode, you get a basic summary for free, and can tell buildman all sorts of things you want to see - like errors (-e) sizes (-S) function bloat (-B) and list of broken boards (-l)

Regards,
Simon

#22 lore raw

PATCH v10 11/14 buildman: Add an option to show which boards caused which errors

Applied to u-boot-x86 branch 'patman'

#23 lore raw

PATCH v10 12/14 buildman: Separate out display of warnings and errors

In reply to Simon Glass

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.

---

Changes in v10:
- Track prefixes and postfixes for warnings/errors

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 | 111 ++++++++++++++++++++++++++++++++++++----------
 2 files changed, 91 insertions(+), 23 deletions(-)
tools/buildman/README +3 -0
index fbc8449..8ba19ec 100644
@@ -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/
tools/buildman/builder.py +88 -23

207 lines not on this page · raw message

Signature · 1 line
2.1.0.rc2.206.gedb03e5
#24 lore raw

PATCH v10 12/14 buildman: Separate out display of warnings and errors

Applied to u-boot-x86 branch 'patman'

#25 lore raw

PATCH v10 13/14 patman: Fix detection of git version

In reply to Simon Glass

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

---

Changes in v10: None
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(+)
tools/patman/gitutil.py +2 -0
index fbd170f..80edc7c 100644
@@ -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)
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#26 lore raw

PATCH v10 13/14 patman: Fix detection of git version

Applied to u-boot-x86 branch 'patman'

#27 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

In reply to Simon Glass

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

Comments welcome.

---

Changes in v10: None
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(+)
MAKEALL +10 -0
index 392ea8d..2321df0 100755
@@ -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
 }
 
Signature · 1 line
2.1.0.rc2.206.gedb03e5
#28 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Hi Tom,

Quoted 6 lines · Simon Glass

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

Comments welcome.

Should this patch go in the release?

Regards,
Simon

#29 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Quoted 11 lines · Simon Glass

Hi Tom,

Quoted 6 lines · Simon Glass

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

Comments welcome.

Should this patch go in the release?

No, not yet. I am going to mention in the release notes that we're going to strongly start thinking about deleting MAKEALL. We can pick up the deprecation patch early in the next merge window.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20141014/72a53d1f/attachment.pgp>
#30 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Dear Tom,

Quoted 4 lines · In message <20141014081724.GF25506@bill-the-cat> you wrote:

No, not yet. I am going to mention in the release notes that we're going to strongly start thinking about deleting MAKEALL. We can pick up the deprecation patch early in the next merge window.

Can we please keep at least some script (as a wrapper around buildman?) that keeps the old user interface in place?

I frequently use "git bisect run MAKEALL <board> ...", and it would be nice if we could keep this working even in newer versions of the code.

Or is there a similar alternative command that works with identical parameters for - say - all versions of the last two years or so?

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
I will also, for an appropriate fee, certify that  your  keyboard  is
object-oriented,  and  that  the bits on your hard disk are template-
compatible.            - Jeffrey S. Haemer in <[email protected]>
#31 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Hi Wolfgang,

Quoted 11 lines · Wolfgang Denk

Dear Tom,

Quoted 4 lines · In message <20141014081724.GF25506@bill-the-cat> you wrote:

No, not yet. I am going to mention in the release notes that we're going to strongly start thinking about deleting MAKEALL. We can pick up the deprecation patch early in the next merge window.

Can we please keep at least some script (as a wrapper around buildman?) that keeps the old user interface in place?

Quoted 6 lines

I frequently use "git bisect run MAKEALL <board> ...", and it would be nice if we could keep this working even in newer versions of the code.

Or is there a similar alternative command that works with identical parameters for - say - all versions of the last two years or so?

Unfortunately there is not really an equivalent, and buildman only recently

- sets its return code correctly
- supports building the current tree (previously it required a branch name for the commit to build)

During development of buildman/patman I used to keep a separate tree. Then you can run the latest buildman from that tree using you current directory for the bisect.

I could perhaps look at adjusting MAKEALL to call buildman if that solution isn't good enough (this will work assuming that buildman has been set up with toolchains, etc.). Still I think a deprecation warning is a good start.

Regards,
Simon

#32 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Quoted 27 lines · Simon Glass

Hi Wolfgang,

Quoted 11 lines · Wolfgang Denk

Dear Tom,

Quoted 4 lines · In message <20141014081724.GF25506@bill-the-cat> you wrote:

No, not yet. I am going to mention in the release notes that we're going to strongly start thinking about deleting MAKEALL. We can pick up the deprecation patch early in the next merge window.

Can we please keep at least some script (as a wrapper around buildman?) that keeps the old user interface in place?

Quoted 6 lines

I frequently use "git bisect run MAKEALL <board> ...", and it would be nice if we could keep this working even in newer versions of the code.

Or is there a similar alternative command that works with identical parameters for - say - all versions of the last two years or so?

Unfortunately there is not really an equivalent, and buildman only recently

- sets its return code correctly
- supports building the current tree (previously it required a branch name for the commit to build)

Quoted 9 lines

During development of buildman/patman I used to keep a separate tree. Then you can run the latest buildman from that tree using you current directory for the bisect.

I could perhaps look at adjusting MAKEALL to call buildman if that solution isn't good enough (this will work assuming that buildman has been set up with toolchains, etc.). Still I think a deprecation warning is a good start.

Simon,

While you work on buildman, please consider to regenerate boards.cfg for each build. If one patch in a series adds a board, there will be a false error for patches before it.

York

#33 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

In reply to Simon Glass
Quoted 27 lines · Simon Glass

Hi Wolfgang,

Quoted 11 lines · Wolfgang Denk

Dear Tom,

Quoted 4 lines · In message <20141014081724.GF25506@bill-the-cat> you wrote:

No, not yet. I am going to mention in the release notes that we're going to strongly start thinking about deleting MAKEALL. We can pick up the deprecation patch early in the next merge window.

Can we please keep at least some script (as a wrapper around buildman?) that keeps the old user interface in place?

Quoted 6 lines

I frequently use "git bisect run MAKEALL <board> ...", and it would be nice if we could keep this working even in newer versions of the code.

Or is there a similar alternative command that works with identical parameters for - say - all versions of the last two years or so?

Unfortunately there is not really an equivalent, and buildman only recently

- sets its return code correctly
- supports building the current tree (previously it required a branch name for the commit to build)

Quoted 8 lines

During development of buildman/patman I used to keep a separate tree. Then you can run the latest buildman from that tree using you current directory for the bisect.

I could perhaps look at adjusting MAKEALL to call buildman if that solution isn't good enough (this will work assuming that buildman has been set up with toolchains, etc.). Still I think a deprecation warning is a good start.

I think for Wolfgang's case that might just have to be handled with an external wrapper, translating all of the ways to run MAKEALL into buildman, reliably, would be a bit of an undertaking. But for bisect run:

if [ -x ./MAKEALL ]; then
./MAKEALL $@
else
./tools/buildman/buildman $@
fi

And "board" will get built, one way or another, defaulting to MAKEALL while it's still here.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20141022/5980f02b/attachment.pgp>
#34 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Dear Tom,

Quoted 3 lines · In message <20141022160936.GY25506@bill-the-cat> you wrote:

I think for Wolfgang's case that might just have to be handled with an external wrapper, translating all of the ways to run MAKEALL into

Yes, you are right, an external wrapper would work, too. Silly me.

OTOH, why not keep a script under the old name that provides such functionality to translate calls to the buildman API?

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
People seldom know what they want until you give them what  they  ask
for.
#35 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Quoted 11 lines · Wolfgang Denk

Dear Tom,

Quoted 3 lines · In message <20141022160936.GY25506@bill-the-cat> you wrote:

I think for Wolfgang's case that might just have to be handled with an external wrapper, translating all of the ways to run MAKEALL into

Yes, you are right, an external wrapper would work, too. Silly me.

OTOH, why not keep a script under the old name that provides such functionality to translate calls to the buildman API?

My concern is that we'll get people complaining about things not being mapped back exactly right. For example, MAKEALL am335x_evm builds one board, am335x_evm_config but buildman am335x_evm builds the whole family of configs. For a build test bisect run, that's fine (even if not optimal in that it'll build more than required). In fact if I read things right (Simon?) buildman is bad for a single board/config.

If we map out MAKEALL's -m/-M to just fail and say use get_maintainer.pl I think we can "good enough" map out everything else. With perhaps an echo to please use buildman directly when possible?

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20141022/ba532e3a/attachment.pgp>
#36 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Dear Tom,

Quoted 7 lines · In message <20141022171908.GC25506@bill-the-cat> you wrote:

My concern is that we'll get people complaining about things not being mapped back exactly right. For example, MAKEALL am335x_evm builds one board, am335x_evm_config but buildman am335x_evm builds the whole family of configs. For a build test bisect run, that's fine (even if not optimal in that it'll build more than required). In fact if I read things right (Simon?) buildman is bad for a single board/config.

This is one of my open questions with buildman, too. Simon?

Quoted 3 lines

If we map out MAKEALL's -m/-M to just fail and say use get_maintainer.pl I think we can "good enough" map out everything else. With perhaps an echo to please use buildman directly when possible?

Sounds good enough to me.

Thanks!

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Q:  Do you know what the death rate around here is?
A:  One per person.
#37 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Hi Wolfgang,

Quoted 4 lines · Wolfgang Denk

Dear Tom,

Quoted 1 line · In message <20141022171908.GC25506@bill-the-cat> you wrote:
Quoted 8 lines
Quoted 6 lines

My concern is that we'll get people complaining about things not being mapped back exactly right. For example, MAKEALL am335x_evm builds one board, am335x_evm_config but buildman am335x_evm builds the whole family of configs. For a build test bisect run, that's fine (even if not optimal in that it'll build more than required). In fact if I read things right (Simon?) buildman is bad for a single board/config.

This is one of my open questions with buildman, too. Simon?

Yes it does a substring match. I'm open to suggestions on this though. It actually supports regular expressions.

Quoted 8 lines
Quoted 4 lines

If we map out MAKEALL's -m/-M to just fail and say use get_maintainer.pl I think we can "good enough" map out everything else. With perhaps an echo to please use buildman directly when possible?

Sounds good enough to me.

Thanks!

Regards,
Simon

#38 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Dear Simon,

Quoted 8 lines · In message <CAPnjgZ2ZmGiQoi-mKQxK0vNPCs3hhqgk=z5CxbfSUm8LjU2kNA@mail.gmail.com>…
Quoted 8 lines
Quoted 7 lines

My concern is that we'll get people complaining about things not being mapped back exactly right. For example, MAKEALL am335x_evm builds one board, am335x_evm_config but buildman am335x_evm builds the whole family of configs. For a build test bisect run, that's fine (even if not optimal in that it'll build more than required). In fact if I read things right (Simon?) buildman is bad for a single board/config.

Quoted 4 lines
Quoted 1 line

This is one of my open questions with buildman, too. Simon?

Yes it does a substring match. I'm open to suggestions on this though. It actually supports regular expressions.

So something like

	buildman '^am335x_evm$'

would work?

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Anyone can count the seeds in an apple.
No one can count the apples in a seed.
#39 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Hi Wolfgang,

Quoted 15 lines · Wolfgang Denk

Dear Simon,

In message <CAPnjgZ2ZmGiQoi-mKQxK0vNPCs3hhqgk=

Quoted 4 lines · z5CxbfSUm8LjU2kNA at mail.gmail.com> you wrote:
Quoted 4 lines
Quoted 4 lines

My concern is that we'll get people complaining about things not being mapped back exactly right. For example, MAKEALL am335x_evm builds one board, am335x_evm_config but buildman am335x_evm builds the whole

family

Quoted 6 lines
Quoted 5 lines
Quoted 3 lines

of configs. For a build test bisect run, that's fine (even if not optimal in that it'll build more than required). In fact if I read things right (Simon?) buildman is bad for a single board/config.

This is one of my open questions with buildman, too. Simon?

Quoted 9 lines
Quoted 2 lines

Yes it does a substring match. I'm open to suggestions on this though. It actually supports regular expressions.

So something like

        buildman '^am335x_evm$'

would work?

Yes:

$ ./tools/buildman/buildman -s am335x_evm -n
boards.cfg is up to date. Nothing to do.
Dry run, so not doing much. But I would do this:

Building current source for 5 boards (4 threads, 1 job per thread) Build directory: ../current

am335x_evm : 5 boards
Total boards to build for each commit: 5

$ ./tools/buildman/buildman -s am335x_evm$ -n
boards.cfg is up to date. Nothing to do.
Dry run, so not doing much. But I would do this:

Building current source for 1 boards (1 thread, 4 jobs per thread) Build directory: ../current

am335x_evm$ : 1 boards
Total boards to build for each commit: 1

Regards,
Simon

#40 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Dear Simon,

Quoted 6 lines · In message <CAPnjgZ3doDTiju1zJ5WQR-hBx5JkEtm=e7qLsym+q2zSp56R0Q@mail.gmail.com>…
Quoted 4 lines

So something like

        buildman '^am335x_evm$'

would work?

Yes:

Thanks a lot!

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
I read part of it all the way through.
#41 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

Hi Wolfgang,

Quoted 11 lines · Wolfgang Denk

Dear Simon,

Quoted 6 lines · In message <CAPnjgZ3doDTiju1zJ5WQR-hBx5JkEtm=e7qLsym+q2zSp56R0Q@mail.gmail.com>…
Quoted 4 lines

So something like

        buildman '^am335x_evm$'

would work?

Yes:

Thanks a lot!

I hope/think that we are getting through most of the use cases now. The main issue I'm aware of is getting tool chains.

Regards,
Simon

#42 lore raw

PATCH v10 14/14 RFC: Deprecate MAKEALL

In reply to Simon Glass
Quoted 6 lines · Simon Glass

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

Comments welcome.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150714/c2c7c930/attachment.sig>