mustang icon indicating copy to clipboard operation
mustang copied to clipboard

Document build requirements

Open michaelklishin opened this issue 13 years ago • 8 comments

I am trying to install mustang for Travis CI execjs users, no luck so far. I did install scons as README requires. Can you please document other build dependencies?

gem install output:

vagrant@vserver16:~$ gem install mustang
Building native extensions.  This could take a while...
ERROR:  Error installing mustang:
    ERROR: Failed to build gem native extension.

        /home/vagrant/.rvm/rubies/ruby-1.8.7-p334/bin/ruby extconf.rb
checking for main() in -lv8... yes
checking for main() in -lpthread... yes
checking for string.h... yes
checking for ruby.h... yes
checking for v8.h... yes
checking for v8-debug.h... yes
checking for v8-profiler.h... no
creating Makefile

make
g++ -I. -I. -I/home/vagrant/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/x86_64-linux -I. -DHAVE_STRING_H -DHAVE_RUBY_H -DHAVE_V8_H -DHAVE_V8_DEBUG_H    -Wall -g -rdynamic -fPIC -fPIC -g -O2  -fPIC    -c v8_boolean.cpp
In file included from v8_boolean.cpp:2:
v8_cast.h:21: error: 'RegExp' was not declared in this scope
v8_cast.h:21: error: template argument 1 is invalid
make: *** [v8_boolean.o] Error 1


Gem files will remain installed in /home/vagrant/.rvm/gems/ruby-1.8.7-p334/gems/mustang-0.2.2 for inspection.
Results logged to /home/vagrant/.rvm/gems/ruby-1.8.7-p334/gems/mustang-0.2.2/ext/v8/gem_make.out

g++ version on that machine is

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

michaelklishin avatar Jun 20 '11 13:06 michaelklishin

Ok, i'll check it out.

nu7hatch avatar Jun 20 '11 16:06 nu7hatch

By the way, that was with libv8 2.0.3. I am working on packaging 3.0.x to see if that helps.

michaelklishin avatar Jun 20 '11 16:06 michaelklishin

Yeah it's for sure v8 version's fault. RegExp handler was introduced later.

nu7hatch avatar Jun 20 '11 17:06 nu7hatch

Well, how about documenting this? So far I have spent a couple of hours figuring out what execjs does, what mustang does, what exactly do they need and how do I get a .deb for that stuff for Ubuntu 10.04.2 that Travis workers use.

This is, you know. A little frustrating. Maybe cool Ruby kids who love cool V8 stuff may also consider writing some doco for us not on the bleeding edge train?

michaelklishin avatar Jun 20 '11 17:06 michaelklishin

Don't forget that mustang contains bundled, working version of v8. If you're going to use external stuff (especially super old version) then you have to consider possible quirks.

nu7hatch avatar Jun 20 '11 18:06 nu7hatch

For Travis specifically, this means one of the following scenarios:

  • We install mustang into the global gemset. Will be a very tough sell to the rest of the Travis team.
  • We ask all the projects that use execjs to add mustang dependency.

Are there any other way to get execjs going via mustang? My idea right now is not so much to use mustang but rather to use mustang to verify that libv8 installation is up-to-date. Then we will probably package node.js 0.4.x and be done with execjs. But if we can use mustang instead of packaging Node, I will be very happy to do so.

michaelklishin avatar Jun 20 '11 18:06 michaelklishin

Just for curiosity... for what purposes you want to use mustang in Travis? Anyway honestly, mustang's speed is outstanding comparing to therubyracer gem, but still it's only proof of concept, i'm not sure if it's stable enough to use it in production (it lacks some features too, check out issues for details...)

nu7hatch avatar Jun 20 '11 20:06 nu7hatch

Travis is a community CI service. execjs has moved to travis and they need JS runtimes to be available. We installed it by hand for the current production version but our next release uses automated provisioning with Chef, and I am looking into ways to provide libv8 3.0.x or 3.1.x and probably Node so that execjs itself and its users can have some choice.

So far I came to the conclusion that I have to build libv8 x32 for Ubuntu 10.04.2 myself, then do the same with Node 0.4.x.

michaelklishin avatar Jun 20 '11 21:06 michaelklishin