Chiselの最新版を追いかける、あるいは、ソースをバグ修正する方法について。

ソースコードはgithubで公開されているので自由にcloneできる。ただ、sbtの仕組みがよくわからないので、ScalaやChisel自体がどこにインストールされているのか不明で、そのため、仮にChiselのソースコードを自分で修正したとしてそれを使ってプロジェクトを実行するにはどうすればよいのか、やってみるまでよくわからなかった。実際には、やってみると非常に簡単であった。

  1. ソースをcloneする。必要であればgithubでforkしてそれをcloneする
  2. ソースを修正する。Chselの実装は”chisel/src/scala/main”にある。
  3. cloneしたソースのトップディレクトリにはMakefileが用意されていて、これで修正したソースをベースにbuildが行われdeployされる。
  4. Chiselを利用しているプロジェクトのMakefileを適切に修正する。

一連の流れをコマンドで書くと:

1
2
3
4
5
6
git clone https://github.com/ucb-bar/chisel.git
cd chisel/src/mains/scala/
emacs Tester.scala
git commit -am .... (必要な場合のみ)
cd ../../..
make publish-local

buildされたJavaのclassファイルは、デフォルトでは”~.$hostname/local/edu.berkeley.cs/chisel_2.10/2.3-SNAPSHOT”にdeploy(コピー)される。”2.3-SNAPSHOT”は、執筆時の場合で、バージョンによっては違うかもしれない。あとは利用してるプロジェクトのMakefileを修正すればよい。変数”CHISEL_DEFAULT_VERSION”等が利用しているclassファイルの場所を指していて、デフォルトではこれが”latest.release”にセットされているので、これをmakeのオプションなりで上書きすればよい。

gitのコマンドについては、forkをして修正をフィードバックする予定ならばbranchを切っておく必要がある。これは別の話。負の値pokeすると動作しない問題は修正して、報告すると無事mergeされた。