さあ、はじめましょう

JHBuild でソフトウェアをビルドする前に、いくつかのセットアップを実行する必要があります。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-commonyelp-tools、および autotools がインストールされていれば、autogen.sh は、autotools の処理を経てインストールするように JHBuild を構成します。gnome-commonyelp-tools、またはautotools がインストールされていない場合、autogen.sh は、デフォルトの Makefile を使ってインストールするように JHBuild を構成します。常にデフォルトの Makefile を使用するには、autogen.sh--simple-install オプションを指定します。

上記の手順が正常に終了すると、JHBuild を起動するための小さなシェルスクリプトが、~/.local/bin にインストールされるので、~/.local/binPATH に加えます:

$ PATH=$PATH:~/.local/bin
$

常に ~/.local/binPATH に追加したい場合は、以下のコマンドを実行してください:

$ 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 (autoconfautomakelibtool および gettext)、GNU Toolchain (binutilsgccg++)、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