Skip site navigation (1) Skip section navigation (2)

Projet GNOME pour FreeBSD : Comment cr�er un port

Ce document consid�re que vous connaissez d�j� comment le syst�me des ports fonctionne et par cons�quent ne donne que les trucs et astuces sp�cifiques � GNOME. Des instructions plus g�n�rales sont disponibles dans le Manuel du Porteur d'Applications pour FreeBSD.

Les macros Makefile pour GNOME

Pour les ports qui n�cessitent GNOME, vous devez d�finir les variables suivantes dans le Makefile du port :

USE_GNOME=	yes
USE_X_PREFIX=	yes
          

Cela prendra en charge le pr�fix d'installation ainsi que les d�pendances indispensables pour GNOME. Si votre port peut utiliser GNOME, mais qu'il n'est pas requis, vous pouvez d�finir les variables suivantes dans votre Makefile :

WANT_GNOME=	yes
          

Si le syst�me des ports d�tecte que GNOME est install� sur le syst�me alors les composants GNOME seront compil�s. Autres macros utiles en rapport avec GNOME qui peuvent �tre utilis�es dans le Makefile :

  • USE_GLIB (WANT_GLIB) : L'application n�cessite (peut utiliser) Glib. D�finir USE_GNOME ou USE_GTK d�finit automatiquement cette option.

  • USE_GTK (WANT_GTK) : L'application n'est pas forc�ment compatible GNOME mais n�cessite GTK+. Cela prendra en charge ces d�pendances. A noter que cette option ne doit pas �tre d�finie si USE_GNOME est d�fini.

  • USE_ESOUND (WANT_ESOUND) : L'application n�cessite (peut utiliser) esound. En temps normal, le support esound est ajout� en sp�cifiant USE_GNOME.

  • USE_IMLIB (WANT_IMLIB) : L'application n�cessite (peut utiliser) la librairie graphique Imlib. Il n'est pas n�cessaire de l'indiquer si USE_GNOME est d�fini.

  • USE_GNOMELIBS (WANT_GNOMELIBS) : L'application n�cessite (peut utiliser) les librairies GNOME. Cela n'implique pas autant de d�pendances que USE_GNOME et doit �tre utilis� pour les applications qui utilisent GNOME mais qui n'ont pas besoin du Centre de Contr�le GNOME, de la librairie capplet ou d'un composant faisant partie du noyau de GNOME.

  • USE_GNOMECTRL (WANT_GNOMECTRL) : L'application n�cessite (peut utiliser) toutes les librairies GNOME et le Centre de Contr�le GNOME mais n'utilise aucun composant du noyau de GNOME. Cette option est habituellement utilis�e pour les APIs.

Si votre port peut en option utiliser GNOME, vous devez utiliser WANT_GNOME= yes dans votre Makefile et v�rifier si HAVE_GNOME est positionn�. Comme c'est une �valuation conditionnelle, vous devez le placer entre bsd.port.pre.mk et bsd.port.post.mk. Par exemple :

WANT_GNOME=	yes

.include <bsd.port.pre.mk>

.if defined(HAVE_GNOME)
USE_GNOME=	yes
CONFIGURE_ARGS+=	--with-gnome
.else
CONFIGURE_ARGS+=	--without-gnome
.endif

.include <bsd.port.post.mk>
          

WANT_GNOME indique au syst�me des ports de v�rifie l'existence de gnome-config. S'il existe, HAVE_GNOME est positionn�. Sinon, HAVE_GNOME ne l'est pas. En positionnant USE_GNOME apr�s la v�rification sur HAVE_GNOME le port enregistrera toutes les d�pendances li�es � GNOME correctement.

Lors de la cr�ation des ports GNOME, rappelez-vous que de nombreuses applications ont besoin de r�pertoires partag�s dans ${PREFIX}/share/gnome. Les ports doivent �tre construits de telle mani�re que les fichiers plac�s dans ces r�pertoires soient supprim�s avant le paquetage qui a cr�� les r�pertoires (i.e. le paquetage a une instruction @dirrm appropri�e dans le fichier pkg-plist). Pour GNOME, le port parent principal est gnomecore. Si votre port inclu USE_GNOME= yes, tout devrait �tre correct. Si vous n'�tes pas certain d'avoir besoin d'autres paquetages, vous pouvez utiliser le script ${PORTSDIR}/Tools/scripts/gnomedepends.py afin d'examiner le fichier pkg-plist de votre port :

