Submitted by: Emily Boyd <emilyboyd@emilyboyd.com> Sponsored by: Google Summer of Code 2005
330 lines
14 KiB
Text
Executable file
330 lines
14 KiB
Text
Executable file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" [
|
|
<!ENTITY base CDATA "../..">
|
|
<!ENTITY date "$FreeBSD: www/es/gnome/docs/porting.sgml,v 1.3 2004/03/05 19:31:58 jesusr Exp $">
|
|
<!ENTITY title "Proyecto FreeBSD GNOME: Como Crear Un Port">
|
|
<!ENTITY % navincludes SYSTEM "../../includes.navdevelopers.sgml"> %navincludes;
|
|
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
|
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
|
]>
|
|
<html>
|
|
&header;
|
|
|
|
<p>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
|
|
<a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html">FreeBSD Porter's Handbook</a>.
|
|
</p>
|
|
|
|
<h2>Macros de Makefile de GNOME</h2>
|
|
<p>Las aplicaciones de GNOME bajo FreeBSD utilizan la
|
|
infraestructura <b>USE_GNOME</b>. Para indicar qué
|
|
componentes de GNOME son necesarios para que su port compile;
|
|
simplemente lístelos con un espacio de separación.
|
|
Por ejemplo:</p>
|
|
|
|
<pre>
|
|
USE_X_PREFIX= yes
|
|
USE_GNOME= gnomeprefix gnomehack libgnomeui
|
|
</pre>
|
|
|
|
|
|
<p>Los componentes de <b>USE_GNOME</b> son divididos en las
|
|
siguientes dos listas:</p>
|
|
|
|
<ul>
|
|
<li><p><a href="gnome2_porting.html">componentes de GNOME 2</a></p></li>
|
|
<li><p><a href="gnome_porting.html">componentes de GNOME 1</a></p></li>
|
|
</ul>
|
|
|
|
<!-- I'm not sold on the utility of this section -->
|
|
<p>Si su port, solamente necesita las librerías de
|
|
<b>GTK2</b>, la siguiente forma es la más sencilla de
|
|
definir esto:</p>
|
|
|
|
<pre>
|
|
USE_X_PREFIX= yes
|
|
USE_GNOME= gtk20
|
|
</pre>
|
|
|
|
<p>Si su port, solamente necesita las librerías de
|
|
<b>GTK1</b>, la siguiente forma es la más sencilla de
|
|
definirlo:</p>
|
|
|
|
<pre>
|
|
USE_X_PREFIX= yes
|
|
USE_GNOME= gtk12
|
|
</pre>
|
|
|
|
<p>Aún en el caso de que su port, solamente necesite las
|
|
librerías GTK, algunos otros componentes de
|
|
<b>USE_GNOME</b> le pueden ser de utilidad. Por favor vea la
|
|
lista completa, para asegurarse que su port cuenta con todos
|
|
los componentes necesarios.</p>
|
|
<!-- end questionable section -->
|
|
|
|
<p>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
|
|
<tt>make package-depends</tt> desde el directorio de su port.</p>
|
|
|
|
<p>Para apoyarse en la creación de la lista de componentes
|
|
necesarios, puede ser de utilidad examinar el resultado del
|
|
comando <tt>make configure</tt>. Al final de dicha salida,
|
|
verá una línea con <tt>checking for...</tt>, y una
|
|
lista similar a la siguiente:</p>
|
|
|
|
<pre>
|
|
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
|
|
</pre>
|
|
|
|
<p>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 <b>USE_GNOME</b>; muchos
|
|
componentes pueden estar implicados por las directivas de
|
|
<b>USE_GNOME</b>. En el ejemplo anterior
|
|
<tt>USE_GNOME= libgnomeui</tt>, implica el uso de
|
|
<tt>libbonoboui</tt>, lo cual implica el uso de
|
|
<tt>libgnomecanvas</tt>, que a su vez implica el uso de
|
|
<tt>libglade2</tt>, el cual implica a <tt>gtk20</tt>. Por lo
|
|
que, aún cuando <tt>gtk+-2.0</tt> aparece en la lista de
|
|
componentes necesarios, <tt>gtk20</tt> puede ser eliminado de la
|
|
lista de <b>USE_GNOME</b>. Existe cierto número de
|
|
redundancias similares que pueden ser eliminadas de la lista.</p>
|
|
|
|
<p>Para la lista anterior (tomado de <tt>sysutils/gok</tt>), lo
|
|
siguiente es definido en el fichero <tt>Makefile</tt>:
|
|
|
|
<pre>
|
|
USE_GNOME= gnomehack gnomeprefix libgnomeui atspi libwnck
|
|
</pre>
|
|
|
|
<h2>Escritorio GNOME 1 vs. Escritorio GNOME 2</h2>
|
|
<p>En el principio, solo era <tt>GNOME 1</tt>. Cuando
|
|
surgió el escritorio <tt>GNOME 2</tt>, se buscó
|
|
asegurar la máxima compatibilidad con el pasado. Buscando
|
|
que las aplicaciones de <tt>GNOME 1</tt> se ejecuten
|
|
correctamente bajo <tt>GNOME 2</tt>, considerando que las
|
|
aplicaciones no hagan uso de funcionalidades específicas
|
|
del entorno de <tt>GNOME 1</tt>.</p>
|
|
|
|
<p>El escritorio <tt>GNOME 1</tt>, y todas las aplicaciones que no
|
|
se ejecutan correctamente bajo <tt>GNOME 2</tt>, se han eliminado
|
|
del árbol de ports.</p>
|
|
|
|
<p>Lo que esto significa para usted, como migrador de aplicaciones,
|
|
simplemente es que; no debe añadir aplicaciones
|
|
específicas de <tt>GNOME 1</tt> al árbol de ports.
|
|
</p>
|
|
|
|
<p>Si desea determinar que versión del escritorio GNOME
|
|
tiene instalado un usuario en su maquina, puede verificar el
|
|
valor de la variable <b>GNOME_DESKTOP_VERSION</b>. Este valor
|
|
será de <tt>"1"</tt> o <tt>"2"</tt>, dependiendo si se
|
|
tiene instalado el escritorio <tt>GNOME 1</tt> o <tt>GNOME 2</tt>
|
|
.</p>
|
|
|
|
<h2>Dependencias Opcionales en GNOME</h2>
|
|
<p>Si su ports puede usar GNOME opcionalmente, entonces
|
|
deberá definir en el fichero Makefile
|
|
<tt>WANT_GNOME= yes</tt>, y posteriormente verificar en todos los
|
|
componentes que su port vaya a utilizar para ver si se cuenta con
|
|
<tt>HAVE_GNOME</tt>. En virtud de que esta última
|
|
declaración, es una evaluación condicional,
|
|
deberá ser incluida entre la línea
|
|
<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: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>
|
|
</pre>
|
|
|
|
<p>En este caso, <tt>WANT_GNOME</tt> 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 <tt>HAVE_GNOME</tt>. Dado que este port
|
|
puede usar <tt>gnomepanel</tt>, utilizamos <tt>HAVE_GNOME</tt>
|
|
para validar si contiene <tt>gnomepanel</tt> (para más
|
|
información con respecto a la sintáxis del
|
|
<tt>patrón</tt> de make <b>:M</b>, por favor consulte 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 <tt>gnomepanel</tt>, entonces es incluido en la
|
|
lista de dependencias de <tt>USE_GNOME</tt>, y le son pasados
|
|
argumentos de configuración específicos del port,
|
|
del tipo <tt>--with-gnome</tt> a <tt>CONFIGURE_ARG</tt>. En la
|
|
infraestructura del antiguo GNOME, <tt>PKGNAMESUFFIX</tt> se
|
|
ajustaba automaticamente, con el uso apropiado del macro
|
|
<tt>USE_*</tt>. Ahora esto depende de cada responsable del port.
|
|
En nuestro port de ejemplo, se le incluye <tt>-gnome</tt> al
|
|
nombre del port, para indicar que ha sido compilado con soporte
|
|
para GNOME. Lo mismo aplica para <tt>DATADIR</tt>
|
|
<tt>PLIST_SUB</tt>. El responsable del port deberá
|
|
decidir cuando realizar la sustitución de <tt>DATADIR</tt>
|
|
. Una buena referencia es incluir el <tt>DATADIR</tt>
|
|
<tt>PLIST_SUB</tt> cuando se utilice el componente
|
|
<tt>gnomeprefix</tt>.</p>
|
|
|
|
<p><b>Nota:</b> Usted no puede incluir componentes extras en
|
|
<tt>USE_GNOME</tt> después de la línea
|
|
<tt>.include <bsd.port.pre.mk></tt>. Por lo que, lo
|
|
siguiente es <font color="#FF0000"><b>incorrecto</b></font>:</p>
|
|
|
|
<pre>
|
|
.include <bsd.port.pre.mk>
|
|
|
|
.if ${HAVE_GNOME:Mgnomelibs}!=""
|
|
USE_GNOME+= libgnome
|
|
.else
|
|
USE_GNOME+= gtk12 # !INCORRECTO!
|
|
.endif
|
|
</pre>
|
|
|
|
<p>Esto hará pensar al sistema que GNOME <em>es</em> deseado,
|
|
y marcará el <tt>pkg-plist</tt> de acuerdo a esto, por lo
|
|
que fallará la compilación. Si necesita incluir
|
|
componentes adicionales a <tt>USE_GNOME</tt>, hagalo por
|
|
<b>arriba</b> de la línea
|
|
<tt>.include <bsd.port.pre.mk></tt>.</p>
|
|
|
|
<p>Para forzar el uso opcional de dependencias incondicionales de
|
|
GNOME, puede incluir en su fichero <tt>/etc/make.conf</tt> la
|
|
línea <tt>WITH_GNOME= yes</tt> 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 <tt>WITHOUT_GNOME= yes</tt> al
|
|
fichero <tt>/etc/make.conf</tt> o bien hacerlo desde la
|
|
línea de comandos.</p>
|
|
|
|
<p>Puede encontrar más información en el uso de la
|
|
infraestructura <b>USE_GNOME</b> al mirar el código y los
|
|
comentarios que se incluyen en
|
|
<tt>${PORTSDIR}/Mk/bsd.gnome.mk</tt>.</p>
|
|
|
|
<!-- End GNOME-related Makefile macros -->
|
|
|
|
<!-- Begin GNOME OMF -->
|
|
<h2>Instalación OMF</h2>
|
|
|
|
<p>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 <tt>pkg-plist</tt> de su port cuente con lo
|
|
siguiente para <em>cada</em> fichero OMF listado.</p>
|
|
|
|
<pre>
|
|
@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
|
|
</pre>
|
|
|
|
<p>Por ejemplo:</p>
|
|
|
|
<pre>
|
|
@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
|
|
</pre>
|
|
|
|
<!-- End GNOME OMF -->
|
|
|
|
<!-- Begin GNOME libtool -->
|
|
<h2>Problemas con Libtool</h2>
|
|
|
|
<p>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
|
|
<tt>USE_LIBTOOL= yes</tt>. Esto se encargará de cubrir
|
|
casi todos los requisitos de <tt>libtool</tt>, 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 <tt>configure</tt> de
|
|
su port, directamente abajo 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ón misma del fichero .la y se
|
|
asegura que la variable <tt>${PTHREAD_LIBS}</tt> sea pasada
|
|
correctamente el enlazador (linker).</p>
|
|
<!-- End GNOME libtool -->
|
|
|
|
<!-- Begin GNOME distfiles -->
|
|
<h2>Distfiles</h2>
|
|
|
|
<p>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 <tt>${MASTER_SITE_GNOME}</tt> deberán incluir lo
|
|
siguiente en el fichero Makefile:</p>
|
|
|
|
<pre>
|
|
DIST_SUBDIR= gnome
|
|
</pre>
|
|
|
|
<p>Los ports de GNOME 2 que descarguen los ficheros distfiles desde
|
|
<tt>${MASTER_SITE_GNOME}</tt> deberán incluir la siguiente
|
|
línea en el fichero Makefile:</p>
|
|
|
|
<pre>
|
|
DIST_SUBDIR= gnome2
|
|
</pre>
|
|
|
|
<p>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:</p>
|
|
|
|
<pre>
|
|
USE_BZIP2= yes
|
|
</pre>
|
|
|
|
<!-- End GNOME distfiles -->
|
|
|
|
|
|
<p>Si aún requiere de algo de ayuda con su port, vea alguno
|
|
de los <a href="/ports/gnome.html">ports existentes</a> como
|
|
ejemplo. Además la lista de correo
|
|
<a href="mailto:&email;@FreeBSD.org">freebsd-gnome</a> siempre
|
|
está disponible para usted.</p>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|