sábado, 18 de junio de 2011

Flash en Linux: Hoy toca "Sprouts o Renegar por renegar"

La verdad es que era bastante mas optimista al empezar todas estas pruebas. Lamentablemente voy perdiendo la fe.

Ya que no pude hacer andar correctamente FlashDevelop en linux, decidí a continuación bajar el SDK gratis de Flex. El SDK corre bien sobre linux, debido a que es Java.
Para usarlo, hay que invocarlo por linea de comando, ya que el editor para programa, Flash Builder, sale sus buenos dolares y realmente pienso que es muy malo.
Para esto hay varias recetas de como crear tareas ANT para correrlo, pero como me gusta renegar, quise probar Sprouts. Según ellos se trata de solución para simplificar el desarrollo de Flash / Flex / Air usando como base Ruby y Rubygems.
En este punto se me alegró el día ( o noche, no me acuerdo cuando fué que lo encontré ), " estoy en Linux " , pensé , " seguro que tengo todo instalado y sale andando como piña". Pobre de mí, que iluso.

Mi primer error, y del que me enteré despues, es haber instalado primero el flex sdk. Una vez que lo bajé, lo instalé siguiendo estas instrucciones.
Resumen rápido:
Asegurarse que tenemos el java de Sun:

sudo apt-get install java-package sun-java6-jdk

Lo siguiente es descompactarlo en nuestro directorio de preferencia, en mi caso /opt/flex y agregar la siguiente linea a .bashrc para que exporte el PATH

export PATH=/opt/flex/bin:$PATH

Con esto hecho y habiendo abierto otra consola o recargado la misma ejecutando .bashrc, probamos si funciona ok.

mxmlc –help

En mi caso anduvo bien, asi que miré como instalar Sprouts. Sigo las instrucciones de la a href="http://projectsprouts.org/">página principal y me deleito viendo como todo parece ir bien.
# Instalo las gemas necesarias de ActionScript 3 / Flash :
gem install flashsdk --pre

# Genero un proyecto nuevo:
sprout-as3 PruebaSprouts

# entro al proyecto:
cd PruebaSprouts

# Instalo dependencias:
bundle install

# Compilo y corro el proyecto:
rake

# Felicitacion, ya está funcionando.


Je, no, no esta funcionando. Resulta que empieza a tirar errores. Resulta que no le gusta la versión de Ruby que tengo instalada. En la página principal especifican que la versión de Ruby tiene que ser mayor a 1.9.2, me fijo y mi Ubuntu instalo 1.8.7. Pensando que con un simple apt-get los soluciono, miro que versión de 1.9 me proveen y resulta que es la 1.9.1. Venimos mal.
Por suerte me acuedo que existe RVM, Ruby Version Manager, https://rvm.beginrescueend.com/, lo que no me acuerdo es como se usa.
Buscando un poco mas, encuentro un tutorial acerca de como instalarlo facilmente y aca voy. http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/

Lo primero es asegurarse de tener las herramientas necesarias para poder trabajar.
sudo apt-get install build-essential git-core curl

Bajamos rvm y lo instalamos. Se instala en nuestra carpeta personal, algo que me trae sentimientos encontrados.
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
Lo siguiente es asegurarnos que rvm cargue cuando lo necesitemos, asi que agregamos una linea al .bashrc con este comando.

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc 
Recargamos la consola o abrimos una nueva y probamos si anda.

 
rvm notes
Si está bien, entonces nos va a sugerir entre otras cosas instalar una serie de librerias para asegurarnos que todo ande bien. Como queremos que todo ande bien, entonces las instalamos.  
 
sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf

Probablemente muchas ya esten instaladas, pero de eso se ocupa el package manager. Ahora si, le pedimos a rvm que instale ruby 1.9.2 y estamos un paso mas cerca de llegar a la meta, la cual ya ni me acuerdo cual era.
 
rvm install 1.9.2

RVM se va a ocupar de bajar y compilar lo que haga falta y dejarnos Ruby listo para usar. Una vez que termine, le tenemos que decir que siempre queremos usar esa version de ruby, porque sino va a usar por defecto la del sistema.
 
rvm --default use 1.9.2

Ya terminamos con Ruby, sigamos con sprouts. Una vez mas entramos a la carpeta y probamos ejecutar
 
rake

En vez de ver un hermoso hola mundo, otra vez vos tira errores, esta vez ruby por errores en las tareas de rake. En este punto, pasé bastante tiempo investigando que podía ser, hasta que llegue a un par de lugares donde explicaban que podía llegar a ser... En este punto estaba bastante enojado, por esa razón este post no tiene screenshots ni tantos detalles, esto se convirtió en algo personal.... Según este articulo y este otro, resulta que la ultima versión de rake, la 0.9.0 no es compatible con sprouts... y hay que usar la 0.8.7. Lo genial es que ya tenia instalada 0.9.7 y bundle install fue el que actualizó a 0.9.0. Por lo tanto tuve que hacer

gem uninstall rake

Donde pregunta que versión desinstalar. Ahí le indicamos la 0.9.0 y queda la 0.8.7. ... Pasados unos minutos de furia, proseguí en mi desesperado intento de hacer andar toda esta ensalada... Vuelvo a la carga con
 
rake 

y no tira errores, pero se pone alegremente a descargar el sdk de flex.... el cual ya había instalado... Iluso, creí que iba a usar el sdk instalado, simplemente llamandolo por linea de comando. Resulta que descarga y usa su propia copia. En este momento ya caminaba por las paredes. Cancele la descarga y me puse a investigar como venía la mano. Despues de otro buen rato de buscar, encontré estos articulos,  y  donde decían se podía usar una variable de entorno para indicar que sdk usar. Sin embargo no encontré documentación muy clara, asi que probando llegue a la conclusión que era algo así;
 
rake FLEX4=/opt/flex/bin

Entonces si compiló y una sonrisa empezaba a esbozar en mi cansado rostros, cuando veo que ahora se pone a bajar el reproductor!!!! Ya vencido y rendido, deje que lo hiciese y pude ver el "Hola Mundo" funcionando.

Todo esto fue hace ya un par de semanas. Sinceramente, fue tan desagradable el reniegue de hacer andar todo que lo abandone hasta el día de hoy, donde me puse a terminar el post.

No hay comentarios:

Publicar un comentario