mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-27 16:01:27 +00:00
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>
This commit is contained in:
parent
2a9e2c6a09
commit
5971ab5c44
4 changed files with 24 additions and 6 deletions
|
@ -174,7 +174,8 @@ class Builder:
|
||||||
self.func_sizes = func_sizes
|
self.func_sizes = func_sizes
|
||||||
|
|
||||||
def __init__(self, toolchains, base_dir, git_dir, num_threads, num_jobs,
|
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
|
"""Create a new Builder object
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -213,6 +214,7 @@ class Builder:
|
||||||
self._step = step
|
self._step = step
|
||||||
self.in_tree = False
|
self.in_tree = False
|
||||||
self._error_lines = 0
|
self._error_lines = 0
|
||||||
|
self.no_subdirs = no_subdirs
|
||||||
|
|
||||||
self.col = terminal.Color()
|
self.col = terminal.Color()
|
||||||
|
|
||||||
|
@ -392,15 +394,17 @@ class Builder:
|
||||||
Args:
|
Args:
|
||||||
commit_upto: Commit number to use (0..self.count-1)
|
commit_upto: Commit number to use (0..self.count-1)
|
||||||
"""
|
"""
|
||||||
|
commit_dir = None
|
||||||
if self.commits:
|
if self.commits:
|
||||||
commit = self.commits[commit_upto]
|
commit = self.commits[commit_upto]
|
||||||
subject = commit.subject.translate(trans_valid_chars)
|
subject = commit.subject.translate(trans_valid_chars)
|
||||||
commit_dir = ('%02d_of_%02d_g%s_%s' % (commit_upto + 1,
|
commit_dir = ('%02d_of_%02d_g%s_%s' % (commit_upto + 1,
|
||||||
self.commit_count, commit.hash, subject[:20]))
|
self.commit_count, commit.hash, subject[:20]))
|
||||||
else:
|
elif not self.no_subdirs:
|
||||||
commit_dir = 'current'
|
commit_dir = 'current'
|
||||||
output_dir = os.path.join(self.base_dir, commit_dir)
|
if not commit_dir:
|
||||||
return output_dir
|
return self.base_dir
|
||||||
|
return os.path.join(self.base_dir, commit_dir)
|
||||||
|
|
||||||
def GetBuildDir(self, commit_upto, target):
|
def GetBuildDir(self, commit_upto, target):
|
||||||
"""Get the name of the build directory for a commit number
|
"""Get the name of the build directory for a commit number
|
||||||
|
|
|
@ -55,6 +55,8 @@ def ParseArgs():
|
||||||
help='List available tool chains')
|
help='List available tool chains')
|
||||||
parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
|
parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
|
||||||
default=False, help="Do a dry run (describe actions, but do nothing)")
|
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',
|
parser.add_option('-o', '--output-dir', type='string',
|
||||||
dest='output_dir', default='..',
|
dest='output_dir', default='..',
|
||||||
help='Directory where all builds happen and buildman has its workspace (default is ../)')
|
help='Directory where all builds happen and buildman has its workspace (default is ../)')
|
||||||
|
|
|
@ -211,12 +211,16 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
|
||||||
output_dir = options.output_dir
|
output_dir = options.output_dir
|
||||||
if options.branch:
|
if options.branch:
|
||||||
dirname = options.branch.replace('/', '_')
|
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):
|
if clean_dir and os.path.exists(output_dir):
|
||||||
shutil.rmtree(output_dir)
|
shutil.rmtree(output_dir)
|
||||||
builder = Builder(toolchains, output_dir, options.git_dir,
|
builder = Builder(toolchains, output_dir, options.git_dir,
|
||||||
options.threads, options.jobs, gnu_make=gnu_make, checkout=True,
|
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
|
builder.force_config_on_failure = not options.quick
|
||||||
if make_func:
|
if make_func:
|
||||||
builder.do_make = make_func
|
builder.do_make = make_func
|
||||||
|
|
|
@ -373,5 +373,13 @@ class TestBuild(unittest.TestCase):
|
||||||
build.commit_count = 0
|
build.commit_count = 0
|
||||||
self.CheckDirs(build, '/current')
|
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__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue