summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-12-01 17:33:55 -0700
committerSimon Glass <sjg@chromium.org>2015-01-14 21:16:52 -0800
commit5971ab5c44cb0c32c88fcdc90a3a9b6430463c4c (patch)
tree503e0311df4db18ff0148152c4e073fc705c9635
parent2a9e2c6a0962cb04a12d833cc5c1c0920fa3b4f5 (diff)
downloadu-boot-imx-5971ab5c44cb0c32c88fcdc90a3a9b6430463c4c.zip
u-boot-imx-5971ab5c44cb0c32c88fcdc90a3a9b6430463c4c.tar.gz
u-boot-imx-5971ab5c44cb0c32c88fcdc90a3a9b6430463c4c.tar.bz2
buildman: Add an option to flatten output directory trees
When building current source for a single board, buildman puts the output in <output_dir>/current/current/<board>. Add an option to make it use <output_dir>/<board> instead. This removes the unnecessary directories in that case, controlled by the --no-subdirs/-N option. Suggested-by: Tom Rini <trini@ti.com> Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/buildman/builder.py12
-rw-r--r--tools/buildman/cmdline.py2
-rw-r--r--tools/buildman/control.py8
-rw-r--r--tools/buildman/test.py8
4 files changed, 24 insertions, 6 deletions
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index 05ebfd2..ca74c36 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -174,7 +174,8 @@ class Builder:
self.func_sizes = func_sizes
def __init__(self, toolchains, base_dir, git_dir, num_threads, num_jobs,
- gnu_make='make', checkout=True, show_unknown=True, step=1):
+ gnu_make='make', checkout=True, show_unknown=True, step=1,
+ no_subdirs=False):
"""Create a new Builder object
Args:
@@ -213,6 +214,7 @@ class Builder:
self._step = step
self.in_tree = False
self._error_lines = 0
+ self.no_subdirs = no_subdirs
self.col = terminal.Color()
@@ -392,15 +394,17 @@ class Builder:
Args:
commit_upto: Commit number to use (0..self.count-1)
"""
+ commit_dir = None
if self.commits:
commit = self.commits[commit_upto]
subject = commit.subject.translate(trans_valid_chars)
commit_dir = ('%02d_of_%02d_g%s_%s' % (commit_upto + 1,
self.commit_count, commit.hash, subject[:20]))
- else:
+ elif not self.no_subdirs:
commit_dir = 'current'
- output_dir = os.path.join(self.base_dir, commit_dir)
- return output_dir
+ if not commit_dir:
+ return self.base_dir
+ return os.path.join(self.base_dir, commit_dir)
def GetBuildDir(self, commit_upto, target):
"""Get the name of the build directory for a commit number
diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py
index 27d3c70..2b75653 100644
--- a/tools/buildman/cmdline.py
+++ b/tools/buildman/cmdline.py
@@ -55,6 +55,8 @@ def ParseArgs():
help='List available tool chains')
parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
default=False, help="Do a dry run (describe actions, but do nothing)")
+ parser.add_option('-N', '--no-subdirs', action='store_true', dest='no_subdirs',
+ default=False, help="Don't create subdirectories when building current source for a single board")
parser.add_option('-o', '--output-dir', type='string',
dest='output_dir', default='..',
help='Directory where all builds happen and buildman has its workspace (default is ../)')
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index cec02c6..747c80d 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -211,12 +211,16 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
output_dir = options.output_dir
if options.branch:
dirname = options.branch.replace('/', '_')
- output_dir = os.path.join(options.output_dir, dirname)
+ # As a special case allow the board directory to be placed in the
+ # output directory itself rather than any subdirectory.
+ if not options.no_subdirs:
+ output_dir = os.path.join(options.output_dir, dirname)
if clean_dir and os.path.exists(output_dir):
shutil.rmtree(output_dir)
builder = Builder(toolchains, output_dir, options.git_dir,
options.threads, options.jobs, gnu_make=gnu_make, checkout=True,
- show_unknown=options.show_unknown, step=options.step)
+ show_unknown=options.show_unknown, step=options.step,
+ no_subdirs=options.no_subdirs)
builder.force_config_on_failure = not options.quick
if make_func:
builder.do_make = make_func
diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index f16d2fd..c085d2f 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -373,5 +373,13 @@ class TestBuild(unittest.TestCase):
build.commit_count = 0
self.CheckDirs(build, '/current')
+ def testOutputDirNoSubdirs(self):
+ build = builder.Builder(self.toolchains, BASE_DIR, None, 1, 2,
+ checkout=False, show_unknown=False,
+ no_subdirs=True)
+ build.commits = None
+ build.commit_count = 0
+ self.CheckDirs(build, '')
+
if __name__ == "__main__":
unittest.main()