add-streamer
Use this skill when you need to add a new streamer backend and wire it cleanly into Thingino's Buildroot selection flow.
When to use
- You are introducing a new streamer package (for example,
valisa). - You need the backend to appear as a selectable streamer option.
- You need defaults and exported
STREAMERvalue to stay consistent across SoC families.
Required plumbing checklist
- Add a choice symbol in
package/thingino-streamer/Config.in:config BR2_PACKAGE_THINGINO_STREAMER_<NAME>select BR2_PACKAGE_<PKG>- Gate with
depends on !BR2_SOC_FAMILY = "a1"ifa1must not run a streamer.
- Ensure the package
Config.inis tied to the choice symbol:depends on BR2_PACKAGE_THINGINO_STREAMER_<NAME>
- Source the package
Config.infrom the streamer block:if BR2_PACKAGE_THINGINO_STREAMERsource "$BR2_EXTERNAL_THINGINO_PATH/package/<pkg>/Config.in"
- Avoid exposing streamer packages outside the streamer selection flow.
- Update
thingino.mkSTREAMERmapping:- map package enablement to a stable runtime name (for example,
STREAMER := valisa)
- map package enablement to a stable runtime name (for example,
- Keep streamer defaults explicit in
package/thingino-streamer/Config.in:noneforBR2_THINGINO_TOOLCHAINnoneforBR2_SOC_FAMILY = "a1"(ifa1has no streamer)- desired default streamer for remaining targets
Workflow
- Edit
package/thingino-streamer/Config.infirst:- add option symbol, help text, dependencies, and default rules.
- Edit
package/<pkg>/Config.in:- add dependency on
BR2_PACKAGE_THINGINO_STREAMER_<NAME>.
- add dependency on
- Ensure
source .../package/<pkg>/Config.inlives under the streamer block inpackage/thingino-streamer/Config.in. - Remove duplicate top-level sourcing from root
Config.inif present. - Edit
thingino.mk:- add explicit
ifeqbranch mapping package symbol toSTREAMERvalue. - keep fallback deterministic (
noneif no streamer selected).
- add explicit
Validation
- Non-
a1profile:CAMERA=<non_a1_camera> make defconfig- verify
.configstreamer symbols match expected default.
a1profile:CAMERA=<a1_camera> make defconfig- verify
BR2_PACKAGE_THINGINO_STREAMER_NONE=y.
- Confirm no unintended symbol exposure:
- streamer package symbol should follow the streamer choice logic.
Common pitfalls
- Package
Config.insourced at top level, bypassing streamer choice. - Missing
depends on !BR2_SOC_FAMILY = "a1"on streamer options that should excludea1. - Default still pointing to an old backend after introducing a new one.
thingino.mkmissing a branch for the new package, causing wrong exportedSTREAMER.