Own BSP: ERROR: Nothing PROVIDES 'balena-image'. Close matches: balena-native

Hi!

I’m trying to port balena to a custom BSP for Asus Tinkerboard S. I know, that there is already an official balena image and project. This is for learning purposes how to adapt on another BSP.

I followed the instructions in https://www.balena.io/os/docs/custom-build/ and created the files accordingly. This shows the tree of meta-balena-rockchip:

├── conf
│   ├── layer.conf
│   ├── machine
│   │   └── tinkerboard.conf
│   └── samples
│       ├── bblayers.conf.sample
│       └── local.conf.sample
├── recipes-bsp
│   └── bootfiles
├── recipes-containers
│   └── docker-disk
│       └── resin-supervisor.bbappend
├── recipes-core
│   └── images
│       └── resin-image.bbappend
├── recipes-kernel
│   └── linux
│       ├── linux-rockchip
│       └── linux-rockchip_4.4.bbappend
└── recipes-support
    └── balena-init
        ├── files
        └── resin-init-board.bbappend

This is the BSP i use for tinkerboard S: https://github.com/JeffyCN/meta-rockchip

This is my conf/machine/tinkerboard.conf

#@TYPE: Machine
##@NAME: tinkerboard
##@DESCRIPTION: Machine configuration for the Asus Tinkerboard S

MACHINEOVERRIDES = "rockchip-rk3288-evb:${MACHINE}"
include conf/machine/rockchip-rk3288-evb.conf

This is my conf/layer.conf

BBPATH .= ":${LAYERDIR}"

BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "balena-rockchip"
BBFILE_PATTERN_balena-rockchip := "^${LAYERDIR}/"
BBFILE_PRIORITY_balena-rockchip = "1337"

But i get the following errors:

./barys
Building JSON manifest...
npm WARN deprecated coffee-script@1.10.0: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
added 3 packages from 4 contributors and audited 3 packages in 2.14s
found 0 vulnerabilities

...Done
You had no conf/local.conf file. This configuration file has therefore been
created for you with some default values. You may wish to edit it to, for
example, select a different MACHINE (target hardware). See conf/local.conf
for more information as common configuration options are commented.

You had no conf/bblayers.conf file. This configuration file has therefore been
created for you with some default values. To add additional metadata layers
into your configuration please add entries to conf/bblayers.conf.

The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
    http://yoctoproject.org/documentation

For more information about OpenEmbedded see their website:
    http://www.openembedded.org/


  _____           _        _____   ____  
 |  __ \         (_)      /  _  \ / ___| 
 | |__) |___  ___ _ _ __  | | | || (___  
 |  _  // _ \/ __| | '_ \ | | | | \___ \ 
 | | \ \  __/\__ \ | | | || |_| |  ___) |
 |_|  \_\___||___/_|_| |_|\_____/ |____/ 
                                         
 ---------------------------------------- 

Resin specific images available:
	balena-image

Asus Tinkerboard S                       : $ MACHINE=tinkerboard bitbake balena-image

[000000003][LOG]BalenaOS build initialized in directory: build.
[000000003][LOG]Run build for tinkerboard: MACHINE=tinkerboard bitbake balena-image 
[000000003][LOG]This might take a while ...
WARNING: Layer balena-rockchip should set LAYERSERIES_COMPAT_balena-rockchip in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer balena-rockchip should set LAYERSERIES_COMPAT_balena-rockchip in its conf/layer.conf file to list the core layer names it is compatible with.
Parsing recipes: 100% |########################################################################################################################| Time: 0:00:49
Parsing of 2178 .bb files complete (0 cached, 2178 parsed). 3155 targets, 313 skipped, 0 masked, 0 errors.
ERROR: Nothing PROVIDES 'balena-image'. Close matches:
  balena-native

Summary: There were 2 WARNING messages shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
[000000054][LOG]Build for tinkerboard failed. Check failed log in build/tmp/log/cooker/tinkerboard .
[000000054][LOG]If build for tinkerboard succeeded, final image should have been generated here:
[000000054][LOG]   build/tmp/deploy/images/tinkerboard/balena-image-tinkerboard.balena-img
[000000054][LOG]Done.

Can anyone support me on this?
Thanks!

Edit: Never mind, i found it out. The bitbake target in the coffee file should be named resin-image instead of balena-image and resinos-img instead of balenaos-img.
There are some real naming issues here between resin and balena :confused:

Hi. There is no target called balena-image. You probably want to build resin-image or resin-image-flasher

And barys will actually compile the image found in the .coffee file. See for example https://github.com/balena-os/balena-asus-tinker-board/blob/master/asus-tinker-board-s.coffee#L42
This example builds a flasher image (basically an installer) which will provision (install balenaOS) onto the internal eMMC when you boot an SD card with this flasher image written onto it.

There is also a contributing guide which will guide you through most of the steps (it may need updating though as meta-balena changes pretty frequently): https://github.com/balena-os/meta-balena/blob/master/contributing-device-support.md
We’d love your feedback in a form of a PR in the above guide if you find it needs changing

Edit: I just read your edit :slight_smile:
So these naming issues are because the company underwent a rename from resin to balena and not all pieces have been renamed yet

And not sure if you are aware, we recently merged support in our staging environment for NanoPC-T4. It will make it pretty soon into production. https://github.com/balena-os/balena-nanopc-t4
If time allows we may contribute the BSP changes for this machine in the github meta-rockchip layer