kas: split into unique files and add testimage

Refactor the existing kas configuration by splitting it into a shared
base.yml and a set of per-machine include files. This allows for easier
usage and potential CI use cases.

Also, change the readme to reflect the new changes.

Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Jon Mason authored and Khem Raj committed 2026-10-13 19:30:08 -07:00
1 parent e8e1692de4
commit dbb7f7e91e
11 files changed
+163 -23

No files matched your search

+33 -10
View File
@@ -76,14 +76,31 @@ This layer depends on:
## Quick Start with kas
1. Install kas build tool from PyPi (sudo pip3 install kas)
2. Set the `machine: ` in kas-poky-rpi.yml to one of the supported boards (see conf/machine/*.conf)
3. kas build meta-raspberrypi/kas-poky-rpi.yml
4. Use bmaptool to copy the generated .wic.bz2 file to the SD card
5. Boot your RPI
1. Install the kas build tool from PyPI:
To adjust the build configuration with specific options (I2C, SPI, ...), simply add
a section as follows:
```
pip3 install kas
```
2. Select the appropriate machine configuration file from `kas/`
(for example `raspberrypi4.yml`, `raspberrypi3-64.yml`, etc.)
3. Run the build:
```
kas build meta-raspberrypi/kas/<machine>.yml
```
4. Use `bmaptool` to copy the generated `.wic.bz2` image to the SD card
5. Boot your Raspberry Pi
The kas configuration is split into a shared `base.yml` and per-machine
configuration files. Machine selection is done by choosing the appropriate
kas file rather than editing a `machine` variable.
To adjust the build configuration with specific options (I2C, SPI, etc.),
extend the configuration by adding a `local_conf_header` section, for example:
```
local_conf_header:
@@ -92,10 +109,16 @@ local_conf_header:
RPI_EXTRA_CONFIG = "dtoverlay=disable-bt"
```
To configure the machine, you have to update the `machine` variable.
And the same for the `distro`.
Additional configurations can be layered by including extra kas files. For example,
to enable runtime testing with `testimage`:
```
kas build meta-raspberrypi/kas/raspberrypi4.yml:meta-raspberrypi/kas/testimage.yml
```
For further details, see the kas documentation:
https://kas.readthedocs.io/en/latest/index.html
For further information, you can read more at <https://kas.readthedocs.io/en/latest/index.html>
## Contributing
+14 -13
View File
@@ -1,40 +1,41 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
#
header:
version: 8
version: 14
machine: raspberrypi4
machine: unset
distro: poky
target:
- core-image-base
defaults:
repos:
branch: master
repos:
meta-raspberry:
bitbake:
url: https://git.openembedded.org/bitbake
path: layers/bitbake
branch: master
layers:
bitbake: disabled
openembedded-core:
url: https://git.openembedded.org/openembedded-core
path: layers/openembedded-core
branch: master
layers:
meta:
meta-yocto:
url: https://git.yoctoproject.org/meta-yocto
path: layers/meta-yocto
branch: master
layers:
meta-poky:
meta-yocto-bsp:
meta-openembedded:
url: http://git.openembedded.org/meta-openembedded
path: layers/meta-openembedded
branch: master
layers:
meta-oe:
meta-python:
@@ -44,16 +45,20 @@ repos:
meta-qt5:
url: https://github.com/meta-qt5/meta-qt5/
path: layers/meta-qt5
branch: master
env:
BB_LOGCONFIG: ""
BB_HASHSERVE: "auto"
bblayers_conf_header:
standard: |
POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
local_conf_header:
reduce_diskspace: |
INHERIT += "rm_work_and_downloads"
INHERIT += "rm_work"
standard: |
CONF_VERSION = "2"
PACKAGE_CLASSES = "package_rpm"
@@ -72,7 +77,3 @@ local_conf_header:
HALT,${DL_DIR},100M,1K \
HALT,${SSTATE_DIR},100M,1K \
HALT,/tmp,10M,1K"
license: |
# Uncomment next line to allow the license
# See: linux-firmware-rpidistro in docs/ipcompliance.md
#LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
+8
View File
@@ -0,0 +1,8 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
machine: raspberrypi
+8
View File
@@ -0,0 +1,8 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
machine: raspberrypi0
+8
View File
@@ -0,0 +1,8 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
machine: raspberrypi2-64
+8
View File
@@ -0,0 +1,8 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
machine: raspberrypi2
+14
View File
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
local_conf_header:
license: |
# Uncomment next line to allow the license
# See: linux-firmware-rpidistro in docs/ipcompliance.md
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
machine: raspberrypi3-64
+14
View File
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
local_conf_header:
license: |
# Uncomment next line to allow the license
# See: linux-firmware-rpidistro in docs/ipcompliance.md
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
machine: raspberrypi3
+14
View File
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
local_conf_header:
license: |
# Uncomment next line to allow the license
# See: linux-firmware-rpidistro in docs/ipcompliance.md
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
machine: raspberrypi4-64
+14
View File
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
includes:
- kas/base.yml
local_conf_header:
license: |
# Uncomment next line to allow the license
# See: linux-firmware-rpidistro in docs/ipcompliance.md
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
machine: raspberrypi4
+28
View File
@@ -0,0 +1,28 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
header:
version: 14
local_conf_header:
testimage: |
IMAGE_CLASSES += "testimage"
TESTIMAGE_AUTO = "1"
# Don't testimage initramfs
TESTIMAGE_AUTO:pn-core-image-initramfs-boot = "0"
kvm: |
QEMU_USE_KVM = ""
slirp: |
TEST_RUNQEMUPARAMS = "slirp"
sshd: |
IMAGE_FEATURES += "ssh-server-dropbear"
sshkeys: |
CORE_IMAGE_EXTRA_INSTALL += "ssh-pregen-hostkeys"
sshpregen: |
# Allow the use of the pregen keys as this is CI so safe
COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:raspberrypi = "raspberrypi"
COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:raspberrypi0 = "raspberrypi0"
COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:raspberrypi2 = "raspberrypi2"
COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:raspberrypi3-64 = "raspberrypi3-64"
COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:raspberrypi4-64 = "raspberrypi4-64"
failing_tests: |
TEST_SUITES:remove = "parselogs"