To enable nitrogen board in LAVA for testing Oniro zephyr builds, we need to use latest version pyocd installed via pip3 to flash and reset the board. However, the tool is not included in
lavasoftware/lava-dispatcher docker image that used by LAVA docker worker. Keep adding test device related dependencies to the image doesn’t sound like a good idea either.
We decided to patch LAVA docker worker to allow users to have a custom Dockerfile so they can provide the container additional packages that they may require. The feature has been released in LAVA release
2021.09 and newer versions.
LAVA docker docker will build and use customized image if custom
/etc/lava-dispatcher-host/build/Dockerfile exists. A new
Dockerfile.lava will be generated under the same directory with the base image that matches your LAVA server version for building the customized image. All the
FROM commands defined in your
Dockerfile will be ignored.
To customized the above directory, first edit
/etc/lava-dispatcher-host/lava-docker-worker and set the BUILD_DIR parameter to a directory with a
# Docker build directory # Should be set to a directory with a Dockerfile inside. BUILD_DIR="/path/with/Dockerfile"
Then restart the
sudo systemctl restart lava-docker-worker.service
Custom Dockerfile example we use on remote LAVA docker worker running on Raspberry pi4.
FROM lavasoftware/lava-dispatcher # Copy power control scripts COPY power-control/ /root/power-control/ # Install required packages for pyocd installation via pip. RUN apt-get update && \ apt-get install -y python3 python3-pip python3-testresources libusb-dev libffi-dev expect # install latest rust for building capstone and cmsis-pack-manager RUN curl https://sh.rustup.rs -sSf | sh -s -- -y RUN . ~/.cargo/env RUN pip3 install pyocd==0.31