mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +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 |             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() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user