Aller au contenu

Tout ce que fait Yocman, de la tâche en échec à la carte flashée

36 commandes, une seule CLI. Chacune s'exécute localement sur votre dossier de build ou votre projet. La couche IA est facultative pour les analyses et ne modifie jamais vos fichiers sans votre confirmation.

Diagnostiquer et réparer

  • fix
  • explain
  • ask
  • context
  • login
  • --dry-run
  • --fresh

Quand bitbake échoue, yocman fix lit le log de la tâche, trouve la cause avec des outils en lecture seule et propose un diff unifié sur votre propre layer. Vous confirmez, il applique le correctif et relance la tâche. Chaque diagnostic est conservé dans votre historique privé : le même échec obtient sa réponse depuis cet historique la fois suivante, sans nouvel usage de l'IA.

  • explain donne le diagnostic sans rien modifier
  • Une modification trouvée par ask ou explain est gardée : yocman fix l'applique ensuite
  • Un échec déjà résolu pour vous obtient sa réponse immédiatement ; --fresh redemande à l'IA
  • Les correctifs vont dans vos propres layers, jamais dans poky ni les layers amont
  • --dry-run affiche les données masquées et n'envoie rien
yocman fix
$ yocman fix
… pre-analysis: missing_dependency in myapp:do_compile
… reading meta-custom/recipes-apps/myapp/myapp_1.0.bb
Diagnosis zlib headers are missing from the recipe sysroot
fatal error: zlib.h: No such file or directory
--- a/recipes-apps/myapp/myapp_1.0.bb
+++ b/recipes-apps/myapp/myapp_1.0.bb
@@ -10,6 +10,7 @@
inherit cmake systemd
+DEPENDS += "zlib"
Apply this patch? [y/N] y
✓ patch applied in meta-custom
✓ do_compile succeeded
Exemple de sortie sur le build de démonstration fourni

Commandes

fix
Réparer une tâche en échec : correctif pour votre layer, appliqué après confirmation, tâche relancée ; sans échec, appliquer la modification proposée par ask ou explain
explain
Expliquer le dernier échec de build sans rien modifier ; le correctif trouvé est gardé pour yocman fix
ask
Poser une question sur votre projet ; une modification trouvée dans une recette est gardée pour yocman fix
context
Afficher la release, la machine, la distro et les layers détectés, hors ligne
login
Enregistrer votre clé d'API et la vérifier auprès du service

Analyser le build

  • doctor
  • rules
  • conf
  • layers check
  • deps
  • why
  • provides
  • unused
  • orphans
  • duplicates
  • size
  • buildtime
  • sstate
  • boot
  • --no-ai

Des analyses déterministes de votre dossier de build, à partir des fichiers que bitbake écrit déjà : configuration et layers, chaînes de dépendances, contenu et taille de l'image, temps de build, réutilisation du sstate et temps de démarrage. Les faits viennent des fichiers ; une synthèse IA facultative les interprète.

  • why montre les chaînes qui amènent un paquet dans l'image
  • size diff compare deux builds ou deux révisions buildhistory paquet par paquet
  • sstate repère les recettes reconstruites à chaque build
  • doctor indique la source de données manquante et comment l'activer
yocman why busybox · yocman buildtime
$ yocman why busybox
core-image-minimal → packagegroup-core-boot (IMAGE_INSTALL) → busybox
$ yocman buildtime
Wall time 58m20s
Effective parallelism 1.0 (BB_NUMBER_THREADS 64)
linux-yocto do_compile 25m00s
linux-yocto do_fetch 15m00s
myapp do_compile 5m00s
Exemple de sortie sur le build de démonstration fourni

Commandes

doctor
Lister les sources de données du dossier de build et comment activer celles qui manquent
rules
Lister toutes les règles d'analyse avec leur identifiant, catégorie et sévérité
conf
Vérifier local.conf, bblayers.conf, auto.conf et site.conf
layers check
Vérifier les layers de bblayers.conf : absents, en double, incompatibles avec la release, .bbappend orphelins
deps
Arbre de dépendances d'un paquet, à l'exécution ou à la compilation, et qui en dépend
why
Pourquoi un paquet est dans l'image : les chaînes depuis IMAGE_INSTALL
provides
Quel paquet installe un fichier donné dans l'image
unused
Paquets candidats au retrait, à examiner
orphans
Recettes construites qui n'arrivent jamais dans l'image
duplicates
Fonctionnalités en double dans l'image, comme deux serveurs SSH
size
Taille de l'image par paquet, fichier et catégorie ; size diff compare deux builds
buildtime
Tâches et recettes les plus longues d'après buildstats, et le parallélisme effectif
sstate
Réutilisation du sstate, et les recettes reconstruites à chaque build
boot
Temps de démarrage de la cible d'après systemd-analyze blame et critical-chain

Sécurité et conformité

  • audit
  • cve
  • secrets
  • users
  • perms
  • services
  • kernel-audit
  • licenses
  • sbom
  • cra report

