From f6f6efdfe979fec693294bb4f7378f1aa959a2cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 13 Nov 2024 13:35:35 +0100 Subject: [PATCH] Install Psych devel dependencies This prevents `bundle install` failures like: ~~~ :: [ 00:30:49 ] :: [ BEGIN ] :: Creating new rails application :: actually running 'rails new app | tee bundle.log' create create README.md ... snip ... Fetching rails 7.0.8.6 Installing rails 7.0.8.6 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /usr/local/share/gems/gems/psych-5.2.0/ext/psych /usr/bin/ruby -I/usr/share/rubygems extconf.rb checking for pkg-config for yaml-0.1... not found checking for yaml.h... no yaml.h not found *** 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=${opt-dir}/include --without-opt-include --with-opt-lib=${opt-dir}/lib64 --without-opt-lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/$(RUBY_BASE_NAME) --with-libyaml-source-dir --without-libyaml-source-dir --with-yaml-0.1-dir --without-yaml-0.1-dir --with-yaml-0.1-include=${yaml-0.1-dir}/include --without-yaml-0.1-include --with-yaml-0.1-lib=${yaml-0.1-dir}/lib64 --without-yaml-0.1-lib --with-yaml-0.1-config --without-yaml-0.1-config --with-pkg-config --without-pkg-config --with-libyaml-dir --without-libyaml-dir --with-libyaml-include=${libyaml-dir}/include --without-libyaml-include --with-libyaml-lib=${libyaml-dir}/lib64 --without-libyaml-lib To see why this extension failed to compile, please check the mkmf.log which can be found here: /usr/local/lib64/gems/ruby/psych-5.2.0/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /usr/local/share/gems/gems/psych-5.2.0 for inspection. Results logged to /usr/local/lib64/gems/ruby/psych-5.2.0/gem_make.out /usr/share/rubygems/rubygems/ext/builder.rb:125:in `run' /usr/share/rubygems/rubygems/ext/ext_conf_builder.rb:28:in `build' /usr/share/rubygems/rubygems/ext/builder.rb:193:in `build_extension' /usr/share/rubygems/rubygems/ext/builder.rb:227:in `block in build_extensions' /usr/share/rubygems/rubygems/ext/builder.rb:224:in `each' /usr/share/rubygems/rubygems/ext/builder.rb:224:in `build_extensions' /usr/share/rubygems/rubygems/installer.rb:844:in `build_extensions' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/rubygems_gem_installer.rb:109:in `build_extensions' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/rubygems_gem_installer.rb:28:in `install' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/source/rubygems.rb:205:in `install' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/installer/gem_installer.rb:55:in `install' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/installer/gem_installer.rb:17:in `install_from_spec' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/installer/parallel_installer.rb:133:in `do_install' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/installer/parallel_installer.rb:124:in `block in worker_pool' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/worker.rb:62:in `apply_func' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/worker.rb:57:in `block in process_queue' :187:in `loop' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/worker.rb:54:in `process_queue' /usr/share/gems/gems/bundler-2.5.22/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads' An error occurred while installing psych (5.2.0), and Bundler cannot continue. In Gemfile: debug was resolved to 1.9.2, which depends on irb was resolved to 1.14.1, which depends on rdoc was resolved to 6.7.0, which depends on psych run bundle binstubs bundler Resolving dependencies... rails importmap:install ... snip ... ~~~ Please note that this error happens only when Fedora ships older version of Psych then the version available on RubyGems, so the libyaml-devel might not be always needed. There are also other possibilities to workaround the issue, such as: * Excluding `development` and `test` groups from installation to avoid the `debug` gem dependency chain. * Using `--skip-bundle` option and modifying the Gemfile generated for the Ruby on Rails app. However, I believe that this is the most probable action our users would take. Also note that while there are installed other binary gems, such as Nokogiri, those ships prebuild binaries. If Psych decides to do the same in the future, the `libyaml-devel` might become redundant. --- run-basic-rails-application/main.fmf | 1 + 1 file changed, 1 insertion(+) diff --git a/run-basic-rails-application/main.fmf b/run-basic-rails-application/main.fmf index 0206556..768713c 100644 --- a/run-basic-rails-application/main.fmf +++ b/run-basic-rails-application/main.fmf @@ -19,4 +19,5 @@ require: - git-core - rubygems - rubypick +- libyaml-devel duration: 20m