hiredis-rb
hiredis-rb copied to clipboard
Unable to install on latest master
Hi, I'm trying to use hiredis with the native SSL support, which seems to be available on the master
branch of the repo, but I'm unable to install the gem when specifying gem 'hiredis', github: 'redis/hiredis-rb'
in my Gemfile.
I'm using Ruby 2.7.5., M1 Max MacBook, but this also happens on a Ubuntu 20.04 machine. The stacktrace is quite mysterious, so I wasn't able to figure out where or why it's failing. I have hiredis
installed via brew
.
Any pointers appreciated!
Here are the stacktrace and related files:
bundle install
> bundle install
...
Using hiredis 0.6.3 from https://github.com/redis/hiredis-rb.git (at master@a66f527)
/Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:167: warning: conflicting chdir during another chdir block
/Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:175: warning: conflicting chdir during another chdir block
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/hiredis-rb-a66f527d7661/ext/hiredis_ext
/Users/gyfis/.rbenv/versions/2.7.5/bin/ruby -I /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/2.7.0 -r ./siteconf20220211-34460-1bi0xss.rb extconf.rb --with-cflags\=-std\=c99
checking for sys/socket.h... yes
make: *** No rule to make target `static'. Stop.
*** 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=/Users/gyfis/.rbenv/versions/2.7.5/bin/$(RUBY_BASE_NAME)
--with-sys-dir
--without-sys-dir
--with-sys-include
--without-sys-include=${sys-dir}/include
--with-sys-lib
--without-sys-lib=${sys-dir}/lib
extconf.rb:33:in `block in <main>': Building hiredis failed (RuntimeError)
from extconf.rb:31:in `chdir'
from extconf.rb:31:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/extensions/arm64-darwin-21/2.7.0/hiredis-rb-a66f527d7661/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/hiredis-rb-a66f527d7661 for inspection.
Results logged to /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/extensions/arm64-darwin-21/2.7.0/hiredis-rb-a66f527d7661/gem_make.out
An error occurred while installing hiredis (0.6.3), and Bundler cannot continue.
In Gemfile:
hiredis
Here's the` hiredis-rb-a66f527d7661/mkmf.log`:
have_header: checking for sys/socket.h... -------------------- yes
"clang -o conftest -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0/arm64-darwin21 -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0/ruby/backward -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0 -I. -I/Users/gyfis/.rbenv/versions/2.7.5/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -std=c99 conftest.c -L. -L/Users/gyfis/.rbenv/versions/2.7.5/lib -L. -L/Users/gyfis/.rbenv/versions/2.7.5/lib -fstack-protector-strong -m64 -lruby.2.7 "
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return !!argv[argc];
6: }
/* end */
"clang -E -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0/arm64-darwin21 -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0/ruby/backward -I/Users/gyfis/.rbenv/versions/2.7.5/include/ruby-2.7.0 -I. -I/Users/gyfis/.rbenv/versions/2.7.5/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -std=c99 conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <sys/socket.h>
/* end */
--------------------
And here's the `gem_make.out`:
current directory: /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/hiredis-rb-a66f527d7661/ext/hiredis_ext
/Users/gyfis/.rbenv/versions/2.7.5/bin/ruby -I /Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/2.7.0 -r ./siteconf20220211-34460-1bi0xss.rb extconf.rb --with-cflags\=-std\=c99
checking for sys/socket.h... yes
make: *** No rule to make target `static'. Stop.
*** 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=/Users/gyfis/.rbenv/versions/2.7.5/bin/$(RUBY_BASE_NAME)
--with-sys-dir
--without-sys-dir
--with-sys-include
--without-sys-include=${sys-dir}/include
--with-sys-lib
--without-sys-lib=${sys-dir}/lib
extconf.rb:33:in `block in <main>': Building hiredis failed (RuntimeError)
from extconf.rb:31:in `chdir'
from extconf.rb:31:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/gyfis/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/bundler/gems/extensions/arm64-darwin-21/2.7.0/hiredis-rb-a66f527d7661/mkmf.log
extconf failed, exit code 1
I too have this issue, though with ruby 3.0.2
~~Looks like this issue might be related in the C library: https://github.com/redis/hiredis/issues/862~~ different build error for hiredis, ignore
Looks like the build error we're running into locally is basically a duplicate of this unresolved (😢) issue: https://github.com/redis/hiredis-rb/issues/54
The build error in that issue looks the same, but is probably ran from a Docker container -- it looks similar to what I was seeing on an Alpine container before I switched to looking at this locally
Native ext ( d62cb77c72fe292e4f35f385467006096b7d9e3b ) builds fine on M1 Max + 3.1.2, 2.7.6, and 2.6.10.
brew uninstall --ignore-dependencies hiredis; gem install specific_install && gem specific_install https://github.com/redis/hiredis-rb