mbox series

[v3,0/9] Add barebox bootloader support (and testing)

Message ID 20230425184720.456896-1-ejo@pengutronix.de
Headers show
Series Add barebox bootloader support (and testing) | expand

Message

Enrico Jörns April 25, 2023, 6:47 p.m. UTC
This adds support for the barebox bootloader (and tools) to oe-core.

In order to have proper testing, this extends oe-selftest to allow
basic testing of bootloaders. While at it, cover both barebox and u-boot.

v3:

* bump to barebox 2023.04.0
* add anonymous python to not act as provider when no config is set
* reasoning for default BAREBOX_CONFIGs in patch description
  and set PREFERRED_PROVIDER_virtual/bootloader to u-boot to avoid
  conflicts
* extend patch description and add comment for vt100 regex
* set CC=${CC} and LD=${LD} in barebox-tools to fix musl builds

Enrico Jorns (7):
  barebox: set default BAREBOX_CONFIG for qemu machines
  oeqa/utils/qemurunner: support ignoring vt100 escape sequences
  oeqa/utils/qemurunner: simplify output parsing and make crlf-compatible
  oeqa/utils/commands: document runqemu context manager
  oeqa: support passing custom boot patterns to runqemu
  oeqa/selftest/cases: add barebox tests
  oeqa/selftest/cases: add basic u-boot test

Marco Felsch (2):
  barebox: add initial support
  barebox-tools: add initial barebox tools support

 meta/conf/distro/include/maintainers.inc      |   2 +
 meta/conf/machine/qemuarm.conf                |   1 +
 meta/conf/machine/qemuarm64.conf              |   1 +
 meta/conf/machine/qemux86-64.conf             |   1 +
 meta/lib/oeqa/selftest/cases/barebox.py       |  72 +++++++++
 meta/lib/oeqa/selftest/cases/uboot.py         |  40 +++++
 meta/lib/oeqa/targetcontrol.py                |   5 +-
 meta/lib/oeqa/utils/commands.py               |  22 ++-
 meta/lib/oeqa/utils/qemurunner.py             |  38 ++---
 .../barebox/barebox-tools_2023.04.0.bb        |  58 +++++++
 meta/recipes-bsp/barebox/barebox.inc          | 149 ++++++++++++++++++
 meta/recipes-bsp/barebox/barebox_2023.04.0.bb |   3 +
 12 files changed, 368 insertions(+), 24 deletions(-)
 create mode 100644 meta/lib/oeqa/selftest/cases/barebox.py
 create mode 100644 meta/lib/oeqa/selftest/cases/uboot.py
 create mode 100644 meta/recipes-bsp/barebox/barebox-tools_2023.04.0.bb
 create mode 100644 meta/recipes-bsp/barebox/barebox.inc
 create mode 100644 meta/recipes-bsp/barebox/barebox_2023.04.0.bb

Comments

Luca Ceresoli April 26, 2023, 12:12 p.m. UTC | #1
Hello Enrico,

On Tue, 25 Apr 2023 20:47:11 +0200
Enrico Jörns <ejo@pengutronix.de> wrote:

> This adds support for the barebox bootloader (and tools) to oe-core.
> 
> In order to have proper testing, this extends oe-selftest to allow
> basic testing of bootloaders. While at it, cover both barebox and u-boot.

Some tests are failing with this series applied. Logs looking like:

--------------------------------8<--------------------------------

