Compilando KDE del CVS sin hemorragias


Compilando KDE sin hemorragias

Este artículo se explica la forma "manual" de compilar el KDE, es decir, descargar y compilar
cada módulo por separado. Normalmente este mecanismo sólo lo vamos a utilizar si somos desarrolladores
porque incluso aunque queramos compilar KDE si no lo somos tenemos una alternativa mucho más cómoda y sencilla
como konstruct, así que si lo único que nos interesa es compilar KDE (no vamos a desarrollar sobre el) aconsejo
saltar directamente a la sección sobre el mismo.

1. El fichero .cvsrc y kdecosas

Como vamos a obtener las fuentes de KDE3 a través del CVS necesitaremos tener en
nuestro directorio de usuario un fichero .cvsrc con el siguiente contenido:

cvs -z4 -q
diff -u3 -p
update -dP
checkout -P

Una vez hemos guardado este fichero, crearemos un directorio donde ir descargando los
distintos módulo de KDE3, por ejemplo 'fuentes', cambiamos a ese directorio y
creamos un nuevo archivo llamado, por ejemplo, 'kdecosas', con el siguiente contenido:

export CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde
export KDEDIR=/usr/local/kde3
export QTDIR=/usr/local/qt-copy
export MANPATH=$QTDIR/doc/man:$MANPATH
export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export YACC='byacc -d'

Este archivo lo utilizaremos para activar una serie de variables de entorno cada vez que
vayamos a realizar una operación con las fuentes y/o utilizar KDE3. Como puede verse
lo primero que hace es especificar el servidor de CVS que vamos a utilizar, la variable
de entorno que indica la localización del KDE (en este caso vamos a instalar KDE3 en
el directorio /usr/local/kde3), la localización de la librería Qt, y antepone nuevas
rutas a las existentes para páginas man, binarios y bibliotecas.

2. Descargando las fuentes

Descargas las fuentes es fácil, básicamente consiste en hacer 'cvs co modulo' siendo 'modulo'
el nombre del módulo que queremos descargar en el CVS. Como mínimo vamos a necesitar
los módulos qt-copy, kdesupport, arts, kdelibs y kdebase así que hacemos:

cd fuentes
source kdecosas
cvs co qt-copy
cvs co kdesupport
cvs co arts
cvs co kdelibs
cvs co kdebase

Cada uno de los 'co' se tomará su tiempo, así que será mejor tomárselo con calma mientras
se bajan todas las fuentes. Existen más módulos aparte de estos tres; para saber el
nombre de todos los módulos de los que dispone el CVS podemos escribir 'cvs co -c'. Algunos de
los módulos más comunes son: kdemultimedia, kdenetwork, kdepim, kdeutils, kdetoys,
koffice y quanta. Pero de momento con los indicados nos bastará para ir empezando.

3. Compilando las qt

En primer lugar hay que indicar que es _muy probable_ que si utilizamos
una distribución reciente, o una que se pueda actualizar por internet a
paquetes recientes (como Debian) es muy posible que no necesitemos
compilar las Qt (en Debian inestable certifico que no es necesario en
absoluto) sino que puede bastar con instalar los paquetes binarios y de
desarrollo (-dev) de estas librerías proporcionados para nuestra
distribución (y si estas no son lo bastante recientes, el ./configure
del primer módulo que vayamos a compilar nos avisará de ello). Si
podemos evitar compilar las Qt, mejor que mejor, porque son con
diferencia el módulo que más tarda de todo el proceso.

Si en cualquier caso nos decidimos por (o no nos queda más remedio que)
compilar las Qt seguiremos el proceso indicado en el apartado siguiente para el
resto de los módulos de KDE3 pero con un par de salvedades.

La primera es que después de cambiar al directorio qt-copy debemos hacer ejecutar en la
shell 'export QTDIR=$PWD', y utilizar un ./configure con los siguientes parámetros:

./configure -system-zlib -qt-gif -system-libpng -system-libjpeg \
-plugin-imgfmt-mng -thread -no-stl -no-xinerama -no-g++-exceptions

Después hacemos 'make' como siempre, pero en lugar de ejecutar 'make install' haremos un
enlace de la siguiente forma:

