プロジェクト

全般

プロフィール

OpenRTM-aist C++ 1.1.1-RELEASE用msi作成手順

手順の流れ

  1. ソースビルド ・・・Jenkinsジョブで実行(32bit, 64bit)
  2. ファイルコピー ・・・インストーラ(.msi)作成に必要なファイルを集める
  3. wxsctrlファイルセット ・・・インストーラ作成に必要なショートカットファイルをセットする
  4. マージモジュール作成 ・・・インストーラに含めるコンポーネントのマージモジュール(.msm)を作成する
  5. インストーラ作成 ・・・必要なマージモジュールを組込んでインストーラ(.msi)を作成する

1.ソースビルド

Jenkinsのジョブで32bit、64bitの各バイナリのビルドを行う

32bit用ビルド

  • 対象ノード:windows7-VC2008, windows7-VC2010, windows7-VC2012, windows7-VC2013
  • Jenkinsジョブ C++(実行順)
    1. 20_openrtm-cxx-dist-tags (ビルドパラメータ:RELEASE_1_1_1)
    2. openrtm-cxx-build-tag-win32

64bit用ビルド

  • 対象ノード:windows7-VC2010-x64, windows7-VC2012-x64, windows7-VC2013-x64
  • Jenkinsジョブ C++(実行順)
    1. 20_openrtm-cxx-dist-tags (ビルドパラメータ:RELEASE_1_1_1)
    2. openrtm-cxx-build-tag-win64

2.ファイルコピー

インストーラ作成に使うファイルを、ソースビルドした環境からコピーして集める

使用スクリプト

現時点(2015/04/06)でリポジトリに登録しておらず、また、ソースにも含まれていない。以下に最新版を置いているので、コピーして使用する。
\\nas-openrtp\Public\OpenRTM-aist-1.1.1-installer\0work\copy-openrtm-aist_C++.bat
参考(2015/04/06現在のスクリプト):
copy-openrtm-aist_C++.bat.pdf

スクリプトの使い方

  • スクリプトを、各ノードのJenkinsジョブ実行ディレクトリへコピーする
    例)windows7-VC2010の場合
    > cd C:\Jenkins\workspace\openrtm-cxx-build-tag-win32\label\windows7-vc2010
    > ls
    OpenRTM-aist  OpenRTM-aist-1.1.1-win32.zip   copy-openrtm-aist_C++.bat
    
  • 引数に、vcのバージョン番号とアーキテクチャを指定する。引数を間違えると以下のメッセージが表示される
    Usage:
       copy-openrtm-aist_C++.bat [vc-version] [arch]
           vc-version : vc8 / vc10 / vc11 / vc12
           arch       : x86 / x64
    
  • 実行すると、4つのディレクトリが生成される
    例)Visual Studio 2010 32bit での実行
    > copy-openrtm-aist_C++.bat vc10 x86
         ⇒実行結果として下記ディレクトリ4つが生成される
             ・OpenRTM-aist_vc10_x86  ・・・ OpenRTM-aistと同じ構成で、msi生成に必要なファイルのみ含まれている
             ・openrtm_develop        ・・・ develop に分類したファイル
             ・openrtm_runtime        ・・・ runtime に分類するファイル
             ・openrtm_examples       ・・・ examples に分類するファイル
    
  • これら4つのディレクトリを、msiファイルを作成する環境の 0work ディレクトリ下へコピーする
  • ソースビルドしているVM環境(Jenkinsノード)からは自分のPCは見えないので、msi作成スクリプトのバックアップ先である
    nas(\\nas-openrtp\Public\OpenRTM-aist-1.1.1-installer\0work)経由でコピーしている。
  • 0work下には以下のディレクトリがあるので、該当する場所へコピーする
    vc9_x86 vc10_x86 vc10_x86_64 vc11_x86 vc11_x86_64 vc12_x86 vc12_x86_64
    例)ファイルをコピー後の状態
    > ls vc10_x86
    ImageProcessing-win32-vc10  opencv_runtime    openrtm_runtime
    opencv_common               OpenCV2.4.9       OpenRTM-aist_vc10_x86
    opencv_develop              openrtm_develop
    opencv_rtcs                 openrtm_examples
    

