VDMToolsの開発方法

VDMTools 開発環境構築

VDMTools の開発は以下のプラットフォームをサポートしている。

  • Mac OS X 10.5/10.6/10.7/10.8
  • Linux Ubuntu (10.4~)、Fedora (15~)、Debian 6
  • Windows XP/Windows 7

以下の環境においても開発可能である。

  • Soralis 10 (x86)
  • Freebsd 8/9

注釈

  • 現時点で Windows で単独開発は行えず、Linux等のサーバーを必要とする
  • VMware などの仮想環境上でサーバーを動かして開発することは可能
  • Mac OS X 10.7 以降は samba ではなく smbfs が使用されていて、現時点ではサーバーとして利用できない

開発ツール設定

Linux

Linux はディストリビューションにより、標準インストールされるソフトウエアが異なる。

基本的に以下のパッケージを必要とするので、ディストリビューションのパッケージ管理ソフトを 使用して以下のパッケージの導入確認、インストールを行う。

  • g++
  • git
  • bison
  • flex
  • texinfo
  • filepp
  • openjdk-7-jdk
  • ant
  • python-dev(バージョン2系)
  • libxml2-dev
  • libncurses5-dev
  • libreadline-dev
  • unixODBC-dev
  • libqt4-dev

警告

Fedora Linux において、 openjdk-dev パッケージを導入した場合は、idlj コマンドに対して /usr/bin/javac を 参考にして同じようにリンクを作成しておく。

Mac OS X

Mac OS X は、そのOSバージョンに対応する最新の Xcode をインストールする。 10.7 以降は、Xcode を起動し Command Line Tools のインストールを行う。

警告

10.8では10.8SDKの usr/includeFlexLexer.h が含まれないので、10.7SDK からコピーして使用する。 さらに、10.8 の flexの出力は FlexLexer.h と互換性がないので以下の部分を修正する。

修正前:(133行目)

virtual int LexerInput( char* buf, int max_size );
virtual void LexerOutput( const char* buf, int size );

修正後:

virtual size_t LexerInput( char* buf, size_t max_size );
virtual void LexerOutput( const char* buf, size_t size );

Windows XP/7

Windows 環境では以下のバージョンの VisualStudio での開発をサポートしている。

VisualStudio から VC++ パッケージをインストールする。

警告

VisualStudio 2010 の場合、VC++ パッケージのみを選択すると必要なファイルがインストールされないようなので、 C# も選択してインストールすること。

以下の環境変数の設定を行う。

  • INCLUDE
  • LIB
  • PATH

次に、以下のツールをそれぞれダウンロード→インストールする。

Windows での開発作業は Cygwin のシェル上で行うので、Cygwin もインストールしておく。 以下のパッケージを選択する。

  • binutils
  • make
  • perl
  • python
  • subversion

Cygwin の /usr/bin/link.exe コマンドが VisualStudio の link.exe の代わりに起動されることがあるので、 名前を変更しておく。

さらに以下のパッケージをインストールする

  • Python 2.7.3
  • ActivePerl 5.14/5.16
  • 最新版のJDK
  • NSIS 3.0

開発リポジトリの取得

Linux、Mac OS X、Cygwin のシェル環境において開発リポジトリの取得を行う。 以下、開発ディレクトリを $HOME/vdmtools とする。

VDMTools 開発用のリポジトリ取得

Subversion コマンドを使用してVDMTools 開発用のリポジトリを取得する。

$ cd $HOME
$ git clone https://mas0061@bitbucket.org/mas0061/vdmtools.git

環境変数設定

開発に必要な環境変数の設定を行う。

<開発用リポジトリ>/code/setup に各プラットフォームに対応したシェル環境設定ファイルの サンプルがあるので、それを修正して使用する。

.bashrc や .profile を修正した後、シェルを再起動する。

開発用コマンド、ライブラリのインストール

Linux、Mac OS X

インストール中にエラーとなる場合は、パッケージや、環境変数を見直す。

nuweb

<開発用リポジトリ>/code/tools/nuweb-1.58.tar.gz

インストール方法:

$ tar xvf nuweb-1.58.tar.gz
$ cd nuweb-1.58
$ make nuweb
$ make
$ sudo install -s nuweb /usr/local/bin

fweb

<開発用リポジトリ>/code/tools/fweb-1.62.tar.bz2

インストール方法:

$ tar xvf fweb-1.62.tar.bz2
$ cd fweb-1.62/Web
$ ./configure
$ make
$ sudo make install

javacc

<開発用リポジトリ>/code/tools/javacc-5.0src.tar.gz

インストール方法 : ※ここでは /usr/local/javacc-5.0 にインストールするものとする。

$ tar zxf javacc-5.0src.tar.gz
$ cd javacc
$ ant
$ makedist 5.0
$ sudo tar xvf javacc-5.0.tar.gz -C /usr/local

/usr/local 以外の場所にインストールする場合は、 JAVACCHOME 環境変数を修正する。

omniORB のインストール

omniORB-4.2.1-2.tar.bz2 および omniORBpy-4.2.1-2.tar.bz2 をインストール。 上記2ファイルは、インターネットから取得。

ここでは /usr/local/omniORB にインストールするものとする。

インストール方法:

$ tar xvf omniORB-4.2.1-2.tar.bz2
$ cd omniORB-4.2.1
$ ./configure --prefix=/usr/local/omniORB
$ make
$ sudo make install

