Posts for the month of November 2010

Target Definitionを利用する

JAM Circle の開発には現在 Target Definition を利用しています。Target Definition とは何かと言うと、開発中のプラグインを載せるターゲットのEclipse環境の定義を記述できるファイルです。ターゲット環境の指定方法は4つあります。

  • Directory(FeatureになっていないPlugin用)
  • Software Site(更新サイト)
  • Instration(展開されたEclipse環境)
  • Feature

この中で「Software Site」は更新サイトから読み込む方式を取っています。JAM Circle で利用しているのもこの方式です。この方式の利点と欠点をまとめると、

利点

  • 異なるマシン間で同じターゲット環境を構築できる
  • Buckminsterというビルドツールでそのまま利用できる
  • 常に最新版を取得できる バージョンが指定されているため、最新版を常に取得できる訳ではないようです。

欠点

  • サイトの不調など、更新サイトから読み込めない事がある

といった感じです。

今回 Target Definition を利用したのは、Buckminster の利用のため、という面が強いですが、開発環境をそろえるのは面倒なので、利用されると良いでしょう。

JRubyをOSGi extensionにしたかったんだ・・・。

OSGiの仕様にはExtension BundleといってOSGi自体の機能を拡張するためのBundleがあります。Equinoxにも実装されており、これを利用すればこんな事も実現できるんじゃないか?と想像していたものがありました。それは、JRubyなどのJVM上で動く言語をOSGi extensionにすれば、Eclipse PluginもJava以外の言語で開発ができるのではないか、と言う事。ただそれは設定すればできそうな見通しはたったのですが、p2とセキュリティの仕様のためか、インストールすれば自動で設定を行う仕組みにはなっていないようです。調べた事のメモを残しておきます。

設定方法

configuration/config.iniのosgi.framework.extensionsにJVM言語Bundleを追加する

これだけです。

これを自動的に設定しようとしたけどダメだった

p2にはtouchpointという仕組みがあります。touchpointとは何かというと、一言でいうと、p2からインストールやアンインストールなど操作の最中、ファイルのコピーや設定をp2.infに書く事で実現する仕組みです。例えばあるfeatureをインストールしたときに、更新サイトを登録したいのであれば、そのfeatureのfeature.xmlがおいてある場所にp2.infを作成して下記のように書きます。

instructions.configure=\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:http${#58}//kompiro.org/jamcircle/daily/p2,name:JAMCircle Daily build,enabled:false);

#58は「:」の置換文字です。 instructions.${phase}名で、"org.eclipse.equinox.p2.touchpoint.eclipse.addRepository"がコマンド、後はコマンドの引数を指定しています。phaseはinstallやuninstallなど、イベントを記述しますが、いつ何が起こるのかはhelpに書かれていないのでわかりません:)

このtouchpointの中にはsetProgramPropertyという、Eclipse起動時にシステムプロパティに値を追加するtouchpointがあるので、これを利用してosgi.framework.extensionsを設定できないか試してみました。しかし、osgi.framework.extensionsは、Equinoxではorg.eclipse.osgiに対するfragmentという位置づけがなされているため、p2の中でorg.eclipse.osgiのfragmentのBundleを自動的に追加するようになっています。なので、JRubyのBundleをorg.eclipse.osgiのfragmentにしてみましたが、自動的に追加されるのはJARに固まっているものでないとうまく動かないと。JRubyの中のrubyのコードやらコマンドやら使えなくないのです。なのであきらめました。

なんかもったいない結末なのでログを取っておきます。

参考サイト

  • Posted: 2010-11-13 08:13 (Updated: 2010-11-13 08:25)
  • Author: kompiro
  • Categories: p2
  • Comments (0)