Posts in category p2

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)