Yocto Tricks

Ich arbeite gerade an eine Projekt, das viele verschiedene Hardwaren mit einem Yocto build bedienen will. Dabei habe ich ein paar Tricks gefunden, die ich hier gerne teilen möchte.

VSCode Settings automatisch erstellen

Mit dem kleine Script oe-setup-vscode könnt ihr VSCode zur Verwendung mit Yocto konfigurieren. Wenn ihr euere Yocto Umgebung ertellt habt, müsst ihr lediglich folgenden Befehl ausführen

build oe-setup-vscode <path to .vscode folder> <yocto build directory>
You had no /home/bastian/Projects/yocto/.vscode configuration.
These configuration files have therefore been created for you.

Damit wird die Extension yocto-bitbake vorgeschlagen, Python Vorschläge mit poky Code gefüttert, Dateiendungen .conf und .inc mit bitbake Syntax gehighlightet und VSCode so eingestellt mit den vielen Dateien eines Yocto Projekts klar zu kommen.

Überblick über die erzeugten Pakete

Mit dem Tool oe-pkgdata-browser könnt ihr sehen, welche Pakete von welchem Rezept gebaut wurden.

Auch die zu dem Paket gehörigen Dateien die im Image installiert werden sind aufgelistet

Warum wurde ein Paket installiert?

Wenn ihr für euer Image eine .dot Datei erstellt habt, könnt ihr mit oe-depends-dot herausfinden welches Paket dazu geführt hat ein anderes zu installieren.

oe-depends-dot -k busybox -w task-depends.dot
Because: core-image-minimal packagegroup-core-boot
core-image-minimal -> packagegroup-core-boot -> busybox

Testergebnisse des OEQA Tests aufbewahren und vergleichen

Nachdem ihr ein ptest Lauf ausgeführt habt, könnt ihr mit Hilfe von resulttool Die Testergebnisse direkt in ein git repository comitten. So fallen Änderungen im Testergebnis direkt auf.

resulttool store tmp/log/oeqa/testresults.json ../tests
INFO: Reading files from tmp/log/oeqa/testresults.json
INFO: Found 1 revisions to store
INFO: Storing test result into git repository ../test
INFO: Read local tags only, some remote tags may be missed
INFO: Committing data into to branch master
INFO: Updating /home/bastian/Projects/yocto/test HEAD to latest commit
INFO: Creating tag master/75102-g28fd497a26bdcc12d952f81436a6d873d81cd462/0

Um zu so einem Testergebnis zu kommen müsst ihr in eurer Konfiguration beispielsweise der local.conf diese Optionen hinzufügen

EXTRA_IMAGE_FEATURES ?= "debug-tweaks ptest-pkgs"
IMAGE_INSTALL += "ptest-runner"

Um den Test direkt im Anschluss eines Builds durchzuführen könnt ihr diese Optionen einschalten

IMAGE_CLASSES += "testimage testsdk"
TESTIMAGE_AUTO:qemuall = "1"

Anschließend wird nach einem bitbake-Lauf das erstelle Image in qemu gestartet und der Test durchgeführt. Das Testergebnis liegt dann in build/tmp/logoeqa/testresults.json.

Gibt es updates für meine Pakete?

Um herauszufinden ob es neuer Versionen der Softwarepakete gibt, kann das Werkzeug devtool eingesetzt werden. Entweder es wird ein spezielles Paket angegeben, oder es werden alle bekannten Pakete in allen Layern überprüft.

devtool check-upgrade-status

Das läuft für eine ganze Weile und gibt dann eine Liste der Pakete, die bereits eine neuere Version haben.