Prev / Next

2014-11-13 / MySQL 5.6.20, 5.6.21 のビルド on Solaris 11.2

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

comments powered by Disqus