diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index ca74c3645ef3e6a7d0f774989c8483650fb55e90..93d048b568205bd1ba2af41c9339a84b958bed1e 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -175,7 +175,7 @@ class Builder: def __init__(self, toolchains, base_dir, git_dir, num_threads, num_jobs, gnu_make='make', checkout=True, show_unknown=True, step=1, - no_subdirs=False): + no_subdirs=False, full_path=False): """Create a new Builder object Args: @@ -189,6 +189,10 @@ class Builder: This is used for testing. show_unknown: Show unknown boards (those not built) in summary step: 1 to process every commit, n to process every nth commit + no_subdirs: Don't create subdirectories when building current + source for a single board + full_path: Return the full path in CROSS_COMPILE and don't set + PATH """ self.toolchains = toolchains self.base_dir = base_dir @@ -215,6 +219,7 @@ class Builder: self.in_tree = False self._error_lines = 0 self.no_subdirs = no_subdirs + self.full_path = full_path self.col = terminal.Color() diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py index bc4541cb3eb90b357e4608aca5ceae583eee1c05..a803481458be4d1aa68dcca6bd8100b5aa5f93e1 100644 --- a/tools/buildman/builderthread.py +++ b/tools/buildman/builderthread.py @@ -177,7 +177,7 @@ class BuilderThread(threading.Thread): commit = 'current' # Set up the environment and command line - env = self.toolchain.MakeEnvironment() + env = self.toolchain.MakeEnvironment(self.builder.full_path) Mkdir(out_dir) args = [] cwd = work_dir @@ -284,7 +284,7 @@ class BuilderThread(threading.Thread): print >>fd, 'path', result.toolchain.path # Write out the image and function size information and an objdump - env = result.toolchain.MakeEnvironment() + env = result.toolchain.MakeEnvironment(self.builder.full_path) lines = [] for fname in ['u-boot', 'spl/u-boot-spl']: cmd = ['%snm' % self.toolchain.cross, '--size-sort', fname] diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index 2b7565351206666ae181294bf7d5857e9548204b..6ad376db72272d7e8e6dcc8aeba9b5e9b55805ea 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -62,6 +62,8 @@ def ParseArgs(): help='Directory where all builds happen and buildman has its workspace (default is ../)') parser.add_option('-Q', '--quick', action='store_true', default=False, help='Do a rough build, with limited warning resolution') + parser.add_option('-p', '--full-path', action='store_true', + default=False, help="Use full toolchain path in CROSS_COMPILE") parser.add_option('-s', '--summary', action='store_true', default=False, help='Show a build summary') parser.add_option('-S', '--show-sizes', action='store_true', diff --git a/tools/buildman/control.py b/tools/buildman/control.py index e10ed867fb371d176acfb370195b5f52775e364c..cd0333ca1d56cc9e02e9f9a6194f3e75e40dfd63 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -232,7 +232,7 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, 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, - no_subdirs=options.no_subdirs) + no_subdirs=options.no_subdirs, full_path=options.full_path) builder.force_config_on_failure = not options.quick if make_func: builder.do_make = make_func diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index ab08193349002aa6199dae6a377c6194303c01a8..cb693f4641831315d295c2f9c3886817374bf5bd 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -41,7 +41,7 @@ class Toolchain: pos = self.cross.find('-') self.arch = self.cross[:pos] if pos != -1 else 'sandbox' - env = self.MakeEnvironment() + env = self.MakeEnvironment(False) # As a basic sanity check, run the C compiler with --version cmd = [fname, '--version'] @@ -81,15 +81,23 @@ class Toolchain: return prio return prio - def MakeEnvironment(self): + def MakeEnvironment(self, full_path): """Returns an environment for using the toolchain. - Thie takes the current environment, adds CROSS_COMPILE and - augments PATH so that the toolchain will operate correctly. + Thie takes the current environment and adds CROSS_COMPILE so that + the tool chain will operate correctly. + + Args: + full_path: Return the full path in CROSS_COMPILE and don't set + PATH """ env = dict(os.environ) - env['CROSS_COMPILE'] = self.cross - env['PATH'] = self.path + ':' + env['PATH'] + if full_path: + env['CROSS_COMPILE'] = os.path.join(self.path, self.cross) + else: + env['CROSS_COMPILE'] = self.cross + env['PATH'] = self.path + ':' + env['PATH'] + return env