試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Tao FrameworkについてとMandriva Linux向けRPMパッケージの作成

共通言語基盤(Common Language Infrastructure)のアーキテクチャ(以下Mono/.NETアーキテクチャ)上でOpenGL/OpenAL/SDLやその他各種ライブラリなどを利用するための言語バインディング集として、Tao Framework(http://web.archive.org/web/20081220074025/http://taoframework.com/)というものがある。

  1. Mandriva Linux 2009.0向けの自作パッケージについて
  2. 一般的なビルド/インストール手順
  3. Debian/Ubuntuでのパッケージについて

Mandriva Linux 2009.0向けの自作パッケージについて

あるパッケージをインストールするためにこのパッケージが必要になったのだが、Mandriva Linux 2009.0の時点ではパッケージになっていないため、RPMパッケージを作成した。別館の配布ページで公開している。
(2014/10/12)配布ページは削除済み。
Tao FrameworkのコードはC#言語のみで書かれていて、CやC++で書かれたライブラリへリンクすることもないため、Mono/.NETアーキテクチャ上の実行形式(アセンブリと呼ばれている)*1は、OSやそのアーキテクチャ(x86_32/x86_64など)などに依存せずにどこでも実行できることとあわせると、RPMパッケージはアーキテクチャ非依存(.noarch.rpm)にしたいところだが、実際には

  • Tao Frameworkから使用される低レベルのライブラリ(SDLOpenALなど)への依存はアーキテクチャごとに異なる名前になる場合がある(例: x86_64上の「lib64openal0」とi586上の「libopenal0」)
  • pkg-config向けの.pcファイルが/usr/lib/pkgconfig/へ入る関係でx86_64上で(環境変数PKG_CONFIG_PATHを指定せずに)認識されない

といった問題があったため、それぞれ

  • インストールされるファイルを「taoframework-common-[名前]」、依存関係処理用に「taoframework-[名前]」とパッケージを分ける
  • x86_64のときに/usr/lib64/pkgconfig/以下へ.pcファイルへのシンボリックリンクを張る

として対処した。

一般的なビルド/インストール手順

nantというビルドツールを用いる。

  • pkg-config(パッケージ名「pkgconfig」の場合もある)
  • Mono
  • nant

があればOKと思われる。*2
下は作業例。

$ tar zxf [taoframework-2.1.0.tar.gzの場所]
$ cd taoframework-2.1.0/source/
$ nant mono-2.0 build-release
$ sudo nant mono-2.0 install -D:gacdir="[インストール先接頭辞(「/usr」など)"] -D:pkgconfig="[pkgconfigディレクトリ(「/usr/lib/pkgconfig」など)]"

Debian/Ubuntuでのパッケージについて

2009年1月現在、Debianの不安定版ディストリ(sid)にパッケージが存在する。*3上で書いているが、Mono/.NETのアセンブリファイルではディストリやアーキテクチャの違いが問題にならないため、(パッケージがない)Ubuntuからも安全に利用できる。

関連URL:

*1:「Mono/.NET版の.exeや.dll」と書くと、分かる人には分かりやすいかも

*2:Ubuntu Intrepid(8.10)で試したところ、resgen.exe絡みのエラーが出てしまったが、パッケージが利用できるので手動でビルドする必要はない

*3:バージョンは何故か2.0.0