One of the most important features of Yocto is its ability to handle sublayers. To understand the sublayers please Yocto Project Development Manual
Start creating meta-custom folder, then create the other folders. For example:
meta-daiane/
├── conf
│ └── layer.conf
├── README
├── recipes-core
│ └── helloworld
│ ├── helloworld
│ │ └── hello_world.c
│ └── helloworld_0.0.bb
└── recipes-daiane
└── images
└── dai-image-hello.bb
It´s possible to create recipes-kernel and place there your defconfig, or create a bbappend to apply your patches to kernel, or even create a recipes-multimedia and place there custom application for gstreamer, for example.
Here, the custom application example is a helloworld application.
One important tip:
Yocto see recipes name as PACKAGENAME_VERSION.bb, It means, yocto uses "_" (underline) to separate the package name from package version on a recipe file name. So, if you call your helloworld application as hello_world_1.0.bb Yocto will think your application is called "hello" and the version is something around "world_1.0"
Please, be careful.
LAYER.CONF
This is the file that gives new layer live. Find the content of mine layer.conf below:
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have a packages directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "daiane"
BBFILE_PATTERN_daiane := "^${LAYERDIR}/"
BBFILE_PRIORITY_daiane = "4"
As soon as the new custom layer is created, it MUST include it to conf/bblayers.conf file. Please see the example:
LCONF_VERSION = "6"
BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"
BBFILES ?= ""
BBLAYERS = " \
${BSPDIR}/sources/poky/meta \
${BSPDIR}/sources/poky/meta-yocto \
\
${BSPDIR}/sources/meta-openembedded/meta-oe \
\
${BSPDIR}/sources/meta-fsl-arm \
${BSPDIR}/sources/meta-fsl-arm-extra \
${BSPDIR}/sources/meta-fsl-demos \
\
${BSPDIR}/sources/meta-daiane \
"
Please, find the tarball with sample meta layer attached to this document.
It includes one image that will install the Hello World application:
$ bitbake dai-image-hello
When the content of image tar ball is extracted, hello_world was installed and it was for ARM:
$ find -name hello*
./usr/bin/hello_world
$ file ./usr/bin/hello_world
./usr/bin/hello_world: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped
Go to Yocto Training - HOME
Go to Task #9 - How to add bad/ugly
Original Attachment has been moved to: meta-daiane.tar.gz
Question: If I have create a recipe for an application A and this has a DEPENDS on B and C, then how do I install the application on my board such that A,B,C are all installed in one step instead of installing rpms for A,B,C separately in three different steps.