3.wxsctrlファイルセット

ショートカット用の wxsctrl ファイルは openrtm_runtime, openrtm_examples 用に作られていて、0work ディレクトリ下にまとめて置いてある。

      0work
    ├─ openrtm_runtime_wxsctrl   ・・・openrtm_runtime用のwxsctrlファイル
    ├─ openrtm_examples_wxsctrl   ・・・openrtm_examples用のwxsctrlファイル
    ├─ vc9_x86
    ├─ vc10_x86
    ├─ vc10_x86_64
    ├─ vc11_x86
    ├─ vc11_x86_64
    ├─ vc12_x86
    ├─ vc12_x86_64
    ├─ copy-wxsctrl_openrtm-aist_C++.bat

openrtm_runtime_wxsctrl
└── 1.1
       ├── bin
       │   ├── OpenRTM_bin_dir.wxsctrl
       │   ├── rtc.conf.wxsctrl
       │   ├── rtcd.exe.wxsctrl
       │   └── rtm-naming.bat.wxsctrl
       └── RTM_ROOT_dir.wxsctrl


openrtm_examples_wxsctrl/
└── 1.1
       └── examples
              └── C++
                     ├── Composite.exe.wxsctrl
                     ├── ConfigSampleComp.exe.wxsctrl
                     ├── ConsoleInComp.exe.wxsctrl
                     ├── ConsoleOutComp.exe.wxsctrl
                     ├── MyServiceConsumerComp.exe.wxsctrl
                     ├── MyServiceProviderComp.exe.wxsctrl
                     ├── rtc.conf.wxsctrl
                     ├── SeqInComp.exe.wxsctrl
                     └── SeqOutComp.exe.wxsctrl

これらのwxsctrlファイルは VCバージョン/アーキテクチャで共通で、copy-wxsctrl_openrtm-aist_C++.batスクリプトで一括コピーされるようになっている。
そのため、0workディレクトリ下の vc9_x86, vc10_x86, vc10_x86_64 ... vc12_x86_64 へのファイルコピーの終了後、引数無しで実行する。

> cd 0work
> copy-wxsctrl_openrtm-aist_C++.bat

参考(2015/04/06現在のスクリプト):
copy-wxsctrl_openrtm-aist_C++.bat.pdf

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

インストーラに含める下記5つのマージモジュール(.msm)を作成する
  • omniORB
  • OpenCV
  • OpenCV Example (ImageProcessing)
  • OpenRTP
  • OpenRTM-aist C++

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

\\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

omniORB

マージモジュールを作成するディレクトリは、omniORB_msm である。

  • 32bit用ソースビルド:Jenkinsのジョブ(実行順)
    1. 50_omniORB_build_win32
    2. 51_omniORB_win32_publish
  • 64bit用ソースビルド:Jenkinsのジョブ(実行順)
    1. 50_omniORB_build_win64
    2. 51_omniORB_win64_publish
  • ビルド結果が以下に置かれているので、omniORB_msm ディレクトリ下にダウンロードする
    http://openrtm.org/pub/omniORB/win32/omniORB-4.1.7/
    > cd omniORB_msm
    > ls
      :
    omniORB-4.1.7-win32-vc9-py27.zip
    omniORB-4.1.7-win32-vc10-py27.zip
    omniORB-4.1.7-win32-vc11-py27.zip
    omniORB-4.1.7-win32-vc12-py27.zip
    omniORB-4.1.7-win64-vc10-py27.zip
    omniORB-4.1.7-win64-vc11-py27.zip
    omniORB-4.1.7-win64-vc12-py27.zip
    
  • マージモジュールを一括生成する build_msm.bat スクリプトを実行する
    > type build_msm.bat
    call build_msm_vc.bat 9
    call build_msm_vc.bat 10
    call build_msm_vc.bat 11
    call build_msm_vc.bat 12
    
    > build_msm.bat
    
  • 正常終了すると、MergeModules 下にmsmファイルが生成される
    > cd MergeModules
    > ls
    omniORB_devel_win32_vc10.msm  omniORB_devel_win64_vc11.msm  omniORB_rt_win32_vc9.msm
    omniORB_devel_win32_vc11.msm  omniORB_devel_win64_vc12.msm  omniORB_rt_win64_vc10.msm
    omniORB_devel_win32_vc12.msm  omniORB_rt_win32_vc10.msm     omniORB_rt_win64_vc11.msm
    omniORB_devel_win32_vc9.msm   omniORB_rt_win32_vc11.msm     omniORB_rt_win64_vc12.msm
    omniORB_devel_win64_vc10.msm  omniORB_rt_win32_vc12.msm
    

