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 ## Quick Start with kas
1. Install kas build tool from PyPi (sudo pip3 install kas) 1. Install the kas build tool from PyPI:
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
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: local_conf_header:
@@ -92,10 +109,16 @@ local_conf_header:
RPI_EXTRA_CONFIG = "dtoverlay=disable-bt" RPI_EXTRA_CONFIG = "dtoverlay=disable-bt"
``` ```
To configure the machine, you have to update the `machine` variable. Additional configurations can be layered by including extra kas files. For example,
And the same for the `distro`. 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 ## 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: header:
version: 8 version: 14
machine: raspberrypi4 machine: unset
distro: poky distro: poky
target: target:
- core-image-base - core-image-base
defaults:
repos:
branch: master
repos: repos:
meta-raspberry: meta-raspberry:
bitbake: bitbake:
url: https://git.openembedded.org/bitbake url: https://git.openembedded.org/bitbake
path: layers/bitbake path: layers/bitbake
branch: master
layers: layers:
bitbake: disabled bitbake: disabled
openembedded-core: openembedded-core:
url: https://git.openembedded.org/openembedded-core url: https://git.openembedded.org/openembedded-core
path: layers/openembedded-core path: layers/openembedded-core
branch: master
layers: layers:
meta: meta:
meta-yocto: meta-yocto:
url: https://git.yoctoproject.org/meta-yocto url: https://git.yoctoproject.org/meta-yocto
path: layers/meta-yocto path: layers/meta-yocto
branch: master
layers: layers:
meta-poky: meta-poky:
meta-yocto-bsp:
meta-openembedded: meta-openembedded:
url: http://git.openembedded.org/meta-openembedded url: http://git.openembedded.org/meta-openembedded
path: layers/meta-openembedded path: layers/meta-openembedded
branch: master
layers: layers:
meta-oe: meta-oe:
meta-python: meta-python:
@@ -44,16 +45,20 @@ repos:
meta-qt5: meta-qt5:
url: https://github.com/meta-qt5/meta-qt5/ url: https://github.com/meta-qt5/meta-qt5/
path: layers/meta-qt5 path: layers/meta-qt5
branch: master
env:
BB_LOGCONFIG: ""
BB_HASHSERVE: "auto"
bblayers_conf_header: bblayers_conf_header:
standard: | standard: |
POKY_BBLAYERS_CONF_VERSION = "2" POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}" BBPATH = "${TOPDIR}"
BBFILES ?= "" BBFILES ?= ""
local_conf_header: local_conf_header:
reduce_diskspace: | reduce_diskspace: |
INHERIT += "rm_work_and_downloads" INHERIT += "rm_work"
standard: | standard: |
CONF_VERSION = "2" CONF_VERSION = "2"
PACKAGE_CLASSES = "package_rpm" PACKAGE_CLASSES = "package_rpm"
@@ -72,7 +77,3 @@ local_conf_header:
HALT,${DL_DIR},100M,1K \ HALT,${DL_DIR},100M,1K \
HALT,${SSTATE_DIR},100M,1K \ HALT,${SSTATE_DIR},100M,1K \
HALT,/tmp,10M,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"