minimyサーバセンタ構築を妄想して思った。組み込みってそういうもんだ。workTG2.0はsqlobject->sqlachemyらしい。tracwxPythonメガフレームワークの進化速度SWIGってイイ。SWIGのはまりどころsetup.pyをいろいろ書き間違えて学んだ。結局、MANIFESTをちゃんとかく(setuptoolsを使えばそうでもないのかもしれないが・・・)、とext_modulesの名前の付け方に注意することだ。今回の方法でインストールすると、site-package下にhogehoge.pyと_hogehoge.soが配置される。hogehogeというdirectoryを掘ってその下に入れてほしい場合はまた考える必要がありそうだが、Extensionがfileを生成すると思っていれば多分ただしくsetup.pyをかけるだろう。hogehogeできるようにするには次のようにする。py_modules=['hogehgoe'],)解説:MANIFESTbuildに必要なファイルは全部書きます。ここにhogehoge.pyが入っていないことに注意(SWIGが生成するから)。第一引数のnameが'_hogehoge'になっているのに注意。SWIGは.soの名前が_XXX.soになることを期待しているので、こうしなければならない。第2引数はソースリストだが、これはSWIGに渡すものとgccに渡すファイルを指定する。すると勝手にSWIGを呼び出してhogehoge_wrap.cとhogehoge.pyを生成し、次にgccを呼び出してhogehoge.cとhogehoge_wrap.cをコンパイルし、リンカを呼び出してそれらの.oから_hogehoge.soを生成してくれる。ここで注意しなければならないのは.cを指定し忘れてもpackgaeが生成でき、.soがインストールされてしまうということだ。.c内で定義されているものを呼び出すことはできないのでimport先でexceptionを起こして止まってしまう。最後にsetup.pyのpy_modulesで、hogehoge.pyを指定しているが、これによりSWIGの生成したhogehgoe.pyがsite-package下にコピーされます。これがないとhogehoge.pyがコピーされません。setupの途中、手元にないpyを指定するのでエラーが出ますが続行されます。最終的にはSWIGが生成したpyがコピーされるので問題はないですが。さんのコメント...うが。found:/usr/lib64/python2.4/site-packages/FIBSCookieMonster.pyobuildbotではsetup.cfgに[install]optimize=1としてやっても、pyが生成される前なのでエラーになってしまう。.pydistutils.cfgを用意しないと駄目?しかもこれをリモート環境に要求するんだよね、当たり前なんだけど。さんのコメント...うは・・・/var/tmp/FIBSCookieMonster/に残骸が残っていて消せない。sudoして消して実験したら読みどおり。howな方向に進んでいてやだなぁ。さんのコメント...てか、/var/tmpの下もuser名でdir掘って使ってほしい・・・。さんのコメント...buildbot-slaveと開発マシンが同じなのでこれは対処したほうがよさそう。さんのコメント....pydistutils.cfgを用意したらうまくいった。投稿Atom投稿コメントAtomコメント。