2023-04-26 02:45:38,232 - oe-selftest - INFO - barebox.BareboxTest.test_boot_barebox (subunit.RemotedTestCase)
2023-04-26 02:45:38,232 - oe-selftest - INFO -  ... skipped 'Test skipped on x86_64\n'
2023-04-26 02:45:38,232 - oe-selftest - INFO - 1: 1/47 2/530 (0.00s) (0 failed) (barebox.BareboxTest.test_boot_barebox)
2023-04-26 02:45:38,232 - oe-selftest - INFO - Test skipped on x86_64
2023-04-26 02:46:47,829 - oe-selftest - INFO - fetch.Dependencies.test_dependencies (subunit.RemotedTestCase)
2023-04-26 02:46:47,829 - oe-selftest - INFO -  ... ok
2023-04-26 02:46:47,829 - oe-selftest - INFO - 12: 2/20 3/530 (70.93s) (0 failed) (fetch.Dependencies.test_dependencies)
2023-04-26 02:46:54,605 - oe-selftest - INFO - barebox.BareboxTest.test_boot_barebox_efi (subunit.RemotedTestCase)
2023-04-26 02:46:54,605 - oe-selftest - INFO -  ... FAIL
Stderr:
2023-04-26 02:45:38,230 - oe-selftest - INFO - Adding: "include selftest.inc" in /home/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-3126928/conf/local.conf
2023-04-26 02:45:38,231 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf
2023-04-26 02:46:54,606 - oe-selftest - INFO - 1: 2/47 4/530 (76.37s) (0 failed) (barebox.BareboxTest.test_boot_barebox_efi)
2023-04-26 02:46:54,606 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
    return func(*args, **kwargs)
  File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/selftest/cases/barebox.py", line 63, in test_boot_barebox_efi
    bitbake(image)
  File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py", line 234, in bitbake
    return runCmd(cmd, ignore_status, timeout, output_log=output_log, **options)
  File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py", line 212, in runCmd
    raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, exc_output))
AssertionError: Command 'bitbake  core-image-minimal' returned non-zero exit status 1:
Loading cache...done.
Loaded 0 entries from dependency cache.
Parsing recipes...done.
Parsing of 955 .bb files complete (0 cached, 955 parsed). 1872 targets, 55 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'barebox' (but /home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/recipes-core/images/core-image-minimal.bb, /home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/recipes-core/packagegroups/packagegroup-core-boot.bb RDEPENDS on or otherwise requires it)
barebox was skipped: PREFERRED_PROVIDER_virtual/bootloader set to u-boot, not barebox
NOTE: Runtime target 'barebox' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['barebox']
ERROR: Required build target 'core-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 'barebox']
Summary: There were 2 ERROR messages, returning a non-zero exit code.

--------------------------------8<--------------------------------

Some logs are here:

https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/5054/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/5096/steps/14/logs/stdio

FYI I had to manually solve a trivial conflict on patch 5 due to
another patch in my branch that is touching the same file:
https://lore.kernel.org/openembedded-core/20230411150503.2105880-2-lrannou@baylibre.com/

Best regards,
Luca
Enrico Jörns April 26, 2023, 1:55 p.m. UTC | #2
Hello Luca,

Am Mittwoch, dem 26.04.2023 um 14:12 +0200 schrieb Luca Ceresoli:
> Hello Enrico,
> 
> On Tue, 25 Apr 2023 20:47:11 +0200
> Enrico Jörns <ejo@pengutronix.de> wrote:
> 
> > This adds support for the barebox bootloader (and tools) to oe-core.
> > 
> > In order to have proper testing, this extends oe-selftest to allow
> > basic testing of bootloaders. While at it, cover both barebox and u-boot.
> 
> Some tests are failing with this series applied. Logs looking like:

thank you for the test results.

