Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
freebsd:qnd_port_creation [2006/05/24 07:41]
ange
freebsd:qnd_port_creation [2010/01/12 13:29] (current)
Line 1: Line 1:
 +====== Création de ports FreeBSD ======
  
 +
 +===== Objet =====
 +Ce tutorial présente la méthode à utiliser pour créer un port FreeBSD de façon rapide. Il ne s'agit en rien d'une référence couvrant tout les aspects de cet exercice. Pour tout supplément d'​information le Handbook est la réponse.
 +
 +
 +===== Pré Requis =====
 +
 +Tous les éléments de la chaîne de compilation classique sur un FreeBSD en état de marche.
 +
 +
 +===== Remarque =====
 +Ce document est un résumé de ce qui est trouvable dans le trés bon **Porter'​s Handbook** (///​usr/​share/​doc/​en_US.ISO8859-1/​books/​porters-handbook/​index.html//​ habituellement). Néanmoins ce document peut être une bonne référence rapide en français pour combler les trous de mémoire ou servir de feuille de route globale d'un process connu mais pas encore maitrisé. Enfin c'est dans ces deux buts que je l'ai écrit pour moi ...
 +
 +
 +===== Préparation =====
 +Garder sous la main le fichier ///​usr/​ports/​Mk/​bsd.port.mk//​ qui est inclu par tous les Makefile et qui donne de bonnes infos.
 +
 +
 +===== Ecriture du port =====
 +
 +==== Makefile ====
 +
 +Le Makefile minimal doit ressembler à cela :
 +<​code>​
 +# New ports collection makefile for:   oneko
 +# Date created: ​       5 December 1994
 +# Whom:                asami
 +#
 +# $FreeBSD$
 +#
 +
 +PORTNAME= ​     oneko
 +PORTVERSION= ​  1.1b
 +CATEGORIES= ​   games
 +MASTER_SITES= ​ ftp://​ftp.cs.columbia.edu/​archives/​X11R5/​contrib/​
 +
 +MAINTAINER= ​   asami@FreeBSD.org
 +COMMENT= ​      A cat chasing a mouse all over the screen
 +
 +MAN1=          oneko.1
 +MANCOMPRESSED= yes
 +USE_IMAKE= ​    yes
 +
 +.include <​bsd.port.mk>​
 +</​code>​
 +
 +
 +==== Description files ====
 +
 +Deux fichiers de descriptions sont nécessaires :
 +  * pkg-descr : une description longue du port
 +  * pkg-plist : la liste des fichiers installés par le port
 +
 +=== pkg-descr ===
 +Il s'agit d'une simple description du port. Un paragraphe et l'url vers le site web suffisent.
 +
 +=== pkg-plist ===
 +
 +Il s'agit d'une liste des fichiers et répertoires créés pendant l'​installation. Les manpages ne doivent pas y figurer sauf si vous n'​utilisez pas les variables //​MAN**n**//​ dans le //​Makefile//​. Les répertoires créés à l;​installation doivent être préfixé du mot clef //@dirrm// afin qu'ils soient supprimés à la désinstallation.
 +<​code>​
 +bin/oneko
 +lib/​X11/​app-defaults/​Oneko
 +lib/​X11/​oneko/​cat1.xpm
 +lib/​X11/​oneko/​cat2.xpm
 +lib/​X11/​oneko/​mouse.xpm
 +@dirrm lib/​X11/​oneko
 +</​code>​
 +
 +Si vous êtes vraiment pressé et qu'il n'y a que peu de fichiers dans le port vous pouvez mettre la liste directement dans le //​Makefile//​ en utilisant les mots clés //​PLIST_FILES//,​ //​PLIST_DIRS//​ :
 +<​code>​
 +PLIST_FILES= ​   bin/oneko \
 +                lib/​X11/​app-defaults/​Oneko \
 +                lib/​X11/​oneko/​cat1.xpm \
 +                lib/​X11/​oneko/​cat2.xpm \
 +                lib/​X11/​oneko/​mouse.xpm
 +PLIST_DIRS= ​    ​lib/​X11/​oneko
 +</​code>​
 +Dans ce cas là, pas besoin de créer un fichier //​pkg-plist//​.
 +
 +
 +==== Sommes de contrôle ====
 +Utilisez simplement la commande 'make makesum'​ ce qui générera directement le fichier //​distinfo//​.
 +
 +===== Test du port =====
 +
 +Voilà le plus gros du boulot est fait, il ne reste plus qu'à tester. Il vous faut vérifier et tester que :
 +
 +  * //​pkg-plist//​ : ne contient pas de fichiers qui ne soient pas installés par ce port.
 +  * //​pkg-plist//​ : contient tous les fichiers installés par ce port.
 +  * que le port peut être réinstallé plusieurs fois en utilisant la commande //make reinstall//​.
 +  * que le port se déinstalle correctement.
 +
 +Pour cela il faut suivre la procédure suivante :
 +
 +  - make install
 +  - make package
 +  - make deinstall
 +  - pkg_add package-name
 +  - make deinstall
 +  - make reinstall
 +  - make package
 +
 +Il existe un outil, devel/​portlint,​ pour vérifier et améliorer vos ports.
 +
 +  $> cd /​usr/​ports/​games/​oneko
 +  $> portlint
 +  looks fine.
 +
 +
 +===== Patches =====
 +Vous pouvez avoir des patchs à vous (ou pas), à appliquer aux sources du biniou que vous voulez porter/​packager. Il y a quelques règles à respecter quant nommage de deux ci :
 +  - leur nom doit être de la forme //​patch-*//,​ où '​*'​ représente le chemin du fichier concerné.
 +      Ex : //​patch-Imakefile//,​ //​patch-src-config.h//​
 +  - ils ne doivent pas être nommés //​patch-**aa**//,​ le nom du fichier impacté est important
 +Utilisez un //diff -u//, le //-r// est valide aussi mais vérifier bien ce qu'il donne avant de l'​intégrer au port surtout si vous prévoyez de le proposer à la communauté.
freebsd/qnd_port_creation.txt · Last modified: 2010/01/12 13:29 (external edit)