%navincludes; %gnomeincludes; %includes; ]> &header;
El presente documento asume que usted ya tiene conocimiento de la forma de trabajar del sistema de ports, y por lo tanto solo provee de algunos consejos específicos sobre GNOME. Las instrucciones generales pueden encontrarse en el manual FreeBSD Porter's Handbook.
Las aplicaciones de GNOME bajo FreeBSD utilizan la infraestructura USE_GNOME. Para indicar qué componentes de GNOME son necesarios para que su port compile; simplemente lístelos con un espacio de separación. Por ejemplo:
USE_X_PREFIX= yes
USE_GNOME= gnomeprefix gnomehack libgnomeui
Los componentes de USE_GNOME son divididos en las siguientes dos listas:
Si su port, solamente necesita las librerías de GTK2, la siguiente forma es la más sencilla de definir esto:
USE_X_PREFIX= yes
USE_GNOME= gtk20
Si su port, solamente necesita las librerías de GTK1, la siguiente forma es la más sencilla de definirlo:
USE_X_PREFIX= yes
USE_GNOME= gtk12
Aún en el caso de que su port, solamente necesite las librerías GTK, algunos otros componentes de USE_GNOME le pueden ser de utilidad. Por favor vea la lista completa, para asegurarse que su port cuenta con todos los componentes necesarios.
Una vez que haya terminado con su port, es recomendable verificar que la lista de componentes de los cuales depende su port sea la correcta. Para ver una lista completa de los paquetes que su port requiere, puede ejecutar el comando make package-depends desde el directorio de su port.
Para apoyarse en la creación de la lista de componentes necesarios, puede ser de utilidad examinar el resultado del comando make configure. Al final de dicha salida, verá una línea con checking for..., y una lista similar a la siguiente:
checking for libgnomeui-2.0 >= 2.0.0 cspi-1.0 >= 1.1.7 libspi-1.0 >= 1.1.7 libbonobo-2.0 >= 2.0.0 atk >= 1.0.0 gtk+-2.0 >= 2.0.0 gail libwnck-1.0 esound... yes
Esta es una lista de los componentes de los cuales depende su aplicación para poder compilar. Preste atención a la jerarquización del sistema USE_GNOME; muchos componentes pueden estar implicados por las directivas de USE_GNOME. En el ejemplo anterior USE_GNOME= libgnomeui, implica el uso de libbonoboui, lo cual implica el uso de libgnomecanvas, que a su vez implica el uso de libglade2, el cual implica a gtk20. Por lo que, aún cuando gtk+-2.0 aparece en la lista de componentes necesarios, gtk20 puede ser eliminado de la lista de USE_GNOME. Existe cierto número de redundancias similares que pueden ser eliminadas de la lista.
Para la lista anterior (tomado de sysutils/gok), lo siguiente es definido en el fichero Makefile:
USE_GNOME= gnomehack gnomeprefix libgnomeui atspi libwnck
En el principio, solo era GNOME 1. Cuando surgió el escritorio GNOME 2, se buscó asegurar la máxima compatibilidad con el pasado. Buscando que las aplicaciones de GNOME 1 se ejecuten correctamente bajo GNOME 2, considerando que las aplicaciones no hagan uso de funcionalidades específicas del entorno de GNOME 1.
El escritorio GNOME 1, y todas las aplicaciones que no se ejecutan correctamente bajo GNOME 2, se han eliminado del árbol de ports.
Lo que esto significa para usted, como migrador de aplicaciones, simplemente es que; no debe añadir aplicaciones específicas de GNOME 1 al árbol de ports.
Si desea determinar que versión del escritorio GNOME tiene instalado un usuario en su maquina, puede verificar el valor de la variable GNOME_DESKTOP_VERSION. Este valor será de "1" o "2", dependiendo si se tiene instalado el escritorio GNOME 1 o GNOME 2 .
Si su ports puede usar GNOME opcionalmente, entonces deberá definir en el fichero Makefile WANT_GNOME= yes, y posteriormente verificar en todos los componentes que su port vaya a utilizar para ver si se cuenta con HAVE_GNOME. En virtud de que esta última declaración, es una evaluación condicional, deberá ser incluida entre la línea bsd.port.pre.mk y bsd.port.post.mk. Por ejemplo:
WANT_GNOME= yes
.include <bsd.port.pre.mk>
.if ${HAVE_GNOME:Mgnomepanel}!=""
USE_GNOME+= gnomeprefix gnomepanel
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>
En este caso, WANT_GNOME le indica al sistema de ports que debe checar la existencia de los componentes de GNOME listados. Para cada componente que se encuentre, su nombre será incluido en HAVE_GNOME. Dado que este port puede usar gnomepanel, utilizamos HAVE_GNOME para validar si contiene gnomepanel (para más información con respecto a la sintáxis del patrón de make :M, por favor consulte la página de ayuda make(1)) . Si se localiza gnomepanel, entonces es incluido en la lista de dependencias de USE_GNOME, y le son pasados argumentos de configuración específicos del port, del tipo --with-gnome a CONFIGURE_ARG. En la infraestructura del antiguo GNOME, PKGNAMESUFFIX se ajustaba automaticamente, con el uso apropiado del macro USE_*. Ahora esto depende de cada responsable del port. En nuestro port de ejemplo, se le incluye -gnome al nombre del port, para indicar que ha sido compilado con soporte para GNOME. Lo mismo aplica para DATADIR PLIST_SUB. El responsable del port deberá decidir cuando realizar la sustitución de DATADIR . Una buena referencia es incluir el DATADIR PLIST_SUB cuando se utilice el componente gnomeprefix.
Nota: Usted no puede incluir componentes extras en USE_GNOME después de la línea .include <bsd.port.pre.mk>. Por lo que, lo siguiente es incorrecto:
.include <bsd.port.pre.mk>
.if ${HAVE_GNOME:Mgnomelibs}!=""
USE_GNOME+= libgnome
.else
USE_GNOME+= gtk12 # !INCORRECTO!
.endif
Esto hará pensar al sistema que GNOME es deseado, y marcará el pkg-plist de acuerdo a esto, por lo que fallará la compilación. Si necesita incluir componentes adicionales a USE_GNOME, hagalo por arriba de la línea .include <bsd.port.pre.mk>.
Para forzar el uso opcional de dependencias incondicionales de GNOME, puede incluir en su fichero /etc/make.conf la línea WITH_GNOME= yes o bien directamente en la línea de comandos. Esto siempre dará un resultado verdadero cuando se verifique por dependencias opcionales de GNOME. Si desea que el sistema siempre dé un resultado de falso cuando se verifiquen las dependencias opcionales de GNOME, puede incluir la línea WITHOUT_GNOME= yes al fichero /etc/make.conf o bien hacerlo desde la línea de comandos.
Puede encontrar más información en el uso de la infraestructura USE_GNOME al mirar el código y los comentarios que se incluyen en ${PORTSDIR}/Mk/bsd.gnome.mk.
Gran cantidad de aplicaciones de GNOME (especialmente aplicaciones de GNOME 2) instalan ficheros de OMF (por las siglas en inglés; OpenSource Metadata Framework) que contienen la información de los ficheros de ayuda para dichas aplicaciones. Estos ficheros OMF requieren de un tratamiento especial por parte de ScrollKeeper para que aplicaciones como Yelp puedan localizar la documentación de ayuda. Para efecto de que se realice un registro exitoso de los ficheros OMF, al instalar aplicaciones de GNOME desde paquetes, deberá asegurarse que el pkg-plist de su port cuente con lo siguiente para cada fichero OMF listado.
@exec scrollkeeper-install -q \
%D/ruta/al/fichero/help_file.omf \
2>/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/ruta/al/fichero/help_file.omf \
2>/dev/null || /usr/bin/true
Por ejemplo:
@exec scrollkeeper-install -q \
%D/share/gnome/bug-buddy/bug-buddy-C.omf \
2>/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/share/gnome/bug-buddy/bug-buddy-C.omf \
2>/dev/null || /usr/bin/true
La mayoría (si no es que todas), de las aplicaciones de GNOME, dependen del programa de la GNU libtool. Así mismo utilizan el sistema de configuración de GNU. Si su port instala librerías compartidas, deberá añadir al fichero Makefile del port la línea USE_LIBTOOL= yes. Esto se encargará de cubrir casi todos los requisitos de libtool, pero no prevendrá cosas como la instalación de ficheros de tipo .la. Para asegurarse de una instalación exitosa de las librerías compartidas, también considere incluir la siguiente línea al script configure de su port, directamente abajo de la línea LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh":
$ac_aux_dir/ltconfig $LIBTOOL_DEPS
Esto previene la instalación misma del fichero .la y se asegura que la variable ${PTHREAD_LIBS} sea pasada correctamente el enlazador (linker).
Para separar los ficheros distfiles de GNOME 2 con los distfiles de GNOME 1, y para mantener el directorio distfiles lo más limpio posible, los ports de GNOME 1 que descarguen sus distfiles desde ${MASTER_SITE_GNOME} deberán incluir lo siguiente en el fichero Makefile:
DIST_SUBDIR= gnome
Los ports de GNOME 2 que descarguen los ficheros distfiles desde ${MASTER_SITE_GNOME} deberán incluir la siguiente línea en el fichero Makefile:
DIST_SUBDIR= gnome2
Algunos ficheros distfiles de GNOME se pueden encontrar comprimidos con formato tar gzip o bien como tar bzip2. Para ahorrar tiempo de descarga en enlaces lentos, deberá usar el formato bzip2 cuando le sea posible. Para hacer esto incluya la siguiente línea en el fichero Makefile de su port:
USE_BZIP2= yes
Si aún requiere de algo de ayuda con su port, vea alguno de los ports existentes como ejemplo. Además la lista de correo freebsd-gnome siempre está disponible para usted.
&footer;