$ tar xvf omniORBpy-4.2.1-2.tar.bz2
$ cd omniORBpy-4.2.1
$ ./configure --prefix=/usr/local/omniORB
$ make
$ sudo make install

omniORBpyのコンパイルに失敗した場合は、アーカイブの展開から行う。

/usr/local 以外の場所にインストールする場合は、 CORBAHOME 環境変数を修正する。

VDMTools のインストール

VDM++ と VDM-SL パッケージをインストールする。

<開発用リポジトリ>/code/tools の vdmsl と vdmpp を /usr/local に展開。

環境変数 CG_SL_CMDvdmde のフルパス、 環境変数 CG_PP_CMDvppde のフルパスを設定する。

設定しない場合は、 CG_SL_CMD=/usr/local/bin/vdmsl、CG_PP_CMD=/usr/local/bin/vdmpp がデフォルト値となる。

5.2 Windows

libxml のインストール

<開発用リポジトリ>/code/win32/libxml2/libxml2-2.7.x.zip を展開し C:\libxml2 に配置する。

さらに iconv-xxx.zipzlib-xxx.zip も展開し、それぞれ対応するディレクトリに内容をコピーする。

64ビット版Windows の場合は <開発用リポジトリ>/code/win32/libxml2_x64 のファイルを配置する。

omniORB のインストール

  1. omniORB-4.2.1-2.tar.bz2 を展開し、 C:\omniORB-4.2.1-2 に配置する

  2. C:\omniORB-4.2.1-2\mk\platforms 内の x86_win32_vs?.mk の中で、開発に使用する VisualSutudio のバージョンに 対応するファイルを修正する

    • VisualStudio 2005 -> x86_win32_vs8.mk
    • VisualStudio 2008 -> x86_win32_vs9.mk
    • VisualStudio 2010 -> x86_win32_vs10.mk

    修正個所は PYTHON の設定のみ。 先に C:\Python27 にインストールしていれば、

    となる。

  3. C:\omniORB-4.2.1-2\config\config.mk を修正する

    • platform = で開発に使用する VisualSutudio のバージョンに対応する設定のコメントを外す(先頭の#を消す)
  4. Cygwin のターミナルで /cygdrive/c/omniORB-4.2.1-2/src へ移動する

  5. make export を実行する

Qt のインストール

  1. Qtのダウンロードサイト から、 qt-everywhere-opensource-src-4.8.7.zip をダウンロード
  2. qt-everywhere-opensource-src-4.8.7.zip を展開し C:\Qt\4.8.4 に配置する
  3. コマンドプロンプト(Cygwinは不可)で、C:Qt4.8.4 に移動する。
  4. configure -no-webkit を実行する
    • VisualStudio 2005 の場合は -qt-zlib オプションを追加する
  5. nmake を実行する
    • 64 ビット版の場合、ビルド後に Cygwin で /cygdrive/c/Qt/4.8.4/bin/ および /cygdrive/c/Qt/4.8.4/plugins/codecs/ 内の *.dll ファイルのパーミッションを確認し、なければ追加しておく
    • パーミッションがないとパッケージ作成の際にエラーとなる

VDMTools のビルド

ワークディレクトリの作成

ツールをビルドするためのワークディレクトリを作成する。

Linux、Mac OS X 上でツールをビルドする場合と、 Windows のサーバーで、構成が異なるので、ディレクトリは 別にしておく。

$ mkdir vdmwork

Linux、Mac OS X 上で VDMTools をビルドする場合

以下のコマンドを実行する。

$ <開発用リポジトリのパス>/code/make_tools/lnconf -i BASEDIR=<開発用リポジトリのパス>/code
$ ../toolbox/trunk/code/make_tools/lnconf -i <開発用リポジトリのパス>/code

BASEDIR はフルパスで指定しておく。

Linux、Mac OS X を Windows 開発のサーバーとする場合

以下のコマンドを実行する

$ <開発用リポジトリのパス>/code/make_tool/lnconf -i BASEDIR=<開発用リポジトリのパス>/code OSTYPE=win32

Windows でツールをビルドする場合

サーバーの準備ができてから以下のコマンドを実行する。

$ <サーバーのワークディレクトリのパス>/lnconf -i -w VPATH=<サーバーのワークディレクトリのパス>

この操作により GNUmakefile と inienv が作成される。

$ //ip_address_of_server/vdmwork_vs/lnconf -i -w VPATH=//ip_address_of_server/vdmwork_vs

Windows 7 では、エクスプローラからサーバーに接続しておかないとうまく動かない。

コード生成(Linux、Mac OS X)

vdm の仕様からツールをビルドするのに必要なソースファイルの生成を行う。

仕様の中間ファイルの削除

$ make specclean

この操作は、仕様の中間ファイルの削除を行う 仕様を修正した場合に実行する

ソースファイルの生成

$ make gencode >& Logs & tail -f Logs

コード生成終了後エラーがないことを確認する。 Errors クラスと ErrorState クラスに関する出力はエラーではない。

開発サーバの場合の追加処理

$ make clean
$ make ntinit

ツールのビルド(Linux、Mac OS X)

ワークディレクトリ内で以下のコマンドを実行する

$ make clean
$ make distall

ツールのビルド(Windows)

ワークディレクトリ内で以下のコマンドを実行する

$ source inienv
$ make clean
$ make setupall