rubyjs / therubyracer

Embed the V8 Javascript Interpreter into Ruby
1.67k stars 190 forks source link

installing on mac ox x - libv8.a not generated #148

Closed nodo closed 12 years ago

nodo commented 12 years ago

Issue: /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a: No such file or directory

Full message error: Installing therubyracer (0.9.10) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks! /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

    /usr/local/bin/ruby extconf.rb 

checking for main() in -lobjc... yes creating Makefile

make g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o rr.o -c rr.cpp rr.cpp: In function ‘VALUE rr_definefinalizer(VALUE, void, VALUE)’: rr.cpp:48: warning: no return statement in function returning non-void rr.cpp: In function ‘VALUE rr_v82rb(int64_t)’: rr.cpp:134: warning: implicit conversion shortens 64-bit value into a 32-bit value rr.cpp: In function ‘VALUE rr_definefinalizer(VALUE, void, VALUE)’: rr.cpp:48: warning: control reaches end of non-void function g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8.o -c v8.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_array.o -c v8_array.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_callbacks.o -c v8_callbacks.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_context.o -c v8_context.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_date.o -c v8_date.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_debug.o -c v8_debug.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_exception.o -c v8_exception.cpp v8_exception.cpp:10: warning: ‘::stack’ defined but not used g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_external.o -c v8_external.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_function.o -c v8_function.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_handle.o -c v8_handle.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_locker.o -c v8_locker.cpp v8_locker.cpp: In function ‘VALUE::Lock::Delete(VALUE)’: v8_locker.cpp:45: warning: no return statement in function returning non-void v8_locker.cpp: In function ‘VALUE::Unlock::Delete(VALUE)’: v8_locker.cpp:85: warning: no return statement in function returning non-void v8_locker.cpp: In function ‘VALUE::Lock::Delete(VALUE)’: v8_locker.cpp:45: warning: control reaches end of non-void function v8_locker.cpp: In function ‘VALUE::Unlock::Delete(VALUE)’: v8_locker.cpp:85: warning: control reaches end of non-void function g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_message.o -c v8_message.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_object.o -c v8_object.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_script.o -c v8_script.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_string.o -c v8_string.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_template.o -c v8_template.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_try_catch.o -c v8_try_catch.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_v8.o -c v8_v8.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_value.o -c v8_value.cpp g++ -I. -I/usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/v8/include -I/usr/local/include/ruby-1.9.1/i386-darwin9.8.0 -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -Wall -g -rdynamic -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o v8_weakref.o -c v8_weakref.cpp g++ -dynamic -bundle -o v8.bundle rr.o v8.o v8_array.o v8_callbacks.o v8_context.o v8_date.o v8_debug.o v8_exception.o v8_external.o v8_function.o v8_handle.o v8_locker.o v8_message.o v8_object.o v8_script.o v8_string.o v8_template.o v8_try_catch.o v8_v8.o v8_value.o v8_weakref.o -L. -L/usr/local/lib /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a -L. -L/usr/local/lib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -lobjc -lpthread -ldl -lobjc -lpthread i686-apple-darwin9-g++-4.0.1: /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a: No such file or directory make: *\ [v8.bundle] Error 1

System information:

nodo commented 12 years ago

I've seen https://github.com/cowboyd/therubyracer/issues/111 and it does not work.

nodo commented 12 years ago

I installed also 'libv8' throught rubygems

    gem install libv8

and that's work:

   irb> require 'libv8'
   => true

but therubyracer does not work.

rudedoc commented 12 years ago

I've been having the same issues trying to install on Ubuntu 10.04.3 LTS.

gem install therubyracer --pre

Installs to REE 1.8.7 fine but wont install to 1.9.2 or 1.9.3.

Tried:

gem uninstall libv8
gem install libv8 --pre 
gem install therubyracer --pre

Result:

gem install therubyracer --pre
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
    ERROR: Failed to build gem native extension.

        /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
creating Makefile

