package

 

package - Utilités pour le chargement et le contrôle de versions de packages

SYNTAXE

 package forget ? package package ...?
 package ifneeded package version ?script?
 package names
 package present ?-exact? package ?version?
 package provide package ?version?
 package require ?-exact? package ?version?
 package unknown ?command?
 package vcompare version1 version2
 package versions package
 package vsatisfies version1 version2

DESCRIPTION

Cette commande maintient une base de données simple des packages disponibles pour l'interpréteur courant et sur comment les charger dans l'interpréteur. Elle supporte plusieurs versions de chaque package et prépare la version correcte d'un package à être chargée en se basant sur ce qui est nécessaire pour l'application. Cette commande détecte et rapporte aussi les conflits de versions. Typiquement, seules les commandes package require et package provide sont appelées dans les scriptsTcl normaux, les autres commandes sont utilisées par les scripts système qui maintiennent la base de données des packages.

Le comportement de la commande package est déterminé par son premier argument. Les formes suivantes sont permises:

package forget ?package package ...? Efface toute information concernant chaque package spécifié de cet interpréteur, incluant l'information fournie par package ifneeded et package provide.

package ifneeded package version ?script? Cette commande apparaît seulement dans les scripts de configuration système pour réparer la base de données des packages. Elle indique qu'une version particulière d'un package est disponible si besoin, et que le package peut être ajouté à l'interpréteur par l'exécution de script. Le script est sauvegardés dans une base de données pour être utilisé par les commandes suivantes package require typiquement, script paramètre l'auto-loading pour les commandes dans le package (ou appelle load et/ou source directement), et ensuite appelle package provide pour indiquer que le package est présent. Il peut y avoir l'information dans la base de données pour plusieurs versions différentes d'un seul package. Si la base de données contient déjà l'information pour package et version, le nouveau script remplace l'existant. Si l'argument script est omis, le script courant pour la version version du package package est renvoyé, ou une chaîne vide si aucune commande package ifneeded a été appelée pour ces package et version.

package names Renvoie une liste des noms de tous les packages dans l'interpréteur pour lequel une version a été fournie (via package provide) ou pour lequel un script package ifneeded est disponible. L'ordre des éléments dans la liste est arbitraire.

package present ?-exact? package ?version? Cette commande est équivalente à package require excepté qu'elle n'essaye pas et charge le package s'il n'est pas déjà chargé.

package provide package ?version? Cette commande est appelée pour indiquer quelle version version du package package est maintenant présente dans l'interpréteur. Elle est typiquement appelée une fois comme partie d'un script ifneeded, et de nouveau par les package lui-même quand il est finalement chargé. Un erreur se produit si une version différente de package a été fournie par une précédente commande package provide. Si l'argument version est omis, alors la commande retourne le numéro de version qui est couramment fourni, ou une chaîne vide si aucune commande package provide n'a été appelée pour package dans cet interpréteur.

package require ?-exact? package ?version? Cette commande est typiquement appelée par le code Tcl qui souhaite utiliser une version particulière d'un package. Les arguments indiquent quel package est demandé, et la commande assure qu'une version convenable du package est chargé dans l'interpréteur. Si la commande réussit, elle retourne le numéro de version qui est chargé autrement elle génère une erreur. Si le switch - exact et l'argument version sont spécifiés alors seulement la version donnée est admise. Si -exact est omis mais que version est spécifié, alors les versions supérieures à version sont aussi admises tant qu'elles ont le même numéro de version majeure que version. Si -exact et version sont omis alors toute version est acceptable. Si une version de package a déjà été fournie (en appelant l commande package provide), alors son numéro de version doit satisfaire les critères donnés par -exact et version et la commande retourne immédiatement. Autrement, la commande recherche la base de données d'information fournie par les précédentes commandes package ifneeded pour voir si une version acceptable du package est disponible. Si c'est le cas, le script avec le numéro de version acceptable le plus èlevé est appelé; elle doit faire tout ce qui est nécessaire pour charger le package, incluant l'appel de package provide pour le package. Si la base de données package ifneeded ne contient pas de version acceptable du package et qu'une commande package unknown a été spécifiée pour l'interpréteur alors cette commande est appelée;ê quand elle se termine, Tcl vérifie de nouveau si le package est maintenant fourni ou s'il y a un script package ifneeded pour celui-ci. Si toutes ces étapes échouent pour fournir une version acceptable du package, alors la commande retourne une erreur.

package unknown ?command? Cette commande apporte une commande "de la dernière chance" à appeler pendant package require si aucune version convenable d'un package ne peut être trouvée dans la base de données package ifneeded. Si l'argument command est fourni, il contient la première partie d'une commande ; quand la commande est appelée pendant une commande package require, Tcl ajoute deux arguments supplémentaires donnant les nom et version du package désiré. Par exemple, si command est foo bar et que plus tard la commande package require test 2.4 est appelée, alors Tcl exécutera la commande foo bar test 2.4 pour charger le package. Si aucun numéro de version n'est donné à la commande package require, alors l'argument version pour la commande appelée sera une chaîne vide. Si la commande package unknown est appelée sans argument command, alors le courant script package unknown est renvoyé, ou une chaîne vide s'il n'existe pas. Si command est spécifié comme chaîne vide, alors le courant script package unknown est enlevé, s'il existe.

package vcompare version1 version2 Compare les numéros de versions donnés par version1 et version2. Renvoie -1 si version1 est une version précédente à version2, 0 si ils sont égal, et 1 si version1 est plus récente que version2.

package versions package Renvoie une liste de tout les numéros de versions de package pour lequel l'information a été fournie par des commandes package ifneeded.

package vsatisfies version1 version2 Renvoie 1 si les scripts écrits pour version2 fonctionneront avec version1 (ex. version1 est égal à ou supérieur à version2 et elles ont le même numéro de version majeure), 0 autrement.

NUMEROS DE VERSION

Les numéros de version consistent en un ou plusieurs nombres décimaux séparés par des points, tel que 2 ou 1.162 ou 3.1.13.1. Le premier nombre est appelé le numéro de version majeure. Des nombres supérieurs correspondent à des versions ultérieures d'un package, avec le nombre le plus à gauche plus significatif. Par exemple, la version 2.1 est ultérieure à 1.3 et version 3.4.6 est ultérieure à 3.3.5. Les champs manquants sont équivalent à zéros:ê la version 1.3 est la même que la version 1.3.0 et 1.3.0.0, donc elle est antérieure à 1.3.1 ou 1.3.0.2. Un numéro de version ultérieur est supposé être compatible avec un numéro de version précédent tant que les deux versions ont le même numéro de version majeure. Par exemple, les scripts Tcl écrits pour la version 2.3 d'un package devraient fonctionner sous les versions 2.3.2, 2.4, et 2.5.1. Les changements dans le numéro de version majeure signifient des changements incompatible: si le code est écrit pour utiliser la version 2.1 d'un package, it n'est pas garanti qu'il fonctionne non modifié avec soit la version 1.7.3 soit la version 3.1.ê

INDEX DE PACKAGES

La manière recommandée d'utiliser les packages en Tcl est d'appeler les commandes package require et package provide dans les scripts, et d'utiliser la fonction [pkg_mkIndex] pour créer des fichiers index de package. Une fois que vous avez fait ceci, les packages seront chargés automatiquement en réponse aux commandes package require. Voir la documentation d [pkg_mkIndex] pour les détails.


Traduit par Michel Salvagniac 2002-2003

Copyright © 2003 - Le Wiki Tcl/Tk Francophone.


Catégorie Manuel Tcl/Tk