Solaris 11.2 と Solaris Studio 12.3 で MySQL 5.6.20 と 5.6.21 のビルドに失敗する件のメモ。
概要: DTrace 関連で "ld: fatal: symbol referencing errors" が出るので、
'-DENABLE_DTRACE=OFF' にすればビルドは通る。
(2014-11-21 追記)
@karky7 先生にこれを教えてもらった。
MySQL Bugs: #73826: cannot build mysql with DTrace on Solaris 11.2
http://bugs.mysql.com/bug.php?id=73826
11.1 の環境ではビルドできているし、どうやらこれのよう。
11.1 と 11.2 で dtrace -V の出力が異なるため、
DTrace の検知に失敗するらしい。
11.1
$ dtrace -V dtrace: Sun D 1.6.3
11.2
$ dtrace -V dtrace: Oracle D 1.11.2
DTrace の検知に失敗しているってことは、ビルド時のログをちゃんと読めば、
DTrace を検知できていないことが確認できたはず。
ビルドが通る 5.6.19 の spec ファイルのバージョンだけ書き換えて、
MySQL 5.6.20 と 5.6.21 をビルドしたところ、どちらもビルドが通らなかった。
5.6.21 のビルド時のログを見ると、以下のようにエラーが出ていた
(5.6.20 も同様)。
[ 64%] Building C object storage/myisam/CMakeFiles/myisamchk.dir/myisamchk.c.o "/home/tonaka/packages/BUILD/mysql-5.6.21/mysql-5.6.21-64/storage/myisam/myisamchk.c", line 135: warning: statement not reached [ 64%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/os/os0proc.cc.o Linking CXX executable myisam_ftdump Undefined first referenced symbol in file __dtraceenabled_mysql___keycache__read__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__block ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__hit ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__read__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__miss ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__write__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__write__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__block ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__start ../../mysys/libmysys.a(mf_keycache.c.o) ld: fatal: symbol referencing errors make[2]: *** [storage/myisam/myisam_ftdump] Error 2 make[1]: *** [storage/myisam/CMakeFiles/myisam_ftdump.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 64%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/os/os0sync.cc.o [ 64%] Building CXX object storage/perfschema/CMakeFiles/perfschema.dir/table_socket_summary_by_event_name.cc.o [ 64%] Building CXX object storage/perfschema/CMakeFiles/perfschema.dir/table_helper.cc.o Linking CXX executable myisamchk Undefined first referenced symbol in file __dtraceenabled_mysql___keycache__read__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__block ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__hit ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__read__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__read__miss ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__write__done ../../mysys/libmysys.a(mf_keycache.c.o) __dtraceenabled_mysql___keycache__write__start ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__block ../../mysys/libmysys.a(mf_keycache.c.o) __dtrace_mysql___keycache__write__start ../../mysys/libmysys.a(mf_keycache.c.o) ld: fatal: symbol referencing errors make[2]: *** [storage/myisam/myisamchk] Error 2 make[1]: *** [storage/myisam/CMakeFiles/myisamchk.dir/all] Error 2 [ 64%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/os/os0thread.cc.o
5.6.20 で DTrace の Oracle Linux 対応が入っているが、
5.6.21 の ChangeLog には以下のようにある。
With DTrace support enabled, certain other compilation options could cause the build to fail. (Bug #19506247)
これで修正された以外のビルドに失敗するパターンを踏んでいるんだろうか?
今やらなくてもいいので、一旦、保留にしておく。
- MySQL :: MySQL 5.6 Release Notes :: Changes in MySQL 5.6.20 (2014-07-31)
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html
- MySQL :: MySQL 5.6 Release Notes :: Changes in MySQL 5.6.21 (2014-09-23)
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-21.html