doc/es/gnome/docs/porting.sgml
Hiroki Sato de3f531874 www cleanup mega commit:
- Move includes.nav*.sgml to share/sgml/navibar.ent and
   <lang>/share/sgml/navibar.l10n.ent.

 - Move includes.sgml and includes.xsl to
   share/sgml/common.ent, share/sgml/header.ent, <lang>/share/sgml/l10n.ent,
   and <lang>?share/sgml/header.l10n.ent.

 - Move most of XSLT libraries to share/sgml/*.xsl and
   <lang>/share/sgml/*.xsl.

 - Move news.xml and other *.xml files for the similar purpose
   to share/sgml/*.xml and <lang>/share/sgml/*.xml.

 - Switch to use a custom DTD for HTML document.  Now we use
   "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension", which is
   HTML 4.01 + some entities previously pulled via
   "<!ENTITY % includes SYSTEM "includes.sgml"> %includes;" line.
   The location of entity file will be resolved by using catalog file.

 - Add DOCTYPE declearation to XML documents.  This makes the followings
   possible:

   * Use of &foo; entities for SGML in an XML file instead of defining
     {$foo} as the same content.

   * &symbolic; entities for Latin characters.

 - Duplicated information between SGML and XML, or English and
   translated doc, has been removed as much as possible.
2006-08-19 21:22:38 +00:00

328 lines
14 KiB
Text
Executable file

<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/es/gnome/docs/porting.sgml,v 1.4 2005/10/04 07:56:17 murray Exp $">
<!ENTITY title "Proyecto FreeBSD GNOME: Como Crear Un Port">
<!ENTITY % navinclude.developers "INCLUDE">
]>
<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&iacute;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&eacute;
componentes de GNOME son necesarios para que su port compile;
simplemente l&iacute;stelos con un espacio de separaci&oacute;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&iacute;as de
<b>GTK2</b>, la siguiente forma es la m&aacute;s sencilla de
definir esto:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOME= gtk20
</pre>
<p>Si su port, solamente necesita las librer&iacute;as de
<b>GTK1</b>, la siguiente forma es la m&aacute;s sencilla de
definirlo:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOME= gtk12
</pre>
<p>A&uacute;n en el caso de que su port, solamente necesite las
librer&iacute;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&oacute;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&aacute; una l&iacute;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&oacute;n para poder compilar. Preste atenci&oacute;n a
la jerarquizaci&oacute;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&uacute;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&uacute;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&oacute; el escritorio <tt>GNOME 2</tt>, se busc&oacute;
asegurar la m&aacute;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&iacute;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 &aacute;rbol de ports.</p>
<p>Lo que esto significa para usted, como migrador de aplicaciones,
simplemente es que; no debe a&ntilde;adir aplicaciones
espec&iacute;ficas de <tt>GNOME 1</tt> al &aacute;rbol de ports.
</p>
<p>Si desea determinar que versi&oacute;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&aacute; 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&aacute; 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 &uacute;ltima
declaraci&oacute;n, es una evaluaci&oacute;n condicional,
deber&aacute; ser incluida entre la l&iacute;nea
<tt>bsd.port.pre.mk</tt> y <tt>bsd.port.post.mk</tt>. Por
ejemplo:</p>
<pre>
WANT_GNOME= yes
.include &lt;bsd.port.pre.mk&gt;
.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 &lt;bsd.port.post.mk&gt;
</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&aacute; 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&aacute;s
informaci&oacute;n con respecto a la sint&aacute;xis del
<tt>patr&oacute;n</tt> de make <b>:M</b>, por favor consulte la
p&aacute;gina de ayuda
<a href="http://www.freebsd.org/cgi/man.cgi?query=make&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+4.6-stable&amp;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&oacute;n espec&iacute;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&aacute;
decidir cuando realizar la sustituci&oacute;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&eacute;s de la l&iacute;nea
<tt>.include &lt;bsd.port.pre.mk&gt;</tt>. Por lo que, lo
siguiente es <font color="#FF0000"><b>incorrecto</b></font>:</p>
<pre>
.include &lt;bsd.port.pre.mk&gt;
.if ${HAVE_GNOME:Mgnomelibs}!=""
USE_GNOME+= libgnome
.else
USE_GNOME+= gtk12 # !INCORRECTO!
.endif
</pre>
<p>Esto har&aacute; pensar al sistema que GNOME <em>es</em> deseado,
y marcar&aacute; el <tt>pkg-plist</tt> de acuerdo a esto, por lo
que fallar&aacute; la compilaci&oacute;n. Si necesita incluir
componentes adicionales a <tt>USE_GNOME</tt>, hagalo por
<b>arriba</b> de la l&iacute;nea
<tt>.include &lt;bsd.port.pre.mk&gt;</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&iacute;nea <tt>WITH_GNOME= yes</tt> o bien directamente en la
l&iacute;nea de comandos. Esto siempre dar&aacute; un resultado
verdadero cuando se verifique por dependencias opcionales de
GNOME. Si desea que el sistema siempre d&eacute; un resultado de
falso cuando se verifiquen las dependencias opcionales de GNOME,
puede incluir la l&iacute;nea <tt>WITHOUT_GNOME= yes</tt> al
fichero <tt>/etc/make.conf</tt> o bien hacerlo desde la
l&iacute;nea de comandos.</p>
<p>Puede encontrar m&aacute;s informaci&oacute;n en el uso de la
infraestructura <b>USE_GNOME</b> al mirar el c&oacute;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&oacute;n OMF</h2>
<p>Gran cantidad de aplicaciones de GNOME (especialmente
aplicaciones de GNOME 2) instalan ficheros de OMF (por las siglas
en ingl&eacute;s; OpenSource Metadata Framework) que contienen la
informaci&oacute;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&oacute;n de ayuda. Para
efecto de que se realice un registro exitoso de los ficheros OMF,
al instalar aplicaciones de GNOME desde paquetes, deber&aacute;
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&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/ruta/al/fichero/help_file.omf \
2&gt;/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&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/share/gnome/bug-buddy/bug-buddy-C.omf \
2&gt;/dev/null || /usr/bin/true
</pre>
<!-- End GNOME OMF -->
<!-- Begin GNOME libtool -->
<h2>Problemas con Libtool</h2>
<p>La mayor&iacute;a (si no es que todas), de las aplicaciones de
GNOME, dependen del programa de la GNU libtool. As&iacute; mismo
utilizan el sistema de configuraci&oacute;n de GNU. Si su port
instala librer&iacute;as compartidas, deber&aacute; a&ntilde;adir
al fichero Makefile del port la l&iacute;nea
<tt>USE_LIBTOOL= yes</tt>. Esto se encargar&aacute; de cubrir
casi todos los requisitos de <tt>libtool</tt>, pero no
prevendr&aacute; cosas como la instalaci&oacute;n de ficheros de
tipo .la. Para asegurarse de una instalaci&oacute;n exitosa de
las librer&iacute;as compartidas, tambi&eacute;n considere
incluir la siguiente l&iacute;nea al script <tt>configure</tt> de
su port, directamente abajo de la l&iacute;nea
<tt>LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"</tt>:</p>
<pre>
$ac_aux_dir/ltconfig $LIBTOOL_DEPS
</pre>
<p>Esto previene la instalaci&oacute;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&aacute;s
limpio posible, los ports de GNOME 1 que descarguen sus distfiles
desde <tt>${MASTER_SITE_GNOME}</tt> deber&aacute;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&aacute;n incluir la siguiente
l&iacute;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&aacute; usar
el formato bzip2 cuando le sea posible. Para hacer esto incluya
la siguiente l&iacute;nea en el fichero Makefile de su port:</p>
<pre>
USE_BZIP2= yes
</pre>
<!-- End GNOME distfiles -->
<p>Si a&uacute;n requiere de algo de ayuda con su port, vea alguno
de los <a href="/ports/gnome.html">ports existentes</a> como
ejemplo. Adem&aacute;s la lista de correo
<a href="mailto:&email;@FreeBSD.org">freebsd-gnome</a> siempre
est&aacute; disponible para usted.</p>
&footer;
</body>
</html>