Pipeline Management#
Yanga’s build process is orchestrated through a configurable pipeline, a sequence of steps defined in your yanga.yaml file. This system allows you to automate everything from dependency installation to code generation and compilation.
Pipeline Configuration#
You define the pipeline as a list of stages (e.g., install, gen, build). Each stage contains one or more steps, which are Python classes that perform a specific task.
A typical pipeline configuration looks like this:
pipeline:
- install:
- step: WestInstall
module: yanga.steps.west_install
- gen:
- step: KConfigGen
module: yanga.steps.kconfig_gen
- build:
- step: GenerateBuildSystemFiles
module: yanga.steps.execute_build
- step: ExecuteBuild
module: yanga.steps.execute_build
Each step is defined by its step (the class name) and module (the Python module where the class is located).
Pipeline Execution#
You run the pipeline using the yanga run command. Yanga’s smart scheduler determines which steps need to be executed based on whether their inputs have changed or outputs are missing.
Run the full pipeline:
yanga runRun up to a specific step:
yanga run --step ExecuteBuildRun only a single step:
yanga run --step KConfigGen --singleForce re-execution of steps:
yanga run --force-run
Built-in Pipeline Steps#
Yanga includes several pre-built steps to handle common build tasks. Dependency installation and feature model steps (WestInstall, ScoopInstall, PoksInstall, KConfigGen) are provided by the yanga-core package — refer to the yanga-core documentation for details.
GenerateBuildSystemFiles#
Module: yanga.steps.execute_build
Purpose: Generates the project’s CMake files.
This crucial step translates your yanga.yaml configuration into a functional CMake build system. It runs the generators specified in the current platform’s configuration to create CMakeLists.txt and other necessary files.
Configuration: Add this step to your build stage, before ExecuteBuild. The behavior of this step is controlled by the CMake Generators defined in your platform configuration.
pipeline:
- build:
- step: GenerateBuildSystemFiles
module: yanga.steps.execute_build
ExecuteBuild#
Module: yanga.steps.execute_build
Purpose: Runs the CMake build process (configure and build).
After the build system files are generated, this step invokes CMake to configure the project and compile your code. It handles passing the correct toolchain file and build type. You can specify a particular build target via the yanga run --target <target_name> command.
Configuration: Add this step to your build stage after GenerateBuildSystemFiles.
pipeline:
- build:
- step: ExecuteBuild
module: yanga.steps.execute_build