hiredis-rb icon indicating copy to clipboard operation
hiredis-rb copied to clipboard

Unable to install on latest master

Open gyfis opened this issue 3 years ago • 4 comments

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

gyfis avatar Feb 11 '22 15:02 gyfis

I too have this issue, though with ruby 3.0.2

milieu avatar Feb 18 '22 15:02 milieu

~~Looks like this issue might be related in the C library: https://github.com/redis/hiredis/issues/862~~ different build error for hiredis, ignore

milieu avatar Feb 18 '22 15:02 milieu

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

milieu avatar Feb 18 '22 16:02 milieu

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

skull-squadron avatar Aug 31 '22 02:08 skull-squadron