Thistle Yocto Build
We designed Thistle Yocto Build to make it easier to package custom Linux image for your embedded device with Yocto Linux.
It is a wrapper around the Yocto project, and all dependencies will be downloaded and managed at runtime. We also designed this tool to provide secure defaults, and simple build-hardened Linux images.
Basic features will be enabled to enhance quality of life while using Yocto, such as disk space monitoring, and usage of sccache to drastically decrease build time when doing rebuilds. Cache aware cleanup functions are also provided for ease of use.
Configuration File
header:
version: 11
target: base
machine: qemuarm64-thistle
distro: thistle-base
thistle-features:
meta-thistle: 5c06b3509d5df6144a87027286558968988418f7
curl:
bin: true
lib: true
tls: openssl
repos:
openembedded-core:
url: git://git.openembedded.org/openembedded-core
refspec: 54ee67b1a805a07288925d56e9956aabc23b6ab2
layers:
- meta
meta-openembedded:
url: git://git.openembedded.org/meta-openembedded
refspec: kirkstone
layers:
- meta-oe
- meta-python
- meta-networking
- meta-perl
local_conf_header:
standard: |
PACKAGE_CLASSES = "package_rpm"
CONF_VERSION = "2"
Fields
Name | Type | Necessity | Description |
---|---|---|---|
machine | string | required | Contains the value of the MACHINE variable that will be written into the local.conf |
target | string | required | Contains the target to be built by bitbake |
distro | string | required | Contains the value of the DISTRO variable that is written into the local.conf |
features | see below | optional | Thistle specific features to be integrated into the built image |
repos | see below | optional | List of all repositories needed by the project |
local_conf_header | see below | optional | List of additional sections to be added to the local.conf file |
bblayers_conf_header | see below | optional | List of additional sections to be added to the bblayers.conf file |
Features Dictionary
This section allows to quickly toggle features to be enabled on the end image. See the dedicated page for more information.
Repo Dictionary
This dictionary is used to set the repositories that will be used by the build. The repos can be local (only using the path
field), or remote (using the url
field). The key is the name of the repo (unique) and the value is a dictionary with the following fields:
Name | Type | Necessity | Description |
---|---|---|---|
url | string | optional | URL to use for this repo. If this is not set no git operations will be performed, and a path will be scanned |
path | string | optional | The absolute path where this repo is located, if no URL is set |
refspec | string | optional | The git refspec(commit/branch/tag) to be used for this repo. This field must be set if url is used |
layers | array | optional | Contains the layers from this repo to be used. If not included then the root repo will be used as the layer. If a repo contains a layer with the same name as the top layer then it can be used with ‘.’ specified as one of the layers |
Configuration Dictionary
This configuration dictionaries can be used to amend the configuration files generated. E.g. On the example config above, local.conf
will contain
# standard
PACKAGE_CLASSES = "package_rpm"