Auditez l'image réellement livrée : CVE non corrigées, secrets embarqués, comptes et permissions, services actifs, durcissement du noyau, licences et SBOM SPDX, avec un score par catégorie.

  • Les secrets sont signalés par emplacement et par type, jamais affichés
  • cve diff montre ce qu'une mise à jour a corrigé ou introduit
  • kernel-audit compare le .config du noyau à une liste de durcissement
  • Rapports Markdown et JSON pour les revues et les audits
yocman audit
$ yocman audit --fail-on high
Overall score 18/100 over 10 categories
conf 17 findings, worst high 0
secrets 7 findings, worst critical 0
licenses 4 findings, worst medium 76
sbom 3 findings, worst medium 86
critical CVE-001 CVE-2099-0101 (CVSS 9.8) in openssl 3.2.1
→ upgrade the recipe or backport the fix with 'CVE: <id>'
exit 1: findings at or above high
Exemple de sortie sur le build de démonstration fourni

Commandes

audit
Audit complet de sécurité et de conformité, avec un score par catégorie
cve
CVE non corrigées d'après le rapport cve-check, par CVSS ; cve diff compare deux builds
secrets
Clés, jetons et mots de passe embarqués dans le rootfs et les layers, jamais affichés
users
Comptes : mots de passe vides, UID 0 en trop, hachages faibles, shells de connexion
perms
Permissions : setuid, fichiers modifiables par tous, fichiers sensibles, propriétaires inconnus
services
Services actifs au démarrage, services réseau non sûrs, réglages SSH et de débogage
kernel-audit
Le .config du noyau comparé à une liste de durcissement
licenses
Licences GPLv3, propriétaires ou ambiguës, et obligations de fourniture des sources
sbom
Présence du SBOM SPDX et cohérence avec l'image
cra report
Préparation au Cyber Resilience Act : les preuves côté build issues de cve, secrets, sbom, licenses et kernel, mappées sur les domaines d'exigences du CRA

Démarrer un projet

  • init
  • add
  • remove
  • build
  • shell
  • env
  • flash
  • init --describe
  • init --board-search

Créez un projet kas pour l'une des 21 cartes vérifiées (Raspberry Pi, BeagleBone, Radxa, Orange Pi, i.MX 8M Plus EVK, QEMU…), ou décrivez-le avec vos mots et laissez l'IA préremplir les choix. Ajoutez des fonctionnalités comme SSH, le Wi-Fi, Qt 6 ou Docker, construisez sur l'hôte ou dans le conteneur kas avec une progression en direct, et flashez une carte SD avec une vérification du périphérique impossible à contourner.

  • Catalogue de cartes vérifié sur les vrais dépôts de layers
  • init --board-search cherche d'autres cartes dans l'index des layers OpenEmbedded
  • build affiche la phase, les tâches en cours et le temps restant
  • env bascule entre hôte et conteneur après avoir vérifié les prérequis
  • flash ne propose que les disques amovibles et demande de taper le nom du périphérique
yocman init
$ yocman init --release scarthgap --board rpi4-64 \
--feature ssh-openssh --feature wifi --env container
✓ Project generated in ~/yocto/rpi4-64-scarthgap
… kas checkout, kas lock (layers pinned)
$ yocman build
Compiling 2140/3412 tasks (62%) ~38 min left
linux-raspberrypi:do_compile qtbase:do_compile gcc:do_install
$ yocman flash --device /dev/sdb
sdb SanDisk Ultra 29.7 GiB usb removable
Type the device name (sdb) to confirm: sdb
Exemple de sortie sur le build de démonstration fourni

Commandes

init
Créer un projet kas pour une carte et une release vérifiées ; --describe laisse l'IA préremplir les choix
add
Ajouter une fonctionnalité (SSH, Wi-Fi, Qt 6, Docker…) avec un diff à confirmer et un commit
remove
Retirer une fonctionnalité, refusé tant qu'une autre en a besoin
build
Construire l'image avec une progression en direct : phase, tâches en cours, temps restant
shell
Ouvrir un shell avec l'environnement bitbake, sur l'hôte ou dans le conteneur
env
Vérifier et basculer l'environnement de build entre hôte et conteneur, mettre à jour l'image kas
flash
Écrire l'image sur une carte SD ou une clé USB, disques amovibles uniquement, avec confirmation tapée

Intégrations

  • --format json
  • --fail-on
  • --no-ai
  • VS Code(bientôt)

Yocman est une simple CLI : elle s'intègre à n'importe quel runner CI. Chaque analyse a une sortie lisible par une machine et des codes de retour pour conditionner un pipeline.

  • --fail-on high sort avec le code 1 dès qu'un constat atteint ce niveau
  • --no-ai garde un pipeline entièrement hors ligne
  • Une extension VS Code arrive bientôt
.gitlab-ci.yml
audit:
script:
- yocman audit --no-ai --format json -o audit.json --fail-on high
- yocman size diff previous/ build/ --format md -o size.md
artifacts:
paths: [audit.json, size.md]
Exemple de sortie sur le build de démonstration fourni

Le plan gratuit couvre les corrections, les explications et toutes les analyses locales.

Commencer gratuitement