プロジェクト

全般

プロフィール

OpenRTP マージモジュール

ここではツールである OpenRTP と RTSystemEditor、及び、JRE のマージモジュールを作成する手順を示す。

  1. ソースビルド
  2. ファイルコピー
  3. 起動用のvbsスクリプトの用意
  4. マージモジュール作成

1.ソースビルド

Jenkinsのジョブでビルドを行う。

  • 対象ノード:openrtp-builder
  • Jenkinsジョブ 04_OpenRTP (ジョブ実行順)
    • 02_openrtp-build-tags
    • 12_openrtp-dist-tags
    • 31_openrtp_publish_stable
    • 22_openrtp_pack_tags_linux
    • 22_openrtp_pack_tags_macosx
    • 22_openrtp_pack_tags_win32
    • 42_openrtp_publish_release_packages

2.ファイルコピー

マージモジュールを作成している環境へ、ファイルをコピーする。
下記に置いてある全部入りパッケージのビルド時、eclipseのバージョン等、基本的な部分には変更がなかった。
http://openrtm.org/pub/openrtp/packages/1.1.0.rc5v20150317/

今回の修正をWindows用インストーラに含めているOpneRTPに反映させるため、下記アーカイブに含まれている jar ファイルを eclipse の plugins ディレクトリにコピーした。
これは、OpneRTP 1.1.0-RC5 の修正を反映させるため。
http://openrtm.org/pub/openrtp/openrtp/1.1.0.rc5v20150317/openrtp-1.1.0.rc5v20150317.zip

※マージモジュールを修正している環境で使用しているOpenRTPのバイナリは、OpenRTM-aist C++ 1.1.1 Beta版リリース時の環境を引き継いで使っている

3.起動用のvbsスクリプトの用意

OpenRTM-aist C++版インストーラで同梱するJREのインストール先変更に関連する作業。
変更することになった経緯(関連チケットは下記)
http://redmine.openrtm.org/issues/3098
  • OpenRTM-aistの各インストーラでインストールされるツールは、起動するために32bit版JREが必要(OpenRTP, RTSystemEditorRCP)(理由は上記チケット参照)
  • OpenRTM-aistの64bit版をインストールしているユーザは、Javaも64bit版をインストールしていると思われる。
    • OpenRTM-aist-Java 64bit版のインストールは、JDK 64bitが必須で、JDK 32bit環境へはインストールできない。インストーラがチェックしている。
  • 64bit版Javaがインストールされている環境でもRTSystemEditorRCPを起動できるようにするため、JREはOpenRTM-aistの基本ベースで必要という
    位置付けにし、OpenRTM-aist\1.1\bin下にインストールするように変更した
OpenRTP と RTSystemEditorRCP は、起動用batファイルを作成し、
  1. JREのパス(%RTM_ROOT%bin\jre\bin)は、batファイル内でPATHに追加
  2. このbatファイルの実行をWSH(VBScript)で記述し、コンソール画面を表示しないように設定
    $ cat OpenRTP.bat
    set PATH=%RTM_ROOT%bin\jre\bin;%PATH%
    cd %RTM_ROOT%utils\OpenRTP
    eclipse.exe
    
    $ cat start-OpenRTP.vbs
    Set ws = CreateObject("Wscript.Shell") 
    ws.run "cmd /c OpenRTP.bat", vbhide 
    

    $ cat RTSystemEditorRCP.bat
    set PATH=%RTM_ROOT%bin\jre\bin;%PATH%
    cd %RTM_ROOT%utils\RTSystemEditor
    RTSystemEditorRCP.exe
    
    $ cat start-RTSystemEditorRCP.vbs
    Set ws = CreateObject("Wscript.Shell") 
    ws.run "cmd /c RTSystemEditorRCP.bat", vbhide 
    

しかし、この設定だと、スタートメニューから OpenRTP と TSystemEditorRCP を起動する際、アイコンがvbsになってしまう。
今まで通りeclipseのアイコンにしたいので、icoファイルを用意し、以下のように設定した。

