LoginSignup
1
1

More than 5 years have passed since last update.

ruby2.2.0 + chef-zero で../fbuffer/fbuffer.h:175:47: error: マクロ "rb_str_new" は引数を 2 要求しますが、1 個しか与えられていません

Last updated at Posted at 2015-02-18

ruby2.2.0を入れて、chefzeroを入れようとしたら表題のエラー

Gemfile
gem "chef"
gem "chef-zero"

エラー内容

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/rails/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150218-11650-18cozd7.rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
generator.c:1 から include されたファイル中:
../fbuffer/fbuffer.h:175:47: error: マクロ "rb_str_new" は引数を 2 要求しますが、1 個しか与えられていません
In file included from generator.c:1:
../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
../fbuffer/fbuffer.h:175: 警告: initialization makes integer from pointer without a cast
make: *** [generator.o] エラー 1

make failed, exit code 2

Gem files will remain installed in /home/rails/chef-zero/vendor/ruby/2.2.0/gems/json-1.7.7 for inspection.
Results logged to /home/rails/chef-zero/vendor/ruby/2.2.0/extensions/x86_64-linux/2.2.0-static/json-1.7.7/gem_make.out
An error occurred while installing json (1.7.7), and Bundler cannot continue.
Make sure that `gem install json -v '1.7.7'` succeeds before bundling.


json gemのコンパイルがうまくいかないもよう

デフォルトでjson 1.7.2が入るみたいなのだけど、
その中で呼ばれるfbuffer_to_sでおこられている。

対象行を見ると

static VALUE fbuffer_to_s(FBuffer *fb){
VALUE result = rb_str_new(FBUFFER_PAIR(fb)); #ここ
...

ってなってて,どうやらこの引数が足りていないの??

マクロは

#define FBUFFER_PAIR(fb) FBUFFER_PTR(fb), FBUFFER_LEN(fb)

になっているんだけど、

そしたら同じ人達がここにいて
https://github.com/flori/json/issues/229

ここでもうすでに修正されていた(1.8.2)
cのマクロのとこでつまずいているみたいだけど、cはもう覚えていないので適当にふーん

解決策は、gemfileで1.8.2を指定する

Gemfile
gem "json" ,'1.8.2'
gem "chef"
gem "chef-zero"

これでいいのかな?
とりあえずbundle installはうまくいきました ;)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1