Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

PySndObjをMacにインストールする

ビルドの合間に。
PySndObjをMacにインストールする方法が結構適当で、Python2.3を使ってる人いるようだ。
2.5でも動くんだけどなあ。
せっかくなので最新版をインストールする手順を書いてみる。
用意するもの

  1. python2.5 (Leopardなら2.5のはず)
  2. swig (portから入れておく)
  3. scons

CVSから最新のソースを取得

cvs -z3 -d:pserver:anonymous@sndobj.cvs.sourceforge.net:/cvsroot/sndobj co -P sndobj   

sconsでビルドする

sconsがはいっていれば

scons nostaticlib=False pythonmodule=True  

でビルドできます。
python以下に_sndobj.so、sndobj.pyが出来上がります。
デフォルトだと_sndobj.soを作ってくれません、またswigもたたいてくれないのでsndobj.pyも作られません。
その他のオプションですがSConstructを見れば大体わかります。

 opt.AddOptions(
 39     BoolOption('alsa', 'on linux, build with alsa support', True),
 40     BoolOption('oss',  'on unix or linux, build with OSS support', False),
 41         BoolOption('jack', 'on linux or OSX, build with Jack support', True),
 42     ('flags', 'additional compile flags', ""),
 43     ('prefix', 'install prefix of headers, static lib and shared lib', '/usr/local'),
 44         ('pddir', 'PD directory on windows', 'C:\\PureData'),
 45         BoolOption('nostaticlib', 'do not build static library', True),
 46         BoolOption('pythonmodule', 'build python module', False),
 47         BoolOption('javamodule', 'build java module', False),
 48         BoolOption('lispmodule', 'build CFFI module', False),
 49         ('install_name', 'on OSX, the dynamic library full install pathname (before installation)', 'lib/libsndobj.dylib'),
 50         ('pythonpath', 'python install path (defaults to usual places)', ''),
 51         ('javapath', 'java headers path (defaults to usual places)', '')
 52     )

sconsが入ってない場合は入れる事になるんですが、往々にして失敗する事があります。
理由はSCons以下がうまく入ってくれないからです。
よくSCons.Scriptでほげほげってエラーが出ますが、原因はこのためです。
ソースからぶち込んだほうが確実です。
ソースから

 python bootstrap.py build/scons
 python setup.py install --standard-lib

でsconsをインスコすると大丈夫になります。
あとは_sndobj.soとsndobj.pyをsite-packagesに、出来上がったdylibを/usr/local/lib以下にコピーすればOKです。
2.3バージョンだとjackを入れろとか言われますがこれだとCoreAudioでも動くようになります。