NetBeans 6.7のソースコードを落としてパッチ当ててみた
先に結果だけを書くと大成功。以前指摘した箇所を直すだけでPostgreSQLのようなサイズを0を返すデータベースも問題なく動いた。
実際はコンパイルするだけでも大変で試行錯誤の繰り返しだった。
まずはソースを落とす
まずはソースコードを落とそう。
クローンを実行。
…むむむ画面がぜんぜん更新されないのが気になるが、HDDアクセスはあるのでたぶんすすんでいるはず。
しばらくして終わった。30分くらいかかったかな。
結果、1GBくらいおとして失敗。えー。
どうもファイルのパスの階層がふかいせいでダウンロードが出来ないくさい。
NetBeansはデフォルトでユーザーディレクトリに置くようになってるのでそこのパスを使うとアウト。
ルートディレクトリから適当に作った作業フォルダでクローンを再実行。
今度は何とか終わった。でも1時間くらいかかったかな。ファイルサイズは2GBはある。とんでもねぇリポジトリだ。いったいいつからのがここに蓄積されてるのだろうか。
クローンが終わるとプロジェクトを開くかどうか聞いてくる。しかし、ここで躊躇してしまう。
…1050個。
まさか1050個もひらくんじゃないだろうな。としばらく悩む。
そしておもいきって開くを選択する。
そうするとどのプロジェクトを開くか選ぶダイアログが表示された。ほっ。
コンパイル
さて、問題の箇所のプロジェクトは分かっているためそのプロジェクト(db.dataview)を開き、構築を選択。
なんか実行が出来ない。どうやらここですぐにコンパイルというわけには行かないらしい。むぅ。
依存関係のプロジェクトとかも開いてみたが、大量にあるだけでそのどれもがコンパイルエラーでまくりでなんかやばい気がした。
プロジェクトのフォルダを眺めていると、1つだけプロジェクトのアイコンが違うのに気がつく。どうも個々だけ中身が違う。antのスクリプトがメインのプロジェクトのようだ。おそらくここがルートなのだろう。ここで構築をしてみる。
そうするとなんか動き始めた。ファイルのダウンロードを始めたのだ。
そのまま放置していると12分ほどで終わった。でも、このあとどうするんだろう。distというフォルダも無いしどうすれば…。
この時点でまたdb.dataviewのプロジェクトを開いてみる。ファイルを開きなおすとコンパイルエラーが完全に消えた。おお、これならこんあぴるできるんじゃないかー。
と思ったらJDK6だとだめらしい。JDK5.0を追加して実行。
なんか動いてるようなきがするけど、どこかが変わった気がしない。すぐ終わっちゃうし。
ここでもう一度Build Sysytemプロジェクトを開く。右クリックしてみるとよくよく見るとメニューに「build IDE」というも自我。これだ!
そして実行。すげー時間がかかる。CPUの温度がいつもより10度も上がってしまった。ここまで負荷をかけたのははじめてかも。
30分はかからなかったものの、CPUは45nmプロセスルールのCore2Duo/3GHz。2スレッドくらいならばメインストリームの製品では今でもトップレベルに位置するくらいの性能のはずだが、さすがにこれだけのファイルのコンパイルはとんでもない時間がかかったようだ。特にruby関係でかなり時間とられてるのがわかった。コアが完全に並列に動いているわけではないようなのでクロックの低いクワッドコアだと逆に遅い可能性も高い。
コンパイルのログを見てみるとnetbeansというフォルダにファイルを入れ込んでるみたい。
開くと…そこには見慣れたNetBeansのファイル群があった。ここだ!
実行!
早速実行してみる。
おお、RC3のスプラッシュだ。
修正後を見る前にここでまずバグの確認。無制限のテキスト項目なのだが入力ができない。text(0)という判断されてるのがわかると思う。
カラム名は日本語ではあるが、ここはアルファベットでも同じ。
そしてパッチを当てたあと。
おお、入力できる。もちろん、制限のある項目ではちゃんとひっかかる。修正場所はやはりここでよかった!
というわけで修正箇所のおさらい。
クラス名は以下のとおり。
org.netbeans.modules.db.dataview.util.DBReadWriteHelper
ソースはこちら。
つまり、付け加えたのはこれだけ。
col.getPrecision() !=0 &&
とりあえず疲れたので今日はこれだけ。明日は値のセットのバグを修正してみよう。
この2つのバグはNetBeans 6.5で追加された機能。だからこそまだ修正していないほうのバグは釣り合いが取れていないのだと思われる。
フィードバックの方法がわからないのでMLに投げてみよう(^-^;
英語読めなくても何とかなるもんだね。適当にて当たり次第実行してるので効率が悪すぎるとは思うけど。1年間がんばって英語の勉強をして中1レベルの英語力を身につけるのと、その分プログラミングの勉強をするのとどっちが効率がよいのだろうか。これはなかなかに選択が難しいな。