Projects‎ > ‎

Mars

The documentation of this project is currently out of date

Ideas que guían al framework

Mars NO es un simple wrapper de las librerías nativas. Mars intenta modelar widgets polimórficos, asbtrayéndo al usuario de la tecnología subyacente. Esto va a obligar en ciertos casos a no aprovechar en un 100% la tecnología, dado que hay que buscar un común denominador, a cambio de tener una interfaz común y proveer una interfaz que funcione en toda plataforma.

Decisiones de diseño importantes

State of the Art

Los ejemplos de Mars-Gtk se encuentran en la categoría Gtk-Tools, y se ejecutan de la siguiente manera:

GtkLibrary uniqueInstance init.

GtkEventLoop start.

GtkBrowser new open.



Si por alguna razón aparece el error de que la librería no pudo ser cargada, es porque el LD_LIBRARY_PATH de la vm no incluyó las librerías del sistema, que en ubuntu suelen estar en /usr/lib/i386-linux-gnu/.  Para solucionar eso, una posibilidad es ejecutar la vm diciéndole explicitamente ese path:

>LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/l CogVm imagen

En Fedora la cosa cambia un poquito, las libraries se encuentran en otro lado asi que deberiamos usar...

>LD_LIBRARY_PATH=/usr/lib/ CogVm imagen

Otro posible error es que no Alien FFI este buscando una biblioteca llamada libgtk-x11-2.0.so dentro de /usr/lib. Si no la encuentra la instalan, pero si esta... por ahi aparezca con un ".0" al final. En ese caso solamente generan un link simbólico a esa biblioteca dentro de la misma carpeta

>sudo ln -s libgtk-x11-2.0.so.0 libgtk-x11-2.0.so

Antes de eso deberiamos tener algunas biblitecas instaladas:

$ sudo yum install gtk2-devel.i686

Además necesitamos agregar ciertas politicas de seguridad... lo primero que hice fue ejecutar Pharo e intentar de abrir un GtkBrowser. Cuando no me dejo por que no tenia memoria C para hacerlo me genero este error en el audit log, del cual tome la politica y la agrege. De esta manera funciono. Voy a intentar de ver como generar una politica mas generica.
# grep CogVM /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

¿Cómo me lo bajo, cómo contribuyo?

En este momento es un bardo.

Mars-Core y Mars-Cocoa estan en http://smalltalkhub.com/#!/~estebanlm/Mars
Mars-Gtk se llama actualmente GtkAlien y esta en: http://www.squeaksource.com/GtkAlien

Además el proyecto depende de 2 librerías:
- FFI: Librería para hacer llamadas a funciones nativas.
- Alien: Libreria para poder pasar como parámetro objetos smalltalk a FFI y así manejar callbacks (llamadas de código nativo a smalltalk).


Para bajar Mars-Gtk con FFI y Alien en Pharo 1.4, actualmente debe evaluarse:

Gofer it
    squeaksource: 'GtkAlien';
    package: 'ConfigurationOfGtkAlien';
    load.
   
(ConfigurationOfGtkAlien project version: #bleedingEdge) load


Para bajar Mars-Cocoa y Mars-Core

Gofer it
    url: 'http://smalltalkhub.com/mc/estebanlm/Mars/main';
    package: 'Mars-Core';
    package: 'Mars-Cocoa';
    load.

Comments