node.js on Plug Computer

Depuis presque 15 jours, mon blog est hébergé par une nouvelle machine très green: le Seagate DockStar ! J'ai donc voulu compiler et installer mon outil de développement préféré du moment : le framework javascript node.js. Et là, quelques petits problèmes sont apparus.

Le code de node.js reposant en grande partie sur de V8 JavaScript Engine Google, celui-ci est prévu pour être portable sur les plateformes ARM, comme le Seagate DockStar ou tous autres Sheeva Plugs du marché. En passant, Palm a annoncé il y a quelques jours que sa nouvelle plateforme WebOS 2.0 intègre node.js !

J'ai entrepris la compilation du code source de node.js, sur la distribution Debian Squeeze que j'ai installé sur le Seagate DockStar.

Malheureusement, en arrivant dans la compilation du code V8 JavaScript Engine : une erreur ...

g++ -o obj/release/arm/macro-assembler-arm.o ...

...

I/root/node/deps/v8/src /root/node/deps/v8/src/arm/macro-assembler-arm.cc
/root/node/deps/v8/src/arm/macro-assembler-arm.cc:59:3: error: #error "For thumb inter-working we require an architecture which supports blx"
scons: *** [obj/release/arm/macro-assembler-arm.o] Error 1
scons: building terminated because of errors.

J'ai posé la question sur le Issues Tracker de V8 JavaScript Engine et quelques minutes plus tard j'avais une réponse et la solution :

It looks like your compiler defaulted to armv4 (are you building on Debian?).
Try to add -march=armv5t to the CCFLAGS

J'ai modifié le code du fichier v8/SConstruct, de cette façon :

 133'gcc': {
 134     'all': {
 135       'CCFLAGS':      ['$DIALECTFLAGS', '$WARNINGFLAGS','-march=armv5t'],
 136       'CXXFLAGS':     ['$CCFLAGS', '-fno-rtti', '-fno-exceptions'],
 137     },

Et voilà, comment procéder pour avoir node.js, l'un des frameworks les plus performants du moment, sur la plateforme la plus Green IT possible, le Seagate DockStar !