[roll] Roll fuchsia [component_manager] More extensible framework for builtin components

component_manager has a builtin runner which is used for running
"builtin components", i.e. components whose source code lives in
component manager itself. elf_runner is one (and the only) builtin
component today.

For microfuchsia, we would like to run shutdown-shim and devfs in
component manager as builtin components as well. It turns out though
that the current implementation of builtin runner is a bit inflexible
for expanding to more components.

To this end, this change is a refactor which does the following:

- Introduces a [BuiltinProgram] type that represents the state of a builtin
  program. As one of its arguments, [BuiltinProgram] contains a
  [BuiltinProgramFn], which is a callback that runs the builtin
  component's code.
- Make the ABI for builtin components more similar to non-builtins.
  Builtin components accept a subset of procargs, including namespace,
  out dir, lifecycle channel, etc. This will facilitate porting
  non-builtin components to builtins.
- [BuiltinProgram] has a universal [Controller] implementation which
  integrates with the Lifecycle control channel.
- Refactor elf_runner to use [BuiltinProgram]. elf_runner now uses the
  Lifecycle control channel instead of its own Controller implementation.
- builtin_runner now supports dependency injection for tests. Unit tests can
  bring along their own builtin components.

Original-Fixed: 372527480
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1134697
Original-Revision: c75fe7d73b0629e985c171c64d14da21933af73c
GitOrigin-RevId: 98280ddbe41c3323c270b6e40628c312136fb8a4
Change-Id: Ib2caa66cab24493d43f16f52c3d2f1fb823704a5
1 file changed
tree: 537ad328761a71236d1225dfe6b40b6846237cc0
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.