とりあえず作業にひと段落つける意味で、mldspのリリースtarballを作った。実際には、mldspだけでなくportmidiのパッチ当てバージョンもtarballを作った。これはLinux専用なので、portmidi-sharpとは別の(既に動いている)パッチに基づいている。
本当はこれをさらにopensuse build service(名前はsuseだが実際には他のdistro向けのパッケージもビルドできる)を使ってパッケージにしたかったのだけど、作業の合間に外出することになって時間切れになったので、その後やっていない。tarballがあれば普通のLinuxユーザであれば何とかするはずだし。
portmidiのアーカイブが出来たところで、次はmldsp(-gtk)である。こっちはMonoDevelopのMakefile統合をある程度使って実現しているのだけど、いくつかハマり箇所があった。まず、そもそもMoonlight.Gtkのプロジェクトのサポートが無いので、Moonlightプロジェクトのように自動的にxapを作ってくれることがない。なので仕方なくzipを呼んでxapアーカイブを作成するスクリプトを作った。このスクリプトもアーカイブに含めなければならないので、csprojに追加した。
そしてビルドして実行したらxapが無いと言われる。仕方ないのでこれもcsprojに追加して、ビルド時に実行ディレクトリにコピーしてやるよう設定する。これが後でmake distでハマって、実はいまでも困っている。プロジェクトに追加したため、xap自身はビルドされるファイルであるにもかかわらず、make distして作成されたtarballから消えないのである。そして消す方法が無い。仕方ないのでこれはあきらめてそのまま入れることにした。
Makefile統合のもうひとつのハマり場所は、参照設定したtsukimiのdllのデバッグシンボル(*.mdb)がなぜかmake distでコピーされないことだ。仕方ないのでこれは生成されたMakefileをいじって手作業で追加した。どうせweb版のmldspで使われるtsukimi(これは依存ランタイム/ライブラリが2.1になるので、別アセンブリになっている)のアセンブリも手作業で追加しなければならないのだ。
そんな感じでmldspもめでたくtarballリリースが出来たので、以降こっちの作業はのんびりと進めようかと思う。
実のところ、Moonlight.Gtkにも問題があって、いまmldspを実行できるMoonlight.Gtkは存在しない。これはmoonのSystem.Windows.dllが誤ってplugin APIに依存するコードを追加してしまっているためだ(デスクトップ版でplugin依存のネイティブライブラリは呼び出せない)。そしてちょっと古いバージョンのmoonlightをビルドしようとすると、monoとmcsも同じくらい古くないと出来ない。でもそのためのmono/mcsのtarballは存在していない。これは困った問題なので修正してもらう予定。
Leave a comment