La semana pasada publiqué la traducción de una guiá rápida de compilación de OpenJDK sobre Ubuntu que podemos considerar como general. Sin embargo la wiki de OpenJDK también menciona a Gentoo como una plataforma de desarrollo, así que decidí cambiar las partes especificas para Gentoo y crear una guia gentoozera.
Bueno es hora de empezar los hacks . . . con estilo Gentoo!
Paso-a-paso (idea general)
- Descarga el código fuente
- Intenta construir y compilar el código fuente original
- Mejora y prueba el código
- Crea parches y envialos
Más practico
- ¿Como descargar el código fuente?
- Haz fork de algunos proyectos en https://bitbucket.org/adoptopenjdk. Debes realizar fork de: jdk8, jdk8-jdk, jdk8-jaxws, jdk8-jaxp, jdk8-nashorn, jdk8-langtools, jdk8-hotspot, jdk8-corba. En general OpenJDK esta conformado por varios componentes, y estos deben ser configurados y compilados para que puedan ser utilizados en nuestro sistema.
- Debes verificar que los siguientes programas estén instalados, la mayoria de x11-libs se instalan con el metapaquete x11/xorg-server, asi que con sistemas con entornos de escritorio (Gnome, KDE, XFCE) ya deberian de estar instalados
- dev-vcs/mercurial
- dev-java/icedtea-bin o dev-java/icedtea o dev-java/oracle-jdk-bin
- x11-libs/libX11
- x11-libs/libxext
- x11-libs/libxrender
- x11-libs/libxtst
- net-print/cups
- media-libs/freetype
- media-libs/alsa-lib
- dev-util/ccache
- sys-devel/gcc con la use flag cxx activa
- Antes de compilar debes activar el soporte para ccache fuera de portage como se menciona en los archivos de la vieja Gentoo wiki
- Clona cada uno de los proyectos de los cuales hiciste fork desde bitbucket. Para eso usa:
hg clone <tu repositorio en bitbucket>
. Actualmente este repositorio debe ser clonado via https y no ssh. Organiza todo en una carpeta para que sea fácil de usar, con una estructura similar a la siguiente:- <carpeta superior>
- hack-jdk
- jdk8
- jdk8-jdk
- jdk8-jaxws
- jdk8-jaxp
- etc…
- hack-jdk
- <carpeta superior>
- En la carpeta jdk8, ejecuta
bash ./get_source.sh
. Ejecutalo como root y este script descargara todo el código fuente de inmediato. Al finalizar el proceso encontraras algunas carpetas extra dentro de jdk8 (jdk, langtools, hotspot, etc.) - En algunos casos puede suceder que el código no esta completo entonces puede copias los proyectos que fueron clonados dentro de la carpeta jdk8. Ejemplo: copia todo lo que esta dentro de la carpeta jdk8-jdk hacia jdk y has lo mismo con jdk8-nashorn, jdk8-langtools, jdk8-hotspot, jdk8-jaxws y otros componentes.
- Tu código fuente esta completo!
- ¿Como compilar el código fuente?
- Ejecuta bash
./configure
dentro de la carpeta «jdk8» - Luego compila con
make all
- Si eres usuario intermedio/avanzado de Gentoo, es probable que sepas que se puede compilar en paralelo. Para esto el comando completo es
make JOBS=N all
donde N corresponde a nuestro numero de cores fisicos + 1 - Si todo sale bien, has compilado el código de manera adecuada
- Ejecuta bash
- ¿Como modificar el código fuente?
- Todos los componentes tienen una carpeta «src». Modifica y mejora el código fuente!
- ¿Como ejecutar pruebas usando jtreg?
- Ingresa en el directorio «jdk8/<components>/test». Encontraras varias carpeta dentro, asi que solamente utiliza
make "<package name>" &> test.log
- Ingresa en el directorio «jdk8/<components>/test». Encontraras varias carpeta dentro, asi que solamente utiliza
- ¿Como ejecutar pruebas usando TestNG?
- Descarga e instala TestNG (version recomendada: 6.8). Después de descargar los archivos .zip, copia testing.x.y.z.jar hacia la carpeta «lib»
- Ve hacia la carpeta test y ejecuta:
ant test
- ¿Como crear parches (y como enviarlos)?
- Para crear los parches utilizamos mercurial. Después de modificar el código utiliza el siguiente comando
hg diff <path/change/something.java> > <nameClass.java>
- Ejemplo:
hg diff src/share/classes/com/oracle/net/Scp.java > Sdp.path
- Envialo para el grupo Adopt-OpenJDK en Google groups. Muchos desarrolladores experimentados son activos en el grupo y revisaran el código que has enviado a OpenJDK.
- Para crear los parches utilizamos mercurial. Después de modificar el código utiliza el siguiente comando
- ¿Alguna otra pregunta?
- Escriban sus dudas a Adopt OpenJDK en Google groups, el grupo es bastante abierto a nuevas colaboraciones, solo respeten la netiqueta tan olvidada en America Latina.
En un equipo mas o menos de esta generacion no duraran más de 15 minutos si compilan en paralelo :D.