Buildroot télécharge les sources officielles des logiciels pour ensuite les modifier avec des patches inclus dans le paquet.
Si on prend l’exemple du paquet uboot. Pour le compiler on fait simplement un :
$ make uboot
À la racine de buildroot.
Cette règle générale cache en fait tout un tas d’étapes de constructions visibles par les timbres (.stamp) dans le répertoire build :
$ cd output/build/uboot-VERSION/
$ ls -l
.stamp_downloaded
.stamp_extracted
.stamp_patched
.stamp_dotconfig
.stamp_kconfig_fixup_done
.stamp_configured
.stamp_built
.stamp_target_installed
.stamp_images_installed
.stamp_installed
Les fichiers .stamp ont été ici mis dans l’ordre d’exécution.
Extraction du paquet
L’étape qui nous intéresse présentement est .stamp_patched.
Pour pouvoir éditer les patches à la main il va nous falloir faire cette étape à la main.
Tout d’abord on télécharge et extrait le paquet avec buildroot :
make uboot-extract
Notez que si votre paquet est déjà compilé il faudra faire table rase avec un :
make uboot-dirclean
Ce qui aura pour effet de supprimer le répertoire output/build/uboot-VERSION
Buildroot va passer toute les étapes précédentes (téléchargement, décompression) et s’arrêter juste avant les patches.
Patchons avec quilt
Pour patcher à la main il faut d’abord se rendre dans le répertoire de build du paquet fraichement créé puis importer les patch avec quilt.
$ quilt import ../../../../br-external-oposa5e-sp/boot/uboot/patches/*.patchLangage du code : JavaScript (javascript)
Ici les patches proviennent d’un br-external, mais c’est une autre histoire.
La commande import a pour effet de copier les patches dans un répertoire patches/ et ajoute un fichier texte nommé series qui les liste.
À cette étape, les patches ne sont pas encore appliqués. Il faut pour cela les pousser avec la commande quilt push.
Si l’on souhaite appliquer d’un coup tous les patches de la série on utilisera l’option -a:
$ quilt push -a
Applying patch patches/0001-oposa5esp-065b-devicetree.patch
patching file arch/arm/dts/oposa5e_sp_065b.dts
patching file configs/oposa5e_sp_065b_defconfig
patching file arch/arm/dts/oposa5e_sp_065b-u-boot.dtsi
Now at patch patches/0001-oposa5esp-065b-devicetree.patch
Pour le coup ici il n’y a qu’un patch.
Si vous souhaitez ajouter des patches utilisez new et pour ajouter des fichiers à modifier utiliser add avant de modifier le fichier. Tout ceci est très bien expliqué dans la page man et n’est pas le sujet de ce billet.
Continuer le build du paquet
Maintenant que nous avons patché à la main il faut le dire à buildroot en ajoutant le timbre :
$ touch .stamp_patched
Puis on retourne dans le répertoire principal de buildroot pour finir la construction du paquet.
$ cd ../../../
$ make uboot
Modification d’un patch une fois le paquet construit
Pour revenir à l’étape de modification des patches on supprime tous les timbres correspondant aux étapes d’après .stamp_patched .
$ rm .stamp_*
$ touch .stamp_downloaded .stamp_extracted .stamp_patched
Puis on remet son quilt pour tripoter les patches.
Ressources
- Les sources de quilt.
- Ruzito a créé un pense bête pour les commandes quilt sur github.
- À peu près le même article mais en anglais.
- Page officielle de buildroot
- oposa5e_sp le SoM qui m’a permis de faire ce tuto.