> --------------------------------8<--------------------------------
> 
> 2023-04-26 02:45:38,232 - oe-selftest - INFO - barebox.BareboxTest.test_boot_barebox
> (subunit.RemotedTestCase)
> 2023-04-26 02:45:38,232 - oe-selftest - INFO -  ... skipped 'Test skipped on x86_64\n'
> 2023-04-26 02:45:38,232 - oe-selftest - INFO - 1: 1/47 2/530 (0.00s) (0 failed)
> (barebox.BareboxTest.test_boot_barebox)
> 2023-04-26 02:45:38,232 - oe-selftest - INFO - Test skipped on x86_64
> 2023-04-26 02:46:47,829 - oe-selftest - INFO - fetch.Dependencies.test_dependencies
> (subunit.RemotedTestCase)
> 2023-04-26 02:46:47,829 - oe-selftest - INFO -  ... ok
> 2023-04-26 02:46:47,829 - oe-selftest - INFO - 12: 2/20 3/530 (70.93s) (0 failed)
> (fetch.Dependencies.test_dependencies)
> 2023-04-26 02:46:54,605 - oe-selftest - INFO - barebox.BareboxTest.test_boot_barebox_efi
> (subunit.RemotedTestCase)
> 2023-04-26 02:46:54,605 - oe-selftest - INFO -  ... FAIL
> Stderr:
> 2023-04-26 02:45:38,230 - oe-selftest - INFO - Adding: "include selftest.inc" in
> /home/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-3126928/conf/local.conf
> 2023-04-26 02:45:38,231 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf
> 2023-04-26 02:46:54,606 - oe-selftest - INFO - 1: 2/47 4/530 (76.37s) (0 failed)
> (barebox.BareboxTest.test_boot_barebox_efi)
> 2023-04-26 02:46:54,606 - oe-selftest - INFO - testtools.testresult.real._StringException:
> Traceback (most recent call last):
>   File "/home/pokybuild/yocto-worker/oe-selftest-
> debian/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
>     return func(*args, **kwargs)
>   File "/home/pokybuild/yocto-worker/oe-selftest-
> debian/build/meta/lib/oeqa/selftest/cases/barebox.py", line 63, in test_boot_barebox_efi
>     bitbake(image)
>   File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py",
> line 234, in bitbake
>     return runCmd(cmd, ignore_status, timeout, output_log=output_log, **options)
>   File "/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py",
> line 212, in runCmd
>     raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command,
> result.status, exc_output))
> AssertionError: Command 'bitbake  core-image-minimal' returned non-zero exit status 1:
> Loading cache...done.
> Loaded 0 entries from dependency cache.
> Parsing recipes...done.
> Parsing of 955 .bb files complete (0 cached, 955 parsed). 1872 targets, 55 skipped, 0 masked, 0
> errors.
> NOTE: Resolving any missing task queue dependencies
> ERROR: Nothing RPROVIDES 'barebox' (but /home/pokybuild/yocto-worker/oe-selftest-
> debian/build/meta/recipes-core/images/core-image-minimal.bb, /home/pokybuild/yocto-worker/oe-
> selftest-debian/build/meta/recipes-core/packagegroups/packagegroup-core-boot.bb RDEPENDS on or
> otherwise requires it)
> barebox was skipped: PREFERRED_PROVIDER_virtual/bootloader set to u-boot, not barebox
> NOTE: Runtime target 'barebox' is unbuildable, removing...
> Missing or unbuildable dependency chain was: ['barebox']
> ERROR: Required build target 'core-image-minimal' has no buildable providers.
> Missing or unbuildable dependency chain was: ['core-image-minimal', 'barebox']
> Summary: There were 2 ERROR messages, returning a non-zero exit code.
> 
> --------------------------------8<--------------------------------

It seems as if I did not re-test the EFI test after having set PREFERRED_PROVIDER_virtual/bootloader
to "u-boot" in the machine conf. I will add a PREFERRED_PROVIDER_virtual/bootloader = "barebox" to
the test case.
> 
> Some logs are here:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/5054/steps/14/logs/stdio
> https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/5096/steps/14/logs/stdio

There are some wic failures where I am not sure yet if these are caused by my patchset or not.

> FYI I had to manually solve a trivial conflict on patch 5 due to
> another patch in my branch that is touching the same file:
> https://lore.kernel.org/openembedded-core/20230411150503.2105880-2-lrannou@baylibre.com/

I am not really unconvinced that this patch set should be applied as-is.
It copies most of the run_serial() method 'just' to change the return value.
It would also require to duplicate my adaptions.


Thanks and regards

Enrico

> Best regards,
> Luca
>