slitaz-doc-wiki-data annotate pages/fr/devnotes/new-tazwok-illustrated.txt @ rev 4

Add pages/fr folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:13:35 2011 +0000 (2011-02-26)
parents
children
rev   line source
slaxemulator@4 1 ====== Le nouveau tazwok illustré ! ======
slaxemulator@4 2
slaxemulator@4 3 Certains éléments présents dans les recettes ne sont plus nécessaires avec la nouvelle version de tazwok. Durant la migration, un certain nombre de problèmes apparaissent. Les informations concernant ces deux points sont disponibles ci-dessous, avec exemples.
slaxemulator@4 4
slaxemulator@4 5 En simplifiant l'écriture des recettes, nous simplifions le travail de contribution et cela profite à tous !
slaxemulator@4 6
slaxemulator@4 7 ==== DEPENDS/BUILD_DEPENDS : ====
slaxemulator@4 8 Tazwok utilise désormais la variable DEPENDS pour trouver les dépendances de compilation nécessaires. Voici comment cela fonctionne:
slaxemulator@4 9 * Tazwok liste l'arbre de toutes dépendances à partir de la variable DEPENDS
slaxemulator@4 10 * Pour chaque paquet, s'il existe un paquet -dev associé, il l'ajoute aux dépendances
slaxemulator@4 11 * Tazwok faite de même pour les BUILD_DEPENDS.
slaxemulator@4 12
slaxemulator@4 13 Jusqu'ici, lorsqu'un paquet était à la fois une dépendance et une dépendance de compilation, la recette ressemblait à ceci :
slaxemulator@4 14 <file>
slaxemulator@4 15 DEPENDS="pkgX"
slaxemulator@4 16 BUILD_DEPENDS="pkgX pkgX-dev"
slaxemulator@4 17 </file>
slaxemulator@4 18 Désormais, cela suffit :
slaxemulator@4 19 <file>
slaxemulator@4 20 DEPENDS="pkgX"
slaxemulator@4 21 </file>
slaxemulator@4 22 Lorsqu'il y avait des arbres de dépendances plus complexe, la recette ressemblait à ceci:
slaxemulator@4 23 <file>
slaxemulator@4 24 # pkgY depend de pkgX
slaxemulator@4 25 DEPENDS="pkgY"
slaxemulator@4 26 BUILD_DEPENDS="pkgY pkgY-dev pkgX pkgX-dev"
slaxemulator@4 27 </file>
slaxemulator@4 28 Désormais cela suffit:
slaxemulator@4 29 <file>
slaxemulator@4 30 DEPENDS="pkgY"
slaxemulator@4 31 </file>
slaxemulator@4 32
slaxemulator@4 33 Les recettes contiennent également de nombreuses redondances dans la définition des dépendances, par exemple :
slaxemulator@4 34 <file>
slaxemulator@4 35 # pkgY depend de pkgX
slaxemulator@4 36 DEPENDS="pkgY pkgX"
slaxemulator@4 37 </file>
slaxemulator@4 38 Ici, inutile de préciser pkgX puisqu'il sera installé en même temps que pkgY de toutes façons (tazpkg gère automatiquement les dépendances !).
slaxemulator@4 39
slaxemulator@4 40 En suivant ces trois conseils, il apparait que près de la moitié des paquets dans DEPENDS/BUILD_DEPENDS peuvent être retirés des recettes sans modifier le comportement du système, ce n'est pas rien !
slaxemulator@4 41
slaxemulator@4 42 <note tip>Un nettoyage automatisé utilisant quelques scripts est prévu, après que toutes les recettes aient été compilés au moins une fois avec succès en utilisant la nouvelle version de tazwok; En attendant, ces conseils peuvent être appliqués à l'écriture de nouvelles recette pour simplifier les choses, ou manuellement aux recettes existantes lors de mise à jour / corrections.</note>
slaxemulator@4 43
slaxemulator@4 44 **Exemples:**
slaxemulator@4 45 * graveman: http://hg.slitaz.org/wok/rev/7f0604e0bde0
slaxemulator@4 46 * enlightenment & cie: http://hg.slitaz.org/wok/rev/85cd798d6997
slaxemulator@4 47
slaxemulator@4 48 ==== TARBALL/WGET_URL/SOURCE/téléchargement depuis les VCS ====
slaxemulator@4 49
slaxemulator@4 50 Ceci est important: toujours mettre les outils nécéssaires au téléchargement/décompression des sources dans <del>DEPENDS ou</del> BUILD_DEPENDS. Ceci permet à tazwok de définir un ordre de cuisson correct (ne pas tenter de cuire un paquet qui a besoin de wget avant wget lui-même).
slaxemulator@4 51
slaxemulator@4 52 //Les paquets concernés par cela://
slaxemulator@4 53 * wget: pour les url https, ftps et certaines URL que busybox ne comprend pas
slaxemulator@4 54 * mercurial/subversion/git: s'ils sont utilisés pour obtenir les sources
slaxemulator@4 55 * tar/unzip: parfois nécéssaire pour décompresser les sources
slaxemulator@4 56
slaxemulator@4 57 Par défaut, tazwok re-compacte les sources au format .tar.lzma. Il les nomme PACKAGE-VERSION.tar.lzma, ou SOURCE-VERSION.tar.lzma si SOURCE est définit. Important: choisir le nom de cette archive est désormais la seule fonction de la variable SOURCE!
slaxemulator@4 58
slaxemulator@4 59 Tazwok supporte désormais les fichiers ou les url "bizarres" (download.php?version=blabla&machin=jesaispasquoi). La logique est: si WGET_URL ne finit pas par TARBALL, alors nomme le fichier téléchargé TARBALL.
slaxemulator@4 60
slaxemulator@4 61 Tazwok supporte aussi l'utilisation de mercurial/subversion/git dans WGET_URL. La syntaxe est la suivante:
slaxemulator@4 62 <file>WGET_URL="subversion|svn://svn.mplayerhq.hu/mplayer/trunk"</file>
slaxemulator@4 63 Une variable optionnelle est BRANCH: elle permet de préciser la révision/tag/branche à utiliser (voir les exemples ci-dessous). Lorsque BRANCH est utilisé, il est important que $VERSION fasse partie de sa définition.
slaxemulator@4 64
slaxemulator@4 65 A noter que les sources seront obtenues via l’outil demandé, puis empaquetés au format .tar.lzma. L'archive sera nommée comme expliqué ci-dessus. Ceci signifie que la variable SOURCE peut être utilisée pour faire en sorte que plusieurs recettes utilisent le même dépôt sans créer plusieurs archives.
slaxemulator@4 66
slaxemulator@4 67 Premièrement, cela permet de savoir quelle révision on installe lorsque l'on utilise le gestionnaire de paquet. Deuxième, cela permet à tazwok de différencier les sources compressées. En effet, si l'archive conserve le même nom, elle ne sera pas re-téléchargée, ce qui est indésirable lorsque l'on veut mettre à jour le paquet.
slaxemulator@4 68
slaxemulator@4 69 **Exemples:**
slaxemulator@4 70 * Ici wget était nécéssaire: http://hg.slitaz.org/wok/rev/012847ddd0cb
slaxemulator@4 71 * Tinyproxy ne déclarait pas l’URL de son code source, c'est corrigé: http://hg.slitaz.org/wok/rev/25967da0e1af
slaxemulator@4 72 * WGET_URL supporte désormais les xpi: http://hg.slitaz.org/wok/rev/37738b3ee08f
slaxemulator@4 73 * WGET_URL avec une URL "bizarre": http://hg.slitaz.org/wok/rev/102de15fea8d
slaxemulator@4 74 * WGET_URL utilisant git: http://hg.slitaz.org/wok/rev/e06d60ae03eb
slaxemulator@4 75 * WGET_URL utilisant subversion: http://hg.slitaz.org/wok/rev/c4c54646489a
slaxemulator@4 76 * WGET_URL utilisant mercurial: http://hg.slitaz.org/wok/rev/756ed4b1daac
slaxemulator@4 77 * Ce fut difficile de choisir comment définir VERSION et BRANCH pour aufs: http://hg.slitaz.org/wok/rev/67231cfc5475
slaxemulator@4 78 * Ici deux archives de sources étaient en conflit, résolu grâce à SOURCE: http://hg.slitaz.org/wok/rev/b891cba4f48e
slaxemulator@4 79 * slitaz-dev-tools contient les sources pour les outils SliTaz qui ne contiennent que peu de code, on utilise SOURCE="slitaz-dev-tools" dans les recettes qui utilisent ce dépôt pour éviter d'avoir des archives en double: http://hg.slitaz.org/wok/rev/808826645cc2
slaxemulator@4 80
slaxemulator@4 81 ==== Exceptions concernant les dépendances de cuisson ====
slaxemulator@4 82
slaxemulator@4 83 Dans certains cas, aucune dépendance de cuisson n'est installée:
slaxemulator@4 84 * Pour les recettes ayant WANTED
slaxemulator@4 85 * Pour les recettes sans compile_rules()
slaxemulator@4 86
slaxemulator@4 87 A noter que les paquets pouvant être nécessaires à l'obtention/la décompression du code source seront quand même installés s'ils sont dans DEPENDS/BUILD_DEPENDS. Il s'agit de wget, mercurial, subversion, git, tar et unzip.
slaxemulator@4 88
slaxemulator@4 89 Si vous n'avez pas de compile_rules() mais voulez forcer l'installation de toutes les dépendances de cuisson, il existe un petit hack:
slaxemulator@4 90 <file>
slaxemulator@4 91 compiles_rules()
slaxemulator@4 92 {
slaxemulator@4 93 :
slaxemulator@4 94 }
slaxemulator@4 95 </file>
slaxemulator@4 96
slaxemulator@4 97 **Exemples:**
slaxemulator@4 98 * Retrait des compiles_rules() pour éviter l'installation de dépendances de cuisson inutiles: http://hg.slitaz.org/wok/rev/f579356b437f
slaxemulator@4 99 * Retrait d'un hack avec des fausses compiles_rules qui était inutile... http://hg.slitaz.org/wok/rev/5b4581f8e476
slaxemulator@4 100
slaxemulator@4 101 ==== Définir src/_pkg & déplacer $src au bon endroit (hacks dans la recette) : ====
slaxemulator@4 102
slaxemulator@4 103 Par défaut, le nouveau tazwok place les sources dans $WOK/$PACKAGE/$PACKAGE-$VERSION: il renomme le répertoire-père des sources si nécéssaire. Jusqu'ici, $src n'était pas correctement définit pour les recettes utilisant à la fois SOURCE et WANTED. Beaucoup de recettes implémentaient leur propre solution de différentes façons, ce qui est difficile à prendre en compte d'une manière standardisée et peut poser des problèmes de compatibilité.
slaxemulator@4 104
slaxemulator@4 105 Si tazwok détecte src=/_pkg= dans une recette, il continue d'utiliser l'ancien comportement pour assurer cette compatibilité (cela produit des erreurs dans certains cas). Ce n'est plus nécéssaire et pas idéal.
slaxemulator@4 106
slaxemulator@4 107 Les hacks dans les recette qui déplacent les source au bon endroit ne sont plus nécessaires non plus, et peuvent aussi causer des problèmes.
slaxemulator@4 108
slaxemulator@4 109 En conclusion, mieux vaut considérer que $src/$_pkg sont bien définit par défaut et essayer de s'y fier le plus possible.
slaxemulator@4 110
slaxemulator@4 111 **Exemples :**
slaxemulator@4 112 * Retrait des src= par Godane: http://hg.slitaz.org/wok/rev/a1c1d35d9f92
slaxemulator@4 113 * src=/_pkg= peuvent/doivent être aussi retirés des WANTED: http://hg.slitaz.org/wok/rev/07adb7cbd0c8
slaxemulator@4 114 * Ici, un ancien hack posait problème: http://hg.slitaz.org/wok/rev/62f6142d9fb3
slaxemulator@4 115 * Les sources sont désormais //toujours// placées dans un sous-dossier $src: http://hg.slitaz.org/wok/rev/e64069568fe7
slaxemulator@4 116 * Un autre cas: appeler le script configure depuis un dossier de compilation séparé (*-build): http://hg.slitaz.org/wok/rev/7461a0c31d62
slaxemulator@4 117 * Correction de dmraid: http://hg.slitaz.org/wok/rev/f5b7e0c47763 http://hg.slitaz.org/wok/rev/59ea9409ad8a
slaxemulator@4 118
slaxemulator@4 119 ==== Définir les chemins par défaut dans configure: ====
slaxemulator@4 120
slaxemulator@4 121 <note tip>Voir /etc/slitaz/slitaz.conf, /etc/config.site et le nouveau modèle de recette mis en place par tazwok new-tree</note>
slaxemulator@4 122
slaxemulator@4 123 La nouvelle version de tazwok tente de passer les chemins par défaut à configure en utilisant la variable d'environnement CONFIG_SITE appelant le fichier /etc/config.site, ce qui fonctionne dans la plupart des cas. Néanmoins les scripts configure sont spécifiques à chaque sources et il arrive que CONFIG_SITE ne soit pas supporté. Pour cette raison, la meilleur façon de retirer les définitions de chemins inutiles est de le faire au cas par cas, lors de la mise à jour de recette, et de vérifier que tout fonctionne.
slaxemulator@4 124
slaxemulator@4 125 Dans de rares cas, cette nouvelle fonctionnalité produit des problèmes. Il arrive en effet que certaines recettes qui n'utilisaient pas les chemins par défaut les utilisent désormais grâce à CONFIG_SITE, et une mise à jour de la fonction genpkg_rules() est alors nécéssaire.
slaxemulator@4 126
slaxemulator@4 127 **Exemples:**
slaxemulator@4 128 * Un fichier n'installait pas ou il faut dans acl, c'est corrigé par CONFIG_SITE: http://hg.slitaz.org/wok/rev/f831ecb652a6
slaxemulator@4 129 * Un autre exemple: http://hg.slitaz.org/wok/rev/259214792e30
slaxemulator@4 130
slaxemulator@4 131 <note tip>CONFIG_SITE= peut être utilisé dans les recettes pour utiliser un autre fichier que celui par défaut (peut être utile pour les paquets de gnome ou des choses comme ça...)</note>
slaxemulator@4 132
slaxemulator@4 133 ==== DESTDIR=$PWD/_pkg ====
slaxemulator@4 134
slaxemulator@4 135 DESTDIR est passé à make install en utilisant la variable d'environnement du même nom. Le nouveau chemin pour l'installation est $WOK/$PACKAGE/install. Ceci permet de retirer le dossier des sources après empaquetage, s'il ne contient aucun fichier utilisé par une recette dans son genpkg_rules().
slaxemulator@4 136
slaxemulator@4 137 La plupart des recettes utilisent encore DESTDIR=$PWD/_pkg. Toutefois, si aucune recette ne redéfinit les variables src/_pkg, tazwok le déplacera automatiquement à $WOK/$PACKAGE/install.
slaxemulator@4 138
slaxemulator@4 139 Dans certains cas, comme pour les autres variables, DESTDIR n'est pas pris en compte; ou le paquet n'est pas installé par make. Dans ces cas, la variable $DESTDIR est disponible pour définir le répertoire d'installation dans la recette.
slaxemulator@4 140
slaxemulator@4 141 Dans de rares cas, ce comportement provoque des incompatibilités. Cela arrive lorsque les recettes définissent le chemin vers le dossier d'installation sans utiliser src/_pkg. La solution consiste alors à ne plus définir ces chemins dans les recettes (celle appelant la recette principale avec WANTED compris), s'assurer que l'installation se fait bien dans $WOK/$PACKAGE/install et faire confiance aux variables fournies par tazwok.
slaxemulator@4 142
slaxemulator@4 143 **Exemples:**
slaxemulator@4 144 * Retirer _pkg= & DESTDIR= en même temps pour que cela fonctionne: http://hg.slitaz.org/wok/rev/cf088243a4a5
slaxemulator@4 145 * Retrait de références "inutiles" à $src pour que les sources soient retirés: http://hg.slitaz.org/wok/rev/0731792c3994 http://hg.slitaz.org/wok/rev/5d6340961543
slaxemulator@4 146 * Bash ne tient pas compte de DESTDIR en variable d'environnement: http://hg.slitaz.org/wok/rev/fa7b7514e1d8
slaxemulator@4 147 * acl & attr ne tiennent pas compte de DESTDIR (dans ce commit la destination d'installation était encore $PWD/_pkg): http://hg.slitaz.org/wok/rev/fa7b7514e1d8
slaxemulator@4 148
slaxemulator@4 149 ==== MAKEFLAGS ====
slaxemulator@4 150
slaxemulator@4 151 MAKEFLAGS aussi est passé à make en utilisant les variables d'environnement; encore une fois cela ne fonctionne pas toujours. Dans la plupart des cas, les -j 4 peuvent être enlevés. Dans certains cas, il est nécéssaire de passer MAKEFLAGS à make directement dans la recette:
slaxemulator@4 152 make $MAKEFLAGS
slaxemulator@4 153
slaxemulator@4 154 Tazwok définit automatiquement la valeur pour $MAKEFLAGS en fonction du nombre de cœur que contient le processeur, -j4 devrait donc être enlevé de toutes les recettes pour permettre de compiler sur des ordinateurs disposant de plus de ressources (4 cœurs peuvent utiliser -j5)
slaxemulator@4 155
slaxemulator@4 156 **Problèmes liés à MAKEFLAGS:**
slaxemulator@4 157
slaxemulator@4 158 Jusqu'ici, seul les recettes avec -j4 compilaient en utilisant le multi-thread, tandis que désormais tous les make et make install l'utilisent. Ce comportement peut provoquer des erreurs. Certaines sources ne supportent pas la compilation multi-thread mais ne la désactivent pas. C'est le problème le plus commun liés au changements expliqués ici.
slaxemulator@4 159
slaxemulator@4 160 //Problème à la compilation://
slaxemulator@4 161
slaxemulator@4 162 Durant la compilation, il arrive que des bibliothèques s’appuient sur d'autres compilées avec les mêmes sources. Si elles sont compilées en même temps, cela provoque une erreur à propos d'une bibliothèque manquante. Dans ce cas, on voit dans le texte de compilation que la bibliothèque en question a commencée à être compilée quelques lignes plus tôt mais que ce processus n'était pas encore terminé. Pour résoudre ce problème, ajouter -j1 à make. C'est l'erreur la plus commune, il en existe d'autre plus rares qui prennent une forme similaire.
slaxemulator@4 163
slaxemulator@4 164 //Problème à l'installation://
slaxemulator@4 165
slaxemulator@4 166 La caractéristique de cette erreur est que l'installation s'arrête et qu'un message d'erreur explique qu'il est impossible de créer un dossier parce qu’il existe déjà: un processus en parallèle vient en fait de le créer. Dans ce cas, il faut ajouter -j1 à make install.
slaxemulator@4 167
slaxemulator@4 168 **Exemples:**
slaxemulator@4 169 * Plusieurs des changements expliqués ici dans la recette de gettext: http://hg.slitaz.org/wok/rev/9411655af0e2
slaxemulator@4 170
slaxemulator@4 171 ==== Les variables $stuff, $wanted_stuff et $fs ====
slaxemulator@4 172
slaxemulator@4 173 Désormais la variable $stuff est disponible et renvoie au dossier stuff de la recette, elle utilise un chemin absolu. La variable $wanted_stuff renvoie au dossier stuff du paquet défini dans WANTED, s'il existe. La variable $fs renvoie au futur contenu du paquet dans taz/*/fs, comme avant; la différence est que désormais $fs utilise un chemin absolu
slaxemulator@4 174
slaxemulator@4 175 **Exemples:**
slaxemulator@4 176 * Un commit avec plusieurs changements à propos de la variable $stuff: http://hg.slitaz.org/wok/rev/be13f25e790b
slaxemulator@4 177 * Une correction nécéssaire quand nous avons fait de $fs un chemin absolu: http://hg.slitaz.org/wok/rev/8c897d2542ab
slaxemulator@4 178
slaxemulator@4 179 ==== Ne pas utiliser 'exit' mais 'return' ====
slaxemulator@4 180
slaxemulator@4 181 Désormais lors de la cuisson de plusieurs paquets grâce à une liste tazwok n'appelle pas un nouveau tazwok cook. C'est à dire qu'il y a une seule session de tazwok pour que l’exécution soit plus rapide. Si une recette utilise exit, tazwok quitte et la suite de la liste n'est pas cuite.
slaxemulator@4 182
slaxemulator@4 183 **Exemple:**
slaxemulator@4 184 * Retrait de tous les exit des recettes du wok: http://hg.slitaz.org/wok/rev/0b4cf0d9e1b5
slaxemulator@4 185
slaxemulator@4 186 ==== Conclusion - Choses à faire lors de la mise à jour d'une recette: ====
slaxemulator@4 187
slaxemulator@4 188 * Retirer les src=/_pkg= de la recette et de celles qui la déclarent en tant que WANTED.
slaxemulator@4 189 * Retirer DESTDIR=$PWD/_pkg; si cela ne fonctionne pas, ou si le moyen pour définir le répertoire d'installation n'est pas make+DESTDIR, utiliser $DESTDIR plutôt que $PWD/_pkg.
slaxemulator@4 190 * Retirer la définition des chemins par défaut et voir si cela fonctionne, sinon les laisser.
slaxemulator@4 191 * Retirer -j4 et voir si cela fonctionne; Si le mutli-thread ne fonctionne plus, le ré-activer en utilisant $MAKEFLAGS; si le multi-thread provoque des problèmes, ajouter -j1 au bon endroit.
slaxemulator@4 192 * Retirer les BUILD_DEPENDS/DEPENDS redondantes.
slaxemulator@4 193 * Vérifier que les paquets sont créés correctement, sinon mettre à jour les chemins dans genpkg_rules().
slaxemulator@4 194 * Essayer de déclarer toutes les sources dans des recettes pour que SliTaz puisse être compilée sans connexion internet (nécessite de télécharger toutes les sources avant).
slaxemulator@4 195 * Vérifier que les paquets nécessaires au téléchargement/extraction du code source soient définis dans build_depends.
slaxemulator@4 196 * Vérifier qu'exit n'est pas utilisé dans la recette.
slaxemulator@4 197
slaxemulator@4 198
slaxemulator@4 199 ==== Quelques cas plus complexes... ====
slaxemulator@4 200
slaxemulator@4 201 Je les mets à la fin car là il y en a déjà beaucoup à intégrer :)
slaxemulator@4 202 Les éléments ci dessous correspondent à des cas bien précis.
slaxemulator@4 203
slaxemulator@4 204 == La variable COOK_OPT ==
slaxemulator@4 205
slaxemulator@4 206 Cette nouvelle variable peut contenir des options qui altèrent le comportement de tazwok. Elles sont utiles dans des cas très particuliers.
slaxemulator@4 207
slaxemulator@4 208 **genpkg=**
slaxemulator@4 209
slaxemulator@4 210 Dans la recette de PACKAGE, définit un ordre de priorité pour empaqueter les recettes qui contiennent WANTED="PACKAGES" (et seulement elles!). Si on inclut plusieurs paquets, les séparer par des doubles points ':'. Si des paquets ne sont pas définis dans cette option, ils seront empaquetés après, par ordre alphabétique (comportement par défaut)
slaxemulator@4 211
slaxemulator@4 212 Utilisé dans glibc: http://hg.slitaz.org/wok/file/tip/glibc/receipt
slaxemulator@4 213
slaxemulator@4 214 **!repack_src**
slaxemulator@4 215
slaxemulator@4 216 Désactive la re-compression des sources au format .tar.lzma
slaxemulator@4 217
slaxemulator@4 218 Utilisé dans ruby-pkgconfig pour que les sources restent au format .gem: http://hg.slitaz.org/wok/file/tip/ruby-pkgconfig/receipt
slaxemulator@4 219
slaxemulator@4 220 **!unpack**
slaxemulator@4 221
slaxemulator@4 222 Prévient la décompression de l'archive-source dans le wok.
slaxemulator@4 223
slaxemulator@4 224 C'est utilisé par ruby-pkgconfig également (voir lien ci-dessus)
slaxemulator@4 225
slaxemulator@4 226
slaxemulator@4 227 C'est les deux seuls cas pour le moment!
slaxemulator@4 228
slaxemulator@4 229 <note tip>Il existe aussi **!strip** qui permet de sauter l’exécution automatique de strip à moment de l'empaquetage... Il n'a pas trouvé son utilité!</note>
slaxemulator@4 230
slaxemulator@4 231 == Cuisson de la chaîne d’outils ==
slaxemulator@4 232
slaxemulator@4 233 Pour cuire la chaîne d'outils de SliTaz, nous utilisons une chaîne d'outils temporaire. Certaines recettes utilisent des règles spécifiques à cette étape. Lors de la cuisson de cette chaîne d'outils temporaire, les logiciels concernés ne sont pas empaquetés mais installés directement dans le chroot construit à cet effet. Les paquets concernés sont listés dans la variable SLITAZ_TOOLCHAIN du fichier de configuration /etc/slitaz/slitaz.conf
slaxemulator@4 234
slaxemulator@4 235 Les fonctions supplémentaires sont:
slaxemulator@4 236 * precook_tmp_toolchain() - Utilisé seulement par gcc & binutils pour le moment, car ils sont cuits deux fois durant la préparation de la chaîne d'outils temporaire.
slaxemulator@4 237 * cook_tmp_toolchain() - Utilisé par la plupart des paquets de SLITAZ_TOOLCHAIN pour définir comment ils doivent être compilés pour la chaîne d'outils temporaire. Lorsque cook_tmp_toolchain() est absent, compile_rules() est utilisé à la place. Cela évite d'écrire deux fonctions identiques. A noter que dans ce cas, ./configure ne doit pas définir les chemins par défaut dans la recette, car la chaîne d'outils temporaire doit pouvoir le faire elle-ême via la variable d'environnement CONFIG_SITE. En effet, les paquets compilés durant cette étape ne sont pas installés à l'emplacement habituel mais dans /tools.
slaxemulator@4 238
slaxemulator@4 239 **Exemples:**
slaxemulator@4 240 * binutils: http://hg.slitaz.org/wok/file/tip/binutils/receipt
slaxemulator@4 241 * gettext: http://hg.slitaz.org/wok/file/tip/gettext/receipt
slaxemulator@4 242 * bash: http://hg.slitaz.org/wok/file/tip/bash/receipt
slaxemulator@4 243 * patch n'a pas besoin de cook_tmp_toolchain(): http://hg.slitaz.org/wok/file/tip/patch/receipt
slaxemulator@4 244 * autoconf non plus: http://hg.slitaz.org/wok/file/tip/autoconf/receipt
slaxemulator@4 245
slaxemulator@4 246 == tazwok get-src / report dans les recettes ==
slaxemulator@4 247
slaxemulator@4 248 report est un module de libtaz qui permet d'organiser l'affichage des commandes dans le terminal et de créer les logs disponibles notamment sur l'interface http://bb.slitaz.org. Il peut être utilisé dans les recettes, de la façon suivante (c'est abstrait, les exemples d'application réelle suivent):
slaxemulator@4 249
slaxemulator@4 250 <file>
slaxemulator@4 251 compile_rules() # Par exemple
slaxemulator@4 252 {
slaxemulator@4 253 report open-bloc #compiles_rules est une étape, déclarer qu'il y aura des sous-étapes
slaxemulator@4 254 report step "Action machin"
slaxemulator@4 255 ...
slaxemulator@4 256 report step "Action truc"
slaxemulator@4 257 ..
slaxemulator@4 258 report close-bloc #Refermer le bloc ouvert précédemment
slaxemulator@4 259 }
slaxemulator@4 260 </file>
slaxemulator@4 261
slaxemulator@4 262 Concrètement, il y a un seul cas où nous l'utilisons: lorsque l'on utilise tazwok get-src PACKAGE --target=... . Cette commande créée une nouvelle étape (report step). Nous devons donc ouvrir un bloc avant, et le fermer après, ainsi qu'ajouter plusieurs autres report step "..." pour que le log et l'affichage dans le terminal soit correct. Chaque report step ferme l'étape précédente, si nous n'ouvrions pas de bloc, tazwok get-src fermerait l'étape "Executing compile rules"
slaxemulator@4 263
slaxemulator@4 264 Le report close-bloc doit absolument être executé, sinon le log/affichage sera cassé. C'est pourquoi nous utilisons { report close-bloc; return 1; } plutôt que return tout seul.
slaxemulator@4 265
slaxemulator@4 266 L'utilisation pratique de ce tazwok get-src est qu'il permet de décompacter les sources de PACKAGE à l'adresse désignée par --target
slaxemulator@4 267
slaxemulator@4 268 Dans les exemples ci-dessous, observez la correlation entre les report step et leur affichage dans le log. Observez aussi la correlation entre tazwok get-src et le message "Checking for source tarball: ..." dans le log. Vous verrez comment report open-bloc/report close-bloc crééent une sous-partie dans genpkg_rules (nommé "Executing compile_rules" dans le log). S'il n'y avait pas ces open-bloc/close-bloc, les nouvelles étapes seraient affichées à la suite d'"Executing compile_rules", ce qui n'est pas ce que nous voulions.
slaxemulator@4 269
slaxemulator@4 270 **Exemples (recette + log) :**
slaxemulator@4 271 * Linux à besoin de patchs contenus dans les sources de aufs, Godane en a profité pour améliorer l'affiche/le log. recette: http://hg.slitaz.org/wok/file/tip/linux/receipt ; log: http://bb.slitaz.org/log.php?version=cooking&package=linux
slaxemulator@4 272 * Gcc utilise les sources de plusieurs autres paquets lors de la cuisson de la chaîne d'outils temporaire. recette: http://hg.slitaz.org/wok/file/tip/gcc/receipt ; log: http://bb.slitaz.org/log.php?version=cooking&package=tmp-toolchain-gcc
slaxemulator@4 273 * mingw32-gcc a été corrigé grâce à cette approche, cela a aussi permit de déclarer toutes les sources utilisées. Commit: http://hg.slitaz.org/wok/rev/fd43246b4613 ; log: http://bb.slitaz.org/log.php?version=cooking&package=mingw32-gcc