RTSystemEditorRCPのマージモジュール用の修正

  • RTSystemEditorRCPのソースにアイコンにできる画像が含まれていないので、Redmineにあった「RCP版RTSystemEditorの作成手順」にあった
    ベースの「Eclipse IDE for Java EE Developers」に含まれている「eclipse16.png」(16x16)を「eclipse.ico」に変換して利用
  • アイコンの定義は、Shortcutエレメントに追加した
    ----- start-RTSystemEditorRCP.vbs.wxsctrl
    <Shortcut Id="RTSE_RCP_exe" Directory="ToolsMenuFolder" 
          Name="RTSystemEditorRCP" Show="normal" 
          WorkingDirectory="%Directory.Id%" 
          Icon="eclipse.ico" IconIndex="0" > ★
      <Icon Id="eclipse.ico" SourceFile="RTSE\utils\RTSystemEditor\eclipse.ico"/> ★
    </Shortcut>
    

OpenRTPのマージモジュール用の修正

  • RTSystemEditorRCPと同様に、起動するためのbat/vbsファイルを設置し、スタートメニュー用のアイコン画像を用意
  • OpenRTPはplugins下に画像があったので、それをicoに変換して利用 (OpenRTP\plugins\org.eclipse.sdk_3.8.1...\eclipse16.png)
  • icoファイル名はRTSystemEditorRCPと同じだが、中身の画像は異なる。
    同じファイル名だと紛らわしいとは思ったが、別々のマージモジュールなので、wxsctrlの統一性を考え同じファイル名とした
    ----- start-OpenRTP.vbs.wxsctrl
    <Shortcut Id="RTP_110_exe" Directory="ToolsMenuFolder" 
          Name="OpenRTP 1.1.0" Show="normal" 
          WorkingDirectory="%Directory.Id%" 
          Icon="eclipse.ico" IconIndex="0" > ★
      <Icon Id="eclipse.ico" SourceFile="openrtp_runtime\utils\OpenRTP\eclipse.ico"/> ★
    </Shortcut>
    

4.マージモジュール作成

マージモジュールを作成するスクリプトも、現時点で以下に置いてあるので、自分の環境へコピーして利用している。

\\nas-openrtp\Public\OpenRTM-aist-1.1.1-installer
├── 0work
├── MergeModules
├── Msi
├── omniORB_msm
├── opencv_example_msm
├── opencv_msm
├── openrtm_msm
├── OpenRTM-aist_msi
├── openrtp_msm_eclipse3.8
├── scripts
├── EPLv1.rtf
├── GPLv2.rtf
├── LGPLv2.1.rtf
├── LicenseAll.rtf
├── OpenCV.rtf
└── OpenRTM.rtf

マージモジュールを作成するディレクトリは、openrtp_msm_eclipse3.8 である。必要なバイナリは以下に置いてある。(0workディレクトリは利用していない)

$ tree openrtp_msm_eclipse3.8 -L 1 -d
openrtp_msm_eclipse3.8
├── openjdk_jre
├── openrtp_runtime
└── RTSE

マージモジュールを一括生成する mk_msm_all.bat スクリプトを実行する。

> type mk_msm_all.bat

call mk_msm_JRE_x86.bat
call mk_msm_OpenRTP_x86.bat
call mk_msm_RTSE_x86.bat
call mk_msm_JRE_x86_64.bat
call mk_msm_OpenRTP_x86_64.bat
call mk_msm_RTSE_x86_64.bat

> mk_msm_all.bat

正常終了すると、MergeModules 下にmsmファイルが生成される

> cd MergeModules
> ls
JRE_OpenJDK7_x86.msm
JRE_OpenJDK7_x86_64.msm
OpenRTP_110_x86.msm
OpenRTP_110_x86_64.msm
RTSystemEditorRCP_x86.msm
RTSystemEditorRCP_x86_64.msm