Notxor tiene un blog

Defenestrando la vida


Compilar chicken scheme en la aplicación termux de Android

Chicken scheme

Llevo unas semanas trasteando con Chicken scheme y haciendo pruebas. La penúltima fue compilarlo en mi portátil (OpenSuse Tumbleweed) y tenerlo funcionando sin problemas. Eso me llevó a pensar que sería posible compilarlo en termux, el terminal de texto de Android. Al fin y al cabo, cuando hice la primera intentona en mi portátil me dijo:

> make
Please select your target platform by running one of the following commands:

make PLATFORM=solaris
make PLATFORM=mingw-msys
make PLATFORM=mingw
make PLATFORM=macosx
make PLATFORM=linux
make PLATFORM=ios
make PLATFORM=hurd
make PLATFORM=haiku
make PLATFORM=cygwin
make PLATFORM=cross-linux-mingw
make PLATFORM=bsd
make PLATFORM=android
make PLATFORM=aix

for more information, consult the README file.
GNUmakefile:64: *** No PLATFORM given.. Alto.

Básicamente pide una plataforma para la que compilar y me fijé en que estaba Android entre ellas utilizando la variable PLATFORM. También es importante tener en mente otra variable que necesitará: PREFIX. Esta variable le indica al sistema dónde instalarlo. En mi caso, puesto que me topé con problemas de permisos compilé en GNU/linux con un PREFIX=~/opt.

Compilar en termux

Hay varias cosas a tener en cuenta y algunas cosas que hay que instalar antes de comenzar la compilación. Evidentemente lo primero que necesitamos es descargar Chicken y descomprimirlo. En este caso he preferido bajar la versión estable en un archivo comprimido en lugar de la copia del repositorio git. La versión que he descargado es la 4.13.0

También hay que instalar algunas herramientas para compilar en termux.

apt install make clang gdb cgdb

He de decir que antes de instalar éstas aplicaciones ya tenía instaladas algunas otras como emacs, htop, openssh y mc, además de algunas librerías de las que dependen esas aplicaciones y quizás por ello no me ha pedido instalar ninguna dependencia más.

Con todo listo, compilar e instalar, que lo hice en dos pasos

make PLATFORM=android PREFIX=~/opt

y tras compilar si todo ha ido bien lo instalamos:

make PLATFORM=android PREFIX=~/opt install

He instalado en un subdirectorio del directorio personal por problemas de permisos. La tablet (una bq M10 fhd) se niega a ser rooteada y no tendría permisos de escritura en los directorios del sistema.

Para poder comenzar a utilizar las herramientas hace falta que el sistema sepa dónde están. Para ello añadí dos líneas al fichero .bashrc de mi usuario en termux:

export PATH=$PATH:~/opt/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opt/lib:~/opt/lib/chicken/8

La segunda línea me costó un poco de tiempo darme cuenta del problema. Cuando compilé en GNU/linux ldconfig funciona perfectamente, pero en termux no existe tal herramienta. Por eso hay que decirle, manualmente dónde se encuentran las librerías locales.

La verdad es que todo ha sido más fácil de lo que me esperaba cuando empecé a hacerlo y ni siquiera sabía si se podía. Tengo el chicken scheme funcionando en la tablet, ¡qué cosas!


Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, se ha decidido activar un filtro antispam y guardar las direcciones IP con el único objeto de añadir a la lista de bloqueos las que correspondan a spam y otras actividades maliciosas.

Disculpen las molestias.