Building PyXPCOM
出典: MDC
この記事は PyXPCOM のビルド方法を紹介します。
目次 |
[編集] Python をインストール
[編集] PyXPCOM に必要な条件
- PyXPCOM は Python 2.3 もしくはそれ以降が必要です (Python 2.3 と 2.4 では現在テストが完了されています).
- PyXPCOM は Python の共有ライブラリにアクセスできる必要があります。
[編集] Linux
Linux では、適切な Python の共有ライブラリを持っているかどうかをビルドスクリプトがチェックをします。
Compiling Mozilla に行き、もし共有ビルドされた Python が見つからなくエラーを受け取った場合、
後の方の記述に従い --enable-shared をつけて Python をコンパイルする必要があります。
[編集] 現在の Fedora と Ubuntu 上でのビルド
これらのディストリビューションではすでに利用可能な共有ビルドされた Python が入っています。
[編集] Gentoo systems
Python の共有ライブラリのビルドは python-2.3* かそれ以降でのみ有効となるようなので、python-2.2* かそれ以前のバージョンを使っているのであればアップデートが必要となります。
python-2.3* 以降の ebuild であれば、標準で共有ライブラリはビルドされインストールされています。
[編集] FreeBSD
ports (lang/python24) からの Python ビルドは、すでに共有 Python ライブラリを提供しています。
[編集] Mac OS X
OS X 10.3 と 10.4 のユーザであれば、Python 2.3 Framework がすでに利用可能です。もし Python 2.4 を使ってビルドをしたいのであれば、あなた自身で ソースからビルドをするか、DarwinPorts か Fink を利用をするか、MacPython か ActivePython のどちらかをインストールする必要があります。これで Compiling Mozilla に進む事ができます。もしアプリケーションを配布をしたいのであれば、初めから組み込まれている Python 2.3 Framework を利用するのがよいでしょう。もし Python Framework をアプリケーションバンドルに組み込みたいのであれば、いくつかカスタマイズした Python のビルドスクリプトを使いましょう。
[編集] Windows
Windows の 公式の Python インストーラでは、共有ライブラリが有効になったバージョンがインストールできますので、 Windows ユーザは単純に Python インストールして Compiling Mozilla に進んでください。
[編集] その他のシステム
もし、上記以外のシステムを使っているのであれば、最終安定バージョンの Python のソースコードの tarball を python.org から取得し、以下の事を行います:
tar xjf Python-2.4.2.tar.bz2 cd Python-2.4.2 ./configure --enable-shared --prefix=/usr # --prefix で現在のPythonをインストールする場所に合わせてください make sudo make install
[編集] Mozilla をコンパイルする
あなたは 開発者向けドキュメント にある Mozilla コードベースのソフトウェア(例えば、Firefox や XULRunner) の ソースコードのダウンロード と アプリケーションの構築方法 に精通しているべきでしょう。Firefox, XulRunner).
依存関係を解消するために、Mozilla の CVS レポジトリから適切なブランチをピックアップしましょう。
- もし安定版のコードベースが必要で、XPCOM クラスのバックエンドとして Python が必要なだけであれば、 MOZILLA_1_8_BRANCH もしくは MOZILLA_1_8_0_BRANCH の Mozilla を CVS からチェックアウトしてビルドをしてください。このブランチでは Linux において、利用可能な共有ビルドがあるかを **決して** 自動的にチェックをしませんので、あなた自身で必ず揃えておいてください。
- trunk の Mozilla を使う。このバージョンは XPCOM の最終バージョンで、DOMブランチでの作業が取り込まれています。(次を参照)
CVS レポジトリにあるいかなるアプリケーションにおいても PyXPCOM をビルドする事が出来ます。下の例では、 SeaMonkey 上で PyXPCOM を Python DOM サポートを含めてビルドする手順を紹介しています。また、 HEAD もしくは オプションから "python/dom" が取り除かれている MOZILLA_1_8_0_BRANCH 、そしてもちろん CVS checkout コマンドで取得した最新のブランチなどの XULRunner においてもビルドする事ができます。
[編集] すべてのプラットフォーム
すべてのプラットフォームにおいて、まず初めに Python 拡張を “含まない" 標準的な Mozilla をビルドできるか確かめるべきです。もし Python なしで Mozilla がビルドできなかったら、絶対に Python を "含む" ビルドはできないでしょう :)
とりあえずビルドが成功したら、次は単純に python/xpcom 拡張を有効にしてみます(もし 1.8 ブランチを使っているのであれば、python/xpcom を指定します)。 この拡張が有効になったら、 Mozilla を再度ビルドします。
例えば、1.8 ブランチでは次の行を:
- ac_add_options --enable-extensions=python/xpcom,default
それ以降のバージョンでは次を:
- ac_add_options --enable-extensions=python,default
.mozconfig ファイルに追加してください。
[編集] Python のバージョンを指定する
configure スクリプトにより、利用する Python のバージョンの位置を特定します。多くの場合、 Mozilla の configure を実行する前に利用したい Python のバージョンをPATH に入れて特定すれば十分です。
代わりに、環境変数 PYTHON に Python の実行ファイル名をフルパス名(格納ディレクトリではありません。必ず Python の実行ファイル名にしてください)を指定する事もできます。もしこれらをセットしていれば、 configure スクリプトはこれらの変数を使って Python の位置を特定します。
また、どの Python が使われるかは configure の動作を注意深く見ていれば確認できます。次のようなメッセージが見えるでしょう:
Building PyXPCOM using Python-2.4 from c:/Python24
Windows/MSVC ユーザ: cygwin の Python を絶対に使用してはいけません。後からコンパイルエラーが生じる可能性が高くなります。
[編集] Linux と OS X
Linux では特に気を使う事はありません。次は Linux で trunk のビルドの様子を示した例です。
- cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
- cd mozilla
- cat > ~/.mozconfig << "EOF"
- mk_add_options MOZ_CO_PROJECT=suite
- ac_add_options --enable-application=suite
- ac_add_options --enable-default-toolkit=gtk2
- ac_add_options --enable-xft
- ac_add_options --enable-extensions=python,default
- ac_add_options --disable-optimize
- ac_add_options --enable-debug
- mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/suite-debug
- EOF
- make -f client.mk checkout
- make -f client.mk build
[編集] Windows
Windows では特に気を使う事はありません。上述した.mozconfig ファイルと --enable-extensions の関係についての標準的な説明を確認してください。
リリースバージョンの Python を用いて Mozilla のデバッグビルドを作成しようとすると、ビルドに問題が生じますので注意してください。この設定でビルドをすることもできますが、何かしらの対処策が必要になってきます(この方法の 1 つは pyconfig.h 内の #define Py_DEBUG をコメントアウトすること)。
[編集] PyXPCOM をテストする
Mozilla 実行環境で PyXPCOM のビルドが出来上がったらテストをしましょう。
Linux と OS X:
- cd suite-debug/dist/bin
- export PYTHONPATH=$PYTHONPATH:$HOME/mozilla/suite-debug/dist/bin/python # PyXPCOM をビルドした場所に合わせてください
- ./run-mozilla.sh ./seamonkey -chrome chrome://pyxultest/content
Windows:
- cd dist\bin
- set PYTHONPATH=%PYTHONPATH%;C:\mozilla\dist\bin\python
- seamonkey.exe -chrome chrome://pyxultest/content
制御された window がポップアップするでしょう。実行したテストはこれを含んでいます。
同じディレクトリにはスタンドアロンの Python 環境から Python xpcom モジュールを使う簡単なテストも実行できます。
Linux と OS X:
- export MOZILLA_FIVE_HOME=$HOME/mozilla/suite-debug/dist/bin # Mozilla をビルドした場所に合わせてください。
- export LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME
- python -c 'from xpcom import components; print components.classes["@mozilla.org/file/local;1"]'
Windows:
- set PATH=%PATH%;C:\mozilla\dist\bin
- set MOZILLA_FIVE_HOME=C:\mozilla\dist\bin
- set LD_LIBRARY_PATH=%MOZILLA_FIVE_HOME%
- python -c "from xpcom import components; print components.classes['@mozilla.org/file/local;1']"
次のようなメッセージが見えるでしょう:
Type Manifest File: /home/you/mozilla/suite-debug/dist/bin/components/xpti.dat <xpcom.components._Class instance at 0xb7c1be8c> nsStringStats => mAllocCount: 431 => mReallocCount: 270 => mFreeCount: 423 -- LEAKED 8 !!! => mShareCount: 450 => mAdoptCount: 0 => mAdoptFreeCount: 0
もし Python のエラーメッセージが見えたら、まずは $PYTHONPATH が最初のテストと同じ値がセットされているか確認してください。