martes, 27 de julio de 2010

DRAFT – Compilación de actualizaciones

Para compilar el código fuente que cada cierto tiempo se libera, se deben seguir determinados pasos, así como se debe contar con determinada configuración de ambiente de compilación.

Este capítulo intenta simplificar este proceso a través de una lista de sencillos pasos. La fuente de consulta en caso de dudas es http://hub.opensolaris.org/bin/view/Community+Group+on/devref_toc .

Armado del ambiente de compilación

Como regla general, recordemos que para compilar la versión "N", siempre tendremos que estar utilizando, como mínimo, la versión "N-2". Eso quiere decir que si partimos de la versión onnv_142, podremos compilar la versión onnv_144, por ejemplo. Luego, podremos compilar la versión onnv_145, o la onnv_146.

Instalaremos ante todo, desde el repositorio /dev de opensolaris.org, el paquete "developer/versioning/mercurial".
Luego, tendremos que instalar el paquete "developer/opensolaris/osnet" desde el repositorio "extras" de pkg.sun.com, para el cual necesitaremos seguir determinados pasos, a saber:

- Tener una cuenta. Si no la tenemos, ingersaremos a http://pkg.sun.com/register, y la sacaremos.
- En el mismo sitio ingresaremos, y solicitaremos nuestro certificado para el repositorio "extras" de OpenSolaris.
- En la pantalla donde se nos ofrece bajar la clave y el certificado, bajaremos ambos dos. Es importante guardarlos como si fueran hechos de oro y brillantes.
- Ejecutamos la siguiente secuencia de comandos:
# mkdir -m 0755 -p /var/pkg/ssl
# cp -i OpenSolaris_extras.key.pem /var/pkg/ssl
# cp -i OpenSolaris_extras.certificate.pem /var/pkg/ssl
# pkg set-authority -k /var/pkg/ssl/OpenSolaris_extras.key.pem -c /var/pkg/ssl/OpenSolaris_extras.certificate.pem -O https://pkg.sun.com/opensolaris/extra/ extra
# pkg list -a 'pkg://extra/*'
# pkg install developer/opensolaris/osnet

Si nuestra instalación estaba limpia, cuando instalemos este paquete veremos que también se instalan:

- developer/build/onbld
- library/gnome/base-libs
- developer/parser/bison
- library/libsigsegv
- system/library/mozilla-nss/header-nss
- system/management/snmp/sea
- SUNWwbdev
- developer/java/jdk
- web/server/apache-13
- SUNWcsl
- library/apt-util-13
- SUNWsasnm
- data/docbook
- SUNWjsnmp
- developer/library/lint
- SUNWadmj
- developer/astdev
- text/gnu-gettext
- web/server/apache-22
- SUNWwbapi
- developer/gcc-3
- library/tooltalk
- library/apr-13
- cde/cde-runtime
- system/header
- SUNWlibms
- library/motif
- library/nspr/header-nspr
- library/apt-util-13/apr-ldap
- SUNWwbcou
- developer/gnu-binutils
- SUNWlibC
- developer/lexer/flex
- developer/macro/gnu-m4
- system/library/liblayout

Ahora, debemos instalar el compilador que usaremos. Si instalamos el compilador SunStudio 12 Update 1, tendremos infinitos errores de compilación, dado que el que está homologado, al menos al día de la fecha (07/2010) es el SunStudio 12 (sin el Update 1).
Entonces, tendremos que bajar dicho compilador del url http://hub.opensolaris.org/bin/view/Community+Group+tools/sun_studio_12_..., que nos llevará nuevamente a un sitio donde necesitamos nuestro Sun Online Account.
En mi caso particular, el archivo que bajé es el sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2, por lo que ejecutaré, para instalarlo, los siguientes comandos:

$ su -
# cd /opt
# mkdir SUNWspro
# cd SUNWspro
# tar jxvf /export/home/hecsa/Downloads/sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2
...

Compilación del nuevo código

Con esos paquetes instalados, ya podremos bajar el código fuente nuevo.
Debemos ejecutar los siguientes comandos:

$ su -
# cd /opt
# mkdir sources
# cd sources
# hg clone ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate onnv_144
# cd onnv_144
# hg update onnv_144

Aceptamos el fingerprint si es la primera vez que ingresamos mediante la utilidad "hg" de Mercurial utilizando ssh. Al finalizar este proceso, tendremos un nuevo directorio llamado "/opt/sources/onnv-gate" con aproximadamente 862 MB. Este valor puede variar según la versión que se esté bajando.
También debemos, para esta versión, bajar los binarios cerrados, y los de criptografía.
En nuestro caso, para esta versión, lo haremos desde los URL's: http://dlc.sun.com/osol/on/downloads/b144/on-closed-bins-nd.i386.tar.bz2 y http://dlc.sun.com/osol/on/downloads/b144/on-crypto.i386.tar.bz2.
Para hacer uso de estos dos archivos, ejecutaremos estos comandos:

# cd /opt/sources/onnv_144
# tar jxvf /export/home/hecsa/Downloads/on-closed-bins-nd.i386.tar.bz2
...
# mv /export/home/hecsa/Downloads/on-crypto.i386.tar.bz2 .

Copiaremos y modificaremos el archivo opensolaris.sh:

# cd /opt/sources/onnv_144
# cp usr/src/tools/env/opensolaris.sh .
# vi opensolaris.sh

Modificaremos las siguientes líneas:

GATE=testws;
por
GATE=onnv_144;

CODEMGR_WS="/export/$GATE";
por
CODEMGR_WS="/opt/sources/$GATE";

STAFFER=nobody;
por
STAFFER=root;

Ahora, configuraremos las variables de ambiente necesarias para realizar la compilación:

# export PATH=/opt/onbld/bin:/opt/SUNWspro/bin:$PATH

Al final del archivo agregamos estas dos líneas:

i386_LINT=/opt/SUNWspro/bin/lint; export i386_LINT
amd64_LINT=/opt/SUNWspro/bin/lint; export amd64_LINT

Listos para la compilación, ejecutaremos:

# nightly ./opensolaris.sh &

Si queremos ver cómo van las cosas que estamos haciendo, sólo tendremos que verificar el archivo log/nightly.log, utilizando el comando "tail -f /opt/sources/onnv_144/log/nightly.log". También podemos verificar la existencia de varios comandos "dmake" en plena ejecución con el comando "prstat -a".
Nótese que en forma predeterminada tendremos en la variable NIGHTLY_OPTIONS del archivo opensolaris.sh la letra "p", lo que significa que el comando nightly generará, al final de la compilación, un directorio conteniendo todos los paquetes que se han implementado.
Esos paquetes conforman un repositorio que se encuentra en "/opt/sources/onnv_144/packages".