Skip to content

[Ruby] red-arrow fails to install on arm64 macOS with rubygems-requirements-system #50180

Closed

Description

@amoeba

Describe the bug, including details regarding any error messages, version, and platform.

When using red-arrow with rubygems-requirements-system on arm64 macOS, installing system requirements fails. There are at least a few ways to fix this so I'm filing an issue to discuss.

My Gemfile:

source "https://rubygems.org"

plugin "rubygems-requirements-system"

gem "activerecord-adbc-adapter"

My error,

$ bundle
-- >8 -- 
Installing red-arrow 24.0.0 with native extensions
requirements: system: arrow-c-glib: install: Start
Retrieving notices: done
Channels:
 - conda-forge
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - arrow-c-glib

Current channels:

  - https://conda.anaconda.org/conda-forge

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.


requirements: system: arrow-c-glib: install: failed
requirements: system: arrow-c-glib: install: Failed.
requirements: system: Run the following command to install required system package: /opt/homebrew/Caskroom/miniforge/base/bin/conda install -c conda-forge -y arrow-c-glib
Gem::InstallError: pre-install hook at /Users/bryce/tmp/arrow-ruby/.bundle/plugin/gems/rubygems-requirements-system-0.1.7/plugins.rb:17 failed for red-arrow-24.0.0
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/rubygems/installer.rb:317:in 'block in Gem::Installer#run_pre_install_hooks'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/rubygems/installer.rb:312:in 'Array#each'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/rubygems/installer.rb:312:in 'Gem::Installer#run_pre_install_hooks'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/rubygems_gem_installer.rb:14:in 'Bundler::RubyGemsGemInstaller#install'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/source/rubygems.rb:217:in 'block in Bundler::Source::Rubygems#install'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/rubygems.rb:1051:in 'Gem.time'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/source/rubygems.rb:216:in 'Bundler::Source::Rubygems#install'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/installer/gem_installer.rb:54:in 'Bundler::GemInstaller#install'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/installer/gem_installer.rb:17:in 'Bundler::GemInstaller#install_from_spec'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/installer/parallel_installer.rb:133:in 'Bundler::ParallelInstaller#do_install'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/installer/parallel_installer.rb:124:in 'block in Bundler::ParallelInstaller#worker_pool'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/worker.rb:62:in 'Bundler::Worker#apply_func'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/worker.rb:57:in 'block in Bundler::Worker#process_queue'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/worker.rb:54:in 'Kernel#loop'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/worker.rb:54:in 'Bundler::Worker#process_queue'
  /Users/bryce/.rubies/ruby-4.0.0/lib/ruby/4.0.0/bundler/worker.rb:90:in 'block (2 levels) in Bundler::Worker#create_threads'

An error occurred while installing red-arrow (24.0.0), and Bundler cannot continue.

In Gemfile:
  activerecord-adbc-adapter was resolved to 0.0.1, which depends on
    red-adbc was resolved to 1.11.0, which depends on
      red-arrow

I see it errors out when trying to find arrow-c-glib on conda-forge which fails because we don't have arm64 packages on conda-forge. But the real thing I wanted was for rubygems-requirements-system to ignore the failure and continue down to try to install with homebrew.

To fix this, I think we could:

  1. Publish arm64 binaries to conda-forge
  2. Remove the conda options from the requirements since Linux users will already get covered by apt/yum/etc
  3. Improve rubygems-requirements-system to have fallback behavior in this case (package manager and package name is available but wrong platform)

System Info

$ ruby -v
ruby 4.0.0 (2025-12-25 revision 553f1675f3) +PRISM [arm64-darwin25]

$ bundle -v
4.0.3

cc @kou

Component(s)

Ruby

Activity

  1. kou commented on Jun 15, 2026

    @kou
    Member

    Oh, sorry. I didn't notice the case.

    Let's use the 1. option for this case: conda-forge/arrow-c-glib-feedstock#42

    But the 3. option is also interesting. I'll add support for specifying platform explicitly by users instead of auto fallback. If the detected platform isn't expected by users, users will want to specify their platform explicitly.

  2. kou commented on Jun 16, 2026

    @kou
    Member

    Let's use the 1. option for this case: conda-forge/arrow-c-glib-feedstock#42

    It's merged. This problem must be solved.

  3. kou commented on Jul 18, 2026

    @kou
    Member

    We can use RUBYGEMS_REQUIREMENTS_SYSTEM=homebrew with rubygems-requirements-system 0.1.8 to use Homebrew instead of conda.

  4. amoeba commented on Jul 24, 2026

    @amoeba
    MemberAuthor

    RUBYGEMS_REQUIREMENTS_SYSTEM_PLATFORM=homebrew (not RUBYGEMS_REQUIREMENTS_SYSTEM=homebrew) works great now, thanks @kou!

    I took a look at option (3) and realized that part of what's going on is that homebrew and conda aren't playing well together. I filed two PRs because the same thing was happening in two places:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions