Il existe un certain nombre de principes de développement généraux à suivre :
Le Copyright des ebuilds (et de la documentation) doit toujours être assigné à
Gentoo Technologies. Les développeurs ne doivent jamais mettre leur propre nom
dans les lignes de copyright. Pour plus d'information, lisez
Sur certaines architectures, les bibliothèques partagées doivent être
construites avec l'option -fPIC. Sur x86 et d'autres, les bibliothèques
partagées se construiront sans -fPIC, mais cela impliquerait des pertes, et peut
causer une perte de performance. Si vous rencontrez un paquet qui ne construit
pas ses bibliothèques avec -fPIC, corrigez le Makefile pour construire
uniquement ces bibliothèques avec -fPIC. Plus d'informations sur -fPIC
sont disponibles sur
Les nouveaux modules Perl doivent être ajoutés dans Portage uniquement si l'une des conditions suivantes est vérifiée :
Merci de vous assurer qu'au moins une personne du groupe de travail sur Perl approuve votre ajout.
Le nom des fichiers ebuilds consiste en quatre sous-sections logiques :
La première sous-section,
La seconde sous-section
La troisième sous-section,
Suffixe | Sens |
---|---|
Tous ces suffixes doivent être suivis immédiatement d'un entier positif non nul,
comme par exemple
En comparant deux suffixes identiques avec les entiers qui les suivent, celui
qui a le numéro le plus grand sera considéré comme plus récent. Par exemple,
La quatrième sous-section dans le nom du paquet est le numéro de révision
spécifique à Gentoo Linux (
Le numéro de révision est indépendant de la version de l'archive source et est
utilisé pour informer les utilisateurs qu'une révision provenant de Gentoo
Linux, pour un paquet particulier, est disponible. Les sorties initiales
d'ebuilds ne doivent pas avoir de numéro de révision. Par exemple,
Le numéro de révision d'un paquet doit être augmenté par les développeurs Gentoo quand l'ebuild a changé à un point tel que les utilisateurs peuvent vouloir faire une mise à jour. Typiquement, c'est le cas quand des correctifs sont fait sur un ebuild, qui affectent les fichiers installés résultant, mais l'ebuild utilise la même archive source, comme pour l'ebuild précédent. Si vous faites un changement interne stylistique à un ebuild qui ne change aucun fichier installé alors il n'y a pas besoin de remonter le numéro de révision. D'ailleurs, si vous corrigez un problème de compilation sur un ebuild qui affecte des utilisateurs, il n'y a pas besoin de remonter le numéro de version, dans la mesure où ceux pour qui cela fonctionnait parfaitement ne verront aucune différence en installant la nouvelle révision, et ceux qui avaient un problème n'ont pas pu installer leur paquet (dans la mesure où la compilation avait échoué), et donc n'ont pas besoin d'avoir un nouveau numéro de révision pour les forcer à mettre à jour. Un remontage de révision n'est également pas nécessaire si une minorité d'utilisateurs sera affectée et que le paquet prend un temps de compilation conséquent : Faites appel à votre bon sens pour juger de la circonstance.
Les ebuilds devraient se calquer sur la version précédente pour s'assurer que des correctifs ne sont pas supprimés accidentellement. Les correctifs doivent inclure des commentaires appropriés dans l'ebuild pour expliquer ce qu'ils font et pourquoi ils sont nécessaires. Si vous n'êtes pas très familier avec les correctifs ou que vous n'arrivez pas à déterminer si ils sont toujours nécessaires, vous ne devez pas mettre à jour l'ebuild.
Portage supporte un concept appelé les paquets "virtuels" (virtual packages en anglais). En les utilisant, vous permettez d'avoir un nom catégorie/paquet particulier qui pointe vers un autre.
Voici un exemple d'utilisation des paquets virtuels. Imaginons que vous créez un
nouveau paquet cron appelé
PROVIDE="virtual/cron"
Maintenant, dès que
Il y a une seconde composante dans l'implémentation des paquets virtuels dans
Gentoo. Qu'arrive-t-il si aucun paquet n'est installé, qui fournisse
virtual/lpr net-print/cups virtual/python dev-lang/python virtual/mta net-mail/ssmtp
La première ligne de ce fichier indique à Portage que si un paquet dépend de
Parlons désormais de la conduite à suivre pour les développeurs. Si vous devez
ajouter un paquet
Avant de créer des nouveaux paquets virtuels, merci de commencer à en parler sur la liste de diffusion interne pour les développeurs. Maintenir informés les développeurs de nouveaux paquets virtuels est essentiel pour s'assurer de leur utilisation uniforme.
Il y a deux moyens de construire un ebuild basé sur des sources à partir de l'arbre de développement CVS. Le premier moyen (traditionnel) est de créer un ebuild « instantané CVS » en créant votre propre instantané archivé de l'arbre CVS récupéré, en mettant les sources en miroir avec les dépôts officiels de fichiers distribués, puis vous écrivez un ebuild qui utilise spécifiquement cette archive. Nous appellerons désormais ce type d'ebuilds « ebuilds d'instantané CVS ».
L'autre méthode pour créer un ebuild utilisant le CVS consiste à utiliser
Les paragraphes suivants détaillent la politique relative à l'utilisation des ebuilds basés sur CVS. Remarquez qu'elle définit des règles strictes à propos de l'ajout de ce type d'ebuilds dans l'arbre de Portage.
Les ebuilds d'instantané CVS sont largement préférés aux ebuilds
« live » utilisant
Les ebuilds d'instantané CVS sont autorisés si un instantané du CVS contient les correctifs connus qui sont nécessaires au bon fonctionnement su paquet logiciel, ou si la version CVS d'un paquet logiciel particulier est connue pour, ou a été prouvée comme fonctionnant mieux que les versions de sortie normales.
Les ebuilds « live » sont généralement utilisés uniquement pour les
commodités des développeurs et devraient toujours être masqués avec un mot-clef
de type
Que ce soit pour un ebuild « live » ou un ebuild d'instantané CVS, vous, développeur serez responsable du bon fonctionnement de l'ebuild. Il est particulièrement difficile de s'en assurer pour les ebuilds « live » pour des raisons évidentes.
Si les ebuilds (quelque soit le type) ne fonctionnent pas correctement, ils
doivent être corrigés ou supprimés de l'arbre de Portage. Si ce sont des ebuilds
« live », ils doivent être marqués en
Si un ou plusieurs utilisateurs demandent un ebuild « live », vous
pouvez en ajouter un pour eux. Il doit avoir des mots-clef en
De cette manière, les utilisateurs le nécessitant peuvent l'installer, mais les autres utilisateurs seront protégés de son installation accidentelle. Encore une fois, cela ne s'applique que dans les situations où les utilisateurs demandent de manière spécifique un ebuild « live ». Les ebuilds d'instantanés CVS ne doivent être ajoutés à l'arbre de Portage que dans l'intention de les mettre en stable ou pour proposer des fonctionnalités améliorées par rapport aux versions habituelles de sortie d'un même logiciel.
Les ebuilds soumis par les utilisateurs ne doivent jamais être considérés comme sûr, et doivent toujours être audités et testé de manière suffisante, avant de les soumettre au CVS. Si un ebuild soumis par un utilisateur a des problèmes vous en serez tenu pour responsable direct. En l'incorporant au CVS, vous affirmez que cet ebuild suit tous les standards de développement de Gentoo Linux.
Assurez-vous que l'ebuild soumis par l'utilisateur ne contient pas d'en-tête personnalisées comme celle-ci :
# Ebuild updated by: me <me@me.com>
Ces informations doivent être ajoutées au
Assurez-vous également que tous les nouveaux ebuilds que vous soumettez au CVS contiennent la ligne suivante :
# $Header: $
Un certain nombre d'ebuilds soumis par les utilisateurs sont basés sur des fichiers utilisant rsync, qui peuvent contenir des lignes d'en-tête incorrectes.
Encouragez les utilisateurs à proposer des « diffs » sur les ebuilds
existants s'ils proposent une mise à jour. En faisant cela, nous pouvons aider à
éviter d'avoir à réintroduire des correctifs de bogues déjà identifiés et
corrigés auparavant dans les nouveaux ebuilds. Si vous ne travaillez pas à
partir d'un diff soumis par un utilisateur, alors utilisez la commande
En général, laissez l'utilisateur faire ce travail pour qu'il obtienne de
lui-même un ebuild correct, sauf si vous
Seul le mainteneur de Portage peut proposer des sorties de Portage à destination des utilisateurs, que ce soient les versions masquées ou non. Personne d'autre n'est autorisé à sortie de nouvelle version de Portage.
La seule exception à cette règle est pour les situations dans lesquelles le mainteneur de Portage est indisponible pour des durées suffisamment longues et qu'il y a un bogue majeur dans Portage. Dans cette situation d'urgence, la tâche sera allouée à un développeur expérimenté, qui devra alors tester le correctif puis proposer la nouvelle sortie.
Avant d'utiliser cette « clause d'échappatoire », demandez-vous :
est-ce que le mainteneur de Portage est vraiment indisponible ? Est-ce que
le correctif est vraiment tellement important qu'il doit être mis sur l'arbre de
Portage sur l'heure ? Avez-vous testé
Et si vous le faites, le correctif d'urgence doit être le produit d'un effort coordonné entre tous les développeurs disponibles sur le moment et en ligne (pour tester la nouvelle version, etc.) et ne doit pas être une soumission d'un « homme solitaire ». Un message doit être envoyé sur la liste de diffusion gentoo-core à propos de la nouvelle version d'urgence pour que tout le monde soit vite au courant et pour expliquer pourquoi il était nécessaire, et pourquoi attendre le mainteneur de Portage n'était pas une bonne option.
Le mainteneur de Portage permet
Une attention particulière doit être apportée quand un paquet est enlevé de
L'objectif de ~arch est de permettre de tester des nouveaux paquets ajoutés dans Portage.
Il y a une différence entre utiliser
Tous les nouveaux paquets qui entrent dans Portage doivent être marqués d'un ~arch pour les architectures sur lesquelles cette version est connue comme fonctionnant. Le développeur qui soumet l'ebuild doit vérifier qu'il est en état de fonctionnement et que la variable KEYWORDS est correcte.
Quand une version de paquet a été testé pendant une période de temps suffisante et considérée comme stable, et quand le mainteneur Gentoo de ce paquet est sûr que la mise à jour n'entraînera pas de problèmes sur une machine d'utilisateur normal, alors cette version peut passer de ~ARCH à ARCH. Une indication pour savoir si un paquet est stable peut être de constater qu'aucun rapport de bogue sur un mois après l'introduction du nouveau paquet n'a été effectué pour cette version.
C'est au mainteneur du paquet de décider quelles versions sont stables ou si les
versions de développement doivent être mises dans
Vous devez également vous assurer que toutes les dépendances pour cette version de paquet sont également en ARCH.
La politique de Gentoo Linux requiert que tous les ebuilds contiennent les
variables
Utilisez
# Acceptable : RDEPEND="${DEPEND} net-ftp/curl virtual/glibc" # Non acceptable : RDEPEND="${DEPEND}"
Il est également important de remarquer que seules les dépendances de
Un paquet doit dépendre de la plus ancienne version qui satisfait la dépendance.
Si le paquet fonctionne avec
En général, les paquets doivent dépendre de
Dépendre d'un paquet virtuel comme