From: "akr (Akira Tanaka)" Date: 2013-05-07T23:39:13+09:00 Subject: [ruby-dev:47327] [ruby-trunk - Bug #8379][Open] json dependency problem Issue #8379 has been reported by akr (Akira Tanaka). ---------------------------------------- Bug #8379: json dependency problem https://bugs.ruby-lang.org/issues/8379 Author: akr (Akira Tanaka) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.1.0dev (2013-05-07 trunk 40599) [i686-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN json の Makefile の依存関係ですが、generator.o と parser.o の依存先の ヘッダファイルが足りないようです。 過不足を調べてくれるスクリプト (update-deps) によれば、以下が足りないようです。 ext/json/generator/generator.o は以下が依存先として記述されていない: include/ruby.h include/ruby/ruby.h .ext/include/i686-linux/ruby/config.h include/ruby/defines.h include/ruby/missing.h include/ruby/intern.h include/ruby/st.h include/ruby/subst.h include/ruby/encoding.h include/ruby/oniguruma.h include/ruby/re.h include/ruby/regex.h ext/json/parser/parser.o は以下が依存先として記述されていない: ext/json/parser/parser.rl include/ruby.h include/ruby/ruby.h .ext/include/i686-linux/ruby/config.h include/ruby/defines.h include/ruby/missing.h include/ruby/intern.h include/ruby/st.h include/ruby/subst.h include/ruby/encoding.h include/ruby/oniguruma.h http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20130507T121000Z.log.html.gz#update-deps たとえば、generator.o について試すと、 以下のように ruby.h を更新した (ゴミをつけくわえた) 後に make しても 再コンパイルされません。 % cd ext/json/generator % make installing default generator libraries % ls -l ../../../include/ruby.h generator.o -rw-r--r-- 1 akr akr 868 May 7 23:31 ../../../include/ruby.h -rw-r--r-- 1 akr akr 214264 May 7 23:31 generator.o % echo foo >> ../../../include/ruby.h % make installing default generator libraries そして、generator.o を消して make すると再コンパイルされ、 (ruby.h にゴミがついているので) エラーになります。 % rm generator.o % make compiling generator.c In file included from ../../.././include/ruby/encoding.h:23, from ../fbuffer/fbuffer.h:29, from generator.c:1: ../../.././include/ruby/oniguruma.h:101: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘#pragma’ In file included from ../../.././include/ruby/re.h:25, from generator.h:11, from generator.c:2: ../../.././include/ruby/regex.h:27: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘#pragma’ つまり、generator.o の生成のためには ruby.h が必要ですが、 Makefile にその依存関係が記述されていないため、 ruby.h が更新されるだけでは make で generator.o が更新されないという 問題があります。 -- http://bugs.ruby-lang.org/