mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-30 18:05:48 +01: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:
		| @@ -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 | ||||
|   | ||||
| @@ -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 ../)') | ||||
|   | ||||
| @@ -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('/', '_') | ||||
|         # 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 | ||||
|   | ||||
| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user