diff options
author | Simon Glass | 2020-03-18 09:43:01 -0600 |
---|---|---|
committer | Tom Rini | 2020-04-10 21:36:36 -0400 |
commit | f5ec7eebf774456f0c24fc5eae6d0421e353bea6 (patch) | |
tree | 3d81420841fe8f863afdf46ce41363efba8ffd32 /test/py | |
parent | 7ec1255ceacea72e813d5ea9a6a8c940716b147b (diff) |
test/py: Allow using buildman to build U-Boot
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 <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'test/py')
-rw-r--r-- | test/py/README.md | 13 | ||||
-rw-r--r-- | 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 3cbe01b73e2..2e5025258d7 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 34ac4fb0624..e3392ff6bc4 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() |