| いつだかテレビであの熊が愚かな虎にハチミツの壺をひっくり返されるという筋の寸劇を流しているのを見て、不幸を穏やかに哀しみはするが決して虎を責めない熊の生き方にタイヘン共感し、自分もこの熊のように生きたいとは思っている。 | ![]() |
まず、https://jdk7.dev.java.netに行く。そこに「Download JDK7」というリストがあって
ブブー
JDKはついこないだオープンソース化されたばかりだが、ここまで発展するのに一部オープンソース化できないサードパーティーなどのコンポーネントを含んでいる。将来すべてがクリアでオープンなコードに書き換わるまで、今はその部分だけはバイナリで提供している...そのハナシはSun様の「Javaの開き始めました」ドキュメントを何度も読んでよく知っていて自分がSun様に代わって説明してもいいくらいと思っていたのに、スコーンと忘れてたっつかそれがコレだということがアタマに浮かばなかったのだ。それでエラー連発だ。「JDK Biranies for Source Buildって書いてあるだろゴルァ」もちゃんとダウンロードすべし。
jdk-7-ea-src-b05-jri-04_jan_2007.jar
jdk-7-ea-bin-b05-jrl-04_jan_2007.jar
jdk-7-ea-mozilla_headers-b05-unix-04_jan_2007.jar
java -jar jdk-7-ea-src-b05-jri-04_jan_2007.jar
すると、ちょっとだけ待つかも知れないが、GUIが立ち上がって「どこに展開しますか」ときいてくる。同時に与えられたファイルブラウザから、/home/noniko/openjdkを選んでやればよいのだ。このソースコードのアーカイブが一番時間がかかる。あとの二つも同じところを指定する。これらの展開はハナイキで終わる。 終わると、openjdkフォルダの中は、以下のようなファイル/フォルダ構成になっているはずだ。JDKソースのフォルダ・ファイルリスト BinaryLicense.txt j2se JavaResearchLicense.txt javalogo52x88.gif MPL-1.1.txt motif README-builds.html share README.html sunlogo64x30.gif build-linux.html build-solaris.html build-windows.html build.html control deploy hotspot install上記で、フトシさんはフォルダだ。単体ファイルは全部インストラクションだのライセンスだの画像だから、ビルドそのものには関係ない。ただし、README-builds.htmlは全ての指針が書いてある大事なファイルだ。
suでrootになり
./installer
STDPATH=/opt/SUNWspro/bin export STDPATH MYPATH=/usr/sfw/bin:/opt/sfw/bin:/opt/sfw/lib/bin:/usr/ccs/bin export MYPATH PATH=$STDPATH:$MYPATH:$PATH export PATH
su - noniko パスワード:(入力する) Sun Microsystems Inc. SunOS 5.10 Generic January 2005みたいに、ログイン成功のメッセージが帰ってくれば、そのとき環境設定ファイルは読み込まれている。
. .profile昔はこの「.」って何かわからなかったんだヨのに子も。ちったあ物知りになったもんだヨ。
だがいくつもコンソール乱立状態になったりうっかりコンソールを閉じてまた上げたりして、あーこのコンソールで環境設定読んでねえしムキーとかなりやすい人はもう男らしくズバーッとデスクトップごとログアウトしてまたズガーっとログインし直したほうがスッキリする!とにかくそのようなことをやってSun Studioの「cc」コマンドをシステムに覚えさせておく。
LANG=C export LANGとやってもいいんだが、何もまじないみてぇなインターフェイスになるわけじゃない、一度がッとログアウトしてログイン画面でオプションの言語に「C」を選んでログインし直したらいいじゃないか!なんかめんどくさそうなものを扱うときは、ワタシはいつもそうしている。
Solarisの中にすでに仕込まれているMotifのヘッダファイルやライブラリファイルを参照できるようにする。それにはただパスを教えるだけではだめで、JDKに合う形にディレクトリ構造を作らなければならないのだ。
作業場所は同じopenjdkフォルダ内でヨロシイ。motif_areaという名前のディレクトリを作る。
さらにその下にmotif21というディレクトリを作る。
このmotif_area/motif_21ディレクトリで、以下の作業を行う。
まずはライブラリのほうだ。これはSolarisの/usr/dt/libというディレクトリのシンボリックリンクとしてlibを作る。
ln -s /usr/dt/lib lib
実はホントは必要なのは/usr/dt/libフォルダの中にあるlibXm.so.4というファイルとそのシンボリだけのようだ。けどこの下のamd64というフォルダの中にも同じlibXmというファイルがある。64bit用のファイルなんだろうけどこれ要るのかな?どうかな?ええいめんどくせえ。というわけでフォルダごとリンクしてやった。 ヘッダファイルのほうはもすこしMotif向けに絞ってリンクできる。まずincludeフォルダを(シンボリではなく)作る。この下に入って、つまりmotif_area/motif_21/include内で以下のコマンドによりシンボリを作成する。これでみんな幸せなはずだ。ln -s /usr/include/Xm Xm
これもopenjdkフォルダの下にまずodbcフォルダ、さらにその下にISLIodbcフォルダを作る。
その下にさらに2.11フォルダ、さらにlibディレクトリを作る。計4つもフォルダ作成作業をした最後のlibフォルダが作業場所だ。
まず、この作業場所にひとつファイルをコピーする。それにはopenjdkフォルダの直下にあるj2seフォルダ(上に書いたJDKソースのフォルダ・ファイルリストの中のひとつだ)を開く。さらにmake/sun/jdbcと開いていく。dummyodbc.cというファイルがある。それダ。コピーだ。
そしてSun Studioのccコマンドへのパスは通っているかッ?ならば以下の二つのコマンドを打てェェェー
cc -G -h libodbc.so -o libodbc.so dummyodbc.c
cc -G -h libodbcinst.so -o libodbcinst.so dummyodbc.c
SLASH_JAVA が「/java」というパスだ、という設定を筆頭に
$(ALT_SLASH_JAVA)/re/j2se/1.5.0/archive/fcs/binaries/platform とか
$(ALT_SLASH_JAVA)/devtools とか
$(ALT_JDK_DEVTOOLS_PATH)/shared/cups とか
これまでのプロプライエタリな開発者のみなさまが専用でお使いになっていた?
これからのオープンソースプロダクトはこういう構造になる予定?
いずれにしろ書き換えちまえばいいんだ!と、理解したら、以下の環境変数を.profileに書き込む(一部、デフォルトで書いてあるものも示してある)。いんだヨ。ちっと初期設定が増えたからってデスクトップの起動が遅くなるわけじゃないっつかすでに十分遅(中止)
PATH=/usr/bin:/usr/ucb:/etc:. export PATH STDPATH=/opt/SUNWspro/bin export STDPATH MYPATH=/usr/sfw/bin:/opt/sfw/bin:/opt/sfw/lib/bin:/usr/ccs/bin export MYPATH PATH=$STDPATH:$MYPATH:$PATH export PATH OPENJDK=$HOME/openjdk export OPENJDK ALT_BOOTDIR=/usr/jdk/instances/jdk1.5.0 export ALT_BOOTDIR ALT_DEVTOOLS_PATH=/usr/bin export ALT_DEVTOOLS_PATH ALT_MOZILLA_HEADERS_PATH=$OPENJDK/share/plugin export ALT_MOZILLA_HEADERS_PATH ALT_MOTIF_DIR=$OPENJDK/motif_area export ALT_MOTIF_DIR ALT_COMPILER_PATH=$STDPATH export ALT_COMPILER_PATH ALT_GCC_COMPILER_PATH=/opt/sfw/gcc-2/bin export ALT_GCC_COMPILER_PATH ALT_ODBCDIR=$OPENJDK/odbc export ALT_ODBCDIR ALT_CUPS_HEADERS_PATH=/opt/sfw/cups/include/ export ALT_CUPS_HEADERS_PATH ALT_OUTPUTDIR=$OPENJDK/myjdk export ALT_OUTPUTDIRこのALTだらけの環境変数の詳細はドキュメントに書いてあるのでカンタンにご紹介。
ALT_CUPS_HEADERS_PATH=/opt/sfw/cups/include/cups
とやってしまった。だってこの下に実際のヘッダファイルがあるんだもーん。でもそしたらビルドのときに、
「ホントに/opt/sfw/cups/include/cups/cupsなんてパスあんのかゴルァ」
というメッセージが出た。つまり、includeフォルダで止めとけということだ。こんなふうにして環境変数をやりくりしていく。gmake dev
ハイ、これだけです。なんと簡潔な!ちなみにgmakeというのはGNUのmakeで、Solarisでmakeとやると/usr/ccs/bin/makeというモノが呼ばれてくる。このGNUでないmakeは実は結構親切で、呼ばれはしたがああこりゃgmakeだねあっしゃあお呼びでないようだねと自動でgmakeを呼んでくれるのだが今回はダメのようだ。$OPENJDK/myjdk/bin/java -jar Java2D.jar
と、ちゃんと今ビルドしたjavaのパスを正確に指定して実行します。出ましたかー?とにかくやたらいろいろ動く画面が出ましたかー?ではそのわやわやと動くウィンドウを閉じて、次にこう打ってみましょう。java -jar Java2D.jar
ハイ。これはソルテンについてるJDK5での実行です。出ましたかー?途中で「クラスが見つからない例外」が出ましたかー?そぉーです。先ほどのデモはJDK5ではないJavaで動いていることが証明されたのでぇーす!おまえさん、やるじゃねぇか。もしJDKビルドの「merit badge」があったら、ひとつくれてやってもいいところだゼ。それがね奥様、Sun様のJDKのエンジニヤの人だッたのヨ。もうこんな偉い人にホメられちゃってどうしようかしらホーッホッホホーッホッホッホッ。でもSunの人ってみんな「もしナントカがあったらやってもいいゼ」ってジョークが社風なんだろうか(オープンソースマガジン2006年12月号「のに子のちゃれんじざわ〜るど」参照)...今度は「ゼヒお願いします」じゃなくて「そのお言葉がわたくしめにはすばらしいバッヂでございます」とレスってさしあげた。
「ボーイスカウトの「技能章」。応急処置とかキャンプとかいう分野を学習して、当局に認定されるとバッチがもらえる」
ボォォーイスカウトかよッ。またnoniki兄貴と思われたのかッ。だがそのあとに重要なコメントがいろいろあったのでここになるべくまじめに紹介する。
ちょっと言わせてもらうゼ。まず、OPENJDKって語を使ってるようだが、これはまだ真のオープンソースJDKじゃなくて、まだJRLライセンスのJDKなんだヨ。ま、いずれ真のオープンソースになるわけだから、大したこっちゃねえがな。まじめってあの、内容がネ。
- プラグインやjavawとかのビルドをスキップするには
gmake BUILD_DEPLOY=false dev
とやるんだゼ。
http://weblogs.java.net/blog/kellyohair/archive/2006/12/jdk6_build_chea.html
に、他にもいろんなワザを書いてあるから読んでみな。
- 公式ビルドはSolaris8で作って、以降のバージョンにも対応するようにしてるんだ。Solaris10でビルドしたブツを古いSolarisで走らすと、ネットワークやソケットの部分でちっとトラブるかも知れないぜ。これはソルッパチとソルテンで/usr/includeファイルの内容が違ってるからなんだが、まあ今じゃみんなソルテンでJava開発してるからな。
- LinuxでのビルドもSolarisとそんなに変わらないゼ。Windowsはかなり違うね、インストールしなきゃならないモノも多いし。
さあ、まずはソルテン、それに味をしめたら(日本語の誤用)いろんな環境でJDKをビルドしてみよう!してどうするっていいじゃないかそんなことは。オープンソース化記念でも今年一年の無病息災祈願でも。