さあ、はじめましょう
JHBuild でソフトウェアをビルドする前に、いくつかのセットアップを実行する必要があります。JHBuild には前提条件となるいくつかのソフトウェアがあるので、モジュールの取得やビルドに必要な、それらのツールをインストールする必要があります。
- 2.1. JHBuild のインストール
- 2.2. JHBuild の設定
- 2.3. ビルドの前提条件
- 2.4. JHBuild を使用する
2.1. JHBuild のインストール
JHBuild には Python の実行環境が必要です。Python >= 2.3 がインストールされていることを確認してください。
The recommended way to download JHBuild is via the version control system, git. This can be achieved with the following command. It is recommended to run the command from a new directory where all source code will be installed, for example, ~/jhbuild/checkout.
$ git clone git://git.gnome.org/jhbuild ... $
これにより、現在のディレクトリ配下に jhbuild という新しいディレクトリが作成され、そこに JHBuild がダウンロードされます。次に JHBuild のビルド、およびインストールを行います:
$ cd jhbuild $ ./autogen.sh ... $ make ... $ make install ... $
gnome-common、yelp-tools、および autotools がインストールされていれば、autogen.sh は、autotools の処理を経てインストールするように JHBuild を構成します。gnome-common、yelp-tools、またはautotools がインストールされていない場合、autogen.sh は、デフォルトの Makefile を使ってインストールするように JHBuild を構成します。常にデフォルトの Makefile を使用するには、autogen.sh に --simple-install オプションを指定します。
上記の手順が正常に終了すると、JHBuild を起動するための小さなシェルスクリプトが、~/.local/bin にインストールされるので、~/.local/bin を PATH に加えます:
$ PATH=$PATH:~/.local/bin $
常に ~/.local/bin を PATH に追加したい場合は、以下のコマンドを実行してください:
$ echo 'PATH=$PATH:~/.local/bin' >> ~/.bashrc $
2.2. JHBuild の設定
JHBuild は、設定ファイルによる設定が可能です。設定ファイルのデフォルトの場所は ~/.config/jhbuildrc です。設定ファイルが存在しない場合は、デフォルトの設定が使用されます。設定ファイルは Python の構文で記述します。記述例は、examples/sample.jhbuildrc を参照してください。examples/sample.jhbuildrc を ~/.config/jhbuildrc にコピーし、必要に応じて修正してください。
The sample configuration will make JHBuild build the meta-gnome-core and meta-gnome-apps-tested modules and dependencies from the gnome-apps module set. JHBuild will unpack source trees to ~/jhbuild/checkout/ and install all files to subdirectories of ~/jhbuild/install/. The two directories must be writable.
設定変数については、セクション 6 - 設定ファイルリファレンス を参照してください。次の変数はよく使用します。
- repos
-
あるリポジトリにたいして、リポジトリの場所を指定するディクショナリ (訳注:Python の辞書型のこと。他言語での連想配列に相当) です。この変数はモジュール開発者にとって便利です。デフォルトでは、JHBuild は匿名アクセスでリポジトリからコードをチェックアウトします。ディクショナリのキーはリポジトリの略称で、値は代わりとなるリポジトリの場所をあらわす文字列です。以下は記述例です。
repos['git.gnome.org'] = 'ssh://username@git.gnome.org/git/'
- moduleset
-
モジュールセットの名前を指定する文字列、または文字列のリスト(配列)です。これは JHBuild に含まれるファイル名(パスと拡張子を除く)、または 外部で管理されているモジュールセットの完全な HTTP URL のどちらでも構いません。HTTP URL のモジュールセットは、ローカルにキャッシュされます。ふたつ以上のモジュールセットに同じ名前のモジュールが存在する場合は、最後のモジュールセットのモジュールが優先します。JHBuild により提供されるモジュールセットは、その時の GNOME の開発リリースに合わせて更新されます。
- modules
-
ビルドするモジュールを指定する文字列のリストです。 buildone コマンドを使用しないかぎり、実際にビルドされるモジュールは、指定したモジュールが依存するモジュールもすべて含まれます。依存関係は再帰的に展開されます。デフォルトは ['meta-gnome-desktop'] です。
- checkoutroot
-
A string specifying the directory to unpack source trees to. Unless buildroot is set, builds will occur in this directory too. Defaults to ~/jhbuild/checkout.
- prefix
-
A string specifying the prefix to install modules to. prefix must be an absolute path. This directory must be writable. Defaults to '~/jhbuild/install/'.
- autogenargs
-
autogen.sh スクリプトに渡す引数を指定する文字列です。すべてのモジュールに適用されます。module_autogenargs ディクショナリで、特定のモジュールにたいして上書きできます。
- makeargs
-
A string listing additional arguments to be passed to make. JHBuild will automatically append the parallel execution option (-j) based upon available CPU cores. Defaults to ''.
2.3. ビルドの前提条件
モジュールをビルドする前に、いくつかのビルドツールをインストールする必要があります。ビルドするモジュールにもよりますが、共通のビルドツールには、GNU Autotools (autoconf、automake、libtool および gettext)、GNU Toolchain (binutils、gcc、g++)、make、pkg-config および Python などがあります。
JHBuild の sanitycheck コマンドを使って、ツールがインストールされているかをチェックできます。
$ jhbuild sanitycheck
このコマンドが何かメッセージを表示した場合は、メッセージを参考に、お使いのディストリビューションのリポジトリから必要なパッケージをインストールしてください。さまざまなディストリビューション用のパッケージ名の一覧が GNOME wiki でメンテナンスされています。ディストリビューションのパッケージをインストールしたあとに、もういちど sanitycheck コマンドを実行し、必要なツールが揃ったか確認してください。
2.4. JHBuild を使用する
セットアップが完了すれば、JHBuild でソフトウェアをビルドできます。設定ファイルの~/.config/jhbuildrc で指定したモジュールをすべてビルドするには、次のコマンドを実行します。
$ jhbuild build
JHBuild は、各モジュールのダウンロード、configure、コンパイル、そしてインストールを行います。どこかのステージでエラーが発生した場合、JHBuild はメニューを表示して、どうするか確認します。選択肢としては、シェルを起動してエラーを修正する、各ステージからビルドを再実行する、そのモジュールをビルドしない、エラーを無視して処理を続行する、などがあります。
あるモジュールをビルドしなかった場合、そのモジュールに依存するモジュールのビルドも失敗することになります。
以下は、表示されるメニューの例です。
[1] Rerun phase build
[2] Ignore error and continue to install
[3] Give up on module
[4] Start shell
[5] Reload configuration
[6] Go to phase "wipe directory and start over"
[7] Go to phase "configure"
[8] Go to phase "clean"
[9] Go to phase "distclean"
choice:
build コマンドの引数にモジュール名を指定することで、異なるモジュールとその依存モジュールをビルドできます。たとえば、gtk+ をビルドするには次のコマンドを実行します。
$ jhbuild build gtk+
もしビルドの途中で JHBuild がキャンセルされた場合、--start-at オプションを使用して特定のモジュールからビルドを再開できます。
$ jhbuild build --start-at=pango
1つ(または複数)のモジュールを、依存関係を無視してビルドするために、JHBuild は buildone コマンドを提供しています。buildone コマンドが正常に終了するには、依存するモジュールが事前にビルド、インストールされているか、ディストリビューションのパッケージが提供されていなければなりません。
$ jhbuild buildone gtk+
モジュールの開発を活発に行っているときは、ソースの作業ディレクトリにいることがよくあります。make コマンドは、ビルドシステムの起動およびモジュールのインストールを行います。これは、編集-コンパイル-インストール-テストのサイクルの重要な一部になります。
$ jhbuild make
もしビルドの途中で JHBuild がキャンセルされた場合、--start-at オプションを使用して特定のモジュールからビルドを再開できます。
JHBuild がビルドしようとするモジュールと依存関係、その他のビルドされるモジュールの一覧を取得するには、list コマンドを使用します。
$ jhbuild list
特定のモジュールの情報を取得するには、info コマンドを使用します。
$ jhbuild info gtk+
ビルドせずにソフトウェアのソースをダウンロード、更新だけを行うには、update コマンドを使用します。update コマンドはビルドする前にソースを修正する機会を提供します。またインターネットの帯域幅が変化する場合に便利です。
$ jhbuild update
その後で、JHBuild はソースのダウンロードや更新をせずに、すべてをビルドできます。
$ jhbuild build --no-network
JHBuild と同じ環境で特定のコマンドを実行するには、run コマンドを使用します。
$ jhbuild run program
JHBuild と同じ環境でシェルを起動するには、shell コマンドを使用します。
$ jhbuild shell