Link Search Menu Expand Document

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"