OpenCV

TBBを有効にしてビルドしたバイナリでマージモジュールを作成する。詳細は下記ドキュメント参照。
[[openrtm_cxx_installer:OpenCV2.4.9]]

OpenCV Example (ImageProcessing)

OpenCVのサンプルコンポーネント(ImageProcessingソース)のマージモジュールを作成する。詳細は下記ドキュメント参照。
OpenCV Example マージモジュール

OpenRTP

OpenRTP, RTSystemEditorRCP, JRE のマージモジュールを作成する。詳細は下記ドキュメント参照。
OpenRTP マージモジュール

OpenRTM-aist C++

マージモジュールを作成するディレクトリは、openrtm_msm である。
「1.ソースビルド」「2.ファイルコピー」「3.wxsctrlファイルセット」まで済んでいて、必要なファイルが 0work ディレクトリに置かれていれば msmファイルを作成できる。

  • マージモジュールを一括生成する build_msm_all.bat スクリプトを実行する
    > type build_msm_all.bat
    call build_msm_x86_vc9.bat
    call build_msm_x86_vc10.bat
    call build_msm_x86_vc11.bat
    call build_msm_x86_vc12.bat
    call build_msm_x86_64_vc10.bat
    call build_msm_x86_64_vc11.bat
    call build_msm_x86_64_vc12.bat
    
    > build_msm_all.bat
    
  • 正常終了すると、MergeModules 下にmsmファイルが生成される
    > cd MergeModules
    > ls
    openrtm111_develop_x86_64_vc10.msm   openrtm111_examples_x86_vc10.msm
    openrtm111_develop_x86_64_vc11.msm   openrtm111_examples_x86_vc11.msm
    openrtm111_develop_x86_64_vc12.msm   openrtm111_examples_x86_vc12.msm
    openrtm111_develop_x86_vc10.msm      openrtm111_examples_x86_vc9.msm
    openrtm111_develop_x86_vc11.msm      openrtm111_runtime_x86_64_vc10.msm
    openrtm111_develop_x86_vc12.msm      openrtm111_runtime_x86_64_vc11.msm
    openrtm111_develop_x86_vc9.msm       openrtm111_runtime_x86_64_vc12.msm
    openrtm111_documents.msm             openrtm111_runtime_x86_vc10.msm
    openrtm111_examples_x86_64_vc10.msm  openrtm111_runtime_x86_vc11.msm
    openrtm111_examples_x86_64_vc11.msm  openrtm111_runtime_x86_vc12.msm
    openrtm111_examples_x86_64_vc12.msm  openrtm111_runtime_x86_vc9.msm
    

5.インストーラ作成

omniORB, OpenCV2.4.9, OpenCV Example, OpenRTP, OpenRTM-aist C++ の各マージモジュールを組合せてインストーラを作成する。
必要な msm ファイルが MergeModules ディレクトリに置かれていれば msiファイルを作成できる。

インストーラを作成するディレクトリは、OpenRTM-aist_msi である。

  • インストーラを一括生成する build_msi_all.bat スクリプトを実行する
    > type build_msi_all.bat
    call build_msi_x86_vc9.bat
    call build_msi_x86_vc10.bat
    call build_msi_x86_vc11.bat
    call build_msi_x86_vc12.bat
    call build_msi_x86_64_vc10.bat
    call build_msi_x86_64_vc11.bat
    call build_msi_x86_64_vc12.bat
    
    > build_msi_all.bat
    
  • 正常終了すると、Msi 下にmsiファイルが生成される
    > cd Msi
    > ls
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_64_vc10.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_64_vc11.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_64_vc12.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_vc10.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_vc11.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_vc12.msi
    OpenRTM-aist-C++_1.1.1-RELEASE_x86_vc9.msi