[ruby-dev:49469] [Ruby trunk - Bug #11944] ruby lib version (2.4.0) doesn't match executable version (RUBY_PROGRAM_VERSION_MAJOR.RUBY_PROGRAM_VERSION_MINOR.0) (RuntimeError)
From:
ngotogenome@...
Date:
2016-01-04 02:35:13 UTC
List:
ruby-dev #49469
Issue #11944 has been updated by Naohisa Goto.
以下のパッチでエラーが出なくなることは確認しました。
~~~
Index: version.h
===================================================================
--- version.h (revision 53426)
+++ version.h (working copy)
@@ -3,7 +3,7 @@
#define RUBY_PROGRAM_VERSION_TEENY 0
#define RUBY_BUILD_VERSION_STR_2(v) STRINGIZE(v##_MAJOR)"."STRINGIZE(v##_MINOR)
-#define RUBY_BUILD_VERSION_STR_3(v) RUBY_BUILD_VERSION_STR_2(v)"."STRINGIZE(v##_TEENY)
+#define RUBY_BUILD_VERSION_STR_3(v) STRINGIZE(v##_MAJOR)"."STRINGIZE(v##_MINOR)"."STRINGIZE(v##_TEENY)
#define RUBY_PROGRAM_VERSION RUBY_BUILD_VERSION_STR_3(RUBY_PROGRAM_VERSION)
#define RUBY_VERSION RUBY_PROGRAM_VERSION
~~~
----------------------------------------
Bug #11944: ruby lib version (2.4.0) doesn't match executable version (RUBY_PROGRAM_VERSION_MAJOR.RUBY_PROGRAM_VERSION_MINOR.0) (RuntimeError)
https://bugs.ruby-lang.org/issues/11944#change-55945
* Author: Naohisa Goto
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v: -
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
おそらく r53314 以降、Solaris にて古い fcc (Fujitsu C Compiler) にて、
以下のエラーによりビルドに失敗します。
~~~
./miniruby -I./lib -I. -I.ext/common ./enc/make_encmake.rb --builtin-encs="enc/ascii.o enc/us_ascii.o enc/unicode.o enc/utf_8.o" --builtin-transes="enc/trans/newline.o" --module enc.mk
/XXXXX/rbconfig.rb:9:in `<module:RbConfig>': ruby lib version (2.4.0) doesn't match executable version (RUBY_PROGRAM_VERSION_MAJOR.RUBY_PROGRAM_VERSION_MINOR.0) (RuntimeError)
from /XXXXX/rbconfig.rb:7:in `<top (required)>'
from /XXXXX/lib/mkmf.rb:6:in `require'
from /XXXXX/lib/mkmf.rb:6:in `<top (required)>'
from ./enc/make_encmake.rb:8:in `load'
from ./enc/make_encmake.rb:8:in `<main>'
make: *** [enc.mk] Error 1
~~~
version.h 内の
> #define RUBY_BUILD_VERSION_STR_2(v) STRINGIZE(v##_MAJOR)"."STRINGIZE(v##_MINOR)
> #define RUBY_BUILD_VERSION_STR_3(v) RUBY_BUILD_VERSION_STR_2(v)"."STRINGIZE(v##_TEENY)
にて文字列を作っていますが、
古いfccでは、トークン結合 ## の後のマクロ展開がおかしいことになっているようです。
RUBY_PROGRAM_VERSION_TEENY は0に展開されているので、マクロ組み合わせ時の問題?
(fccのcppのバグ?)
--
https://bugs.ruby-lang.org/