make
g++ -I. -I/usr/local/rvm/gems/ruby-1.9.2-p290@specials/gems/libv8-3.5.10.beta1/lib/libv8/v8/include -I/usr/local/rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux -I/usr/local/rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include  -D_FILE_OFFSET_BITS=64  -Wall -g -rdynamic -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long  -fPIC   -o v8_date.o -c v8_date.cpp
In file included from rr.h:5,
                 from v8_date.cpp:1:
/usr/local/rvm/gems/ruby-1.9.2-p290@specials/gems/libv8-3.5.10.beta1/lib/libv8/v8/include/v8.h:1826: error: expected identifier before '&' token
In file included from v8_date.cpp:4:
v8_handle.h: In function 'v8::Persistent& rr_v8_handle(VALUE) [with T = v8::Date]':
v8_date.cpp:21:   instantiated from here
v8_handle.h:43: warning: dereferencing type-punned pointer will break strict-aliasing rules
make: *** [v8_date.o] Error 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-1.9.2-p290@specials/gems/therubyracer-0.10.0beta1 for inspection.
Results logged to /usr/local/rvm/gems/ruby-1.9.2-p290@specials/gems/therubyracer-0.10.0beta1/ext/v8/gem_make.out

Pointers towards a work around would be greatly appreciated.

jjstafford commented 12 years ago

Same issue while trying to use twitter-bootstrap-rails. I've punted on the gem for now in favor of sass-rails, but I'd love to see a resolution to this, as it's the worst gem dependency error I've run into using Rails. Dev env = Mac OSX 10.7.3.

imxxb commented 12 years ago

+1, my env is Mac OSX 10.5.8 and g++4.2

dmilith commented 12 years ago

Very simliar issue to mine: https://github.com/cowboyd/therubyracer/issues/156 I have libv8 installed too.

adamyonk commented 12 years ago

Same story here on 10.5.8:

/Users/adamyonk/.rbenv/versions/1.9.3-p125/bin/ruby extconf.rb
checking for main() in -lobjc... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/Users/adamyonk/.rbenv/versions/1.9.3-p125/bin/ruby
        --with-objclib
        --without-objclib
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)
bkabrda commented 12 years ago

Fedora 17, same issue as @rudedoc ...

krimsonkla commented 12 years ago

Was anyone ever able to resolve this?

rudedoc commented 12 years ago

I was originally having problems getting Twitter Bootstrap to compile assets for a Rails App but after I rebuilt my machine following Ryan Bate's recipe (http://railscasts.com/episodes/335-deploying-to-a-vps?autoplay=true) everything worked fine.

On 14 June 2012 23:47, krimsonkla < reply@reply.github.com

wrote:

Was anyone ever able to resolve this?


Reply to this email directly or view it on GitHub: https://github.com/cowboyd/therubyracer/issues/148#issuecomment-6345461

Phone: +353 86 310 26 97 Fax: + 353 1 825 07 39


Enjoy a FREE €25 bet on our new website. You must enter this Promotion Code BB203 when you register on http://www.betpack.com. Happy punting!!!

Bambury Bookmakers is the trading name of Finbam Leisure LTD. The information contained in this e-mail is confidential and may be privileged. It is intended only for the addressee(s) stated above. If it has been delivered to you by mistake, please notify the sender and then delete this e-mail. If you are not an addressee, any use, dissemination, distribution,publication, or copying of this e-mail is strictly prohibited.

bkabrda commented 12 years ago

I think I got it. In the file rr.h, you first must include v8.h and then ruby.h. Otherwise, the macro StringValue from ruby.h overwrites the StringValue() call in v8.h, so that the preprocessed code looks like this:

Local rb_string_value(&()) const;

which is obviously a syntax error. I will submit a patch for this (really simple, just swap the two lines).

bkabrda commented 12 years ago

Also, it seems that installation fails when you install libv8 and therubyracer separately. e.g. running 'gem install therubyracer' is ok, but 'gem install libv8 && gem install therubyracer' fails:

extconf.rb:15:in <main>': undefined methodinclude_path' for Libv8:Module (NoMethodError) I will open a separate issue for this.

cowboyd commented 12 years ago

This is a libv8 issue.