Sunday, May 9, 2010

Elixir setup


Free a lancé le projet elixir poru développer des jeux pour freebox. Ce toolkit se base sur enlightenment mon window manager par défaut quand je retourne sur la banquise.

Pour éviter d'installer Elixir n'importe où sur ma babasse en suivant le tutorial de noob plein de ./configure && make && make install, j'ai préféré utiliser la méthode gentoo en utilisant l'overlay officiel d'enlightenment. De l'aide supplémentaire est disponible sur le wiki gentoo.

Quelques notes :
  • Installation de portage-2.2 (mise à jour nécessaire de package.keywords et package.unmask)
  • Pour chaque package du set, ajout d'une ligne =category/package-9999 ** dans package.keywords pour éviter l'erreur missing keyword.
SpiderMonkey

package.use : dev-lang/spidermonkey threadsafe

Last version of SpiderMonkey in current portage tree is 1.7.0-r1. This version does not support JSVERSION_1_8. We need to create our own ebuild for version 1.8.0.

Create a local overlay to host this ebuild :

mkdir -p /usr/local/portage/profiles/
echo "local_overlay" > /usr/local/portage/profiles/repo_name
Add at the end of /etc/make.conf :
PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/"

Create spidermonkey ebuild :

mkdir -p /usr/local/portage/dev-lang/spidermonkey
cp /usr/portage/dev-lang/spidermonkey/spidermonkey-1.7.0-r1.ebuild /usr/local/portage/dev-lang/spidermonkey/spidermonkey-1.8.0.ebuild
cp -R /usr/portage/dev-lang/spidermonkey/files /usr/local/portage/dev-lang/spidermonkey/files
Edit ebuild :
SRC_URI="ftp://ftp.mozilla.org/pub/mozilla.org/js/${MY_P}-rc1.tar.gz"
...
#epatch "${FILESDIR}/${PN}-1.5-build.patch"
epatch "${FILESDIR}/${P}-build.patch"
#epatch "${FILESDIR}/${PN}-1.6-header.patch"
epatch "${FILESDIR}/${P}-threadsafe.diff"
spidermonkey-1.8.0-build.patch :
diff -rupN js.ref/js/src/Makefile.ref js.new/js/src/Makefile.ref
--- js.ref/js/src/Makefile.ref 2009-02-25 14:24:29.000000000 +0100
+++ js.new/js/src/Makefile.ref 2010-05-09 00:02:50.000000000 +0200
@@ -363,3 +363,16 @@ TARFILES = files `cat files`
SUFFIXES: .i
%.i: %.c
$(CC) -C -E $(CFLAGS) $< > $*.i
+
+DESTDIR :=
+PREFIX := /usr
+BINDIR := $(PREFIX)/bin
+MY_LIBDIR := $(PREFIX)/$(LIBDIR)
+INCLUDEDIR := $(PREFIX)/include/js
+INSTALL := install -g 0 -o root
+install:
+ $(INSTALL) -m 755 -d $(DESTDIR)$(INCLUDEDIR) $(DESTDIR)$(MY_LIBDIR) $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DESTDIR)$(MY_LIBDIR)
+ $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(MY_LIBDIR)
+ $(INSTALL) -m 755 $(OBJDIR)/js $(OBJDIR)/jscpucfg $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 644 $(HFILES) $(DESTDIR)$(INCLUDEDIR)
ebuild spidermonkey-1.8.0.ebuild digest
package.keywords : ~dev-lang/spidermonkey-1.8.0 **
emerge -va spidermonkey

Elixir setup :

Appliquer le patch basé sur les indications du blog de zigazou :
diff -rupN elixir-0.1.24.ref/src/modules/bindings/ecore/ecore_module.c elixir-0.1.24.new/src/modules/bindings/ecore/ecore_module.c
--- elixir-0.1.24.ref/src/modules/bindings/ecore/ecore_module.c 2010-05-09 00:36:48.000000000 +0200
+++ elixir-0.1.24.new/src/modules/bindings/ecore/ecore_module.c 2010-05-09 00:37:37.000000000 +0200
@@ -905,7 +905,7 @@ elixir_ecore_thread_run(JSContext *cx, u

elixir_function_stop(cx);

- result = ecore_thread_run(_elixir_func_heavy, _elixir_func_end, new);
+ result = ecore_thread_run(_elixir_func_heavy, _elixir_func_end, new, NULL);

elixir_function_start(cx);
Setup elixir :

./configure
make
# sudo make install
# ldconfig

Il est toujours possible de supprimer elixir en faisant :

# make uninstall
# rm -rf /usr/local/lib/elixir

Tester :

elixir Simple.js

Liens / Références :Notes sur gentoo :
  • L'overlay installe media-libs/edje-9999 qui contient edje_player (qui remplace edje_viewer)
Avertissement : edge ne semble pas fonctionner avec cette installation :( Seuls les exemples basiques passent. Il est peut être finalement préférable d'utiliser l'image virtualbox...

No comments: