FreeBSD: openjdk6 unimplemented: 64-bit mode not compiled in

別件で、FreeBSDのパッケージを更新中ですが、portupgrade でビルド中に次のエラーが発生し、止まってしまいました。

/usr/ports/java/openjdk6/work/hotspot/src/share/vm/adlc/adlparse.cpp:1: sorry, unimplemented: 64-bit mode not compiled in
gmake[6]: *** [../generated/adfiles/adlparse.o] Error 1
gmake[6]: Leaving directory `/usr/ports/java/openjdk6/work/build/bsd-i386/hotspot/outputdir/bsd_amd64_compiler2/product'
gmake[5]: *** [ad_stuff] Error 2
gmake[5]: Leaving directory `/usr/ports/java/openjdk6/work/build/bsd-i386/hotspot/outputdir/bsd_amd64_compiler2/product'
gmake[4]: *** [product] Error 2
gmake[4]: Leaving directory `/usr/ports/java/openjdk6/work/build/bsd-i386/hotspot/outputdir'
gmake[3]: *** [generic_build2] Error 2
gmake[3]: Leaving directory `/usr/ports/java/openjdk6/work/hotspot/make'
gmake[2]: *** [product] Error 2
gmake[2]: Leaving directory `/usr/ports/java/openjdk6/work/hotspot/make'
gmake[1]: *** [hotspot-build] Error 2
gmake[1]: Leaving directory `/usr/ports/java/openjdk6/work'
gmake: *** [build_product_image] Error 2
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop in /usr/ports/java/openjdk6.
*** Error code 1

Stop in /usr/ports/textproc/fop.
*** Error code 1

Stop in /usr/ports/misc/freebsd-doc-ja.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20131125-61719-8yne3m env UPGRADE_TOOL=portupgrade UPGRADE_PORT=ja-freebsd-doc-43088_1,1 UPGRADE_PORT_VER=43088_1,1 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! misc/freebsd-doc-ja (ja-freebsd-doc-43088_1,1)        (unknown build error)

「sorry, unimplemented: 64-bit mode not compiled in」って、どういうことよ~。ビルドしているマシンのCPUは32bitですよ。それは、i386バイナリーのOSなのだから、コンパイル前にシステム側で把握できると思うのだけどうなっているの?と言いたいところです。

こればっかりは、パッケージを抜いたり入れたりでどうこうなるレベルじゃありません。ヒントとしては、MAKE_JOBS_UNSAFE 環境変数をセットしてビルドし直せということなので、portupgrade コマンドを発行する前に、セットして試してみることにします。このため、portupgradeコマンドではなく、make でビルドすることにします。

# setenv MAKE_JOBS_UNSAFE yes
# cd /usr/ports/java/openjdk6/
# make install clean

makeには延々と時間が掛かり、私のPCでは約12時間かかりましたが、恐らく i586 モードでコンパイルしたのでしょう、無事に openjdk6 のインストールが完了しました。

このあとで、パッケージ更新作業に戻り、portupgrade コマンドでアップデートを続けましたが、32bit OS上で作業していて、64bitモードが入っていない的なメッセージ(イマイチ意味がよくわからないエラーでした)が出たのには驚きでした。

2013/12/13追記
64bit FreeBSD で openjdk6 をビルドしても、結局、別のエラーでビルドがエラーとなりました。

コメントを残す