ruby-*/ext/-test-/printf/printf.c 内に utoa という static 関数が 2013-09-19 に tag:v2_1_0_preview1 にて導入された。
この commit は ruby-2.0.0-p481 以降 ruby-2.0.0-p576 がリリースされる間のどこかで ruby-2.0.0 にも backport されている。
また cygwin 32/64 双方において cygwin-1.7.33-1 以降 cygwin-1.7.34-6 までのどこかで cygwin-devel に含まれる /usr/include/stdlib.h 内にも utoa が追加されており、しかも、この2つの utoa に互換性はない。
このため、少なくとも cygwin-1.7.34-6 以降で ruby-2.0.0-p576 以降、及び ruby-2.1.0-preview1 以降をビルドすると、utoa がコンフリクトするためコンパイルに失敗する。
例えば、ruby-2.1.5 だと以下の様に失敗する。
2015-02-16 現在、この影響を受けるリリースは以下の通りである。
対応策としては ruby-*/ext/-test-/printf/printf.c 内に出て来る utoa を my_utoa とか適当な名前に置換しておけば良い。
なお、現時点において Debian stable, Debian unstable, Ubuntu 14.04.1 LTS では上記の不具合は確認出来なかった。
また cygwin 32/64 双方において cygwin-1.7.33-1 以降 cygwin-1.7.34-6 までのどこかで cygwin-devel に含まれる /usr/include/stdlib.h 内にも utoa が追加されており、しかも、この2つの utoa に互換性はない。
このため、少なくとも cygwin-1.7.34-6 以降で ruby-2.0.0-p576 以降、及び ruby-2.1.0-preview1 以降をビルドすると、utoa がコンフリクトするためコンパイルに失敗する。
例えば、ruby-2.1.5 だと以下の様に失敗する。
... make[2]: Entering directory '/tmp/ruby-build.20150216164934.2208/ruby-2.1.5/ext/-test-/printf' compiling printf.c linking shared-object -test-/postponed_job.so printf.c:31:1: エラー: ‘utoa’ と型が競合しています utoa(char *p, char *e, unsigned int x) ^ In file included from /usr/include/stdio.h:29:0, from ../../.././include/ruby/defines.h:26, from ../../.././include/ruby/ruby.h:29, from ../../.././include/ruby.h:33, from printf.c:1: /usr/include/stdlib.h:184:8: 備考: 前の ‘utoa’ の宣言はここです char * _EXFUN(utoa,(unsigned, char *, int)); ^ Makefile:228: recipe for target 'printf.o' failed make[2]: *** [printf.o] Error 1 make[2]: Leaving directory '/tmp/ruby-build.20150216164934.2208/ruby-2.1.5/ext/-test-/printf' exts.mk:110: recipe for target 'ext/-test-/printf/all' failed make[1]: *** [ext/-test-/printf/all] Error 2 make[1]: *** 未完了のジョブを待っています.... make[2]: Leaving directory '/tmp/ruby-build.20150216164934.2208/ruby-2.1.5/ext/-test-/postponed_job' make[1]: Leaving directory '/tmp/ruby-build.20150216164934.2208/ruby-2.1.5' uncommon.mk:180: recipe for target 'build-ext' failed make: *** [build-ext] Error 2
2015-02-16 現在、この影響を受けるリリースは以下の通りである。
- ruby-2.0.0-p576 以降、最新の ruby-2.0.0-p598 まで
- ruby-2.1.0-preview1 以降、最新の ruby-2.1.5 まで
- ruby-2.2.0 系列では、最新の ruby-2.2.0 まで
- ruby-2.3.0 系列では、最新の ruby-2.3.0-dev まで
対応策としては ruby-*/ext/-test-/printf/printf.c 内に出て来る utoa を my_utoa とか適当な名前に置換しておけば良い。
なお、現時点において Debian stable, Debian unstable, Ubuntu 14.04.1 LTS では上記の不具合は確認出来なかった。
タグ
コメントをかく