見出し画像

[2018年5月]OpenJDKは広いなぁ♪大きいなぁ♪

2位じゃだめなんですか?の「京」のアルバイトジョブには、続きがありまして...

アルバイトジョブ
https://note.com/shino_project/n/n4386ef505715?magazine_key=m4be0a0529f34

「仕事を依頼してうまくいった相手には、再度仕事をお願いしたくなる」というのは、よくあることで...
そんな感じで次のジョブがきました。

今回のお題は、「京」でOpenJDK8がビルドできないのでビルドして欲しい。
いやー、相変わらずの無茶ぶりがきますねw

Javaは、2000年にJava2EnterpriseEditionをやってから以後は開発言語として使ってきました。
(2000年のころはSUNマイクロシステムズの持ち物、その後2010年にOracleが引き取って2018年頃からLTS版が有償化されました[今はまた無償化になりました?])

Oracle Java を OSS化した OpenJDK8 をビルドする。
それは、何を意味するかというとOpenJDK8のソースを見てビルドエラーになっているところを直すこと!!
もう1回書きますが、日頃、Javaは開発言語としてだけ使っています。

さて、何から手をつけましょうか...

少しだけヒントがありまして、OpenJDK7はビルドできて動作しているそうです。
OpenJDK7とOpenJDK8の間にどんな変更があって「京」でビルドできないんだから探るしかないか
OpenJDK8は、ガベージコレクションの仕組みが大きく変わっています。
ここから探るか...
いや、OpenJDK8って
3万ステップのJavaソースファイルと2千ステップのC++ソースファイルでできていた。
太平洋やん スケールが...

気を取り直して、とりあえず、ビルドしてみてエラーを再現することからやってみる。
なるほど、ビルドエラーになる。
エラーにソース箇所も特定できた。

エラー内容をもとにググった。
数日間ググり続けたところ
https://archlinuxarm.org/forum/viewtopic.php?f=15&t=12619
をみつけた。
OSディストリビューション(archlinux)、チップ(ARM)、JRE(バージョン:jdk8u162-b12)など依頼内容と少し異なる点はありますが、同様のエラーとなっていました。

サイト内の質問の回答に修正プログラムのリンクがあると回答があります。
これ
Java no longer works after an OSMC system update on a Raspberry Pi 3 #225
https://github.com/Optware/Optware-ng/issues/225

OSディストリビューション(OSMC)、ハードウェア(RaspberryPi)、JREなど こちらも依頼内容と異なる点はありますが、参考になります。

サイト内のリンクに対処方法が書かれたGitHubのサイトがありました。
これ
https://github.com/Optware/Optware-ng/commit/f2cd5258faf13c4efb9e70eb9e9e8b2b7269a481

それは、ビルドするためのメークファイル(Makefile)のJava7とJava8の差分でした。

メークファイルかぁ...
それ、答えに近いかも

で、このサイトのビルドオプションを参考にオプションの組み合わせや使うべきオプションを調査して複数パターンビルドしました。

2018年5月25日(金)
そして、太平洋の海底に落ちていたカギを見つけました。
そのカギでお宝の箱は開いたのですが、開発者は、1人だけのボッチプロジェクトなのでカチャと開いたときに誰とも共感できませんでした。
机の下で片手で小さくガッツポーズしたにとどまりました。

この記事が気に入ったらサポートをしてみませんか?