ln -s qt-copy /usr/local/qt-copy

.

4. Compilando KDE3

Nota para usuarios de Debian: Se necesita libpng-dev versión 1.2 o superior (el paquete
de desarrollo correspondiente a libpng3) para compilar KDE3. Avisados estais.

Hay un par de cosas que tenemos que tener en cuenta antes de ponernos a compilar las fuentes
de KDE3. La primera es que debemos guardar un orden concreto a la hora de compilar, es decir,
tenemos que compilar primero kdesupport, después arts, después kdelibs y después kdebase.
Una vez tengamos estos módulos compilados el resto podremos compilarlo como queramos.

Lo segundo es que no se nos debe olvidar ejecutar el 'source kdecosas' antes de compilar. Nunca.
Así que una buena solución es poner el contenido de este archivo en nuestro .bashrc o .bash_profile, pero si queremos seguir ejecutando KDE2 debemos mantenerlo separado.

Para empezar a compilar cada módulo nos introducimos en el directorio que lo contiene (el que
se habrá creado al hacer el checkout, por ejemplo 'cd kdesupport'), ejecutamos el comando
'make -f Makefile.cvs' seguido de './configure', seguido de 'make' y 'make install' (el último
normalmente como root). Si también hemos compilado las Qt nosotros
mismos para evitar disgustos lo mejor es pasarle los parámetros al
configure: --with-qt-dir=, --with-qt-includes= y --with-qt-libraries=
apuntando respectivamente al directorio donde hemos compilado las Qt, a
su subdirectorios 'includes' y a su subdirectorio 'libs'. Mucho ojo
con esto
, o nos podemos volver loco. Si al compilar da muchos errores de
'undefined reference to blablabla' es probáblemente este problema,
especialmente si tenemos otra versión de las Qt instaladas,
probáblemente de nuestra distribución, junto a las
que hemos compilado, no hay ningún problema en tener más de una versión
de las Qt (mientras pongamos las variables de entorno adecuada), pero es
importante que no se nos olvide lo anterior. Otro motivo para no
compilar las Qt, sino utilizar las de nuestra distribución, si podemos.

Si todo ha ido bien KDE3 debería compilarse e instalarse en /usr/local/kde3. Si no ha ido bien,
normalmente habrá fallado en el ./configure porque nos falte alguna librería de desarrollo.
Si la información que nos muestra el configure al fallar no es suficiente podemos examinar el
archivo config.log que contiene un log de todos los pasos realizados por este script. Una vez
hayamos instalado la biblioteca que nos faltase debemos borrar el archivo config.cache antes
de volver a ejecutar el ./configure.

¿Cuanto tarda en compilar KDE3? Bueno... bastante. No lo he cronometrado pero los módulos
mencionados pueden tardar fácilmente tres o cuatro horas en un Athlon XP 1700+. El módulo más
bestia es sin duda las Qt, pero por suerte no suele ser necesario que las recompilemos cada
vez que queramos actualizar nuestro KDE3 al último CVS. Lo más inteligente será dejar que el
ordenador trabaje mientras dormimos o no lo utilizamos (y no actualizar el CVS cada día, claro ;).
En cualquier caso no seais animales cronometrad cuanto os tarda aproximádamente en compilar
cada módulo y haceos un script que lo haga todo sólo a partir de la primera compilación-vigilada con éxito
que siga el siguiente esquema:

  1. Actualice el CVS (básicamente hace el source kdecosas, borra el directorio
    de cada modulo, y hace un cvs co, si podría hacerse un CVS update, pero
    creedme (o os arrepentireís), es mucho mejor borrar y hacer el co, y en
    cualquier caso como este script se va a ejecutar cuando no estemos no nos
    importa que tarde un poco más).

  2. Entra en cada directorio y ejecuta make -f Makefile.cvs; si eso ha tenido éxito ./configure --loquesea,
    si idem, make install y si el make install ha tenido cd.. y pasar al siguiente módulo.

  3. Cuando querais actualizar el CVS, ejecutais el script y os vais a sobar.

Fácil, ¿verdad?

