404 lines
17 KiB
Text
Executable file
404 lines
17 KiB
Text
Executable file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
|
|
<!ENTITY base CDATA "../..">
|
|
<!ENTITY date "$FreeBSD$">
|
|
<!ENTITY title "Proyecto FreeBSD GNOME: Como Crear Un Port">
|
|
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
|
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
|
]>
|
|
<html>
|
|
&header;
|
|
<table border="0">
|
|
<tr>
|
|
<td>
|
|
<p>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
|
|
<a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html">FreeBSD Porter's Handbook</a>.
|
|
</p>
|
|
|
|
<h2>Macros del Makefile en GNOME</h2>
|
|
<p>Recientemente, 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 <b>GNOMENG</b>. 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.</p>
|
|
|
|
<p>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 <tt>DEPENDS</tt> de <tt>BUILD_</tt>,
|
|
<tt>RUN_</tt> y <tt>LIB_</tt>. Los ports de GNOME 2 también
|
|
pueden beneficiarse con algunas opciones de GNOMENG, tal como
|
|
<tt>gnomehack</tt>, <tt>gnomeprefix</tt>, y <tt>gnomehier</tt>.</p>
|
|
|
|
<p>En GNOMENG, la lista de componentes de GNOME que requiere su port,
|
|
son añadidos de la siguiente manera, en su fichero
|
|
<tt>Makefile</tt>:</p>
|
|
|
|
<pre>
|
|
USE_X_PREFIX= yes
|
|
USE_GNOMENG= yes
|
|
USE_GNOME= <lista de componentes GNOME>
|
|
</pre>
|
|
|
|
<p>La lista de componentes GNOME, consiste en una o más de
|
|
las siguientes opciones, cada una separada por un espacio:</p>
|
|
|
|
<!-- Begin GNOMENG components list -->
|
|
<ul>
|
|
<li><p><tt>gnomehack</tt> : Esta es una colección de
|
|
substitutos comunes para el Makefile de GNOME que es
|
|
requerido por casi todo port de GNOME, para efecto de que
|
|
se ajuste de forma adecuada a la estructura del
|
|
árbol. Para una lista específica, favor de
|
|
referirse a <tt>${PORTSDIR}/Mk/bsd.gnome.mk</tt>.
|
|
<b>Nota</b>: Al incluir esta opción, se
|
|
añade un <tt>pre-patch</tt> al Makefile, por lo
|
|
tanto, si usted ya cuenta con un <tt>pre-patch</tt> en su
|
|
Makefile, deberá cambiarlo por <tt>post-patch</tt>.
|
|
</p></li>
|
|
|
|
<li><p><tt>gnomeprefix</tt> : Esta es una colección de
|
|
<tt>CONFIGURE_ARGS</tt> necesarios por cada port de GNOME
|
|
que debe contar con su información bajo la
|
|
jerarquía de GNOME. También incluye algunos
|
|
argumentos útiles que permiten que los ports de
|
|
GNOME se compilen ante la presencia de gtk-doc, y mantengan
|
|
a <tt>PREFIX</tt> a salvo.</p></li>
|
|
|
|
<li><p><tt>gnomehier</tt> : Esto añade una dependencia a
|
|
<tt>misc/gnomehier</tt>. <tt>gnomehier</tt> instala todos
|
|
los directorios necesarios tanto para GNOME 1 como para
|
|
GNOME 2. Solamente incluya esta opción si su port
|
|
ejecuta <tt>@dirrm</tt> en alguno de los directorios que
|
|
aparecen listados en plist, para <tt>gnomehier</tt>.</p></li>
|
|
|
|
<li><p><tt>gnomeaudio</tt> : Esto añade una dependencia a
|
|
<tt>audio/gnomeaudio</tt>.</p></li>
|
|
|
|
<li><p><tt>esound</tt> : Esto añade una dependencia a
|
|
<tt>audio/esound</tt> (reemplaza a <tt>USE_ESOUND</tt>).</p></li>
|
|
|
|
<li><p><tt>libghttp</tt> : Esto añade una dependencia a
|
|
<tt>www/libghttp</tt>.</p></li>
|
|
|
|
<li><p><tt>glib12</tt> : Esto añade una dependencia a
|
|
<tt>devel/glib12</tt> (reemplaza a <tt>USE_GLIB</tt>).</p></li>
|
|
|
|
<li><p><tt>gtk12</tt> : Esto añade una dependencia a
|
|
<tt>x11-toolkits/gtk12</tt> (reemplaza a <tt>USE_GTK</tt>).<br>
|
|
<i>Implica el uso de</i>: <tt>glib12</tt></p></li>
|
|
|
|
<li><p><tt>libxml</tt> : Esto añade una dependencia a
|
|
<tt>textproc/libxml</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>glib12</tt></p></li>
|
|
|
|
<li><p><tt>gdkpixbuf</tt> : Esto añade una dependencia a
|
|
<tt>graphics/gdk-pixbuf</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gtk12</tt></p></li>
|
|
|
|
<li><p><tt>imlib</tt> : Esto añade una dependencia a
|
|
<tt>graphics/imlib</tt> (reemplaza a <tt>USE_IMLIB</tt>).<br>
|
|
<i>Implica el uso de</i>: <tt>gtk12</tt></p></li>
|
|
|
|
<li><p><tt>orbit</tt> : Esto añade una dependencia a
|
|
<tt>devel/ORBit</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>glib12</tt></p></li>
|
|
|
|
<li><p><tt>gnomelibs</tt> : Esto añade una dependencia a
|
|
<tt>x11/gnomelibs</tt> (reemplaza a <tt>USE_GNOMELIBS</tt>).<br>
|
|
<i>Implica el uso de</i>: <tt>esound</tt> <tt>imlib</tt> <tt>libxml</tt>
|
|
<tt>orbit</tt></p></li>
|
|
|
|
<li><p><tt>gnomecanvas</tt> : Esto añade una dependencia a
|
|
<tt>graphics/gnomecanvas</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomelibs</tt> <tt>gdkpixbuf</tt></p></li>
|
|
|
|
<li><p><tt>oaf</tt> : Esto añade una dependencia a
|
|
<tt>devel/oaf</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>orbit</tt> <tt>libxml</tt></p></li>
|
|
|
|
<li><p><tt>gnomemimedata</tt> : Esto añade una dependencia a
|
|
<tt>misc/gnomemimedata</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomehier</tt></p></li>
|
|
|
|
<li><p><tt>gconf</tt> : Esto añade una dependencia a
|
|
<tt>devel/gconf</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>oaf</tt></p></li>
|
|
|
|
<li><p><tt>gnomevfs</tt> : Esto añade una dependencia a
|
|
<tt>devel/gnomevfs</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomemimedata</tt> <tt>gconf</tt>
|
|
<tt>gnomelibs</tt></p></li>
|
|
|
|
<li><p><tt>libcapplet</tt> : Esto añade una dependencia a
|
|
<tt>x11/libcapplet</tt> (reemplaza a <tt>USE_GNOMECTRL</tt>).
|
|
Si su port instala un applet de configuración (o capplet),
|
|
deberá incluir esta opción.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomelibs</tt></p></li>
|
|
|
|
<li><p><tt>gnomeprint</tt> : Esto añade una dependencia a
|
|
<tt>print/gnomeprint</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomelibs</tt> <tt>gnomecanvas</tt></p></li>
|
|
|
|
<li><p><tt>bonobo</tt> : Esto añade una dependencia a
|
|
<tt>devel/bonobo</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>oaf</tt> <tt>gnomeprint</tt></p></li>
|
|
|
|
<li><p><tt>libgda</tt> : Esto añade una dependencia a
|
|
<tt>databases/libgda</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gconf</tt> <tt>bonobo</tt></p></li>
|
|
|
|
<li><p><tt>gnomedb</tt> : Esto añade una dependencia a
|
|
<tt>databases/gnomedb</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>libgda</tt></p></li>
|
|
|
|
<li><p><tt>libglade</tt> : Esto añade una dependencia a
|
|
<tt>devel/libglade</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomedb</tt></p></li>
|
|
|
|
<li><p><tt>gal</tt> : Esto añade una dependencia a
|
|
<tt>x11-toolkits/gal</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>libglade</tt></p></li>
|
|
|
|
<li><p><tt>glibwww</tt> : Esto añade una dependencia a
|
|
<tt>www/glibwww</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomelibs</tt></p></li>
|
|
|
|
<li><p><tt>gtkhtml</tt> : Esto añade una dependencia a
|
|
<tt>www/gtkhtml</tt>.<br>
|
|
<i>Implica el uso de</i>: <tt>glibwww</tt> <tt>gal</tt> <tt>libghttp</tt>
|
|
<tt>libcapplet</tt></p></li>
|
|
|
|
<li><p><tt>libpanel</tt> : Esto añade una dependencia a
|
|
<tt>x11/libpanel</tt>. Use esta, si su port instala un applet
|
|
que puede colocarse en el panel de GNOME 1. <b>Note:</b>
|
|
Aún cuando puede contar con applets de GNOME 1, bajo
|
|
GNOME 2, estos <b>no</b> trabajaran con el panel de GNOME 2.<br>
|
|
<i>Implica el uso de</i>: <tt>gnomelibs</tt></p></li>
|
|
</ul>
|
|
|
|
<p>Vamos haciendo un ejemplo:</p>
|
|
|
|
<pre>
|
|
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
|
|
</pre>
|
|
|
|
<p>Este port hace uso de la nueva infraestructura de GNOMENG. Ejecuta
|
|
la instalación bajo el árbol de GNOME, y hace uso de
|
|
<tt>gnomehack</tt> para eliminar algunos linuxismos comunes del
|
|
fichero Makefile. Tomando en cuenta que hace uso de <tt>gnomehack</tt>,
|
|
la configuración de <tt>pre-install</tt> ha sido cambiada a
|
|
<tt>post-install</tt>. Si esto no se hace, entonces la
|
|
configuración <tt>pre-install</tt> será sobreescrita
|
|
por <tt>gnomehack</tt>. Este port también requiere de gnomelibs,
|
|
bonobo, libglade, and gal.
|
|
</p>
|
|
|
|
<p>Si su port puede hacer uso opcional de GNOME, deberá incluir
|
|
la opción <tt>WANT_GNOME=yes</tt> en su fichero Makefile, y
|
|
despues verificar si <tt>HAVE_GNOME</tt> 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 <tt>bsd.port.pre.mk</tt> y
|
|
<tt>bsd.port.post.mk</tt>. Por ejemplo:</p>
|
|
|
|
<pre>
|
|
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>
|
|
</pre>
|
|
|
|
<p>Aqui, <tt>WANT_GNOME</tt> 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
|
|
<tt>HAVE_GNOME</tt>. En virtud de que este port puede usar
|
|
<tt>libpanel</tt>, verificamos <tt>HAVE_GNOME</tt> para ver si
|
|
contiene <tt>libpanel</tt> (para más información
|
|
sobre el <tt>patrón</tt> :M y sintaxis de make, por favor
|
|
refierase a la página de ayuda
|
|
<a href="http://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+4.6-stable&format=html">make(1)</a>).
|
|
Si se localiza a <tt>libpanel</tt>, entonces es incluida a la
|
|
lista de dependencias en <tt>USE_GNOME</tt>, y los argumentos
|
|
<tt>CONFIGURE_ARGS</tt> específicos del port
|
|
<tt>--with-gnome</tt> son pasados. En la anterior
|
|
infraestructura de GNOME, <tt>PKGNAMESUFFIX</tt> se ajustaba
|
|
automaticamente, de acuerdo al correcto uso del macro
|
|
<tt>USE_*</tt>. En GNOMENG, esto depende de cada responsable
|
|
de cada port decidirlo. En nuestro port de ejemplo, incluye
|
|
la opción <tt>-gnome</tt> al nombre del port, para
|
|
indicar que se ha compilado con soporte para GNOME. Lo mismo
|
|
es válido para <tt>DATADIR</tt> y <tt>PLIST_SUB</tt>.
|
|
En GNOMENG, el desarrollador del port debe decidir cuando
|
|
hacer la sustitución de <tt>DATADIR</tt>. Una buena
|
|
regla a seguir ("del pulgar"); es incluir <tt>DATADIR</tt>
|
|
<tt>PLIST_SUB</tt>, cuando se haga uso del componente
|
|
<tt>gnomeprefix</tt>.
|
|
</p>
|
|
|
|
<p><b>Nota:</b> No es posible añadir componentes adicionales
|
|
del tipo <tt>USE_GNOME</tt>, después de
|
|
<tt>.inlcude <bsd.port.pre.mk></tt>. Esto quiere decir
|
|
que, lo siguiente es un <font color="#FF0000"><b>error</b>
|
|
</font>:</p>
|
|
|
|
<pre>
|
|
.include <bsd.port.pre.mk>
|
|
|
|
.if ${HAVE_GNOME:Mgnomelibs}!=""
|
|
USE_GNOME+= gnomelibs
|
|
.else
|
|
USE_GNOME+= gtk12 # ERROR!
|
|
.endif
|
|
</pre>
|
|
|
|
<p>Lo anterior hara que GNOMENG piense que GNOME <em>es</em> deseado,
|
|
marcaráa el <tt>pkg-plist</tt> de acuerdo a esto, y por
|
|
tanto ocasionando un error en la compilación del paquete.
|
|
Si necesita añadir componentes de tipo <tt>USE_GNOME</tt>,
|
|
incluyalos <b>sobre</b> la línea
|
|
<tt>.include <bsd.port.pre.mk></tt>.</p>
|
|
|
|
<p>Para efecto de forzar el uso incondicional de dependencias
|
|
opcinales de GNOME, puede añadir <tt>WITH_GNOME=yes</tt>
|
|
al fichero <tt>/etc/make.conf</tt>, o bien al momento de ejecutar
|
|
<tt>make</tt> 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 <tt>WITHOUT_GNOME=yes</tt> al
|
|
fichero <tt>/etc/make.conf</tt> o bien desde la línea
|
|
de comandos.</p>
|
|
|
|
<p>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 <tt>make package-depends</tt>, desde el
|
|
directorio del port.</p>
|
|
|
|
<p>Puede obtenere más información sobre GNOMENG,
|
|
mirando el fichero fuente y sus comentarios, en
|
|
<tt>${PORTSDIR}/Mk/bsd.gnomeng.mk</tt>.</p>
|
|
|
|
<p><b>Nota:</b> 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 <tt>USE_GNOMENG</tt>,
|
|
serán removidos.</p>
|
|
|
|
<p>La anterior infraestructura usaba los siguientes macros de
|
|
Makefile, para compilar ports de GNOME o GTK+:</p>
|
|
|
|
<pre>
|
|
USE_ESOUND
|
|
USE_GLIB
|
|
USE_GNOMECTRL
|
|
USE_GNOMELIBS
|
|
USE_GTK
|
|
USE_IMLIB
|
|
|
|
WANT_ESOUND
|
|
WANT_GLIB
|
|
WANT_GNOMECTRL
|
|
WANT_GNOMELIBS
|
|
WANT_GTK
|
|
WANT_IMLIB
|
|
</pre>
|
|
|
|
<p>Ahora estos son obsoletos.</p>
|
|
<!-- End GNOME-related Makefile macros -->
|
|
|
|
<!-- Begin GNOME libtool -->
|
|
<h2>Cuestiones de Libtool</h2>
|
|
|
|
<p>La 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
|
|
<tt>USE_LIBTOOL= yes</tt> 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 <tt>configure</tt> justo debajo de la
|
|
línea <tt>LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"</tt>:</p>
|
|
|
|
<pre>
|
|
$ac_aux_dir/ltconfig $LIBTOOL_DEPS
|
|
</pre>
|
|
|
|
<p>Esto previene la instalació de ficheros .la y se
|
|
asegura que <tt>${PTHREAD_LIBS}</tt> se pasará
|
|
correctamente al enlazador (linker).</p>
|
|
<!-- End GNOME libtool -->
|
|
|
|
<!-- Begin GNOME distfiles -->
|
|
<h2>Distfiles</h2>
|
|
|
|
<p>Para 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
|
|
<tt>${MASTER_SITE_GNOME}</tt> deberán añadir a su
|
|
Makefile lo siguiente:</p>
|
|
|
|
<pre>
|
|
DIST_SUBDIR= gnome
|
|
</pre>
|
|
|
|
<p>Los ports de GNOME 2 que descarguen sus distfiles desde
|
|
<tt>${MASTER_SITE_GNOME}</tt> deberán inlcuir lo siguiente
|
|
en el fichero Makefile:</p>
|
|
|
|
<pre>
|
|
DIST_SUBDIR= gnome2
|
|
</pre>
|
|
|
|
<p>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:</p>
|
|
|
|
<pre>
|
|
USE_BZIP2= yes
|
|
</pre>
|
|
|
|
<!-- End GNOME distfiles -->
|
|
|
|
|
|
<p>Si aun necesita ayuda con su port, vea algunos de los
|
|
<a href="/ports/gnome.html">ports existentes</a> de ejemplos.
|
|
También puede contar con la <a
|
|
href="mailto:&email;@FreeBSD.org">lista de correo de freebsd-gnome
|
|
</a> para cualquier apoyo.</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|