(También publicado en mi blog de desarrollo: http://geeks.ms/blogs/rfog/archive/2010/01/21/instalar-el-sdk-del-irex-dr1000s-en-linux-ubuntu-9-10-karmic-koala.aspx)
Ya sabéis qué poco me gusta Linux, pero a veces tiene su interés, o más bien me da por tomármelo sin más. Añadamos que Ubuntu no es que sea de muy de mi agrado y tendremos la perrería más absoluta en investigar sobre todo eso.
Pero resulta que sí tengo otra pasión, y es la de los aparatos equipados con pantallas de tinta-e, y la mayoría de ellos –por no decir todos- llevan en sus tripas Linux, y si algún fabricante saca algún SDK este seguro que va a ejecutarse bajo dicho sistema operativo.
Los productos de la empresa iRex tendrán muchas pegas y deficiencias en cuanto al software, pero lo que sí es cierto es que se toman muy en serio el Open Source. Cuando abandonaron el desarrollo del iLiad, publicaron todo el código fuente completo, y el DR1000S tiene su SDK e incluso su emulador. Esperemos que el recién salido DR800S también cuente con él.
Bueno, pues el otro día me dio por intentar, por enésima vez, instalarme el citado SDK dentro de una Ubuntu. En su momento, con la versión adecuada y la documentación oficial, no conseguí hacerlo funcionar, así que menos con una versión más moderna. Pero me picó el gusano y me puse a ello. Y lo conseguí tras muchos sudores y esfuerzos.
Pero primero lo que ya existe. La descarga oficial del código fuente y de los SDK está aquí: http://developer.irexnet.com/pub/iOn/. Tan sólo tienes que buscar la versión adecuada. En el momento en el que escribo esto, es la versión 1.7 para el SDK y 1.7.1 para el código fuente. Las instrucciones para instalarlo están aquí.
En Mobileread hay una imagen con Ubuntu lista para utilizar, en este hilo. No sé qué versión de SDK traerá, seguro que una antigua, pero simplemente hay que quitar el viejo y poner el nuevo. Cosas que no me molan de esa imagen es que la versión de Anjuta es muy vieja, así como el propio Ubuntu, pero para quien sólo quiera echarle un vistazo rápido le será suficiente.
Si quieres seguir esta entrada con detalle, ahora es el momento de echarle un vistazo a los primeros puntos del documento de la instalación. Yo cogí mi vmWare e instalé la última versión de Ubuntu, y aunque el manual diga que el SDK no funciona dentro de un sistema operativo virtualizado, no es así, no al menos en mi Windows 7 x64 con 8 GB de RAM. Y para que la VM no ande escasa, le he asignado 2GB de RAM.
Una vez instalada la distro, no añadas el repositorio de la sección 2.2, en lugar de ello haremos algunas cosas a mano. Si intentas seguir el documento te vas a encontrar con un Anjuta y un Poki que no van a funcionar.
Instalemos Anjuta y Anjuta-dev desde los repositorios normales. Una vez hecho eso instalaremos, a mano, los plugins de Anjuta Extras, que tendrás que bajar en código fuente de aquí: http://projects.gnome.org/anjuta/downloads.shtml.
Yo me he creado una carpeta dependiente de mi home con el nombre de “dr1000s”, y ahí dentro he puesto otra nueva llamada “dependencies”, que es donde voy a colocar el código fuente dependiente para que me funcione todo bien.
Descomprime e instala los Extras (ya sabes: ./configure, make, sudo make install), y si no sabes de qué estoy hablando mejor te coges la imagen ya preparada.
***
Ahora viene el tinglado gordo. En la página de arriba hay una serie de plugins, tenemos que instalar, a mano, el Poky SDK Plugin, que va por la versión 0.5 y no es compatible con las versiones modernas de Anjuta, que es el problema que tendríamos si siguiéramos las instrucciones de la documentación original.
Tenemos que bajarnos el código, descomprimirlo e intentar compilarlo. Igual que a mi, os va a dar docenas de errores, que hay que ir corrigiendo a mano, ya que el API de desarrollo de Anjuta ha variado y hay funciones que cambian de parámetros y otras que no existen, cosa que mola mucho y parece que nadie aprende a evitar. Si tienes un API y necesitas crear otro nuevo, no llames a las funciones iguales, o bien mantienes el viejo y creas nuevas funciones o bien creas las nuevas y abandonas las viejas.
También hay otro problema con el paquete gnome-vfs, que parece que ha cambiado de lugar o que el configurador del Poky SDK es incapaz de encontrar, el tema está en que hay que modificar una buena cantidad de código. Trasteé tanto que al final ya no recuerdo qué cambié.
Una cosa que tienes que hacer es copiar el contenido de /usr/include/gnome-vfs-2.0/gnomevfs en /usr/include/gnomevfs en tu distro. Ya sé que es una chapuza, que lo que hay que hacer es añadir las rutas en la configuración del proyecto, pero yo al menos no sé dónde se hace eso.
Bueno, en este hilo de Mobileread tienes el código fuente que modifiqué, listo para un sudo make install… Y lo pongo así porque hay que modificar un makefile generado por el configure, pero como de nuevo no sé dónde hay que añadir la línea, lo hice en el makefile final.
El tema está jodido, porque aparte de tener que añadir inclusiones nuevas, he tenido que poner una buena espuerta de NULL en las funciones que reciben nuevos parámetros, y comentar otras llamadas a funciones que ya no existen en Anjuta, de modo que lo mismo he hecho una bomba de relojería… Si quieres ver qué he cambiado, puedes hacer una comparación de los ficheros originales del Poky SDK con los que yo he modificado.
En fin, el tema está en que siguiendo estas instrucciones y las del propio documento, tendrás instalado tu SDK y tu emulador para desarrollar código para el DR1000 desde el IDE de Anjuta, con integración de todo y en un Ubuntu bastante más moderno y funcional que la imagen original.
Lo que no he conseguido ha sido lanzar el depurador desde el IDE, cosa que queda pendiente para otro momento. Quizás cuando lo consiga publique la imagen en algún lado.