Para los curiosos aquí pongo unas muestras de lo que pueden tardar algunos módulos en mi sistema
(mientras hago otras cosas, Athlon-XP 1700+):

  • kdesupport: 1m55s
  • arts: 4m36s
  • kdelibs: 48m23s
  • kdebase: 111ms

5. Ejecutando KDE3

Una vez hayamos compilado los módulos necesarios, podremos ejecutar KDE3 haciendo el consabido
'source kdecosas' para después sustituir en nuestro .xinitrc la llamada al gestor de ventanas
o de escritorio que estemos utilizando por '/usr/local/kde3/bin/startkde'. Para mayor comodidad
si vamos a utilizar siempre KDE3 podemos realizar el source desde el propio .xinitrc.


Apendice: Konstruct

Como se explicó al principio de este documento, este método sólo nos va a ser realmente válido si
somos desarrolladores que necesitemos actualizar casi diariamente el CVS y vamos a programar sobre el.
Si simplemente queremos tener un KDE compilado (por ejemplo porque no nos guste el que proporciona nuestra
distribución) tenemos alternativas mucho mejores que la explicada anteriormente: Konstruct nos va a permitir compilar una versión
específica de KDE (estable o alfas y betas) tan sólo cambiando un par de lineas de un fichero de configuración
y ejecutando un comando.

Sí he dicho ejecutando un comando, no me he vuelto loco. En realidad el mecanismo a seguir sería
el siguiente:

  1. Descargar konstruct. Esto puede hacerse desde el enlace anterior. Es importante destacar que hay varias versiones
    de Konstruct para cada versión de KDE, incluyendo como ya se ha comentado las de desarrollo.

  2. Descomprimirlo.
  3. Nos metemos en el directorio "konstruct" que se crea al descomprimirlo.
  4. Editamos el fichero gar.conf.mk.
  5. Sustituimos la variable "GARCHIVEDIR" por el directorio en el que queramos que se instale KDE. Yo suelo tener puesto /opt/kde.
  6. Cambiamos la variable "prefix" para ponerle el valor anterior.
  7. Si queremos que se usen las Qt instaladas en el sistema, descomentamos la linea de "#HAVE_QT_3_2_INSTALLED = true". Aconsejo no hacerlo pues en ocasiones las Qt de KDE vienen con distintos parches para que el sistema funcione mejor.
  8. Si queremos, metemos en la variable "OWN_CFLAGS" los valores que queramos pasarle al compilador (por ejemplo -march=pentium4)
  9. Guardamos el fichero.
  10. Ahora dependiendo de la instalación que queramos nos meteremos en un directorio u otro y ejecutaremos "make install". Por ejemplo si queremos _todo_ (incluye el KDE y muchas aplicaciones externas) nos meteríamos en el directorio meta/everything y una vez dentro ejecutaremos "make install" (como root, ocupará unos 675 megas). Si por el contrario sólo queremos el KDE sin aplicaciones external nos meteríamos en meta/kde. El proceso en una máquina a 2 Ghz y con unos 700 megas de RAM y conexión ADSL de 256kbs tarda, para el everything, unas 12 horas así que paciencia (en una máquina moderna el sistema debería ser muy usable mientras lo hace). En cualquier caso el proceso se puede interrumpir en cualquier momento (pulsando Control+C) y continuar después (donde se quedara cuando lo interrumpimos).

    Ahora instalamos las traducciones metiéndonos en el directorio i18n/kde-i18n-es (o kde-i18n-idioma) y ejecutamos make install de nuevo.

    Finalmente para que el sistema use el nuevo KDE añadiremos el fichero .bashrc de nuestro directorio de usuario lo siguiente:

    export KDEDIR=/opt/kde
    export KDEDIRS=~/opt/kde
    export LD_LIBRARY_PATH=/opt/kde:$LD_LIBRARY_PATH
    export PATH=/opt/kde:$PATH
    export QTDIR=/opt/kde
    

    Sustituyendo "/opt/kde" por el directorio que le hayamos indicado al gar.conf.mk si fuera necesario.

  11. Reiniciamos (aconsejable) y ya deberíamos tener KDE nuevo.