From patchwork Sun Mar 15 23:42:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243665 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:41 -0600 Subject: [PATCH v2 01/23] sandbox: Add documentation about required/useful packages In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315174232.v2.1.Iab88520de0132444a8918776cac9ffa268c1326e@changeid> Quite a few packages are used by sandbox or tools. Add a list of these to help people setting up for the first time. Signed-off-by: Simon Glass --- Changes in v2: None doc/arch/sandbox.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/arch/sandbox.rst b/doc/arch/sandbox.rst index e577a95716..6a1c6fc552 100644 --- a/doc/arch/sandbox.rst +++ b/doc/arch/sandbox.rst @@ -34,6 +34,16 @@ integers can only be built on 64-bit hosts. Note that standalone/API support is not available at present. +Prerequisites +------------- + +Here are some packages that are worth installing if you are doing sandbox or +tools development in U-Boot: + + python3-pytest lzma lzma-alone lz4 python3 python3-virtualenv + libssl1.0-dev + + Basic Operation --------------- From patchwork Sun Mar 15 23:42:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243667 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:42 -0600 Subject: [PATCH v2 02/23] main: Drop show_boot_progress() prototype In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315174232.v2.2.I1056fca9f2af09ae9db71c99a82287ea921ca76b@changeid> This is defined in bootstage.h and is not called in this file anyway. Drop it. Signed-off-by: Simon Glass --- Changes in v2: None common/main.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/common/main.c b/common/main.c index ec8994ad45..06d7ff56d6 100644 --- a/common/main.c +++ b/common/main.c @@ -15,11 +15,6 @@ #include #include -/* - * Board-specific Platform code can reimplement show_boot_progress () if needed - */ -__weak void show_boot_progress(int val) {} - static void run_preboot_environment_command(void) { char *p; From patchwork Sun Mar 15 23:42:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243666 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:43 -0600 Subject: [PATCH v2 03/23] buildman: Document the members of BuilderJob In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-2-sjg@chromium.org> This class has a few more members now. Add documentation for them and fix a nit in the 'commits' comment. Signed-off-by: Simon Glass --- Changes in v2: None tools/buildman/builderthread.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py index 570c1f6595..1e52ef8295 100644 --- a/tools/buildman/builderthread.py +++ b/tools/buildman/builderthread.py @@ -39,11 +39,15 @@ class BuilderJob: Members: board: Board object to build - commits: List of commit options to build. + commits: List of Commit objects to build + keep_outputs: True to save build output files + step: 1 to process every commit, n to process every nth commit """ def __init__(self): self.board = None self.commits = [] + self.keep_outputs = False + self.step = 1 class ResultThread(threading.Thread): From patchwork Sun Mar 15 23:42:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243671 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:44 -0600 Subject: [PATCH v2 04/23] bulidman: Add support for a simple build In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315174232.v2.4.I545ef199e5bce41849e01a2ea88e3661539b2971@changeid> It is useful to run a simple build and put all the output in a single directory. Add a -w option to support this. Signed-off-by: Simon Glass --- Changes in v2: None tools/buildman/README | 11 ++++++++++ tools/buildman/builder.py | 15 +++++++++++-- tools/buildman/builderthread.py | 28 ++++++++++++++++------- tools/buildman/cmdline.py | 2 ++ tools/buildman/control.py | 10 ++++++++- tools/buildman/func_test.py | 39 +++++++++++++++++++++++++++++---- 6 files changed, 90 insertions(+), 15 deletions(-) diff --git a/tools/buildman/README b/tools/buildman/README index c1ac0d0f58..abbbbea9f2 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -1056,6 +1056,17 @@ toolchain. For example: buildman -O clang-7 --board sandbox +Doing a simple build +==================== + +In some cases you just want to build a single board and get the full output, use +the -w option, for example: + + buildman -o /tmp/build --board sandbox -w + +This will write the full build into /tmp/build including object files. + + Other options ============= diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index 3fd4fac695..081c1d0901 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -174,6 +174,8 @@ class Builder: in_tree: Build U-Boot in-tree instead of specifying an output directory separate from the source code. This option is really only useful for testing in-tree builds. + work_in_output: Use the output directory as the work directory and + don't write to a separate output directory. Private members: _base_board_dict: Last-summarised Dict of boards @@ -224,7 +226,7 @@ class Builder: no_subdirs=False, full_path=False, verbose_build=False, incremental=False, per_board_out_dir=False, config_only=False, squash_config_y=False, - warnings_as_errors=False): + warnings_as_errors=False, work_in_output=False): """Create a new Builder object Args: @@ -250,10 +252,15 @@ class Builder: config_only: Only configure each build, don't build it squash_config_y: Convert CONFIG options with the value 'y' to '1' warnings_as_errors: Treat all compiler warnings as errors + work_in_output: Use the output directory as the work directory and + don't write to a separate output directory. """ self.toolchains = toolchains self.base_dir = base_dir - self._working_dir = os.path.join(base_dir, '.bm-work') + if work_in_output: + self._working_dir = base_dir + else: + self._working_dir = os.path.join(base_dir, '.bm-work') self.threads = [] self.do_make = self.Make self.gnu_make = gnu_make @@ -280,6 +287,7 @@ class Builder: self.config_only = config_only self.squash_config_y = squash_config_y self.config_filenames = BASE_CONFIG_FILENAMES + self.work_in_output = work_in_output if not self.squash_config_y: self.config_filenames += EXTRA_CONFIG_FILENAMES @@ -1474,6 +1482,8 @@ class Builder: Args: thread_num: Number of thread to check. """ + if self.work_in_output: + return self._working_dir return os.path.join(self._working_dir, '%02d' % thread_num) def _PrepareThread(self, thread_num, setup_git): @@ -1571,6 +1581,7 @@ class Builder: job.board = brd job.commits = commits job.keep_outputs = keep_outputs + job.work_in_output = self.work_in_output job.step = self._step self.queue.put(job) diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py index 1e52ef8295..7561f39942 100644 --- a/tools/buildman/builderthread.py +++ b/tools/buildman/builderthread.py @@ -42,12 +42,15 @@ class BuilderJob: commits: List of Commit objects to build keep_outputs: True to save build output files step: 1 to process every commit, n to process every nth commit + work_in_output: Use the output directory as the work directory and + don't write to a separate output directory. """ def __init__(self): self.board = None self.commits = [] self.keep_outputs = False self.step = 1 + self.work_in_output = False class ResultThread(threading.Thread): @@ -118,7 +121,7 @@ class BuilderThread(threading.Thread): **kwargs) def RunCommit(self, commit_upto, brd, work_dir, do_config, config_only, - force_build, force_build_failures): + force_build, force_build_failures, work_in_output): """Build a particular commit. If the build is already done, and we are not forcing a build, we skip @@ -133,6 +136,8 @@ class BuilderThread(threading.Thread): force_build: Force a build even if one was previously done force_build_failures: Force a bulid if the previous result showed failure + work_in_output: Use the output directory as the work directory and + don't write to a separate output directory. Returns: tuple containing: @@ -143,7 +148,7 @@ class BuilderThread(threading.Thread): # self.Make() below, in the event that we do a build. result = command.CommandResult() result.return_code = 0 - if self.builder.in_tree: + if work_in_output or self.builder.in_tree: out_dir = work_dir else: if self.per_board_out_dir: @@ -265,14 +270,18 @@ class BuilderThread(threading.Thread): result.out_dir = out_dir return result, do_config - def _WriteResult(self, result, keep_outputs): + def _WriteResult(self, result, keep_outputs, work_in_output): """Write a built result to the output directory. Args: result: CommandResult object containing result to write keep_outputs: True to store the output binaries, False to delete them + work_in_output: Use the output directory as the work directory and + don't write to a separate output directory. """ + if work_in_output: + return # Fatal error if result.return_code < 0: return @@ -434,7 +443,8 @@ class BuilderThread(threading.Thread): result, request_config = self.RunCommit(commit_upto, brd, work_dir, do_config, self.builder.config_only, force_build or self.builder.force_build, - self.builder.force_build_failures) + self.builder.force_build_failures, + work_in_output=job.work_in_output) failed = result.return_code or result.stderr did_config = do_config if failed and not do_config: @@ -442,7 +452,8 @@ class BuilderThread(threading.Thread): # with a reconfig. if self.builder.force_config_on_failure: result, request_config = self.RunCommit(commit_upto, - brd, work_dir, True, False, True, False) + brd, work_dir, True, False, True, False, + work_in_output=job.work_in_output) did_config = True if not self.builder.force_reconfig: do_config = request_config @@ -481,15 +492,16 @@ class BuilderThread(threading.Thread): raise ValueError('Interrupt') # We have the build results, so output the result - self._WriteResult(result, job.keep_outputs) + self._WriteResult(result, job.keep_outputs, job.work_in_output) self.builder.out_queue.put(result) else: # Just build the currently checked-out build result, request_config = self.RunCommit(None, brd, work_dir, True, self.builder.config_only, True, - self.builder.force_build_failures) + self.builder.force_build_failures, + work_in_output=job.work_in_output) result.commit_upto = 0 - self._WriteResult(result, job.keep_outputs) + self._WriteResult(result, job.keep_outputs, job.work_in_output) self.builder.out_queue.put(result) def run(self): diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index b41209373d..c7b4bf6b4a 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -106,6 +106,8 @@ def ParseArgs(): default=False, help='Show build results while the build progresses') parser.add_option('-V', '--verbose-build', action='store_true', default=False, help='Run make with V=1, logging all output') + parser.add_option('-w', '--work-in-output', action='store_true', + default=False, help='Use the output directory as the work directory') parser.add_option('-x', '--exclude', dest='exclude', type='string', action='append', help='Specify a list of boards to exclude, separated by comma') diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 969d866547..5d80400f7a 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -263,6 +263,13 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, str = ("No commits found to process in branch '%s': " "set branch's upstream or use -c flag" % options.branch) sys.exit(col.Color(col.RED, str)) + if options.work_in_output: + if len(selected) != 1: + sys.exit(col.Color(col.RED, + '-w can only be used with a single board')) + if count != 1: + sys.exit(col.Color(col.RED, + '-w can only be used with a single commit')) # Read the metadata from the commits. First look at the upstream commit, # then the ones in the branch. We would like to do something like @@ -334,7 +341,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, per_board_out_dir=options.per_board_out_dir, config_only=options.config_only, squash_config_y=not options.preserve_config_y, - warnings_as_errors=options.warnings_as_errors) + warnings_as_errors=options.warnings_as_errors, + work_in_output=options.work_in_output) builder.force_config_on_failure = not options.quick if make_func: builder.do_make = make_func diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py index 4c3d497294..f9f8f80593 100644 --- a/tools/buildman/func_test.py +++ b/tools/buildman/func_test.py @@ -16,6 +16,7 @@ import control import gitutil import terminal import toolchain +import tools settings_data = ''' # Buildman settings file @@ -208,7 +209,7 @@ class TestFunctional(unittest.TestCase): def tearDown(self): shutil.rmtree(self._base_dir) - shutil.rmtree(self._output_dir) + #shutil.rmtree(self._output_dir) def setupToolchains(self): self._toolchains = toolchain.Toolchains() @@ -218,12 +219,12 @@ class TestFunctional(unittest.TestCase): return command.RunPipe([[self._buildman_pathname] + list(args)], capture=True, capture_stderr=True) - def _RunControl(self, *args, **kwargs): + def _RunControl(self, *args, clean_dir=False, boards=None): sys.argv = [sys.argv[0]] + list(args) options, args = cmdline.ParseArgs() result = control.DoBuildman(options, args, toolchains=self._toolchains, - make_func=self._HandleMake, boards=self._boards, - clean_dir=kwargs.get('clean_dir', True)) + make_func=self._HandleMake, boards=boards or self._boards, + clean_dir=clean_dir) self._builder = control.builder return result @@ -397,6 +398,12 @@ class TestFunctional(unittest.TestCase): combined='Test configuration complete') elif stage == 'build': stderr = '' + out_dir = '' + for arg in args: + if arg.startswith('O='): + out_dir = arg[2:] + fname = os.path.join(cwd or '', out_dir, 'u-boot') + tools.WriteFile(fname, b'U-Boot') if type(commit) is not str: stderr = self._error.get((brd.target, commit.sequence)) if stderr: @@ -535,3 +542,27 @@ class TestFunctional(unittest.TestCase): with self.assertRaises(SystemExit): self._RunControl('-b', self._test_branch, '-o', os.path.join(os.getcwd(), 'test')) + + def testWorkInOutput(self): + """Test the -w option which should write directly to the output dir""" + board_list = board.Boards() + board_list.AddBoard(board.Board(*boards[0])) + self._RunControl('-o', self._output_dir, '-w', clean_dir=False, + boards=board_list) + self.assertTrue( + os.path.exists(os.path.join(self._output_dir, 'u-boot'))) + + def testWorkInOutputFail(self): + """Test the -w option failures""" + with self.assertRaises(SystemExit) as e: + self._RunControl('-o', self._output_dir, '-w', clean_dir=False) + self.assertIn("single board", str(e.exception)) + self.assertFalse( + os.path.exists(os.path.join(self._output_dir, 'u-boot'))) + + board_list = board.Boards() + board_list.AddBoard(board.Board(*boards[0])) + with self.assertRaises(SystemExit) as e: + self._RunControl('-b', self._test_branch, '-o', self._output_dir, + '-w', clean_dir=False, boards=board_list) + self.assertIn("single commit", str(e.exception)) From patchwork Sun Mar 15 23:42:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243668 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:45 -0600 Subject: [PATCH v2 05/23] buildman: Update help for -d In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-3-sjg@chromium.org> This help is a bit ambiguous. It only does anything if asked to show size changes with -S. Update the help and the function comments. Signed-off-by: Simon Glass --- Changes in v2: - Reword the commit message for clarity tools/buildman/builder.py | 6 +++--- tools/buildman/cmdline.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index 081c1d0901..a41d0b316e 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -337,7 +337,7 @@ class Builder: show_errors: True to show summarised error/warning info show_sizes: Show size deltas - show_detail: Show detail for each board + show_detail: Show size delta detail for each board if show_sizes show_bloat: Show detail for each function list_error_boards: Show the boards which caused each error/warning show_config: Show config deltas @@ -1000,7 +1000,7 @@ class Builder: board.target board_dict: Dict containing boards for which we built this commit, keyed by board.target. The value is an Outcome object. - show_detail: Show detail for each board + show_detail: Show size delta detail for each board show_bloat: Show detail for each function """ arch_list = {} @@ -1117,7 +1117,7 @@ class Builder: environment: Dictionary keyed by environment variable, Each value is the value of environment variable. show_sizes: Show image size deltas - show_detail: Show detail for each board + show_detail: Show size delta detail for each board if show_sizes show_bloat: Show detail for each function show_config: Show config changes show_environment: Show environment changes diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index c7b4bf6b4a..74b410010d 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -31,7 +31,7 @@ def ParseArgs(): help='Reconfigure for every commit (disable incremental build)') parser.add_option('-d', '--detail', dest='show_detail', action='store_true', default=False, - help='Show detailed information for each board in summary') + help='Show detailed size delta for each board in the -S summary') parser.add_option('-D', '--config-only', action='store_true', default=False, help="Don't build, just configure each commit") parser.add_option('-e', '--show_errors', action='store_true', From patchwork Sun Mar 15 23:42:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243669 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:46 -0600 Subject: [PATCH v2 06/23] buildman: Allow ignoring warnings in the return code In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-4-sjg@chromium.org> Sometimes we don't want to get an error with warnings. Add a -W option to support this. If buildman detects warnings (and no error) it will return an exit code of 0 (success). Signed-off-by: Simon Glass --- Changes in v2: None tools/buildman/README | 2 +- tools/buildman/cmdline.py | 2 ++ tools/buildman/control.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/buildman/README b/tools/buildman/README index abbbbea9f2..87bd8ee9d7 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -1079,7 +1079,7 @@ When doing builds, Buildman's return code will reflect the overall result: 0 (success) No errors or warnings found 128 Errors found - 129 Warnings found + 129 Warnings found (use -W to return 0 in this case) How to change from MAKEALL diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index 74b410010d..f387aeb1cf 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -108,6 +108,8 @@ def ParseArgs(): default=False, help='Run make with V=1, logging all output') parser.add_option('-w', '--work-in-output', action='store_true', default=False, help='Use the output directory as the work directory') + parser.add_option('-W', '--ignore-warnings', action='store_true', + default=False, help='Return success even if there are warnings') parser.add_option('-x', '--exclude', dest='exclude', type='string', action='append', help='Specify a list of boards to exclude, separated by comma') diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 5d80400f7a..ded4360250 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -386,6 +386,6 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, options.keep_outputs, options.verbose) if fail: return 128 - elif warned: + elif warned and not options.ignore_warnings: return 129 return 0 From patchwork Sun Mar 15 23:42:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243670 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:47 -0600 Subject: [PATCH v2 07/23] buildman: Be more selective about which directories to remove In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-5-sjg@chromium.org> At present buildman removes any directory it doesn't intend to write output into. This is overly expansive since if the output directory happens to be somewhere with existing files, they may be removed. Using an existing directory for buildman is not a good practice, but since the result might be catastrophic, it is best to guard against it. A previous commit[1] fixed this by refusing to write to a subdirectory of the current directory, assumed to have U-Boot source code. But we can do better by only removing directories that look like the ones buildman creates. Update the code to do this and add a test. Signed-off-by: Simon Glass [1] 409fc029c40 tools: buildman: Don't use the working dir as build dir --- Changes in v2: None tools/buildman/builder.py | 27 ++++++++++++++++++++++----- tools/buildman/test.py | 20 ++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index a41d0b316e..30ec4254f8 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -485,6 +485,7 @@ class Builder: if self.commits: commit = self.commits[commit_upto] subject = commit.subject.translate(trans_valid_chars) + # See _GetOutputSpaceRemovals() which parses this name commit_dir = ('%02d_of_%02d_g%s_%s' % (commit_upto + 1, self.commit_count, commit.hash, subject[:20])) elif not self.no_subdirs: @@ -1525,12 +1526,15 @@ class Builder: for thread in range(max_threads): self._PrepareThread(thread, setup_git) - def _PrepareOutputSpace(self): + def _GetOutputSpaceRemovals(self): """Get the output directories ready to receive files. - We delete any output directories which look like ones we need to - create. Having left over directories is confusing when the user wants - to check the output manually. + Figure out what needs to be deleted in the output directory before it + can be used. We only delete old buildman directories which have the + expected name pattern. See _GetOutputDir(). + + Returns: + List of full paths of directories to remove """ if not self.commits: return @@ -1541,7 +1545,20 @@ class Builder: to_remove = [] for dirname in glob.glob(os.path.join(self.base_dir, '*')): if dirname not in dir_list: - to_remove.append(dirname) + leaf = dirname[len(self.base_dir) + 1:] + m = re.match('[0-9]+_of_[0-9]+_g[0-9a-f]+_.*', leaf) + if m: + to_remove.append(dirname) + return to_remove + + def _PrepareOutputSpace(self): + """Get the output directories ready to receive files. + + We delete any output directories which look like ones we need to + create. Having left over directories is confusing when the user wants + to check the output manually. + """ + to_remove = self._GetOutputSpaceRemovals() if to_remove: Print('Removing %d old build directories' % len(to_remove), newline=False) diff --git a/tools/buildman/test.py b/tools/buildman/test.py index acd862b3b0..2aaedf44ac 100644 --- a/tools/buildman/test.py +++ b/tools/buildman/test.py @@ -22,6 +22,7 @@ import commit import terminal import test_util import toolchain +import tools use_network = True @@ -469,6 +470,25 @@ class TestBuild(unittest.TestCase): self.assertEqual('HOSTCC=clang CC=clang', tc.GetEnvArgs(toolchain.VAR_MAKE_ARGS)) + def testPrepareOutputSpace(self): + def _Touch(fname): + tools.WriteFile(os.path.join(base_dir, fname), b'') + + base_dir = tempfile.mkdtemp() + + # Add various files that we want removed and left alone + to_remove = ['01_of_22_g0982734987_title', '102_of_222_g92bf_title', + '01_of_22_g2938abd8_title'] + to_leave = ['something_else', '01-something.patch', '01_of_22_another'] + for name in to_remove + to_leave: + _Touch(name) + + build = builder.Builder(self.toolchains, base_dir, None, 1, 2) + build.commits = self.commits + build.commit_count = len(commits) + result = set(build._GetOutputSpaceRemovals()) + expected = set([os.path.join(base_dir, f) for f in to_remove]) + self.assertEqual(expected, result) if __name__ == "__main__": unittest.main() From patchwork Sun Mar 15 23:42:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243673 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:48 -0600 Subject: [PATCH v2 08/23] buildman: Allow building within a subdir of the current dir In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-6-sjg@chromium.org> This is useful in some situations, in particular with -w and when building in-tree. Now that we are more careful about what we remove in _PrepareOutputSpace(), it should be safe to relax this restriction. Update the progress information also so it is clear what buildman is doing. Remove files can take a long time. Signed-off-by: Simon Glass --- Changes in v2: None tools/buildman/builder.py | 3 ++- tools/buildman/control.py | 23 ----------------------- tools/buildman/func_test.py | 9 --------- 3 files changed, 2 insertions(+), 33 deletions(-) diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index 30ec4254f8..70c55c588a 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -1560,10 +1560,11 @@ class Builder: """ to_remove = self._GetOutputSpaceRemovals() if to_remove: - Print('Removing %d old build directories' % len(to_remove), + Print('Removing %d old build directories...' % len(to_remove), newline=False) for dirname in to_remove: shutil.rmtree(dirname) + Print('done') def BuildBoards(self, commits, board_selected, keep_outputs, verbose): """Build all commits for a list of boards diff --git a/tools/buildman/control.py b/tools/buildman/control.py index ded4360250..7d31863c63 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -85,28 +85,6 @@ def ShowActions(series, why_selected, boards_selected, builder, options, for warning in board_warnings: print(col.Color(col.YELLOW, warning)) -def CheckOutputDir(output_dir): - """Make sure that the output directory is not within the current directory - - If we try to use an output directory which is within the current directory - (which is assumed to hold the U-Boot source) we may end up deleting the - U-Boot source code. Detect this and print an error in this case. - - Args: - output_dir: Output directory path to check - """ - path = os.path.realpath(output_dir) - cwd_path = os.path.realpath('.') - while True: - if os.path.realpath(path) == cwd_path: - Print("Cannot use output directory '%s' since it is within the current directory '%s'" % - (path, cwd_path)) - sys.exit(1) - parent = os.path.dirname(path) - if parent == path: - break - path = parent - def ShowToolchainInfo(boards, toolchains, print_arch, print_prefix): """Show information about a the tool chain used by one or more boards @@ -331,7 +309,6 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, output_dir = os.path.join(options.output_dir, dirname) if clean_dir and os.path.exists(output_dir): shutil.rmtree(output_dir) - CheckOutputDir(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, diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py index f9f8f80593..2a256a9263 100644 --- a/tools/buildman/func_test.py +++ b/tools/buildman/func_test.py @@ -534,15 +534,6 @@ class TestFunctional(unittest.TestCase): self.assertEqual(self._builder.count, self._total_builds) self.assertEqual(self._builder.fail, 0) - def testBadOutputDir(self): - """Test building with an output dir the same as out current dir""" - self._test_branch = '/__dev/__testbranch' - with self.assertRaises(SystemExit): - self._RunControl('-b', self._test_branch, '-o', os.getcwd()) - with self.assertRaises(SystemExit): - self._RunControl('-b', self._test_branch, '-o', - os.path.join(os.getcwd(), 'test')) - def testWorkInOutput(self): """Test the -w option which should write directly to the output dir""" board_list = board.Boards() From patchwork Sun Mar 15 23:42:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243672 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:49 -0600 Subject: [PATCH v2 09/23] buildman: Drop the -a option In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-7-sjg@chromium.org> There is no point in setting the ARCH environment variable since the U-Boot build system no-longer uses it. It seems safe to drop this feature since it was only recently added. Signed-off-by: Simon Glass --- Changes in v2: - Add a new patch to drop the -a option tools/buildman/cmdline.py | 2 -- tools/buildman/control.py | 17 ++++++----------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index f387aeb1cf..17ea015a95 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -13,8 +13,6 @@ def ParseArgs(): args: command lin arguments """ parser = OptionParser() - parser.add_option('-a', '--print-arch', action='store_true', - help='Print the architecture for a board (ARCH=)') parser.add_option('-A', '--print-prefix', action='store_true', help='Print the tool-chain prefix for a board (CROSS_COMPILE=)') parser.add_option('-b', '--branch', type='string', diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 7d31863c63..5ddc598c95 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -85,16 +85,15 @@ def ShowActions(series, why_selected, boards_selected, builder, options, for warning in board_warnings: print(col.Color(col.YELLOW, warning)) -def ShowToolchainInfo(boards, toolchains, print_arch, print_prefix): +def ShowToolchainPrefix(boards, toolchains): """Show information about a the tool chain used by one or more boards - The function checks that all boards use the same toolchain. + The function checks that all boards use the same toolchain, then prints + the correct value for CROSS_COMPILE. Args: boards: Boards object containing selected boards toolchains: Toolchains object containing available toolchains - print_arch: True to print ARCH value - print_prefix: True to print CROSS_COMPILE value Return: None on success, string error message otherwise @@ -107,10 +106,7 @@ def ShowToolchainInfo(boards, toolchains, print_arch, print_prefix): return 'Supplied boards must share one toolchain' return False tc = tc_set.pop() - if print_arch: - print(tc.GetEnvArgs(toolchain.VAR_ARCH)) - if print_prefix: - print(tc.GetEnvArgs(toolchain.VAR_CROSS_COMPILE)) + print(tc.GetEnvArgs(toolchain.VAR_CROSS_COMPILE)) return None def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, @@ -206,9 +202,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, if not len(selected): sys.exit(col.Color(col.RED, 'No matching boards found')) - if options.print_arch or options.print_prefix: - err = ShowToolchainInfo(boards, toolchains, options.print_arch, - options.print_prefix) + if options.print_prefix: + err = ShowToolchainInfo(boards, toolchains) if err: sys.exit(col.Color(col.RED, err)) return 0 From patchwork Sun Mar 15 23:42:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243674 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:50 -0600 Subject: [PATCH v2 10/23] travis: Don't copy files into .bm-work/ In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-8-sjg@chromium.org> At present if TEST_PY_BD is empty the script copies various files into a directory, to no purpose. This happens because UBOOT_TRAVIS_BUILD_DIR is set before TEST_PY_BD is tested. Move the 'if' to fix this. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Add a new patch to avoid copying files into .bm-work/ .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index c59bd7790b..f6e3a5d3af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -130,12 +130,12 @@ script: # never prevent any test from running. That way, we can always pass # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom # value. - - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD}; - cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/; - cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/; - cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; - cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; - if [[ "${TEST_PY_BD}" != "" ]]; then + - if [[ "${TEST_PY_BD}" != "" ]]; then + export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD}; + cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/; + cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/; + cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; + cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; virtualenv -p /usr/bin/python3 /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt; From patchwork Sun Mar 15 23:42:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243676 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:51 -0600 Subject: [PATCH v2 11/23] travis: Split the building into two parts In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-9-sjg@chromium.org> Buildman is used in two ways: - to build a selection of boards (with no testing) - to build a single board (and run pytest) The gitlab and azure scrips do this in separate places, but travis does not. To aid the refactoring process and keep the following patches in sync across all three environments, split the code out in travis as well. Use the buildman -w option for the single board. It is easier to understand since it specifies the output directory directly. Also it avoids needing to look at the internal .bm-work directory. This initially creates some duplicate code, but by the end of the series we have two completely different build paths with different arguments. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Add a new patch to split travis building into two parts .travis.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f6e3a5d3af..f3703085ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -118,7 +118,8 @@ script: # # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. - - if [[ "${BUILDMAN}" != "" ]]; then + # Build a selection of boards if TEST_PY_BD is empty + - if [[ "${BUILDMAN}" != "" ]] && [[ "${TEST_PY_BD}" == "" ]]; then ret=0; tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then @@ -130,12 +131,20 @@ script: # never prevent any test from running. That way, we can always pass # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom # value. + # Build just the one board needed for testing, if TEST_PY_BD is non-empty - if [[ "${TEST_PY_BD}" != "" ]]; then - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD}; + export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/${TEST_PY_BD}; cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/; cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/; cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; + ret=0; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E ${BUILDMAN} + ${OVERRIDE}|| ret=$?; + if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -sde -o ${UBOOT_TRAVIS_BUILD_DIR} -w ${BUILDMAN}; + exit $ret; + fi; virtualenv -p /usr/bin/python3 /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt; From patchwork Sun Mar 15 23:42:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243683 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:52 -0600 Subject: [PATCH v2 12/23] gitlab/azure: Use the -w option for sandbox_spl In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315174232.v2.12.I31d30fb8031fe55a91aa0877c6754ccdf2ca1a50@changeid> Avoid needing to know about the internal .bm-work directory, by passing the -w flag to buildman. This does not affect travis since the previous commit already used the -w flag. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Update azure also .azure-pipelines.yml | 4 ++-- .gitlab-ci.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index f66d58aa76..182482a93a 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -136,10 +136,10 @@ jobs: virtualenv -p /usr/bin/python3 /tmp/venv . /tmp/venv/bin/activate pip install pyelftools - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl + export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH} - ./tools/buildman/buildman -o /tmp -P sandbox_spl + ./tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w sandbox_spl ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test ./tools/buildman/buildman -t ./tools/dtoc/dtoc -t diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 55943bb3a2..248e0530d2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -167,10 +167,10 @@ Run binman, buildman, dtoc and patman testsuites: virtualenv -p /usr/bin/python3 /tmp/venv; . /tmp/venv/bin/activate; pip install pyelftools; - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl; + export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl; export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"; export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"; - ./tools/buildman/buildman -o /tmp -P sandbox_spl; + ./tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w sandbox_spl; ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test; ./tools/buildman/buildman -t; ./tools/dtoc/dtoc -t; From patchwork Sun Mar 15 23:42:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243675 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:53 -0600 Subject: [PATCH v2 13/23] travis/gitlab/azure: Use --board buildman flag with test.py In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-10-sjg@chromium.org> The current method of selecting the board to build with test.py is a bit error-prone, e.g. with "^sandbox$" it actually builds 5 boards (all of those in the sandbox architecture). Use the (newish) --board flag instead, to get the same result. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Update travis, azure also .azure-pipelines.yml | 46 ++++++++++++++++++++--------------------- .gitlab-ci.yml | 47 +++++++++++++++++++++--------------------- .travis.yml | 49 ++++++++++++++++++++++---------------------- 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 182482a93a..8092545642 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -158,90 +158,90 @@ jobs: matrix: sandbox: TEST_PY_BD: "sandbox" - BUILDMAN: "^sandbox$" + BUILDMAN: "sandbox" sandbox_clang: TEST_PY_BD: "sandbox" - BUILDMAN: "^sandbox$" + BUILDMAN: "sandbox" OVERRIDE: "-O clang-7" sandbox_spl: TEST_PY_BD: "sandbox_spl" TEST_PY_TEST_SPEC: "test_ofplatdata" - BUILDMAN: "^sandbox_spl$" + BUILDMAN: "sandbox_spl" sandbox_flattree: TEST_PY_BD: "sandbox_flattree" - BUILDMAN: "^sandbox_flattree$" + BUILDMAN: "sandbox_flattree" evb_ast2500: TEST_PY_BD: "evb-ast2500" TEST_PY_ID: "--id qemu" - BUILDMAN: "^evb-ast2500$" + BUILDMAN: "evb-ast2500" vexpress_ca15_tc2: TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_ID: "--id qemu" - BUILDMAN: "^vexpress_ca15_tc2$" + BUILDMAN: "vexpress_ca15_tc2" vexpress_ca9x4: TEST_PY_BD: "vexpress_ca9x4" TEST_PY_ID: "--id qemu" - BUILDMAN: "^vexpress_ca9x4$" + BUILDMAN: "vexpress_ca9x4" integratorcp_cm926ejs: TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^integratorcp_cm926ejs$" + BUILDMAN: "integratorcp_cm926ejs" qemu_arm: TEST_PY_BD: "qemu_arm" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_arm$" + BUILDMAN: "qemu_arm" qemu_arm64: TEST_PY_BD: "qemu_arm64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_arm64$" + BUILDMAN: "qemu_arm64" qemu_mips: TEST_PY_BD: "qemu_mips" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips$" + BUILDMAN: "qemu_mips" qemu_mipsel: TEST_PY_BD: "qemu_mipsel" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mipsel$" + BUILDMAN: "qemu_mipsel" qemu_mips64: TEST_PY_BD: "qemu_mips64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips64$" + BUILDMAN: "qemu_mips64" qemu_mips64el: TEST_PY_BD: "qemu_mips64el" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips64el$" + BUILDMAN: "qemu_mips64el" qemu_ppce500: TEST_PY_BD: "qemu-ppce500" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-ppce500$" + BUILDMAN: "qemu-ppce500" qemu_riscv64: TEST_PY_BD: "qemu-riscv64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-riscv64$" + BUILDMAN: "qemu-riscv64" qemu_x86: TEST_PY_BD: "qemu-x86" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-x86$" + BUILDMAN: "qemu-x86" qemu_x86_64: TEST_PY_BD: "qemu-x86_64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-x86_64$" + BUILDMAN: "qemu-x86_64" zynq_zc702: TEST_PY_BD: "zynq_zc702" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^zynq_zc702$" + BUILDMAN: "zynq_zc702" xilinx_versal_virt: TEST_PY_BD: "xilinx_versal_virt" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^xilinx_versal_virt$" + BUILDMAN: "xilinx_versal_virt" xtfpga: TEST_PY_BD: "xtfpga" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^xtfpga$" + BUILDMAN: "xtfpga" steps: - script: | cat << EOF > test.sh @@ -269,9 +269,9 @@ jobs: cd ${WORK_DIR} if [[ "${BUILDMAN}" != "" ]]; then ret=0; - tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?; + tools/buildman/buildman -o /tmp -P -E --board ${BUILDMAN} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN}; + tools/buildman/buildman -o /tmp -sdeP --board ${BUILDMAN}; exit $ret; fi; fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 248e0530d2..3f48cad752 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,9 +31,10 @@ stages: # use clang only do one configuration. - if [[ "${BUILDMAN}" != "" ]]; then ret=0; - tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; + tools/buildman/buildman -o /tmp -P -E --board ${BUILDMAN} ${OVERRIDE} + || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN}; + tools/buildman/buildman -o /tmp -sdeP --board ${BUILDMAN}; exit $ret; fi; fi @@ -181,14 +182,14 @@ sandbox test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox" - BUILDMAN: "^sandbox$" + BUILDMAN: "sandbox" <<: *buildman_and_testpy_dfn sandbox with clang test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox" - BUILDMAN: "^sandbox$" + BUILDMAN: "sandbox" OVERRIDE: "-O clang-7" <<: *buildman_and_testpy_dfn @@ -196,7 +197,7 @@ sandbox_spl test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_spl" - BUILDMAN: "^sandbox_spl$" + BUILDMAN: "sandbox_spl" TEST_PY_TEST_SPEC: "test_ofplatdata" <<: *buildman_and_testpy_dfn @@ -205,14 +206,14 @@ evb-ast2500 test.py: variables: TEST_PY_BD: "evb-ast2500" TEST_PY_ID: "--id qemu" - BUILDMAN: "^evb-ast2500$" + BUILDMAN: "evb-ast2500" <<: *buildman_and_testpy_dfn sandbox_flattree test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_flattree" - BUILDMAN: "^sandbox_flattree$" + BUILDMAN: "sandbox_flattree" <<: *buildman_and_testpy_dfn vexpress_ca15_tc2 test.py: @@ -220,7 +221,7 @@ vexpress_ca15_tc2 test.py: variables: TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_ID: "--id qemu" - BUILDMAN: "^vexpress_ca15_tc2$" + BUILDMAN: "vexpress_ca15_tc2" <<: *buildman_and_testpy_dfn vexpress_ca9x4 test.py: @@ -228,7 +229,7 @@ vexpress_ca9x4 test.py: variables: TEST_PY_BD: "vexpress_ca9x4" TEST_PY_ID: "--id qemu" - BUILDMAN: "^vexpress_ca9x4$" + BUILDMAN: "vexpress_ca9x4" <<: *buildman_and_testpy_dfn integratorcp_cm926ejs test.py: @@ -237,7 +238,7 @@ integratorcp_cm926ejs test.py: TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "^integratorcp_cm926ejs$" + BUILDMAN: "integratorcp_cm926ejs" <<: *buildman_and_testpy_dfn qemu_arm test.py: @@ -245,7 +246,7 @@ qemu_arm test.py: variables: TEST_PY_BD: "qemu_arm" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_arm$" + BUILDMAN: "qemu_arm" <<: *buildman_and_testpy_dfn qemu_arm64 test.py: @@ -253,7 +254,7 @@ qemu_arm64 test.py: variables: TEST_PY_BD: "qemu_arm64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_arm64$" + BUILDMAN: "qemu_arm64" <<: *buildman_and_testpy_dfn qemu_mips test.py: @@ -261,7 +262,7 @@ qemu_mips test.py: variables: TEST_PY_BD: "qemu_mips" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips$" + BUILDMAN: "qemu_mips" <<: *buildman_and_testpy_dfn qemu_mipsel test.py: @@ -269,7 +270,7 @@ qemu_mipsel test.py: variables: TEST_PY_BD: "qemu_mipsel" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mipsel$" + BUILDMAN: "qemu_mipsel" <<: *buildman_and_testpy_dfn qemu_mips64 test.py: @@ -277,7 +278,7 @@ qemu_mips64 test.py: variables: TEST_PY_BD: "qemu_mips64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips64$" + BUILDMAN: "qemu_mips64" <<: *buildman_and_testpy_dfn qemu_mips64el test.py: @@ -285,7 +286,7 @@ qemu_mips64el test.py: variables: TEST_PY_BD: "qemu_mips64el" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu_mips64el$" + BUILDMAN: "qemu_mips64el" <<: *buildman_and_testpy_dfn qemu-ppce500 test.py: @@ -293,7 +294,7 @@ qemu-ppce500 test.py: variables: TEST_PY_BD: "qemu-ppce500" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-ppce500$" + BUILDMAN: "qemu-ppce500" <<: *buildman_and_testpy_dfn qemu-riscv64 test.py: @@ -301,7 +302,7 @@ qemu-riscv64 test.py: variables: TEST_PY_BD: "qemu-riscv64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-riscv64$" + BUILDMAN: "qemu-riscv64" <<: *buildman_and_testpy_dfn qemu-x86 test.py: @@ -309,7 +310,7 @@ qemu-x86 test.py: variables: TEST_PY_BD: "qemu-x86" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-x86$" + BUILDMAN: "qemu-x86" <<: *buildman_and_testpy_dfn qemu-x86_64 test.py: @@ -317,7 +318,7 @@ qemu-x86_64 test.py: variables: TEST_PY_BD: "qemu-x86_64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "^qemu-x86_64$" + BUILDMAN: "qemu-x86_64" <<: *buildman_and_testpy_dfn zynq_zc702 test.py: @@ -326,7 +327,7 @@ zynq_zc702 test.py: TEST_PY_BD: "zynq_zc702" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "^zynq_zc702$" + BUILDMAN: "zynq_zc702" <<: *buildman_and_testpy_dfn xilinx_versal_virt test.py: @@ -335,7 +336,7 @@ xilinx_versal_virt test.py: TEST_PY_BD: "xilinx_versal_virt" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "^xilinx_versal_virt$" + BUILDMAN: "xilinx_versal_virt" <<: *buildman_and_testpy_dfn xtfpga test.py: @@ -344,5 +345,5 @@ xtfpga test.py: TEST_PY_BD: "xtfpga" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "^xtfpga$" + BUILDMAN: "xtfpga" <<: *buildman_and_testpy_dfn diff --git a/.travis.yml b/.travis.yml index f3703085ba..3149ed6a15 100644 --- a/.travis.yml +++ b/.travis.yml @@ -139,10 +139,11 @@ script: cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E ${BUILDMAN} - ${OVERRIDE}|| ret=$?; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E + --board ${BUILDMAN} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -sde -o ${UBOOT_TRAVIS_BUILD_DIR} -w ${BUILDMAN}; + tools/buildman/buildman -sde -o ${UBOOT_TRAVIS_BUILD_DIR} -w + --board ${BUILDMAN}; exit $ret; fi; virtualenv -p /usr/bin/python3 /tmp/venv; @@ -399,110 +400,110 @@ matrix: - name: "test/py sandbox" env: - TEST_PY_BD="sandbox" - BUILDMAN="^sandbox$" + BUILDMAN="sandbox" TOOLCHAIN="i386" - name: "test/py sandbox with clang" env: - TEST_PY_BD="sandbox" - BUILDMAN="^sandbox$" + BUILDMAN="sandbox" OVERRIDE="-O clang-7" - name: "test/py sandbox_spl" env: - TEST_PY_BD="sandbox_spl" TEST_PY_TEST_SPEC="test_ofplatdata" - BUILDMAN="^sandbox$" + BUILDMAN="sandbox" TOOLCHAIN="i386" TEST_PY_TOOLS="yes" - name: "test/py sandbox_flattree" env: - TEST_PY_BD="sandbox_flattree" - BUILDMAN="^sandbox_flattree$" + BUILDMAN="sandbox_flattree" TOOLCHAIN="i386" - name: "test/py evb-ast2500" env: - TEST_PY_BD="evb-ast2500" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="^evb-ast2500$" + BUILDMAN="evb-ast2500" - name: "test/py vexpress_ca15_tc2" env: - TEST_PY_BD="vexpress_ca15_tc2" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="^vexpress_ca15_tc2$" + BUILDMAN="vexpress_ca15_tc2" - name: "test/py vexpress_ca9x4" env: - TEST_PY_BD="vexpress_ca9x4" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="^vexpress_ca9x4$" + BUILDMAN="vexpress_ca9x4" - name: "test/py integratorcp_cm926ejs" env: - TEST_PY_BD="integratorcp_cm926ejs" TEST_PY_TEST_SPEC="not sleep" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="^integratorcp_cm926ejs$" + BUILDMAN="integratorcp_cm926ejs" - name: "test/py qemu_arm" env: - TEST_PY_BD="qemu_arm" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="arm-softmmu" - BUILDMAN="^qemu_arm$" + BUILDMAN="qemu_arm" - name: "test/py qemu_arm64" env: - TEST_PY_BD="qemu_arm64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="aarch64-softmmu" - BUILDMAN="^qemu_arm64$" + BUILDMAN="qemu_arm64" - name: "test/py qemu_mips" env: - TEST_PY_BD="qemu_mips" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips-softmmu" - BUILDMAN="^qemu_mips$" + BUILDMAN="qemu_mips" TOOLCHAIN="mips" - name: "test/py qemu_mipsel" env: - TEST_PY_BD="qemu_mipsel" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mipsel-softmmu" - BUILDMAN="^qemu_mipsel$" + BUILDMAN="qemu_mipsel" TOOLCHAIN="mips" - name: "test/py qemu_mips64" env: - TEST_PY_BD="qemu_mips64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips64-softmmu" - BUILDMAN="^qemu_mips64$" + BUILDMAN="qemu_mips64" TOOLCHAIN="mips" - name: "test/py qemu_mips64el" env: - TEST_PY_BD="qemu_mips64el" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips64el-softmmu" - BUILDMAN="^qemu_mips64el$" + BUILDMAN="qemu_mips64el" TOOLCHAIN="mips" - name: "test/py qemu-ppce500" env: - TEST_PY_BD="qemu-ppce500" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="ppc-softmmu" - BUILDMAN="^qemu-ppce500$" + BUILDMAN="qemu-ppce500" TOOLCHAIN="powerpc" - name: "test/py qemu-riscv64" env: - TEST_PY_BD="qemu-riscv64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="riscv64-softmmu" - BUILDMAN="^qemu-riscv64$" + BUILDMAN="qemu-riscv64" TOOLCHAIN="riscv" - name: "test/py qemu-x86" env: - TEST_PY_BD="qemu-x86" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="i386-softmmu" - BUILDMAN="^qemu-x86$" + BUILDMAN="qemu-x86" TOOLCHAIN="i386" BUILD_ROM="yes" - name: "test/py qemu-x86_64" @@ -510,7 +511,7 @@ matrix: - TEST_PY_BD="qemu-x86_64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="x86_64-softmmu" - BUILDMAN="^qemu-x86_64$" + BUILDMAN="qemu-x86_64" TOOLCHAIN="i386" BUILD_ROM="yes" - name: "test/py zynq_zc702" @@ -519,21 +520,21 @@ matrix: TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="arm-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="^zynq_zc702$" + BUILDMAN="zynq_zc702" - name: "test/py xilinx_versal_virt" env: - TEST_PY_BD="xilinx_versal_virt" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="aarch64-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="^xilinx_versal_virt$" + BUILDMAN="xilinx_versal_virt" - name: "test/py xtfpga" env: - TEST_PY_BD="xtfpga" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="xtensa-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="^xtfpga$" + BUILDMAN="xtfpga" TOOLCHAIN="xtensa-dc233c-elf" # TODO make it perfect ;-r From patchwork Sun Mar 15 23:42:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243684 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:54 -0600 Subject: [PATCH v2 14/23] travis/gitlab/azure: Drop BUILDMAN variable with test.py In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-11-sjg@chromium.org> This is not needed in the test.py part of the config, now since we use the same name as the pytests. Drop BUILDMAN, retaining it only for the 'build' parts of the config, i.e. where we build multiple boards and don't run any tests. Signed-off-by: Simon Glass --- Changes in v2: - Update travis, azure also .azure-pipelines.yml | 28 +++------------------------- .gitlab-ci.yml | 27 +++------------------------ .travis.yml | 27 +++------------------------ 3 files changed, 9 insertions(+), 73 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 8092545642..3d5b12ba3e 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -158,90 +158,69 @@ jobs: matrix: sandbox: TEST_PY_BD: "sandbox" - BUILDMAN: "sandbox" sandbox_clang: TEST_PY_BD: "sandbox" - BUILDMAN: "sandbox" OVERRIDE: "-O clang-7" sandbox_spl: TEST_PY_BD: "sandbox_spl" TEST_PY_TEST_SPEC: "test_ofplatdata" - BUILDMAN: "sandbox_spl" sandbox_flattree: TEST_PY_BD: "sandbox_flattree" - BUILDMAN: "sandbox_flattree" evb_ast2500: TEST_PY_BD: "evb-ast2500" TEST_PY_ID: "--id qemu" - BUILDMAN: "evb-ast2500" vexpress_ca15_tc2: TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_ID: "--id qemu" - BUILDMAN: "vexpress_ca15_tc2" vexpress_ca9x4: TEST_PY_BD: "vexpress_ca9x4" TEST_PY_ID: "--id qemu" - BUILDMAN: "vexpress_ca9x4" integratorcp_cm926ejs: TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "integratorcp_cm926ejs" qemu_arm: TEST_PY_BD: "qemu_arm" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_arm" qemu_arm64: TEST_PY_BD: "qemu_arm64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_arm64" qemu_mips: TEST_PY_BD: "qemu_mips" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips" qemu_mipsel: TEST_PY_BD: "qemu_mipsel" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mipsel" qemu_mips64: TEST_PY_BD: "qemu_mips64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips64" qemu_mips64el: TEST_PY_BD: "qemu_mips64el" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips64el" qemu_ppce500: TEST_PY_BD: "qemu-ppce500" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-ppce500" qemu_riscv64: TEST_PY_BD: "qemu-riscv64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-riscv64" qemu_x86: TEST_PY_BD: "qemu-x86" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-x86" qemu_x86_64: TEST_PY_BD: "qemu-x86_64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-x86_64" zynq_zc702: TEST_PY_BD: "zynq_zc702" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "zynq_zc702" xilinx_versal_virt: TEST_PY_BD: "xilinx_versal_virt" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "xilinx_versal_virt" xtfpga: TEST_PY_BD: "xtfpga" TEST_PY_ID: "--id qemu" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "xtfpga" steps: - script: | cat << EOF > test.sh @@ -251,7 +230,6 @@ jobs: export TEST_PY_BD="${TEST_PY_BD}" export TEST_PY_ID="${TEST_PY_ID}" export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}" - export BUILDMAN="${BUILDMAN}" export OVERRIDE="${OVERRIDE}" EOF cat << "EOF" >> test.sh @@ -267,11 +245,11 @@ jobs: cp /opt/grub/grubarm.efi ~/grub_arm.efi # the below corresponds to .gitlab-ci.yml "script" cd ${WORK_DIR} - if [[ "${BUILDMAN}" != "" ]]; then + if [[ "${TEST_PY_BD}" != "" ]]; then ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${BUILDMAN} ${OVERRIDE} || ret=$?; + tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP --board ${BUILDMAN}; + tools/buildman/buildman -o /tmp -sdeP --board ${TEST_PY_BD}; exit $ret; fi; fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3f48cad752..2cd6209222 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,12 +29,12 @@ stages: script: # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. - - if [[ "${BUILDMAN}" != "" ]]; then + - if [[ "${TEST_PY_BD}" != "" ]]; then ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${BUILDMAN} ${OVERRIDE} + tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP --board ${BUILDMAN}; + tools/buildman/buildman -o /tmp -sdeP --board ${TEST_PY_BD}; exit $ret; fi; fi @@ -182,14 +182,12 @@ sandbox test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox" - BUILDMAN: "sandbox" <<: *buildman_and_testpy_dfn sandbox with clang test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox" - BUILDMAN: "sandbox" OVERRIDE: "-O clang-7" <<: *buildman_and_testpy_dfn @@ -197,7 +195,6 @@ sandbox_spl test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_spl" - BUILDMAN: "sandbox_spl" TEST_PY_TEST_SPEC: "test_ofplatdata" <<: *buildman_and_testpy_dfn @@ -206,14 +203,12 @@ evb-ast2500 test.py: variables: TEST_PY_BD: "evb-ast2500" TEST_PY_ID: "--id qemu" - BUILDMAN: "evb-ast2500" <<: *buildman_and_testpy_dfn sandbox_flattree test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_flattree" - BUILDMAN: "sandbox_flattree" <<: *buildman_and_testpy_dfn vexpress_ca15_tc2 test.py: @@ -221,7 +216,6 @@ vexpress_ca15_tc2 test.py: variables: TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_ID: "--id qemu" - BUILDMAN: "vexpress_ca15_tc2" <<: *buildman_and_testpy_dfn vexpress_ca9x4 test.py: @@ -229,7 +223,6 @@ vexpress_ca9x4 test.py: variables: TEST_PY_BD: "vexpress_ca9x4" TEST_PY_ID: "--id qemu" - BUILDMAN: "vexpress_ca9x4" <<: *buildman_and_testpy_dfn integratorcp_cm926ejs test.py: @@ -238,7 +231,6 @@ integratorcp_cm926ejs test.py: TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "integratorcp_cm926ejs" <<: *buildman_and_testpy_dfn qemu_arm test.py: @@ -246,7 +238,6 @@ qemu_arm test.py: variables: TEST_PY_BD: "qemu_arm" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_arm" <<: *buildman_and_testpy_dfn qemu_arm64 test.py: @@ -254,7 +245,6 @@ qemu_arm64 test.py: variables: TEST_PY_BD: "qemu_arm64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_arm64" <<: *buildman_and_testpy_dfn qemu_mips test.py: @@ -262,7 +252,6 @@ qemu_mips test.py: variables: TEST_PY_BD: "qemu_mips" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips" <<: *buildman_and_testpy_dfn qemu_mipsel test.py: @@ -270,7 +259,6 @@ qemu_mipsel test.py: variables: TEST_PY_BD: "qemu_mipsel" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mipsel" <<: *buildman_and_testpy_dfn qemu_mips64 test.py: @@ -278,7 +266,6 @@ qemu_mips64 test.py: variables: TEST_PY_BD: "qemu_mips64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips64" <<: *buildman_and_testpy_dfn qemu_mips64el test.py: @@ -286,7 +273,6 @@ qemu_mips64el test.py: variables: TEST_PY_BD: "qemu_mips64el" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu_mips64el" <<: *buildman_and_testpy_dfn qemu-ppce500 test.py: @@ -294,7 +280,6 @@ qemu-ppce500 test.py: variables: TEST_PY_BD: "qemu-ppce500" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-ppce500" <<: *buildman_and_testpy_dfn qemu-riscv64 test.py: @@ -302,7 +287,6 @@ qemu-riscv64 test.py: variables: TEST_PY_BD: "qemu-riscv64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-riscv64" <<: *buildman_and_testpy_dfn qemu-x86 test.py: @@ -310,7 +294,6 @@ qemu-x86 test.py: variables: TEST_PY_BD: "qemu-x86" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-x86" <<: *buildman_and_testpy_dfn qemu-x86_64 test.py: @@ -318,7 +301,6 @@ qemu-x86_64 test.py: variables: TEST_PY_BD: "qemu-x86_64" TEST_PY_TEST_SPEC: "not sleep" - BUILDMAN: "qemu-x86_64" <<: *buildman_and_testpy_dfn zynq_zc702 test.py: @@ -327,7 +309,6 @@ zynq_zc702 test.py: TEST_PY_BD: "zynq_zc702" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "zynq_zc702" <<: *buildman_and_testpy_dfn xilinx_versal_virt test.py: @@ -336,7 +317,6 @@ xilinx_versal_virt test.py: TEST_PY_BD: "xilinx_versal_virt" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "xilinx_versal_virt" <<: *buildman_and_testpy_dfn xtfpga test.py: @@ -345,5 +325,4 @@ xtfpga test.py: TEST_PY_BD: "xtfpga" TEST_PY_TEST_SPEC: "not sleep" TEST_PY_ID: "--id qemu" - BUILDMAN: "xtfpga" <<: *buildman_and_testpy_dfn diff --git a/.travis.yml b/.travis.yml index 3149ed6a15..42a3923565 100644 --- a/.travis.yml +++ b/.travis.yml @@ -119,7 +119,7 @@ script: # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. # Build a selection of boards if TEST_PY_BD is empty - - if [[ "${BUILDMAN}" != "" ]] && [[ "${TEST_PY_BD}" == "" ]]; then + - if [[ "${BUILDMAN}" != "" ]]; then ret=0; tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then @@ -140,10 +140,10 @@ script: cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; ret=0; tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E - --board ${BUILDMAN} ${OVERRIDE}|| ret=$?; + --board ${TEST_PY_BD} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then tools/buildman/buildman -sde -o ${UBOOT_TRAVIS_BUILD_DIR} -w - --board ${BUILDMAN}; + --board ${TEST_PY_BD}; exit $ret; fi; virtualenv -p /usr/bin/python3 /tmp/venv; @@ -400,110 +400,93 @@ matrix: - name: "test/py sandbox" env: - TEST_PY_BD="sandbox" - BUILDMAN="sandbox" TOOLCHAIN="i386" - name: "test/py sandbox with clang" env: - TEST_PY_BD="sandbox" - BUILDMAN="sandbox" OVERRIDE="-O clang-7" - name: "test/py sandbox_spl" env: - TEST_PY_BD="sandbox_spl" TEST_PY_TEST_SPEC="test_ofplatdata" - BUILDMAN="sandbox" TOOLCHAIN="i386" TEST_PY_TOOLS="yes" - name: "test/py sandbox_flattree" env: - TEST_PY_BD="sandbox_flattree" - BUILDMAN="sandbox_flattree" TOOLCHAIN="i386" - name: "test/py evb-ast2500" env: - TEST_PY_BD="evb-ast2500" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="evb-ast2500" - name: "test/py vexpress_ca15_tc2" env: - TEST_PY_BD="vexpress_ca15_tc2" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="vexpress_ca15_tc2" - name: "test/py vexpress_ca9x4" env: - TEST_PY_BD="vexpress_ca9x4" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="vexpress_ca9x4" - name: "test/py integratorcp_cm926ejs" env: - TEST_PY_BD="integratorcp_cm926ejs" TEST_PY_TEST_SPEC="not sleep" TEST_PY_ID="--id qemu" QEMU_TARGET="arm-softmmu" - BUILDMAN="integratorcp_cm926ejs" - name: "test/py qemu_arm" env: - TEST_PY_BD="qemu_arm" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="arm-softmmu" - BUILDMAN="qemu_arm" - name: "test/py qemu_arm64" env: - TEST_PY_BD="qemu_arm64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="aarch64-softmmu" - BUILDMAN="qemu_arm64" - name: "test/py qemu_mips" env: - TEST_PY_BD="qemu_mips" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips-softmmu" - BUILDMAN="qemu_mips" TOOLCHAIN="mips" - name: "test/py qemu_mipsel" env: - TEST_PY_BD="qemu_mipsel" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mipsel-softmmu" - BUILDMAN="qemu_mipsel" TOOLCHAIN="mips" - name: "test/py qemu_mips64" env: - TEST_PY_BD="qemu_mips64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips64-softmmu" - BUILDMAN="qemu_mips64" TOOLCHAIN="mips" - name: "test/py qemu_mips64el" env: - TEST_PY_BD="qemu_mips64el" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="mips64el-softmmu" - BUILDMAN="qemu_mips64el" TOOLCHAIN="mips" - name: "test/py qemu-ppce500" env: - TEST_PY_BD="qemu-ppce500" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="ppc-softmmu" - BUILDMAN="qemu-ppce500" TOOLCHAIN="powerpc" - name: "test/py qemu-riscv64" env: - TEST_PY_BD="qemu-riscv64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="riscv64-softmmu" - BUILDMAN="qemu-riscv64" TOOLCHAIN="riscv" - name: "test/py qemu-x86" env: - TEST_PY_BD="qemu-x86" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="i386-softmmu" - BUILDMAN="qemu-x86" TOOLCHAIN="i386" BUILD_ROM="yes" - name: "test/py qemu-x86_64" @@ -511,7 +494,6 @@ matrix: - TEST_PY_BD="qemu-x86_64" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="x86_64-softmmu" - BUILDMAN="qemu-x86_64" TOOLCHAIN="i386" BUILD_ROM="yes" - name: "test/py zynq_zc702" @@ -520,21 +502,18 @@ matrix: TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="arm-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="zynq_zc702" - name: "test/py xilinx_versal_virt" env: - TEST_PY_BD="xilinx_versal_virt" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="aarch64-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="xilinx_versal_virt" - name: "test/py xtfpga" env: - TEST_PY_BD="xtfpga" TEST_PY_TEST_SPEC="not sleep" QEMU_TARGET="xtensa-softmmu" TEST_PY_ID="--id qemu" - BUILDMAN="xtfpga" TOOLCHAIN="xtensa-dc233c-elf" # TODO make it perfect ;-r From patchwork Sun Mar 15 23:42:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243677 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:55 -0600 Subject: [PATCH v2 15/23] travis/gitlab/azure: Drop the buildman -d flag In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-12-sjg@chromium.org> This has no effect since -S is not given also. Drop it. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Update travis, azure also .azure-pipelines.yml | 4 ++-- .gitlab-ci.yml | 10 +++++----- .travis.yml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 3d5b12ba3e..684359b88b 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -249,7 +249,7 @@ jobs: ret=0; tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP --board ${TEST_PY_BD}; + tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; exit $ret; fi; fi @@ -401,7 +401,7 @@ jobs: ret=0; tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN}; + tools/buildman/buildman -o /tmp -seP ${BUILDMAN}; exit $ret; fi; fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2cd6209222..36c2ecfa43 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,7 +34,7 @@ stages: tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -sdeP --board ${TEST_PY_BD}; + tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; exit $ret; fi; fi @@ -65,7 +65,7 @@ build all 32bit ARM platforms: - ret=0; ./tools/buildman/buildman -o /tmp -P -E arm -x aarch64 || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - ./tools/buildman/buildman -o /tmp -sdeP; + ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -79,7 +79,7 @@ build all 64bit ARM platforms: - ret=0; ./tools/buildman/buildman -o /tmp -P -E aarch64 || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - ./tools/buildman/buildman -o /tmp -sdeP; + ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -90,7 +90,7 @@ build all PowerPC platforms: - ret=0; ./tools/buildman/buildman -o /tmp -P -E powerpc || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - ./tools/buildman/buildman -o /tmp -sdeP; + ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -101,7 +101,7 @@ build all other platforms: - ret=0; ./tools/buildman/buildman -o /tmp -P -E -x arm,powerpc || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - ./tools/buildman/buildman -o /tmp -sdeP; + ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; diff --git a/.travis.yml b/.travis.yml index 42a3923565..d7c16326ff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -123,7 +123,7 @@ script: ret=0; tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -sdeP ${BUILDMAN}; + tools/buildman/buildman -seP ${BUILDMAN}; exit $ret; fi; fi @@ -142,7 +142,7 @@ script: tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E --board ${TEST_PY_BD} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -sde -o ${UBOOT_TRAVIS_BUILD_DIR} -w + tools/buildman/buildman -se -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board ${TEST_PY_BD}; exit $ret; fi; From patchwork Sun Mar 15 23:42:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243679 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:56 -0600 Subject: [PATCH v2 16/23] gitlab/azure: Drop unnecessary if..fi when using test.py In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-13-sjg@chromium.org> Since TEST_PY_BD is always defined we can drop this check. This does not affect travis since it has a single, unified script. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Update azure also .azure-pipelines.yml | 22 +++++++++------------- .gitlab-ci.yml | 30 +++++++++++++----------------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 684359b88b..96f279853e 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -245,13 +245,11 @@ jobs: cp /opt/grub/grubarm.efi ~/grub_arm.efi # the below corresponds to .gitlab-ci.yml "script" cd ${WORK_DIR} - if [[ "${TEST_PY_BD}" != "" ]]; then - ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; - exit $ret; - fi; + ret=0; + tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; + if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; + exit $ret; fi virtualenv -p /usr/bin/python3 /tmp/venv . /tmp/venv/bin/activate @@ -259,12 +257,10 @@ jobs: export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD}; export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; - if [[ "${TEST_PY_BD}" != "" ]]; then - ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; - ret=$?; - if [[ $ret -ne 0 ]]; then - exit $ret; - fi; + ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; + ret=$?; + if [[ $ret -ne 0 ]]; then + exit $ret; fi # the below corresponds to .gitlab-ci.yml "after_script" rm -rf /tmp/uboot-test-hooks /tmp/venv diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36c2ecfa43..b29d59d942 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,14 +29,12 @@ stages: script: # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. - - if [[ "${TEST_PY_BD}" != "" ]]; then - ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} - || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; - exit $ret; - fi; + - ret=0; + tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} + || ret=$?; + if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; + exit $ret; fi # "not a_test_which_does_not_exist" is a dummy -k parameter which will # never prevent any test from running. That way, we can always pass @@ -48,15 +46,13 @@ stages: - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD}; export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; - if [[ "${TEST_PY_BD}" != "" ]]; then - ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} - -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" - --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; - ret=$?; - if [[ $ret -ne 0 ]]; then - exit $ret; - fi; - fi; + ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} + -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" + --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; + ret=$?; + if [[ $ret -ne 0 ]]; then + exit $ret; + fi build all 32bit ARM platforms: tags: [ 'all' ] From patchwork Sun Mar 15 23:42:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243682 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:57 -0600 Subject: [PATCH v2 17/23] gitlab/azure: Use -w flag for all test.py builds In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-14-sjg@chromium.org> Avoid needing to know about the internal .bm-work directory, by passing the -w flag to buildman. This is not needed on travis since the -w flag is already used (from a previous patch). Drop the -P flag since this has no effect if -w is used. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Leave in the repeated call to buildman - Update azure also .azure-pipelines.yml | 6 +++--- .gitlab-ci.yml | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 96f279853e..b7222db97f 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -245,16 +245,16 @@ jobs: cp /opt/grub/grubarm.efi ~/grub_arm.efi # the below corresponds to .gitlab-ci.yml "script" cd ${WORK_DIR} + export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}; ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se --board ${TEST_PY_BD}; exit $ret; fi virtualenv -p /usr/bin/python3 /tmp/venv . /tmp/venv/bin/activate pip install -r test/py/requirements.txt - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD}; export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b29d59d942..38f2cba69f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,11 +29,13 @@ stages: script: # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. + - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD} - ret=0; - tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE} - || ret=$?; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E + --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; if [[ $ret -ne 0 && $ret -ne 129 ]]; then - tools/buildman/buildman -o /tmp -seP --board ${TEST_PY_BD}; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se + --board ${TEST_PY_BD}; exit $ret; fi # "not a_test_which_does_not_exist" is a dummy -k parameter which will @@ -43,8 +45,7 @@ stages: - virtualenv -p /usr/bin/python3 /tmp/venv - . /tmp/venv/bin/activate - pip install -r test/py/requirements.txt - - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD}; - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; + - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" From patchwork Sun Mar 15 23:42:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243678 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:58 -0600 Subject: [PATCH v2 18/23] travis/gitlab/azure: Use bash to avoid a_test_which_does_not_exist In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-15-sjg@chromium.org> Bash allows for variables to expand only if non-empty: $ var=test $ echo ${var:+"$var"} test $ echo ${var:+"-k $var"} -k test $ var= $ echo ${var:+"-k $var"} Use this feature to avoid the workaround. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Add a comment about the obscure bash feature - Update travis, azure also .azure-pipelines.yml | 3 ++- .gitlab-ci.yml | 7 ++----- .travis.yml | 7 ++----- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index b7222db97f..50d00fa899 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -257,7 +257,8 @@ jobs: pip install -r test/py/requirements.txt export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; - ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; + # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not + ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 38f2cba69f..48b90b2ba3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,17 +38,14 @@ stages: --board ${TEST_PY_BD}; exit $ret; fi - # "not a_test_which_does_not_exist" is a dummy -k parameter which will - # never prevent any test from running. That way, we can always pass - # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom - # value. - virtualenv -p /usr/bin/python3 /tmp/venv - . /tmp/venv/bin/activate - pip install -r test/py/requirements.txt + # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} - -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" + ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; ret=$?; if [[ $ret -ne 0 ]]; then diff --git a/.travis.yml b/.travis.yml index d7c16326ff..887654ca96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -127,11 +127,8 @@ script: exit $ret; fi; fi - # "not a_test_which_does_not_exist" is a dummy -k parameter which will - # never prevent any test from running. That way, we can always pass - # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom - # value. # Build just the one board needed for testing, if TEST_PY_BD is non-empty + # Note: "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not - if [[ "${TEST_PY_BD}" != "" ]]; then export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/${TEST_PY_BD}; cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/; @@ -150,7 +147,7 @@ script: . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} - -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" + ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; ret=$?; if [[ $ret -ne 0 ]]; then From patchwork Sun Mar 15 23:42:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243680 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:42:59 -0600 Subject: [PATCH v2 19/23] travis/gitlab/azure: Drop the -E flag In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-16-sjg@chromium.org> It doesn't seem to make sense to tell buildman to report warning as errors (thus ensuring there are no warnings) and then ignore the warnings. The simplist thing is to just drop the -E flag. This allows us to drop the check for exit code 129. Dropping -E is not enough to cover all warnings though. For example this warning: ===================== WARNING ====================== This board does not use CONFIG_DM. CONFIG_DM will be compulsory starting with the v2020.01 release. Failure to update may result in board removal. See doc/driver-model/migration.rst for more info. also causes buildman to return an exit code of 129. So use -W to suppress that, since otherwise the build will fail. Signed-off-by: Simon Glass Fixes: 329f5ef51d2 (travis.yml: run buildman with option -E) --- Changes in v2: - Add Fixes tag - Just drop the -E flag - Update travis, azure also .azure-pipelines.yml | 8 ++++---- .gitlab-ci.yml | 23 +++++++++++------------ .travis.yml | 13 ++++++------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 50d00fa899..35c1c8e0d4 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -247,8 +247,8 @@ jobs: cd ${WORK_DIR} export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}; ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; + if [[ $ret -ne 0 ]]; then tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se --board ${TEST_PY_BD}; exit $ret; fi @@ -396,8 +396,8 @@ jobs: cat << "EOF" >> build.sh if [[ "${BUILDMAN}" != "" ]]; then ret=0; - tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -o /tmp -P -W ${BUILDMAN} ${OVERRIDE} || ret=$?; + if [[ $ret -ne 0 ]]; then tools/buildman/buildman -o /tmp -seP ${BUILDMAN}; exit $ret; fi; diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 48b90b2ba3..db68a5e7a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,13 +27,12 @@ stages: after_script: - rm -rf /tmp/uboot-test-hooks /tmp/venv script: - # From buildman, exit code 129 means warnings only. If we've been asked to - # use clang only do one configuration. + # If we've been asked to use clang only do one configuration. - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD} - ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + if [[ $ret -ne 0 ]]; then tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se --board ${TEST_PY_BD}; exit $ret; @@ -57,8 +56,8 @@ build all 32bit ARM platforms: stage: world build script: - ret=0; - ./tools/buildman/buildman -o /tmp -P -E arm -x aarch64 || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + ./tools/buildman/buildman -o /tmp -P -W arm -x aarch64 || ret=$?; + if [[ $ret -ne 0 ]]; then ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -71,8 +70,8 @@ build all 64bit ARM platforms: - . /tmp/venv/bin/activate - pip install pyelftools - ret=0; - ./tools/buildman/buildman -o /tmp -P -E aarch64 || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + ./tools/buildman/buildman -o /tmp -P -W aarch64 || ret=$?; + if [[ $ret -ne 0 ]]; then ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -82,8 +81,8 @@ build all PowerPC platforms: stage: world build script: - ret=0; - ./tools/buildman/buildman -o /tmp -P -E powerpc || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + ./tools/buildman/buildman -o /tmp -P -W powerpc || ret=$?; + if [[ $ret -ne 0 ]]; then ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; @@ -93,8 +92,8 @@ build all other platforms: stage: world build script: - ret=0; - ./tools/buildman/buildman -o /tmp -P -E -x arm,powerpc || ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + ./tools/buildman/buildman -o /tmp -P -W -x arm,powerpc || ret=$?; + if [[ $ret -ne 0 ]]; then ./tools/buildman/buildman -o /tmp -seP; exit $ret; fi; diff --git a/.travis.yml b/.travis.yml index 887654ca96..d5582802a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -116,13 +116,12 @@ script: # Comments must be outside the command strings below, or the Travis parser # will get confused. # - # From buildman, exit code 129 means warnings only. If we've been asked to - # use clang only do one configuration. + # If we've been asked to use clang only do one configuration. + # # Build a selection of boards if TEST_PY_BD is empty - if [[ "${BUILDMAN}" != "" ]]; then - ret=0; - tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + tools/buildman/buildman -P -W ${BUILDMAN} ${OVERRIDE}; + if [[ $ret -ne 0 ]]; then tools/buildman/buildman -seP ${BUILDMAN}; exit $ret; fi; @@ -136,9 +135,9 @@ script: cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W --board ${TEST_PY_BD} ${OVERRIDE}|| ret=$?; - if [[ $ret -ne 0 && $ret -ne 129 ]]; then + if [[ $ret -ne 0 ]]; then tools/buildman/buildman -se -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board ${TEST_PY_BD}; exit $ret; From patchwork Sun Mar 15 23:43:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243681 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:43:00 -0600 Subject: [PATCH v2 20/23] travis/gitlab/azure: Enable test_handoff In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-17-sjg@chromium.org> Ensure that this SPL test runs on gitlab. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Update travis, azure also .azure-pipelines.yml | 2 +- .gitlab-ci.yml | 2 +- .travis.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 35c1c8e0d4..cba24e97f7 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -163,7 +163,7 @@ jobs: OVERRIDE: "-O clang-7" sandbox_spl: TEST_PY_BD: "sandbox_spl" - TEST_PY_TEST_SPEC: "test_ofplatdata" + TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff" sandbox_flattree: TEST_PY_BD: "sandbox_flattree" evb_ast2500: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db68a5e7a8..831d9ed587 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -188,7 +188,7 @@ sandbox_spl test.py: tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_spl" - TEST_PY_TEST_SPEC: "test_ofplatdata" + TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff" <<: *buildman_and_testpy_dfn evb-ast2500 test.py: diff --git a/.travis.yml b/.travis.yml index d5582802a6..d15247f00d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -404,7 +404,7 @@ matrix: - name: "test/py sandbox_spl" env: - TEST_PY_BD="sandbox_spl" - TEST_PY_TEST_SPEC="test_ofplatdata" + TEST_PY_TEST_SPEC="test_ofplatdata or test_handoff" TOOLCHAIN="i386" TEST_PY_TOOLS="yes" - name: "test/py sandbox_flattree" From patchwork Sun Mar 15 23:43:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243685 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:43:01 -0600 Subject: [PATCH v2 21/23] travis/gitlab/azure: Simplify the exit code for test.py In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-18-sjg@chromium.org> It seems unnecessary to read the exit code and then check it again. Drop this and just let the test.py provide the exit code directly. Signed-off-by: Simon Glass --- Changes in v2: - Update travis, azure also .azure-pipelines.yml | 4 ---- .gitlab-ci.yml | 6 +----- .travis.yml | 6 +----- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index cba24e97f7..cb446ff3da 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -259,10 +259,6 @@ jobs: export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; - ret=$?; - if [[ $ret -ne 0 ]]; then - exit $ret; - fi # the below corresponds to .gitlab-ci.yml "after_script" rm -rf /tmp/uboot-test-hooks /tmp/venv EOF diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 831d9ed587..1ba281e3e4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -45,11 +45,7 @@ stages: export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} - --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; - ret=$?; - if [[ $ret -ne 0 ]]; then - exit $ret; - fi + --build-dir "$UBOOT_TRAVIS_BUILD_DIR" build all 32bit ARM platforms: tags: [ 'all' ] diff --git a/.travis.yml b/.travis.yml index d15247f00d..ecfbc6c625 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,11 +147,7 @@ script: pip install -r test/py/requirements.txt; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} - --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; - ret=$?; - if [[ $ret -ne 0 ]]; then - exit $ret; - fi; + --build-dir "$UBOOT_TRAVIS_BUILD_DIR" || exit; if [[ -n "${TEST_PY_TOOLS}" ]]; then export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"; export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"; From patchwork Sun Mar 15 23:43:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243686 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:43:02 -0600 Subject: [PATCH v2 22/23] travis/gitlab/azure: Drop repeated buildman call with test.py In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-19-sjg@chromium.org> It does not seem to be necessary to run buildman again to show errors, since any errors can be shown by the first invocation and there is only a single board being built. Update this to simplify the code, using the -e flag to make sure errors are shown. Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- Changes in v2: - Add new patch to drop the repeated buildman call .azure-pipelines.yml | 7 +------ .gitlab-ci.yml | 10 ++-------- .travis.yml | 10 ++-------- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index cb446ff3da..cd3920dfff 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -246,12 +246,7 @@ jobs: # the below corresponds to .gitlab-ci.yml "script" cd ${WORK_DIR} export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}; - ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 ]]; then - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se --board ${TEST_PY_BD}; - exit $ret; - fi + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W -e --board ${TEST_PY_BD} ${OVERRIDE} virtualenv -p /usr/bin/python3 /tmp/venv . /tmp/venv/bin/activate pip install -r test/py/requirements.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1ba281e3e4..1606baf343 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,14 +29,8 @@ stages: script: # If we've been asked to use clang only do one configuration. - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD} - - ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W - --board ${TEST_PY_BD} ${OVERRIDE} || ret=$?; - if [[ $ret -ne 0 ]]; then - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -se - --board ${TEST_PY_BD}; - exit $ret; - fi + - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W -e + --board ${TEST_PY_BD} ${OVERRIDE} - virtualenv -p /usr/bin/python3 /tmp/venv - . /tmp/venv/bin/activate - pip install -r test/py/requirements.txt diff --git a/.travis.yml b/.travis.yml index ecfbc6c625..35fac88fef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -134,14 +134,8 @@ script: cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/; cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; - ret=0; - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W - --board ${TEST_PY_BD} ${OVERRIDE}|| ret=$?; - if [[ $ret -ne 0 ]]; then - tools/buildman/buildman -se -o ${UBOOT_TRAVIS_BUILD_DIR} -w - --board ${TEST_PY_BD}; - exit $ret; - fi; + tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -W -e + --board ${TEST_PY_BD} ${OVERRIDE} || exit; virtualenv -p /usr/bin/python3 /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt; From patchwork Sun Mar 15 23:43:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243687 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 15 Mar 2020 17:43:03 -0600 Subject: [PATCH v2 23/23] test/py: Allow using buildman to build U-Boot In-Reply-To: <20200315234303.18598-1-sjg@chromium.org> References: <20200315234303.18598-1-sjg@chromium.org> Message-ID: <20200315234303.18598-20-sjg@chromium.org> It is a pain to have to set the CROSS_COMPILE environment variable when using test.py's --build option. It is possible to get this using the -A option from buildman. But it seems better to just use buildman to do the build when it is available. However using buildman adds a new dependency to the test system which we want to avoid. So leave the default as is and add a flag to make it use buildman. Note that most of these changes relate to test.py and the parts of the travis/gitlab/azure scripts which relate to running test and building a suitable U-Boot to run the tests on. Signed-off-by: Simon Glass Reviewed-by: Tom Rini Reviewed-by: Stephen Warren --- Changes in v2: - Convert this into an option, leaving the default as is test/py/README.md | 13 ++++++++++++- test/py/conftest.py | 30 +++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/test/py/README.md b/test/py/README.md index 3cbe01b73e..2e5025258d 100644 --- a/test/py/README.md +++ b/test/py/README.md @@ -138,6 +138,9 @@ command-line option; see the next section. before running the tests. If using this option, make sure that any environment variables required by the build process are already set, such as `$CROSS_COMPILE`. +- `--buildman` indicates that `--build` should use buildman to build U-Boot. + There is no need to set $CROSS_COMPILE` in this case since buildman handles + it. - `--build-dir` sets the directory containing the compiled U-Boot binaries. If omitted, this is `${source_dir}/build-${board_type}`. - `--result-dir` sets the directory to write results, such as log files, @@ -333,7 +336,7 @@ PATH=$HOME/ubtest/bin:$PATH \ If you want the test script to compile U-Boot for you too, then you likely need to set `$CROSS_COMPILE` to allow this, and invoke the test script as -follow: +follows: ```bash CROSS_COMPILE=arm-none-eabi- \ @@ -342,6 +345,14 @@ CROSS_COMPILE=arm-none-eabi- \ ./test/py/test.py --bd seaboard --build ``` +or, using buildman to handle it: + +```bash + PATH=$HOME/ubtest/bin:$PATH \ + PYTHONPATH=${HOME}/ubtest/py/${HOSTNAME}:${PYTHONPATH} \ + ./test/py/test.py --bd seaboard --build --buildman +``` + ## Writing tests Please refer to the pytest documentation for details of writing pytest tests. diff --git a/test/py/conftest.py b/test/py/conftest.py index 34ac4fb062..e3392ff6bc 100644 --- a/test/py/conftest.py +++ b/test/py/conftest.py @@ -70,6 +70,8 @@ def pytest_addoption(parser): help='U-Boot board identity/instance') parser.addoption('--build', default=False, action='store_true', help='Compile U-Boot before running tests') + parser.addoption('--buildman', default=False, action='store_true', + help='Use buildman to build U-Boot (assuming --build is given)') parser.addoption('--gdbserver', default=None, help='Run sandbox under gdbserver. The argument is the channel '+ 'over which gdbserver should communicate, e.g. localhost:1234') @@ -140,16 +142,26 @@ def pytest_configure(config): log = multiplexed_log.Logfile(result_dir + '/test-log.html') if config.getoption('build'): - if build_dir != source_dir: - o_opt = 'O=%s' % build_dir + if config.getoption('buildman'): + if build_dir != source_dir: + dest_args = ['-o', build_dir, '-w'] + else: + dest_args = ['-i'] + cmds = (['buildman', '--board', board_type] + dest_args,) + name = 'buildman' else: - o_opt = '' - cmds = ( - ['make', o_opt, '-s', board_type + '_defconfig'], - ['make', o_opt, '-s', '-j8'], - ) - with log.section('make'): - runner = log.get_runner('make', sys.stdout) + if build_dir != source_dir: + o_opt = 'O=%s' % build_dir + else: + o_opt = '' + cmds = ( + ['make', o_opt, '-s', board_type + '_defconfig'], + ['make', o_opt, '-s', '-j8'], + ) + name = 'make' + + with log.section(name): + runner = log.get_runner(name, sys.stdout) for cmd in cmds: runner.run(cmd, cwd=source_dir) runner.close()