NOM
em_installtdeb - genere les paquets de traduction TDeb d’Emdebian et
les sources.
SYNOPSIS
em_installtdeb
em_installtdeb -a|--arch ARCHITECTURE
em_installtdeb [LANG_CODE]
em_installtdeb [-a|--arch ARCHITECTURE] [--no-act]
em_installtdeb [-a|--arch ARCHITECTURE] [--no-sign]
Copyright et Licence
Copyright (C) 2007-2008 Neil Williams <codehelp@debian.org>
Ce logiciel est libre; vous pouvez le redistribuer selon les termes de
la licence GNU General Public License telle que publiee par la Free
Software Foundation; en prenant la version 3 de la licence ou (selon
votre choix) n’importe quelle version subsequente.
Ce logiciel est distribue dans l’espoir qu’il soit utile, mais AUCUNE
GARANTIE n’est donnee tant pour des raisons COMMERCIALES que pour
REPONDRE A UN BESOIN PARTICULIER. Consulter la Licence Publique
Generale GNU pour plus de details.
Vous devriez avoir recu copie de la Licence Publique Generale de GNU
avec ce programme. Sinon, voir <http://www.gnu.org/licenses/>.
em_installtdeb est un ajout a debhelper cree par Emdebian pour creer
des paquets de traduction (tdebs). em_installtdeb est prevu pour
separer les fichiers individuels de traduction des paquets Debian
courants en paquets sans aucun fichier de traduction et une serie de
paquets tdeb locaux, un par traduction. Les paquets generes ainsi
utilisent la syntaxe :
$package-locale-$language_code_$version_$arch.deb
(Notez que les TDebs dependent de l’architecture.)
Contrairement a d’autres outils connexes de construction croisee,
em_installtdeb NE LIT PAS votre architecture par defaut pour dpkg-
cross. Ceci est du au fait qu’il doit aussi etre utilisable pour des
installations natives. En faisant des installations croisees, assurez-
vous que vous avez explicitement precise l’option -a|--arch. (emdebuild
le fait pour vous).
Une fois qu’un paquet utilise em_installtdeb, les fichiers de
traduction devraient etre enleves de tous les paquets dans la
construction normale. em_installtdeb s’execute comme un deuxieme build
(tres petit, tres rapide) qui convertit et empaquete les fichiers *.po
en tdebs. Un paquet source tdeb est cree (.dsc, .tar.gz et .changes) a
cote des donnees du build existant. Le paquet source est utilise par
des traducteurs pour construire des mises a jour ou de nouveaux paquets
tdeb. Les fichiers .changes de Tdeb doivent etre telecharges seulement
dans les depots locaux secondaires a la place des miroirs Debian
principaux et ces depots peuvent avoir une politique de telechargement
beaucoup moins stricte. Les paquets Tdeb n’ont pas de dependances et
aucun paquet ne peut dependre d’eux.
em_installtdeb n’utilise actuellement que les traductions gettext.
Certains encodages linguistiques doivent etre modifies pour etre des
composants acceptables d’un nom de paquet debian. Les X _ X sont
convertis en traits d’union, X @ X est converti en X + X et tous les
codes sont ecrit en minuscules. Ces changements ne s’appliquent qu’aux
noms de paquet, l’endroit de l’installation est inchange.
Le paquet locale doit utiliser GETTEXT_PACKAGE pour le nom du fichier
binaire de traduction eventuel - bien qu’il puisse etre identique a
$dh{MAINPACKAGE}. GETTEXT_PACKAGE est determine en amont, pas par
Debian. En construisant le paquet entier, le fichier binaire de
traduction peut-etre dans debian/tmp/usr/share/locale/$lang/LC_MESSAGES
mais lorsque l’on se trouve dans le mode traducteur, cet endroit n’est
pas disponible. Il faut donc rechercher GETTEXT_PACKAGE a partir du nom
de fichier POT, la macro Makefile GETTEXT_PACKAGE ou, si le champ n’est
pas renseigne, utiliser le nom du paquet source amont. Cette partie
doit peut-etre etre allongee.
La X source X pour les traducteurs inclut donc :
debian/rules /* dummy file */
debian/control
debian/changelog
po*/$lang.po /* if any */
po*/$GETTEXT_PACKAGE.pot /* may be more than one */
Certains paquets utilisent plusieurs repertoires po et em_installtdeb
recherche un fichier POT dans tous les repertoires po, et les inclut
dans la source tdeb avec tous les fichiers po : par exemple
po/fr.po
po-lib/fr.po
po/application.pot
po-lib/library.pot
Une fois empaquete, le tdeb construit a partir de la source contiendra
:
./usr/share/locale/fr/LC_MESSAGES/application.mo
./usr/share/locale/fr/LC_MESSAGES/library.mo
Un equivalent tdeb pour la localisation X de X contiendrait :
./usr/share/locale/de/LC_MESSAGES/application.mo
./usr/share/locale/de/LC_MESSAGES/library.mo
Ceci applique le modele Debian X l’espace-disque-ne-coute-pas-cher X
qui separe les fichiers application.mo et library.mo mais combine
toutes les traduction dans un seul paquet, de sorte que le paquet
Debian equivalent contiendra :
./usr/share/locale/cs/LC_MESSAGES/application.mo
./usr/share/locale/de/LC_MESSAGES/application.mo
./usr/share/locale/fr/LC_MESSAGES/application.mo
...
./usr/share/locale/sv/LC_MESSAGES/application.mo
./usr/share/locale/ro/LC_MESSAGES/application.mo
./usr/share/locale/vi/LC_MESSAGES/application.mo
(repete a nouveau pour les autres paquets.)
Beaucoup de paquets contiennent des douzaines de traductions - certains
contiennent plus de 70 fichiers .mo et la taille des fichiers .mo peut
varier entre 2 kb et 30 kb chacun. Sans les tdebs, tous les
utilisateurs auraient les 70 traductions meme si seulement une ou deux
seraient utilisees. Avec les tdebs, tous les utilisateurs obtiennent la
bibliotheque et les traductions d’application mais seulement pour les
une ou deux localisations gerees par cette installation. La granularite
supplementaire obtenue en separant les fichiers application.mo et
library.mo dans des paquets separes pour la meme localisation ne vaut
probablement pas la charge de travail qu’elle induit. (En effet, ceci
signifie que des paquets avec des traductions multiples ne sont pas
soutenus reellement - au moins pas de la facon originale.) Il est
possible que des developpements comme dpkg filtering pourront mettre en
application ce niveau final de division, en cas de besoin.
em_installtdeb va essayer de generer le(s) fichier(s) POT necessaire et
ensuite creer un $package_$version_tdeb.tar.gz contenant les fichiers
source.
N’importe quel paquet peut avoir un tdeb source, tant que le fichier
POT est empaquete ou peut etre construit. Le paquet n’a pas besoin
d’avoir deja ete traduit.
Pour plus de details sur Tdebs, voir :
<http://www.emdebian.org/emdebian/langupdate.html>
<http://wiki.debian.org/i18n/TranslationDebs>
Notez que l’implementation Embdebian des tdebs differe de celle
proposee par Debian car Emdebian ne s’inquiete pas des manpages en
general, et encore moins des manpages traduites. Une fois que l’option
DEB_BUILD_OPTION X nodocs X sera geree dans debhelper, ce ne sera pas
un probleme puisque les tdebs peuvent etre construits pour Emdebian
sans aucune manpage. Les autres documentations traduites seront aussi
omises par X nodocs X. Les images contenant des textes traduits sont
relativement peu nombreuses.
Pour controler l’augmentation du nombre de paquets (en moyenne 10 fois
plus que ce qu’elle devrait etre), le depot locale secondaire organise
les paquets tdeb par racine locale (de parametres regionaux), par
exemple X en_GB X est sous X en X et X sr@Latn X sous X sr X. Chaque
racine locale (de parametres regionaux) devient une source apt unique
dans le depot locale (de parametres regionaux) pour gerer le passage
d’une localisation specifique vers une racine locale plus generale. De
cette maniere, chaque dispositif a seulement a faire face aux donnees
de cache pour une fraction du nombre total de paquets tdeb
(approximativement 1 sur 30).
Une nouvelle application C/C++ manipule alors l’installation et la mise
a jour des paquets tdeb selon la liste des parametres regionaux geres
et la liste des paquets installes. Les donnees mises en cache par
langupdate le sont temporairement et ne le sont pas dans l’optique de
les conserver entre les executions consecutives de langupdate.
OPTIONS
L’action par defaut est de traiter tous les fichiers po disponibles.
Ce mode est utilise par les mainteneurs de paquets pour generer des
sources tdeb et des binaires a la fin de la construction Debian (Debian
build) (avec les fichiers de traduction omis). Notez que cela signifie
un deuxieme .dsc, un deuxieme .changes, un deuxieme (et beaucoup plus
petit) .tar.gz utilisant le suffixe tdeb.tar.gz et un envoi separe vers
le second depot local. emdebian-tools inclura des gestionnaires
(handlers) pour ces operations et Debian pourra creer des mises en
formes (wrappers) similaires si necessaire.
Ce mode de mise a jour unilingue d’em_installtdeb est peu susceptible
d’etre maintenu une fois que le dpkg-gentdeb sera disponible parce que
les traductions sont moins susceptibles d’etre mises a jour dans
Emdebian que dans Debian.
LANG_CODE
LANG_CODE peut soit etre le nom de la localisation comme specifie
dans le nom du fichier PO (fr, en_GB, sr@Ltn, etc.) ou le nom de la
localisation comme specifie dans le nom du paquet eventuel (fr, en-
gb, sr+ltn, etc.)
Si un fichier po existe deja pour cette localisation,
em_installtdeb traite juste cette traduction et construit un seul
paquet tdeb.
Si le fichier po n’existe pas, em_installtdeb quitte avec une
erreur. (Copier le fichier POT de la source originale pour creer un
nouveau fichier po pour la nouvelle localisation et l’editer pour
inclure la nouvelle traduction, puis executer a nouveau
em_installtdeb).
LANG_CODE est prevu comme un ’mode de traduction’ ou les paquets
tdeb individuels peuvent etre construits par un traducteur et
transferes vers le depot approprie. em_installtdeb cree le tarball
du tdeb source, un fichier .dsc utilisable pour decrire le fichier
source tdeb et un fichier tdeb.changes.
no-act
em_installtdeb va juste imprimer les donnees de controle qui vont
etre utilisees pour les tdeb si l’option --no-act de debhelper est
utilisee.
no-sign
em_installtdeb appelle normalement ’debsign’ quand le .changes est
ecrit. Cette option supprime ce comportement.
Utilisation dans Debian
Notez que l’utilisation de debian/xcontrol dans le script actuel
signifie que XS-TDeb-Build-Directory et XS-TDeb-POT-Names vont devoir
etre geres dans debian/control avant l’adoption par Debian. En meme
temps, XC-Package-Type: tdeb a besoin de support lui aussi.
reprepro a besoin d’un patch pour accepter les .tdeb et autoriser .tdeb
dans les fichiers du depot :
$ reprepro --ignore=extension -b /path/ includedeb \
unstable ../qof-locale-sv_0.7.5-1em1_arm.tdeb
$ ls /opt/reprepro/locale/pool/main/q/qof/
qof-locale-sv_0.7.5-1em1_arm.deb
Nom de fichier : pool/main/q/qof/qof-locale-sv_0.7.5-1em1_arm.deb
Description : traduction sv pour qof (tdeb)
reprepro a besoin egalement d’une facon de manipuler des fichiers .tdeb
et .changes.
reprepro -b /opt/reprepro/locale/ include unstable
../qof_0.7.5-1em1_arm.changes
’qof-locale-id_0.7.5-1em1_arm.tdeb’ is not .deb or .udeb!
There have been errors!
Pour que le fichier de regles debian (debian/rules) dans le paquet
source genere soit utilisable, em_installtdeb doit etre fractionne de
sorte que dpkg-buildpackage recoive les donnees correctes pour creer un
fichier .change utilisable car em_installtdeb est trop efficace en
nettoyant derriere lui-meme.
boutisme (endianness)
A limited number of architectures are handled internally by
em_installtdeb. The list of supported archictures can be extended by
installing dpkg-cross and adding the configuration for the extra
architectures.
Autres traductions
Les paquets peuvent aussi contenir des manpages traduites et des
traductions pour des templates debconf. Ces traductions ne sont pas
empaquetees ou traitees par em_installtdeb car Emdebian n’a pas besoin
de manipuler de tels fichiers et parce que chaque variante necessitera
une prise en charge specifique (la majorite du support de debconf est
deja disponible). Si les Tdebs doivent etre geres dans Debian, ces
problemes devront etre resolus de facon a ce qu’Emdebian puisse
continuer d’empaqueter seulement les traductions gettext, omettre les
manpages traduits et laisser la gestion des traductions debconf aux
outils existants.
Utilisation de debhelper::init
Le probleme avec init est que $dh{DOPACKAGES} fonctionne a partir de
debian/control mais que les paquets locaux ne *sont pas* dans
debian/control. Donc em_installtdeb recupere le nom du paquet
X Source: X pour l’utiliser comme un prefixe pour le nom du paquet
locale.
Mode traducteur
Ceci est un mode special, pas quelque chose que delhelper ferait
couramment. Dans le mode traducteur, debian/rules n’est pas utilisee.
em_installtdeb fait tout ce qui est necessaire pour configurer,
construire, installer et empaqueter le tdeb demande et le paquet source
tdeb approprie en utilisant un repertoire temporaire pour s’assurer que
le fichier de controle et le changelog soient disponibles.
Il y a quelques problemes avec cette methode - la construction a besoin
d’un changelog debian (debian/changelog) mais a besoin aussi de creer
la traduction comme un paquet natif (pour eviter le besoin d’un fichier
.diff.gz vide) meme si le paquet en amont n’est pas natif. La solution
actuelle est de creer une nouvelle version (avec le tdeb appose) pour
creer une entree changelog propre qui n’essaye pas de refermer les bugs
du fichier originalement telecharge et qui ensuite utilise cette
version pour forcer dpkg-source a traiter le tdeb source en tant que
paquet natif. Ceci pourrait changer a l’avenir mais de tels changements
ont probablement besoin d’etre gere par dpkg. Cette methode, bien que
non ideale, fonctionne avec la facon de faire actuellement. Utiliser
une version modifiee garantit aussi que les fichiers produits
n’interferent pas avec les autres contructions qui sont au meme
endroit. Bien qu’inutilise, un fichier debian/rules est ajoute.
Si DEBSIGN_KEYID est defini, em_installtdeb essaye d’utiliser debsign
pour signer les fichiers .tdeb.changes et .dsc. Ceci pourrait etre
rendu facultatif si on decide plus tard que les telechargements de
traduction auront besoin de l’ensemble des entrees changelog pour
fermer les bugs dans le BTS Debian. Une partie de l’attrait des tdebs
est due au fait que les bugs i18n n’auront normalement pas besoin
d’etre renseignes dans le BTS.