MacPorts で Groovy1.8.0 をインストール
MacPorts による Groovy のインストールに手こずったので、その顛末を残します。
環境(2011年7月30日追記)
MacOSX 10.6 Snow Leopard
MacPorts 1.9.2
動機
「プログラミング Groovy」を購入したので、写経しようと思い立ちました。
インストール(失敗)
port コマンドで、通常通りインストールを実行します。
$ sudo port install groovy ---> Fetching groovy ---> Verifying checksum(s) for groovy ---> Extracting groovy ---> Configuring groovy ---> Building groovy Error: Target org.macports.build returned: shell command failed (see log for details) Log for groovy is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_java_groovy/main.log Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets>
ログ*1を読むと、どうやらリポジトリで jarjar.jar の 1.0 が見つからないみたいです。
Maven Repository で探してみると、1.1 ならあるらしいです。下位互換性はあるものと信じます。
さて、どこに設定を書けば良いのだろうと思ったのですが、ログ中の以下の記述から、groovy-tools.pom と予想。
:info:build Path to dependency: :info:build 1) groovy:groovy-tools:jar:internal :info:build 2) com.google.code:jarjar:jar:1.0
groovy-tools.pom*2 を以下のように書き換えます(一部抜粋)。
<dependency> <groupId>com.googlecode.jarjar</groupId> <artifactId>jarjar</artifactId> <version>1.1</version> </dependency> <!-- <dependency> <groupId>com.google.code</groupId> <artifactId>jarjar</artifactId> <version>1.0</version> </dependency> -->
インストール(また失敗)
先程と同様に、以下のコマンドでインストールします*3。
$ sudo port install groovy
jarjar.jar は上手く行ったようですが、今度は osgi.jar の 3.4.3.R34x_v20081215-1030 がないみたいです。
main.log(一部抜粋)
:info:build [artifact:dependencies] Path to dependency: :info:build [artifact:dependencies] 1) groovy:groovy-examples:jar:internal :info:build [artifact:dependencies] 2) org.eclipse:osgi:jar:3.4.3.R34x_v20081215-1030
また探すと、3.7.0.v20110613 がありました。groupId とか artifactId とか違うけど、大丈夫だと信じることにします。
groovy-examples.pom*4 を以下のように修正します(一部抜粋)。
<dependency> <groupId>org.eclipse.tycho</groupId> <artifactId>org.eclipse.osgi</artifactId> <version>3.7.0.v20110613</version> </dependency> <!-- <dependency> <groupId>org.eclipse</groupId> <artifactId>osgi</artifactId> <version>3.4.3.R34x_v20081215-1030</version> <scope>compile</scope> </dependency> -->
インストール(成功)
上手く行ったようです。
$ sudo port install groovy ---> Building groovy ---> Staging groovy into destroot ---> Installing groovy @1.8.0_1 ---> Activating groovy @1.8.0_1 ---> Cleaning groovy
このあと、groovysh コマンドなどを実行してみましたが、動作している模様です。
$ groovysh Groovy Shell (1.8.0, JVM: 1.6.0_26) Type 'help' or '\h' for help. --------------------------------------------------------------------------------------------------- groovy:000> println "Hello, World!" Hello, World! ===> null groovy:000>
まとめ
今回は、何となく予想により変更して上手く行きました*5が、MacPorts と Maven をちゃんと理解していないことを痛感しました。
現場で開発をしている訳ではないですが、当たり前に使われるツールや手法は確認しておきたいと思いました。
現場との乖離は、仕事的にも致命的ですし。
*1:/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_java_groovy/main.log
*2:/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_java_groovy/work/groovy-1.8.0/config/maven/groovy-tools.pom
*3:port コマンドでのインストールは、clean しなければ 2 回目以降はサーバからの fetch が行われないため、上で修正した設定ファイルが利用されます
*4:/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_java_groovy/work/groovy-1.8.0/config/maven/groovy-examples.pom
*5:実際は一度放棄しているので、解決までに数日掛かってます