# cd /usr/ports/x11/mygnomeport
# /usr/ports/Tools/scripts/gnomedepends.py
According to the contents of pkg-plist the port depends on the following GNOME
port(s):

/usr/ports/mail/gmail, for directories:
	share/gnome/help
	share/gnome/apps
	share/gnome

/usr/ports/sysutils/gnomecontrolcenter, for directories:
	share/gnome/apps/Settings
	share/gnome/apps

/usr/ports/textproc/scrollkeeper, for directories:
	share/gnome/omf
	share/gnome

/usr/ports/x11/gnomecore, for directories:
	share/gnome/apps/System

/usr/ports/x11/gnomelibs, for directories:
	share/gnome/pixmaps
	share/gnome/help
          

Pour voir la liste des paquetages indiqu�s comme n�cessaire par votre port, utilisez la commande make package-depends.

Internationalisation de GNOME

GNOME s'appuie sur le port gettext pour l'internationalisation (I18N). FreeBSD supporte actuellement deux versions de gettext : la 0.10.35 et la 0.11.1. La plupart des ports peuvent utiliser la 0.11.1. Cependant, si lors de la compilation de votre port, vous avez une erreur avec les fichiers de traduction .po, vous pouvez avoir besoin d'utiliser la version plus ancienne de gettext.

Pour utiliser cette version plus ancienne de gettext, ajoutez les lignes suivantes dans le Makefile de votre port :

BUILD_DEPENDS=  msgfmt-old:${PORTSDIR}/devel/gettext-old
CONFIGURE_ENV+= MSGFMT=${LOCALBASE}/bin/msgfmt-old \
	XGETTEXT=${LOCALBASE}/bin/xgettext-old
	  

Lors de l'installation des applications GNOME, assurez-vous que les fichiers de traduction sont plac�s dans /usr/X11R6/share/locale et non pas dans /usr/X11R6/share/gnome/locale. Pour ce faire, ajoutez les lignes suivantes dans la section pre-patch: du Makefile de votre port :

pre-patch:
	@find ${WRKSRC} -name "Makefile.in*" | xargs ${PERL} -pi -e \
		's|\$\(datadir\)/gnome/|\$\(datadir\)/|g ; \
		 s|\$\(datadir\)/locale|\$\(prefix\)/share/locale|g'
          

Assurez-vous �galement que les fichiers de traduction sont install�s avec l'extension .mo et non pas avec l'extension .gmo. Pour cela, vous pouvez habituellement utiliser ce patch.

Probl�mes li�s � Libtool

La plupart si ce n'est toutes les applications GNOME d�pendent de la libtool de GNU. Elles utilisent �galement le syst�me "configure" de GNU. Les derni�res versions de libtool ont un probl�me la macro USE_LIBTOOL de FreeBSD. L'utilisation de cette macro est d�conseill�e. A la place, positionnez GNU_CONFIGURE= yes, et utilisez ce patch. Il emp�che l'installation des fichiers .la, emp�che la compilation et l'installation des librairies statiques au format archive et permet de s'assurer que l'option -pthread est pass� � l'�diteur de lien.

Fichiers sources

A mesure que GNOME 2.0 gagne en popularit�, nous devons faire le tri entre les fichiers sources de GNOME 2.0 et ceux de GNOME 1.0 ainsi que faire notre possible pour conserver un classement correct des fichiers sources dans le r�pertoire "distfiles". Pour ce faire, les ports de GNOME 1.0 qui t�l�chargent leurs fichiers sources depuis le serveur ${MASTER_SITE_GNOME} doivent ajouter la ligne suivante au fichier Makefile :

DIST_SUBDIR=    gnome
      

Les ports de GNOME 2.0 qui t�l�chargent leurs fichiers sources depuis le serveur ${MASTER_SITE_GNOME} doivent ajouter la ligne suivante au fichier Makefile :

DIST_SUBDIR=    gnome2
	  

Plusieurs des fichiers sources GNOME sont disponibles aux formats tar gzip et tar bzip2. Pour �conomiser du temps de t�l�chargement sur les lignes � faible d�bit, utilisez les fichiers sources bzip2 � chaque fois que possible. Pour cela, ajoutez la ligne suivante au fichier Makefile du port :

USE_BZIP2=  yes
	  

Si vous avez malgr� tout besoin d'aide pour votre port, prenez exemple sur les ports existant. La liste de diffusion freebsd-gnome est �galement l� pour vous aider.