Adopt OpenJDK en Gentoo – Hackealo con estilo!

 gentoojava
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)

  1. Descarga el código fuente
  2. Intenta construir y compilar el código fuente original
  3. Mejora y prueba el código
  4. Crea parches y envialos

Más practico

  • ¿Como descargar el código fuente?
    1. 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.
    2. 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
    3. Antes de compilar debes activar el soporte para ccache fuera de portage como se menciona en los archivos de la vieja Gentoo wiki
    4. 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…
    5. 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.)
    6. 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.
    7. Tu código fuente esta completo!
  • ¿Como compilar el código fuente?
    1. Ejecuta bash ./configure dentro de la carpeta «jdk8»
    2. Luego compila con make all
    3. 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
    4. Si todo sale bien, has compilado el código de manera adecuada
  • ¿Como modificar el código fuente?
    1. Todos los componentes tienen una carpeta «src». Modifica y mejora el código fuente!
  • ¿Como ejecutar pruebas usando jtreg?
    1. Ingresa en el directorio «jdk8/<components>/test». Encontraras varias carpeta dentro, asi que solamente utiliza make "<package name>" &> test.log
  • ¿Como ejecutar pruebas usando TestNG?
    1. 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»
    2. Ve hacia la carpeta test y ejecuta: ant test
  • ¿Como crear parches (y como enviarlos)?
    1. 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>
    2. Ejemplo: hg diff src/share/classes/com/oracle/net/Scp.java > Sdp.path
    3. 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.
  • ¿Alguna otra pregunta?
    1. 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.Screenshot from 2013-04-22 01:44:26

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *