Skip to content

Instantly share code, notes, and snippets.

@taketo1113
Last active November 2, 2024 13:56
Show Gist options
  • Save taketo1113/b2dc7b06233f9f40fad1d5af5a80f29b to your computer and use it in GitHub Desktop.
Save taketo1113/b2dc7b06233f9f40fad1d5af5a80f29b to your computer and use it in GitHub Desktop.

Revisions

  1. taketo1113 revised this gist Sep 18, 2024. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions ERROR: Failed to build gem native extension.md
    Original file line number Diff line number Diff line change
    @@ -101,6 +101,8 @@ irb(main):002> CONFIG['CXX']
    ruby-build occurs CXXFLAGS is not valid, when fail to build gem native extension.
    ```
    $ rbenv install -f -v 3.3.4
    ...
    checking whether CXXFLAGS is valid... no
    configure: WARNING: something wrong with CXXFLAGS="-fdeclspec"
    ```
  2. taketo1113 created this gist Sep 18, 2024.
    106 changes: 106 additions & 0 deletions ERROR: Failed to build gem native extension.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,106 @@
    # ERROR: Failed to build gem native extension
    ## Environment
    - Mac mini (Apple M1)
    - OS: macOS 14.7
    - ruby: ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
    - ruby-build: ruby-build 20240917 (homebrew)

    ## Error Details: gem install
    ```ruby
    # Gemfile
    source "https://rubygems.org"
    git_source(:github) { |repo| "https://github.com/#{repo}.git" }

    gem "unf_ext"
    ```

    ```sh
    $ bundle install --path tmp
    [DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'tmp'`, and stop using this flag
    Fetching gem metadata from https://rubygems.org/.
    Resolving dependencies...
    Fetching unf_ext 0.0.9.1
    Installing unf_ext 0.0.9.1 with native extensions
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/taketo/tmp/hoge/tmp/ruby/3.3.0/gems/unf_ext-0.0.9.1/ext/unf_ext
    /Users/taketo/.rbenv/versions/3.3.4/bin/ruby extconf.rb
    checking for -lstdc++... yes
    creating Makefile

    current directory: /Users/taketo/tmp/hoge/tmp/ruby/3.3.0/gems/unf_ext-0.0.9.1/ext/unf_ext
    make DESTDIR\= sitearchdir\=./.gem.20240918-54275-bc6g24 sitelibdir\=./.gem.20240918-54275-bc6g24 clean

    current directory: /Users/taketo/tmp/hoge/tmp/ruby/3.3.0/gems/unf_ext-0.0.9.1/ext/unf_ext
    make DESTDIR\= sitearchdir\=./.gem.20240918-54275-bc6g24 sitelibdir\=./.gem.20240918-54275-bc6g24
    compiling unf.cc
    make: *** [unf.o] Error 1

    make failed, exit code 2

    Gem files will remain installed in /Users/taketo/tmp/hoge/tmp/ruby/3.3.0/gems/unf_ext-0.0.9.1 for inspection.
    Results logged to /Users/taketo/tmp/hoge/tmp/ruby/3.3.0/extensions/arm64-darwin-23/3.3.0/unf_ext-0.0.9.1/gem_make.out

    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:125:in `run'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:51:in `block in make'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:43:in `each'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:43:in `make'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/ext_conf_builder.rb:42:in `build'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:193:in `build_extension'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:227:in `block in build_extensions'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `each'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `build_extensions'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/installer.rb:852:in `build_extensions'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/rubygems_gem_installer.rb:76:in `build_extensions'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/rubygems_gem_installer.rb:28:in `install'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/source/rubygems.rb:206:in `install'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/installer/gem_installer.rb:54:in `install'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/installer/parallel_installer.rb:132:in `do_install'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/installer/parallel_installer.rb:123:in `block in worker_pool'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/worker.rb:62:in `apply_func'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/worker.rb:57:in `block in process_queue'
    <internal:kernel>:187:in `loop'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/worker.rb:54:in `process_queue'
    /Users/taketo/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundler/worker.rb:90:in `block (2 levels) in create_threads'
    An error occurred while installing unf_ext (0.0.9.1), and Bundler cannot continue.
    In Gemfile:
    unf_ext
    ```
    ## Steps to reproduce
    ```sh
    $ ruby-build --version
    ruby-build 20240917
    $ openssl version
    OpenSSL 3.3.2 3 Sep 2024 (Library: OpenSSL 3.3.2 3 Sep 2024)
    $ rbenv install -f 3.3.4
    $ ruby -v
    ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
    ```
    ### ruby build option
    `CONFIG['CXX']` returns false when fail to build gem native extension.
    It returns `clang++` when success to build .
    ```ruby
    $ irb
    irb(main):001> require 'mkmf'
    => true
    irb(main):002> CONFIG['CXX']
    => "false"
    ```
    ### ruby-build
    ruby-build occurs CXXFLAGS is not valid, when fail to build gem native extension.
    ```
    checking whether CXXFLAGS is valid... no
    configure: WARNING: something wrong with CXXFLAGS="-fdeclspec"
    ```
    3,736 changes: 3,736 additions & 0 deletions ruby-build.log
    3,736 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.