Как решить проблему компиляции mini_racer 0.2.4 для решения зависимости Bundler от Fedora 31? - PullRequest
0 голосов
/ 04 апреля 2020

Принимая участие в существующем проекте Rails, я сталкиваюсь с некоторыми трудностями при настройке среды, в результате чего в моей голове появляется печально известный «ад зависимости». Кажется, что он ограничен mini_racer 0.2.4.

Вот как это происходит:

bundle install
# […] lot of working stuffs
Fetching libv8 6.7.288.46.1 (x86_64-linux)
Installing libv8 6.7.288.46.1 (x86_64-linux)
# […] more working stuffs
Fetching mini_racer 0.2.4
Installing mini_racer 0.2.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.


    current directory: /home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/gems/mini_racer-0.2.4/ext/mini_racer_extension
/home/psychoslave/.rvm/rubies/ruby-2.5.1/bin/ruby -I /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0 -r ./siteconf20200404-68221-1tr6jr3.rb extconf.rb
checking for -lpthread... yes
creating Makefile

current directory: /home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/gems/mini_racer-0.2.4/ext/mini_racer_extension
make "DESTDIR=" clean

current directory: /home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/gems/mini_racer-0.2.4/ext/mini_racer_extension
make "DESTDIR="
compiling mini_racer_extension.cc
cc1plus: warning: command line option '-Wimplicit-int' is valid for C/ObjC but not for C++
mini_racer_extension.cc: In function 'void prepare_result(v8::MaybeLocal<v8::Value>, v8::TryCatch&, v8::Isolate*, v8::Local<v8::Context>, EvalResult&)':
mini_racer_extension.cc:234:73: error: no matching function for call to 'v8::Value::ToObject()'
  234 |                         String::NewFromUtf8(isolate, "JSON"))->ToObject();
      |                                                                         ^
In file included from mini_racer_extension.cc:4:
/home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/gems/libv8-7.3.492.27.1-x86_64-linux/vendor/v8/include/v8.h:2390:44: note: candidate: 'v8::MaybeLocal<v8::Object>
v8::Value::ToObject(v8::Local<v8::Context>) const'
 2390 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
      |                                            ^~~~~~~~
[…]
[A lot of other compiling errors]
[…]
At global scope:
cc1plus: warning: unrecognized command line option '-Wno-self-assign'
cc1plus: warning: unrecognized command line option '-Wno-constant-logical-operand'
cc1plus: warning: unrecognized command line option '-Wno-parentheses-equality'
make: *** [Makefile:210: mini_racer_extension.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/gems/mini_racer-0.2.4 for inspection.
Results logged to /home/psychoslave/.rvm/gems/ruby-2.5.1@the_project/extensions/x86_64-linux/2.5.0/mini_racer-0.2.4/gem_make.out

An error occurred while installing mini_racer (0.2.4), and Bundler cannot continue.
Make sure that `gem install mini_racer -v '0.2.4' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mini_racer

Просматривая веб-страницы, можно легко найти mini-racer, который не удается скомпилировать · Проблема # 4 · jules2689 / extended_bundler-errors , приводящий к Добавление обработки mini_racer . Из этого я попытался gem uninstall libv8 && gem install mini_racer -v '0.2.4' --source 'https://rubygems.org/, но он не может скомпилировать, как описано выше.

Теперь, запуск bundle update && bundle install работает как чудо, поэтому я подумал, что на данный момент я могу просто go с этим и посмотреть с помощью Остальная часть команды, если мы сможем обновить хотя бы самоцвет мини-гонщика. Затем я начал заполнять README.md, чтобы добавить некоторые детали, и захотел зафиксировать в новой ветке и попросить пересмотреть. Но бывает, что команда использует overcommit для добавления некоторых git хуков, которые рушатся, так как включает в себя Brakeman, который зависит от mini_racer-0.2.4:

git commit -m"Add more detailed procedure on how to install on Fedora 31"
Running pre-commit hooks
Analyze with RailsBestPractices..................[RailsBestPractices] OK
Check for vulnerable versions of gems...................[BundleAudit] WARNING
Run Brakeman...............................................[Brakeman] FAILED
/home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/spec_set.rb:91:in `block in materialize': Could not find mini_racer-0.2.4 in any of the sources (Bundler::GemNotFound)
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/spec_set.rb:85:in `map!'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/spec_set.rb:85:in `materialize'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/definition.rb:170:in `specs'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/definition.rb:237:in `specs_for'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/definition.rb:226:in `requested_specs'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:108:in `block in definition_method'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:20:in `setup'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler.rb:107:in `setup'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/bundler/setup.rb:20:in `<top (required)>'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /home/psychoslave/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'

Run YarnLint...............................................[YarnLint] OK

✗ One or more pre-commit hooks failed

Краткое описание платформы разработки:

  • Fedora 31 с готовым комплектом G CC 9.3.1 20200317 (Red Hat 9.3.1-1)
  • RVM 1.29.10
  • Версия Bundler 1.17. 3
  • Ruby 2.5.1p57 (ревизия 2018-03-29 63029) [x86_64-linux]
  • Rails 5.2.2
  • PATH: / home / psychoslave / .rvm / камни / ruby -2,5 1@the_project / бен:. /home/psychoslave/.rvm/gems/ruby-2.5.1@global/bin: / Главная / psychoslave / .rvm / рубины / ruby -2.5.1 / бен: /home/psychoslave/.local/bin: /home/psychoslave/.local/bin: / Главная / psychoslave / бен: /home/psychoslave/.local/bin: / Главная / psychoslave /. конфиг / NVM / версии / узел / v8.12.0 / бен: /home/psychoslave/.local/bin: /home/psychoslave/.local/bin: / Главная / psychoslave / бен: / USR / доли / Modules / бен: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/psychoslave/.rvm/bin
  • LIBRARY_PATH, CPATH, C_INCLUDE_ PATH, CPLUS_INCLUDE_PATH пусты

Какие шаги вы бы порекомендовали для решения этой проблемы зависимости?

1 Ответ

0 голосов
/ 06 апреля 2020

Наша команда просто набрала bundle update mini_racer, и теперь все работает. Конечно, он все еще не делает компиляции mini_racer 0.2.4 на Fedora 31.

...