gem install therubyracer -v 0.12.3 в OSX 10.15 - PullRequest
1 голос
/ 20 января 2020

Я следовал инструкциям по установке v8 и libv8 gem. После этого я не могу успешно установить therubyracer 0.12.3. Mkmf.log дросселирует при попытке проверить заголовок v8.h и выдает unknown type name -ошибку.

Моя среда:

  • Ruby: 2.6.3
  • OSX: 10,15
  • xcode-select: 2373
  • libv8: 3.16.14.19
  • v8:v8@3.15 (через Homebrew) Информация о пиве v8@3.15 = v8@3.15: стабильный 3.15.11.18 (в бутылках) [только для бочонков]
  • g ++: Apple Clang версии 11.0.0 (clang-1100.0.33.17)

Я прошел через предложения здесь . Кто-нибудь получил предложения?

Gem install

gem install therubyracer -v '0.12.3' -- --with-v8-dir=/usr/local/opt/v8@3.15

Сообщение об ошибке

Building native extensions with: '--with-v8-dir=/usr/local/opt/v8@3.15'
This could take a while...
ERROR:  Error installing therubyracer:
ERROR: Failed to build gem native extension.

current directory: /Users/kristinsmith/.gem/ruby/2.6.0/gems/therubyracer-0.12.3/ext/v8
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I 
/Library/Ruby/Site/2.6.0 -r ./siteconf20200120-16109-4pdf22.rb extconf.rb --with-v8- 
dir\=/usr/local/opt/v8@3.15

checking for -lpthread... yes
checking for -lobjc... yes
checking for v8.h... no
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/$(RUBY_BASE_NAME)
--with-pthreadlib
--without-pthreadlib
--with-objclib
--without-objclib
--enable-debug
--disable-debug
--with-v8-dir
--with-v8-include
--without-v8-include=${v8-dir}/include
--with-v8-lib
--without-v8-lib=${v8-dir}/lib
/Users/kristinsmith/.gem/ruby/2.6.0/gems/libv8-3.16.14.19/ext/libv8/location.rb:50:in 
`configure': By using --with-system-v8, you have chosen to use the version  
(Libv8::Location::System::NotFoundError)
of V8 found on your system and *not* the one that is bundled with 
the libv8 rubygem. 

However, your system version of v8 could not be located. 

Please make sure your system version of v8 that is compatible 
with 3.16.14.19 installed. You may need to use the 
--with-v8-dir option if it is installed in a non-standard location
from /Users/kristinsmith/.gem/ruby/2.6.0/gems/libv8-3.16.14.19/lib/libv8.rb:7:in 
`configure_makefile'
from extconf.rb:32:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

/Users/kristinsmith/.gem/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/therubyracer- 
0.12.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/kristinsmith/.gem/ruby/2.6.0/gems/therubyracer- 
0.12.3 for inspection.
Results logged to /Users/kristinsmith/.gem/ruby/2.6.0/extensions/universal-darwin . 
19/2.6.0/therubyracer-0.12.3/gem_make.out

mkmf.log

...
find_header: checking for v8.h... -------------------- no

"xcrun clang I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10. 
5.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/backward -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I. -I/usr/local/opt/v8@3.15/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -Wall -g -rdynamic  -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS  -arch x86_64  -c conftest.c"
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
 In file included from conftest.c:3:
/usr/local/opt/v8@3.15/include/v8.h:98:1: error: unknown type name 'namespace' namespace v8 
{
 ^
/usr/local/opt/v8@3.15/include/v8.h:98:13: error: expected ';' after top level declarator 
namespace v8 {
        ^
        ;
2 errors generated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <v8.h>
/* end */

--------------------
...

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Большое спасибо за помощь! Окончательное решение оказалось:

  1. Установка rbenv
  2. Установка версии Ruby (2.6.3) в rbenv
  3. Добавление следующих строк в мой .zshr c:
    • eval "$ (rbenv init -)" (спасибо, Mykolas Kairys)
    • export LDFLAGS = "- L ~ / .rbenv / версии / 2.6.3 / lib "
    • export CPPFLAGS =" - I ~ / .rbenv / версии / 2.6.3 / включает "
0 голосов
/ 28 января 2020

У меня была такая же ошибка, и, наконец, оказалось, что версия rbenv ruby была проигнорирована. Запуск eval "$(rbenv init -)" решил проблему, и therubyracer был установлен правильно.

...