%gnomeincludes; %includes; ]> &header;
|
El presente documento asume que usted ya conoce como fucniona el sistema de ports, y por lo tanto solamente se enfoca a tips y consejos específicos de GNOME. Instrucciones generales pueden localizarse en FreeBSD Porter's Handbook. Macros del Makefile en GNOMERecientemente, la infraestructura de ports de GNOME sufrió algunos cambios, de tal forma que las aplicaciones de GNOME 1 pudiesen coexistir con el escritorio GNOME 2 y viceversa. Esta nueva infraestructura es llamada GNOMENG. El equipo de GNOME esta trabajando para portar todas aquellas aplicaciones que usaban la anterior infraestructura a GNOMENG. Hasta este momento, casi todas las aplicaciones de GNOME 1 han sido portadas a GNOMENG. La mayor parte de esta sección es aplicable a los ports de GNOME 1. Los ports de GNOME 2, aun no se han integrado por completo a GNOMENG. De momento para esos ports, simplemente elimine las definiciones de DEPENDS de BUILD_, RUN_ y LIB_. Los ports de GNOME 2 también pueden beneficiarse con algunas opciones de GNOMENG, tal como gnomehack, gnomeprefix, y gnomehier. En GNOMENG, la lista de componentes de GNOME que requiere su port, son añadidos de la siguiente manera, en su fichero Makefile: USE_X_PREFIX= yes USE_GNOMENG= yes USE_GNOME= <lista de componentes GNOME> La lista de componentes GNOME, consiste en una o más de las siguientes opciones, cada una separada por un espacio:
Vamos haciendo un ejemplo:
USE_X_PREFIX= yes
USE_GNOMENG= yes
USE_GNOME= gnomeprefix gnomehack gnomelibs bonobo libglade gal
post-patch:
@${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|g ; \
s|DATADIRNAME=lib|DATADIRNAME=share|g' ${WRKSRC}/configure
Este port hace uso de la nueva infraestructura de GNOMENG. Ejecuta la instalación bajo el árbol de GNOME, y hace uso de gnomehack para eliminar algunos linuxismos comunes del fichero Makefile. Tomando en cuenta que hace uso de gnomehack, la configuración de pre-install ha sido cambiada a post-install. Si esto no se hace, entonces la configuración pre-install será sobreescrita por gnomehack. Este port también requiere de gnomelibs, bonobo, libglade, and gal. Si su port puede hacer uso opcional de GNOME, deberá incluir la opción WANT_GNOME=yes en su fichero Makefile, y despues verificar si HAVE_GNOME esta declarado en alguno de los componentes listados anteriormente que usará su port. En virtud de que es una condicionante de evaluación, la misma deberá ser incluida entre bsd.port.pre.mk y bsd.port.post.mk. Por ejemplo:
WANT_GNOME= yes
.include <bsd.port.pre.mk>
.if ${HAVE_GNOME:Mlibpanel}!=""
USE_GNOME+= gnomeprefix libpanel
CONFIGURE_ARGS+= --with-gnome
PKGNAMESUFFIX= -gnome
PLIST_SUB= DATADIR="share/gnome"
.else
CONFIGURE_ARGS+= --without-gnome
PLIST_SUB= DATADIR="share"
.endif
.include <bsd.port.post.mk>
Aqui, WANT_GNOME le indica al sistema de ports, que verifique la existencia de los componentes de GNOME listados. Para cada componente encontrado, su nombre es incluido a HAVE_GNOME. En virtud de que este port puede usar libpanel, verificamos HAVE_GNOME para ver si contiene libpanel (para más información sobre el patrón :M y sintaxis de make, por favor refierase a la página de ayuda make(1)). Si se localiza a libpanel, entonces es incluida a la lista de dependencias en USE_GNOME, y los argumentos CONFIGURE_ARGS específicos del port --with-gnome son pasados. En la anterior infraestructura de GNOME, PKGNAMESUFFIX se ajustaba automaticamente, de acuerdo al correcto uso del macro USE_*. En GNOMENG, esto depende de cada responsable de cada port decidirlo. En nuestro port de ejemplo, incluye la opción -gnome al nombre del port, para indicar que se ha compilado con soporte para GNOME. Lo mismo es válido para DATADIR y PLIST_SUB. En GNOMENG, el desarrollador del port debe decidir cuando hacer la sustitución de DATADIR. Una buena regla a seguir ("del pulgar"); es incluir DATADIR PLIST_SUB, cuando se haga uso del componente gnomeprefix. Nota: No es posible añadir componentes adicionales del tipo USE_GNOME, después de .inlcude <bsd.port.pre.mk>. Esto quiere decir que, lo siguiente es un error :
.include <bsd.port.pre.mk>
.if ${HAVE_GNOME:Mgnomelibs}!=""
USE_GNOME+= gnomelibs
.else
USE_GNOME+= gtk12 # ERROR!
.endif
Lo anterior hara que GNOMENG piense que GNOME es deseado, marcaráa el pkg-plist de acuerdo a esto, y por tanto ocasionando un error en la compilación del paquete. Si necesita añadir componentes de tipo USE_GNOME, incluyalos sobre la línea .include <bsd.port.pre.mk>. Para efecto de forzar el uso incondicional de dependencias opcinales de GNOME, puede añadir WITH_GNOME=yes al fichero /etc/make.conf, o bien al momento de ejecutar make desde la línea de comandos. Esto hara que GNOMENG siempre regrese un valor verdadero, cuando se verifique para dependencias opcionales de GNOME. Si desea que GNOMENG siempre de un valor falso cuando se validen dependencias opcionales de GNOME, puede añadir WITHOUT_GNOME=yes al fichero /etc/make.conf o bien desde la línea de comandos. Una vez que ha terminado su port, es buena idea verificar que la lista de componentes dependientes de su port, sean los correctos. Para ver una lista de los paquetes que su port va a requerir, use el comando make package-depends, desde el directorio del port. Puede obtenere más información sobre GNOMENG, mirando el fichero fuente y sus comentarios, en ${PORTSDIR}/Mk/bsd.gnomeng.mk. Nota: GNOMENG es temporal. Esto es que, fué diseñado para poder migrar gradualmente los ports de GNOME de la vieja estructura, a la nueva. Una vez que todos los ports hayan sido migrados, la anterior infraestructura de ports, así como el macro de USE_GNOMENG, serán removidos. La anterior infraestructura usaba los siguientes macros de Makefile, para compilar ports de GNOME o GTK+: USE_ESOUND USE_GLIB USE_GNOMECTRL USE_GNOMELIBS USE_GTK USE_IMLIB WANT_ESOUND WANT_GLIB WANT_GNOMECTRL WANT_GNOMELIBS WANT_GTK WANT_IMLIB Ahora estos son obsoletos. Cuestiones de LibtoolLa mayor parte de aplicaciones de GNOME, si no es que todas, dependen de libtool de la GNU. Estas también utilizan un sistema de configuración de GNU. Si su port instala librerías compartidas, deberá añadir USE_LIBTOOL= yes al fichero Makefile del port. Con esto es suficiente para cumplir con los requerimientos de libtool, pero no se encarga de cosas como la instalación de ficheros .la . Para asegurarse de una instalación adecuada de librerías compartidas, también es importante considerar incluir la siguiente línea al script configure justo debajo de la línea LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh": $ac_aux_dir/ltconfig $LIBTOOL_DEPS Esto previene la instalació de ficheros .la y se asegura que ${PTHREAD_LIBS} se pasará correctamente al enlazador (linker). DistfilesPara efecto de separar los distfiles de GNOME 2, de los distfiles de GNOME 1, y mantener limpio el directorio de distfiles, los ports de GNOME 1 que descarguen sus distfiles desde ${MASTER_SITE_GNOME} deberán añadir a su Makefile lo siguiente:
DIST_SUBDIR= gnome
Los ports de GNOME 2 que descarguen sus distfiles desde ${MASTER_SITE_GNOME} deberán inlcuir lo siguiente en el fichero Makefile: DIST_SUBDIR= gnome2 Algunos ficheros distfiles de GNOME pueden estar tanto en formato tar gzip o como tar bzip2. Para efecto de minimizar el tiempo de descarga, es recomendable usar los ficheros distfiles bzip2 cuando sea posible. Para hacer esto, incluya la siguiente línea en el Makefile de su port: USE_BZIP2= yes Si aun necesita ayuda con su port, vea algunos de los ports existentes de ejemplos. También puede contar con la lista de correo de freebsd-gnome para cualquier apoyo. |