<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--*- mode: nxml -*-->
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- process to HTML with: xmlto xhtml-nochunks -m ../custom.xsl index.docbook -->
<article id="index" lang="ja">
  <articleinfo>
    <title>JHBuild マニュアル</title>
    <authorgroup>
      <author role="maintainer"><firstname>James</firstname> <surname>Henstridge</surname></author>
      <author><firstname>C.J.</firstname> <surname>Adams-Collier</surname></author>
      <author><firstname>Frederic</firstname> <surname>Peters</surname></author>
      <author><firstname>David</firstname> <surname>Turner</surname></author>
    </authorgroup>
    <copyright><year>2004, 2008</year> <holder>James Henstridge</holder></copyright>
    <revhistory>
      <revision><revnumber>JHBuild Manual v0.5</revnumber> <date>January 2008</date></revision>
      <revision><revnumber>JHBuild Manual v0.1</revnumber> <date>August 2007</date></revision>
    </revhistory>
    <abstract role="description">
      <para>JHBuild はバージョン管理システムを利用して、GNOME デスクトップ全体をビルドするのに使用されるツールです。JHBuild は他のプロジェクトをビルドするようにカスタマイズすることもできます。</para>
    </abstract>
  
    <othercredit class="translator">
      <personname>
        <firstname>Hiroyuki Sekihara</firstname>
      </personname>
      <email>hiroyuki.sekihara@gmail.com</email>
    </othercredit>
    <copyright>
      
        <year>2010</year>
      
      <holder>Hiroyuki Sekihara</holder>
    </copyright>
  
    <othercredit class="translator">
      <personname>
        <firstname>松澤 二郎</firstname>
      </personname>
      <email>jmatsuzawa@gnome.org</email>
    </othercredit>
    <copyright>
      
        <year>2010</year>
      
        <year>2012</year>
      
      <holder>松澤 二郎</holder>
    </copyright>
  </articleinfo>

  <section id="introduction">
    <title>はじめに</title>

    <para>JHBuild は <quote>モジュール(modules)</quote> と呼ばれる、ソースパッケージのあつまりを、簡単にビルドできるように作られたツールです。JHBuild はビルドできるモジュールの記述に、<quote>モジュールセット(module set)</quote> というファイルを使います。<quote>モジュールセット</quote> ファイルには、JHBuild があるモジュールをビルドするのに、何を必要としているかを見つけるための、依存関係の情報が含まれています。</para>

    <para>JHBuild のオリジナルは <ulink url="http://www.gnome.org">GNOME</ulink> をビルドするために作られましたが、その後、他のプロジェクトでも使用できるように拡張されています。<quote>モジュールセット</quote> ファイルはウェブサーバー上に置くことができるので、JHBuild プロジェクトのビルドルールとは独立させることができます。</para>

    <para>JHBuild can build modules from a variety of sources, including
      <ulink url="http://www.cvshome.org/">CVS</ulink>,
      <ulink url="http://subversion.tigris.org/">Subversion</ulink>,
      <ulink url="http://www.bazaar-vcs.org/">Bazaar</ulink>,
      <ulink url="http://darcs.net/">Darcs</ulink>,
      <ulink url="http://git.or.cz/">Git</ulink> and
      <ulink url="http://www.selenic.com/mercurial/">Mercurial</ulink>
      repositories, as well as Tar and Zip archives hosted on web or FTP sites.
      JHBuild can build modules using a variety of build systems, including
      Autotools, CMake, Meson, WAF, Python Distutils and Perl Makefiles.</para>

    <para>JHBuild は、ディストリビューションのパッケージ管理システムを置き換えるものではありません。JHBuild は、インストール先を prefix によって分離することにより、システムの他の部分に影響を及ぼすことなくソフトウェアをビルドするのを簡単にします。</para>
  </section>

  <section id="getting-started">
    <title>さあ、はじめましょう</title>

    <para>JHBuild でソフトウェアをビルドする前に、いくつかのセットアップを実行する必要があります。JHBuild には前提条件となるいくつかのソフトウェアがあるので、モジュールの取得やビルドに必要な、それらのツールをインストールする必要があります。</para>

    <section id="getting-started-install">
      <title>JHBuild のインストール</title>

      <para>JHBuild には Python の実行環境が必要です。Python &gt;= 2.3 がインストールされていることを確認してください。</para>

      <para>The recommended way to download JHBuild is via the version control
        system, <command>git</command>. 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,
        <filename>~/jhbuild/checkout</filename>.</para>

<screen><prompt>$</prompt> <userinput>git clone git://git.gnome.org/jhbuild</userinput>
<computeroutput>...</computeroutput>
<prompt>$</prompt></screen>

      <para>これにより、現在のディレクトリ配下に <filename>jhbuild</filename> という新しいディレクトリが作成され、そこに JHBuild がダウンロードされます。次に JHBuild のビルド、およびインストールを行います:</para>

<screen><prompt>$</prompt> <userinput>cd jhbuild</userinput>
<prompt>$</prompt> <userinput>./autogen.sh</userinput>
<computeroutput>...</computeroutput>
<prompt>$</prompt> <userinput>make</userinput>
<computeroutput>...</computeroutput>
<prompt>$</prompt> <userinput>make install</userinput>
<computeroutput>...</computeroutput>
<prompt>$</prompt></screen>

      <para><application>gnome-common</application>、<application>yelp-tools</application>、および <application>autotools</application> がインストールされていれば、<filename>autogen.sh</filename> は、<application>autotools</application> の処理を経てインストールするように JHBuild を構成します。<application>gnome-common</application>、<application>yelp-tools</application>、または<application>autotools</application> がインストールされていない場合、<filename>autogen.sh</filename> は、デフォルトの Makefile を使ってインストールするように JHBuild を構成します。常にデフォルトの Makefile を使用するには、<filename>autogen.sh</filename> に <option>--simple-install</option> オプションを指定します。</para>

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

<screen><prompt>$</prompt> <userinput>PATH=$PATH:~/.local/bin</userinput>
<prompt>$</prompt></screen>

      <para>常に <filename>~/.local/bin</filename> を <envar>PATH</envar> に追加したい場合は、以下のコマンドを実行してください:</para>

<screen>
<prompt>$</prompt> <userinput>echo 'PATH=$PATH:~/.local/bin' &gt;&gt; ~/.bashrc</userinput>
<prompt>$</prompt></screen>
    </section>

    <section id="getting-started-configure">
      <title>JHBuild の設定</title>

      <para>JHBuild は、設定ファイルによる設定が可能です。設定ファイルのデフォルトの場所は <filename>~/.config/jhbuildrc</filename> です。設定ファイルが存在しない場合は、デフォルトの設定が使用されます。設定ファイルは Python の構文で記述します。記述例は、<filename>examples/sample.jhbuildrc</filename> を参照してください。<filename>examples/sample.jhbuildrc</filename> を <filename>~/.config/jhbuildrc</filename> にコピーし、必要に応じて修正してください。</para>

      <para>The sample configuration will make JHBuild build the
        <application>meta-gnome-core</application> and
        <application>meta-gnome-apps-tested</application> modules and
        dependencies from the <systemitem>gnome-apps</systemitem> module set.
        JHBuild will unpack source trees to
        <filename>~/jhbuild/checkout/</filename> and install all files to
        subdirectories of <filename>~/jhbuild/install/</filename>. The two directories
        must be writable.</para>

      <para>設定変数については、<xref linkend="config-reference"/> を参照してください。次の変数はよく使用します。</para>

      <variablelist>
<?dbhtml list-presentation="table"?>
        <varlistentry>
          <term><link linkend="cfg-repos"><varname>repos</varname></link></term>
          <listitem>
            <simpara>あるリポジトリにたいして、リポジトリの場所を指定するディクショナリ (訳注:Python の辞書型のこと。他言語での連想配列に相当) です。この変数はモジュール開発者にとって便利です。デフォルトでは、JHBuild は匿名アクセスでリポジトリからコードをチェックアウトします。ディクショナリのキーはリポジトリの略称で、値は代わりとなるリポジトリの場所をあらわす文字列です。以下は記述例です。</simpara>

<programlisting>repos['git.gnome.org'] = 'ssh://<replaceable>username</replaceable>@git.gnome.org/git/'</programlisting>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-moduleset"><varname>moduleset</varname></link></term>
          <listitem>
            <simpara>モジュールセットの名前を指定する文字列、または文字列のリスト(配列)です。これは JHBuild に含まれるファイル名(パスと拡張子を除く)、または 外部で管理されているモジュールセットの完全な HTTP URL のどちらでも構いません。HTTP URL のモジュールセットは、ローカルにキャッシュされます。ふたつ以上のモジュールセットに同じ名前のモジュールが存在する場合は、最後のモジュールセットのモジュールが優先します。JHBuild により提供されるモジュールセットは、その時の GNOME の開発リリースに合わせて更新されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-modules"><varname>modules</varname></link></term>
          <listitem>
            <simpara>ビルドするモジュールを指定する文字列のリストです。<link linkend="command-reference-buildone"> <command>buildone</command></link> コマンドを使用しないかぎり、実際にビルドされるモジュールは、指定したモジュールが依存するモジュールもすべて含まれます。依存関係は再帰的に展開されます。デフォルトは <literal>['meta-gnome-desktop']</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-checkoutroot"><varname>checkoutroot</varname></link></term>
          <listitem>
            <simpara>A string specifying the directory to unpack source trees
              to. If <link linkend="cfg-buildroot">
              <varname>buildroot</varname></link> is set to
              <constant>None</constant>, builds will occur in this directory
              too. Defaults to <filename>~/jhbuild/checkout</filename>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-prefix"><varname>prefix</varname></link></term>
          <listitem>
            <simpara>A string specifying the prefix to install modules to.
              <varname>prefix</varname> must be an absolute path. This directory
              must be writable. Defaults to <literal>'~/jhbuild/install/'</literal>.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-autogenargs"><varname>autogenargs</varname></link></term>
          <listitem>
            <simpara><command>autogen.sh</command> スクリプトに渡す引数を指定する文字列です。すべてのモジュールに適用されます。<link linkend="cfg-module-autogenargs"><varname>module_autogenargs</varname></link> ディクショナリで、特定のモジュールにたいして上書きできます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><link linkend="cfg-makeargs"><varname>makeargs</varname></link></term>
          <listitem>
            <simpara>A string listing additional arguments to be passed to
              <command>make</command>. JHBuild will automatically append the
              parallel execution option (<option>-j</option>) based upon
              available CPU cores. Defaults to <literal>''</literal>.</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="getting-started-bootstrap">
      <title>ビルドの前提条件</title>

      <para>モジュールをビルドする前に、いくつかのビルドツールをインストールする必要があります。ビルドするモジュールにもよりますが、共通のビルドツールには、GNU Autotools (<application>autoconf</application>、<application>automake</application>、<application>libtool</application> および <application>gettext</application>)、GNU Toolchain (<application>binutils</application>、<application>gcc</application>、<application>g++</application>)、make、pkg-config および Python などがあります。</para>

      <para>JHBuild の <command>sanitycheck</command> コマンドを使って、ツールがインストールされているかをチェックできます。</para>

<screen><prompt>$</prompt> <userinput>jhbuild sanitycheck</userinput></screen>

      <para>このコマンドが何かメッセージを表示した場合は、メッセージを参考に、お使いのディストリビューションのリポジトリから必要なパッケージをインストールしてください。さまざまなディストリビューション用の<ulink url="http://live.gnome.org/JhbuildDependencies">パッケージ名</ulink>の一覧が GNOME wiki でメンテナンスされています。ディストリビューションのパッケージをインストールしたあとに、もういちど <command>sanitycheck</command> コマンドを実行し、必要なツールが揃ったか確認してください。</para>
    </section>

    <section id="getting-started-use">
      <title>JHBuild を使用する</title>

      <para>セットアップが完了すれば、JHBuild でソフトウェアをビルドできます。設定ファイルの<filename>~/.config/jhbuildrc</filename> で指定したモジュールをすべてビルドするには、次のコマンドを実行します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild build</userinput></screen>

      <para>JHBuild は、各モジュールのダウンロード、configure、コンパイル、そしてインストールを行います。どこかのステージでエラーが発生した場合、JHBuild はメニューを表示して、どうするか確認します。選択肢としては、シェルを起動してエラーを修正する、各ステージからビルドを再実行する、そのモジュールをビルドしない、エラーを無視して処理を続行する、などがあります。</para>

      <note>
        <simpara>あるモジュールをビルドしなかった場合、そのモジュールに依存するモジュールのビルドも失敗することになります。</simpara>
      </note>

      <para>以下は、表示されるメニューの例です。</para>

<screen>  [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"
<prompt>choice:</prompt> </screen>

      <para><command>build</command> コマンドの引数にモジュール名を指定することで、異なるモジュールとその依存モジュールをビルドできます。たとえば、gtk+ をビルドするには次のコマンドを実行します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild build gtk+</userinput></screen>

      <para>もしビルドの途中で JHBuild がキャンセルされた場合、<option>--start-at</option> オプションを使用して特定のモジュールからビルドを再開できます。</para>

<screen><prompt>$</prompt> <userinput>jhbuild build --start-at=pango</userinput></screen>

      <para>1つ(または複数)のモジュールを、依存関係を無視してビルドするために、JHBuild は <command>buildone</command> コマンドを提供しています。<command>buildone</command> コマンドが正常に終了するには、依存するモジュールが事前にビルド、インストールされているか、ディストリビューションのパッケージが提供されていなければなりません。</para>

<screen><prompt>$</prompt> <userinput>jhbuild buildone gtk+</userinput></screen>

      <para>モジュールの開発を活発に行っているときは、ソースの作業ディレクトリにいることがよくあります。<command>make</command> コマンドは、ビルドシステムの起動およびモジュールのインストールを行います。これは、編集-コンパイル-インストール-テストのサイクルの重要な一部になります。</para>

<screen><prompt>$</prompt> <userinput>jhbuild make</userinput></screen>

      <para>JHBuild がビルドしようとするモジュールと依存関係、その他のビルドされるモジュールの一覧を取得するには、<command>list</command> コマンドを使用します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild list</userinput></screen>

      <para>特定のモジュールの情報を取得するには、<command>info</command> コマンドを使用します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild info gtk+</userinput></screen>

      <para>ビルドせずにソフトウェアのソースをダウンロード、更新だけを行うには、<command>update</command> コマンドを使用します。<command>update</command> コマンドはビルドする前にソースを修正する機会を提供します。またインターネットの帯域幅が変化する場合に便利です。</para>

<screen><prompt>$</prompt> <userinput>jhbuild update</userinput></screen>

      <para>その後で、JHBuild はソースのダウンロードや更新をせずに、すべてをビルドできます。</para>

<screen><prompt>$</prompt> <userinput>jhbuild build --no-network</userinput></screen>

      <para>JHBuild と同じ環境で特定のコマンドを実行するには、<command>run</command> コマンドを使用します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild run <replaceable>program</replaceable></userinput></screen>

      <para>JHBuild と同じ環境でシェルを起動するには、<command>shell</command> コマンドを使用します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild shell</userinput></screen>
    </section>
  </section>

  <section id="jhbuild-and-gnome">
    <title>JHBuild と GNOME</title>

    <para>このセクションは、GNOME のビルド、インストール、および実行に関するガイダンスです。</para>

    <section id="building-gnome">
      <title>GNOME のビルド</title>

      <para>GNOME をビルドするには、以下に示すいくつかの開発用パッケージが必要となります。</para>

      <itemizedlist>
        <listitem>
          <simpara>DocBook XML DTD と XSLT スタイルシート。これらは、XML カタログ (<filename>/etc/xml/catalog</filename>) に登録する必要があります。</simpara>
        </listitem>
        <listitem>
          <simpara>X libraries.</simpara>
        </listitem>
        <listitem>
          <simpara>Samba の <filename>libsmbclient</filename> (Windows ネットワークのブラウジングに使用)。</simpara>
        </listitem>
        <listitem>
          <simpara>bzip2 の <filename>libbz2</filename>。</simpara>
        </listitem>
        <listitem>
          <simpara><filename>libpng</filename>、<filename>libjpeg</filename>、および <filename>libtiff</filename> (イメージのロードに使用)。</simpara>
        </listitem>
      </itemizedlist>

      <para>ディストリビューションのパッケージをインストールする場合、お使いのディストリビューションに適用できるなら、対応する <quote>dev</quote>、または <quote>devel</quote> パッケージをインストールしてください。さまざまなディストリビューション用の<ulink url="http://live.gnome.org/JhbuildDependencies">パッケージ名</ulink>の一覧が GNOME wiki でメンテナンスされています。</para>
    </section>

    <section id="running-single-application">
      <title>単独の GNOME アプリケーションの実行</title>

      <para>ここでは、単独の GNOME アプリケーションを実行する方法について説明します。アプリケーションを現在のデスクトップ環境で実行します。アプリケーションを JHBuild で構築した GNOME で実行する方法については、<xref linkend="running-gnome"/> を参照してください。</para>

      <para>JHBuild のシェルを起動します。JHBuild のシェルには、必要となるすべての環境変数が設定されています。</para>

<screen><prompt>$ </prompt><userinput>jhbuild shell</userinput></screen>

      <para>実行するアプリケーションが正しいことを確認します。たとえば、次のコマンドで確認します。</para>

<screen><prompt>$ </prompt><userinput>which gedit</userinput>
/home/wanda/jhbuild/install/bin/gedit</screen>

      <para>アプリケーションを実行します。</para>

<screen><prompt>$ </prompt><userinput>gedit &amp;</userinput></screen>

      <para>あるいは、<command>run</command> コマンドでアプリケーションを実行することもできます。</para>

<screen><prompt>$ </prompt><userinput>jhbuild run gedit</userinput></screen>
    </section>

    <section id="running-gnome">
      <title>GNOME デスクトップ環境の起動</title>

      <para>Create a new user account to run the JHBuild GNOME. Running
        JHBuild GNOME using a different user account is recommended to avoid
        problems caused by user settings stored in the home directory. This
        manual refers to the new account as
        <systemitem class="username">gnomedev</systemitem>.</para>

      <para>新しく作成した <systemitem class="username">gnomedev</systemitem> アカウントの JHBuild 環境をセットアップします。<systemitem class="username">gnomedev</systemitem> のホームディレクトリに、<filename>~/.config/jhbuildrc</filename> と <filename>~/.local/bin/jhbuild</filename> をコピーするか、ソフトリンクを作成します。</para>

      <para><systemitem class="username">gnomedev</systemitem> ユーザーで端末を開きます。以下のコマンドにより、<envar>PATH</envar> 変数に <filename>~/.local/bin</filename> を追加します。</para>

<screen><prompt>$</prompt> <userinput>echo 'PATH=$PATH:~/.local/bin' &gt;&gt; ~/.bashrc</userinput></screen>

      <para>JHBuild が動作することを確認します。</para>

<screen><prompt>$</prompt> <userinput>jhbuild run pkg-config gtk+-2.0 --modversion</userinput>
2.20.1</screen>

      <section>
        <title>GNOME をディスプレイマネージャーから起動するためのセットアップ</title>

        <para>JHBuild の GNOME をビルド、およびインストールします。</para>

        <para>Enable system services. JHBuild GNOME will use the
          <filename>/usr/bin</filename> system <application>D-Bus</application>
          daemon and the system services within
          <filename>/usr/share/dbus-1/system-services/</filename>. JHBuild GNOME
          will use the JHBuild session <application>D-Bus</application> daemon
          and the services within
          <filename><replaceable>~/jhbuild/install/</replaceable>/share/dbus-1/services/</filename>.
          Replace <filename>~/jhbuild/install</filename> with GNOME install
          <varname>prefix</varname> in the command below:</para>

<screen><prompt>$ </prompt><userinput>rm -rf <replaceable>~/jhbuild/install</replaceable>/var/run/dbus</userinput>
<prompt>$ </prompt><userinput>ln -s /var/run/dbus <replaceable>~/jhbuild/install</replaceable>/var/run/dbus</userinput>
<prompt>$ </prompt><userinput>rm -rf <replaceable>~/jhbuild/install</replaceable>/var/lib/dbus/machine-id</userinput>
<prompt>$ </prompt><userinput>ln -s /var/lib/dbus/machine-id <replaceable>~/jhbuild/install</replaceable>/var/lib/dbus/machine-id</userinput></screen>

        <para>Create a GNOME startup script at
          <filename>/usr/bin/gnome-jhbuild-session</filename> with the
          following, replacing <filename>~/jhbuild/install</filename> with GNOME
          install <varname>prefix</varname>:</para>

<programlisting>#!/bin/sh

GNOME=<replaceable>~/jhbuild/install</replaceable>

GDK_USE_XFT=1
XDG_DATA_DIRS=$XDG_DATA_DIRS:$GNOME/share
XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:$GNOME/etc/xdg

jhbuild run gnome-session
</programlisting>

        <para><filename>/usr/bin/gnome-jhbuild-session</filename> を実行可能にします。</para>

<screen><prompt>$ </prompt><userinput>chmod a+x /usr/bin/gnome-jhbuild-session</userinput></screen>

        <para>ディスプレイマネージャーに新しいセッションエントリを追加するために、<filename>/usr/share/xsessions/gnome-jhbuild.desktop</filename> を作成して、次のとおり入力します。</para>

<programlisting>[Desktop Entry]
Name=GNOME (JHBuild)
Comment=This session logs you into GNOME testing session
TryExec=/usr/bin/gnome-jhbuild-session
Exec=/usr/bin/gnome-jhbuild-session
Icon=
Type=Application</programlisting>

        <para><command>gdm</command> を再起動します。</para>

        <para/>
      </section>

      <section>
        <title>ディスプレイマネージャーから GNOME を起動する</title>

        <para>JHBuild GNOME を起動するには、ディスプレイマネージャーで GNOME (JHBuild) セッションを選択してから、<systemitem class="username">gnomedev</systemitem> のログイン情報を入力します。成功した場合は、JHBuild GNOME が表示されます。失敗した場合は、ログファイルを確認してください。ログファイルの場所は、<filename>~gnomedev/.cache/gdm/session.log</filename> か <filename>~gnomedev/.xsession-errors</filename> です。</para>
      </section>
    </section>

    <section id="static-analysis">
      <title>Static Analysis</title>

      <para>JHBuild supports running static analysis tools on the code in
        modules as they’re built. To enable this, set the
        <varname>static_analyzer</varname> configuration variable
        to <constant>True</constant> in
        the <filename>.jhbuildrc</filename> configuration file.</para>

      <para>If enabled, every time a module is built using JHBuild, the build
        process will be wrapped in a static analyzer, which will generate a
        report of any problems it finds with the code. These reports are saved
        as HTML files in subdirectories of
        <filename>/tmp/jhbuild_static_analyzer</filename> (by default; the path
        can be changed using the <varname>static_analyzer_outputdir</varname>
        configuration variable).</para>

      <para>Static analysis currently only works for modules which use autotools
        as their build system. It requires the <command>scan-build</command>
        program to be installed, although the command it uses can be changed by
        modifying the <varname>static_analyzer_template</varname> configuration
        variable.</para>
    </section>
  </section>

  <section id="buildbot-integration">
    <title>Buildbot との統合</title>

    <para><ulink url="http://buildbot.net">Buildbot</ulink> と共に使用することにより、JHBuild を継続的な統合ツールとして機能させることができます。Buildbot の設定は、<ulink url="http://build.gnome.org">build.gnome.org</ulink> の GNOME プロジェクトで使用されています。</para>

    <section id="buildbot-slave">
      <title>Buildbot スレーブ を設定する</title>

      <para>Buildbot スレーブは、JHBuild の通常インストールのバリエーションであり、Buildbot マスターへのリクエストを提供します。Buildbot のカスタマイズを追加する前に、JHBuild をセットアップして、ほとんどのモジュールを正常にビルドできるようにしておくことを推奨します。</para>

      <para>Buildbot コマンドは、<command>bot</command> コマンドのオプションとして指定します。必要なソフトウェアを追加でダウンロード、インストールするには、以下のコマンドを実行します:</para>

<screen><prompt>$</prompt> <userinput>jhbuild bot --setup</userinput></screen>

      <para>このステップが1度正常に完了すると、<filename>~/.config/jhbuildrc</filename> に3つの新しい設定が必要になります。</para>

      <note>
        <para>かわりの設定ファイルを使用することはできません。<link linkend="option-file"><option>--file</option></link> は期待した効果をもたらしません。</para>
      </note>

<programlisting>
jhbuildbot_master = 'build.gnome.org:9070'
jhbuildbot_slavename = 'slavename'
jhbuildbot_password = 'password'
</programlisting>

      <para><varname>jhbuildbot_master</varname> は Buildbot マスターサーバーを指定する文字列です; デフォルトは <literal>'build.gnome.org:9070'</literal> です。<varname>jhbuildbot_slavename</varname> と <varname>jhbuildbot_password</varname> は、マスターサーバーでスレーブを識別するためのものです。スレーブの名前とパスワードについては、Buildbot マスターの管理者に連絡してください。</para>

      <note>
        <para><ulink url="http://build.gnome.org">build.gnome.org</ulink> の管理者には、<ulink url="mailto:build-brigade-list@gnome.org">Build Brigade mailing list</ulink> で連絡することができます。</para>
      </note>
    </section>

<!-- TODO: configuring a buildbot master
    <section id="buildbot-master">
      <title>Configuring a Buildbot Master</title>
    </section>
    -->
  </section>

  <section id="command-reference">
    <title>コマンドリファレンス</title>

    <para>JHBuild は CVS などのツールに似たコマンドラインシンタックスを使用します。</para>

    <cmdsynopsis><command>jhbuild</command> <arg><replaceable>global-options</replaceable></arg> <arg choice="plain"><replaceable>command</replaceable></arg> <arg><replaceable>command-arguments</replaceable></arg></cmdsynopsis>

    <para>JHBuild のグローバルオプションは次のとおりです。</para>

    <variablelist>
      <varlistentry id="option-file">
        <term><option>-f</option>, <option>--file</option> <replaceable>config</replaceable></term>
        <listitem>
          <simpara>デフォルトの <filename>~/.config/jhbuildrc</filename> の代わりに、別の設定ファイルを使用します。</simpara>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>-m</option>, <option>--moduleset</option> <replaceable>moduleset</replaceable></term>
        <listitem>
          <simpara>設定ファイルに記述されたモジュールセットではなく、別のモジュールセットを使用します。このオプションは、モジュールセットが JHBuild のモジュールセットフォルダーにある場合は相対パスで指定できます。それ以外の場所にある場合は、絶対パスで指定します。</simpara>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><option>--no-interact</option></term>
        <listitem>
          <simpara>ユーザーに入力を求めません。無人でビルドを行い、ビルドが中断されないようにする場合に、このオプションは便利です。</simpara>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          <option>--exit-on-error</option>
        </term>
        <listitem>
          <simpara>Exit immediately if a module fails to build. This option is
            primarily useful in noninteractive mode, in order to ensure jhbuild
            does not continue to build any additional modules.</simpara>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          <option>--conditions</option>
        </term>
        <listitem>
          <simpara>Modify the condition flags to be different than those determined on the basis of the OS and
            those specified in jhbuildrc.  Modifications are specified like <literal>-wayland</literal> or
            <literal>+docs</literal> in order to remove or add conditions.  Multiple modifications can be
            separated by a comma like <command>--conditions=+docs,-wayland</command> or you can split them
            across multiple <command>--conditions</command> arguments.</simpara>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>Additionally, JHBuild checks the presence, and value, of the
      following environment variables:</para>

    <variablelist>
      <varlistentry>
        <term><envar>JHBUILD_RUN_AS_ROOT</envar></term>
        <listitem>
          <simpara>By default, JHBuild does not run when using the root user,
            to avoid destructive operations that may affect the whole system.
            In certain cases, though, it's acceptable to run JHBuild as root;
            for instance, inside a container, or in a continuous integration
            environment. Exporting the <envar>JHBUILD_RUN_AS_ROOT</envar> will
            disable the user id check at startup.</simpara>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>コマンドごとのオプションについては、以下で説明します。</para>

    <section id="command-reference-autobuild">
      <title>autobuild</title>

      <para><command>autobuild</command> コマンドは、設定ファイルで指定されたモジュールを自動的にビルドして、結果を JhAutobuild にアップロードします。</para>

      <cmdsynopsis><command>jhbuild autobuild</command> <arg>--autogen</arg> <arg>--clean</arg> <arg>--distcheck</arg> <arg rep="repeat">--skip=<replaceable>module</replaceable></arg> <arg>--start-at=<replaceable>module</replaceable></arg> <arg>--report-url=<replaceable>reporturl</replaceable></arg> <arg>--verbose</arg></cmdsynopsis>

      <para><option>--autogen</option>、<option>--clean</option>、<option>--distcheck</option>、<option>--skip</option>、および <option>--start-at</option> のオプションは、<link linkend="command-reference-build"><command>build</command></link> コマンドに引き渡されます。</para>

      <variablelist>
        <varlistentry>
          <term><option>--report-url=<replaceable>reporturl</replaceable></option>, <option>-r <replaceable>reporturl</replaceable></option></term>
          <listitem>
            <simpara>このオプションは、報告先である JhAutobuild の URL を指定します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--verbose</option>, <option>-v</option></term>
          <listitem>
            <simpara>このオプションを指定すると、JHBuild はより詳細に出力します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-bootstrap">
      <title>bootstrap</title>

      <para><command>bootstrap</command> コマンドは、ビルドユーティリティのセットをインストールします。ビルドユーティリティには、<application>autoconf</application>、<application>automake</application> および類似のユーティリティが含まれます。ビルドユーティリティの推奨インストール方法は、お使いのディストリビューションのパッケージ管理システムを使ったインストールです。<systemitem class="osname">Mac OS</systemitem> など、ディストリビューションのパッケージ管理システムでビルドユーティリティが提供されていない場合にだけ、<command>bootstrap</command> コマンドを使用してください。</para>

      <cmdsynopsis><command>jhbuild bootstrap</command></cmdsynopsis>

      <para><command>bootstrap</command> コマンドがモジュールをビルドする方法は、<command>build</command> コマンドと同じですが、<filename>bootstrap.modules</filename> モジュールセットを使用します。</para>

      <para>利用可能なオプションについては、<link linkend="command-reference-build"><command>build</command></link> コマンドのドキュメントを参照してください。</para>
    </section>

    <section id="command-reference-build">
      <title>build</title>

      <para><command>build</command> コマンドはひとつ以上のパッケージを、その依存関係も含めてビルドします。</para>

      <cmdsynopsis><command>jhbuild build</command> <arg>--autogen</arg> <arg>--clean</arg> <arg>--check</arg> <arg>--dist</arg> <arg>--distcheck</arg> <arg>--distclean</arg> <arg>--ignore-suggests</arg> <arg>--no-network</arg> <arg rep="repeat">--skip=<replaceable>module</replaceable></arg> <arg>--start-at=<replaceable>module</replaceable></arg> <arg>--tags=<replaceable>tags</replaceable></arg> <arg>-D <replaceable>date</replaceable></arg> <arg>--no-xvfb</arg> <arg>--try-checkout</arg> <arg>--no-poison</arg> <arg>--force</arg> <arg>--build-optional-modules</arg> <arg>--min-age=<replaceable>time</replaceable></arg> <arg>--nodeps</arg> <arg rep="repeat">module</arg></cmdsynopsis>

      <para>コマンドラインでモジュール名が指定されなかった場合、設定ファイルの <link linkend="cfg-modules">modules</link> のリストが使用されます。</para>

      <variablelist>
        <varlistentry>
          <term><option>-a</option>, <option>--autogen</option></term>
          <listitem>
            <simpara>Always run <command>autogen.sh</command> before building
              modules.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-c</option>, <option>--clean</option></term>
          <listitem>
            <simpara>モジュールをビルドする前に、<command>make clean</command> を実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--check</option></term>
          <listitem>
            <simpara>モジュールをビルドした後に、<command>make check</command> を実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-d</option>, <option>--dist</option></term>
          <listitem>
            <simpara>モジュールをビルドした後に、<command>make dist</command> を実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--distcheck</option></term>
          <listitem>
            <simpara>モジュールをビルドした後に、<command>make distcheck</command> を実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--distclean</option></term>
          <listitem>
            <simpara>git モジュールにたいしては、モジュールをビルドする前に、<command>git clean -dfx</command> を実行し、その他のモジュールにたいしては、ビルドする前に、<command>make distclean</command> を実行します。</simpara>

            <note>
              <simpara>This option will delete any uncommitted changes.
              </simpara>
            </note>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--ignore-suggests</option></term>
          <listitem>
            <simpara>弱い依存関係にあるモジュールをビルドしません。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-n</option>, <option>--no-network</option></term>
          <listitem>
            <simpara>モジュールをビルドするときに、ネットワークにアクセスしません。ビルドのダウンロードステージ、および更新ステージをスキップします。ネットワークアクセスなしではモジュールをビルドできない場合、ビルドは失敗します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-s</option>, <option>--skip</option>=<replaceable>module,...</replaceable></term>
          <listitem>
            <simpara>指定したモジュールをビルドしません。依存関係のビルドをスキップするのに使用します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--tags</option>=<replaceable>tag,...</replaceable></term>
          <listitem>
            <simpara><replaceable>tag</replaceable> で指定したタグにマッチしないモジュールを無視します。モジュールは、そのモジュールのモジュールセット名にマッチするタグを自動的に付与されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-t</option>, <option>--start-at</option>=<replaceable>module</replaceable></term>
          <listitem>
            <simpara>リストの先頭からではなく、指定したモジュールから開始します。このオプションはビルドを中断した場合などに便利です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-D</option> <replaceable>date</replaceable></term>
          <listitem>
            <simpara>バージョン管理システムでサポートされていれば、ビルドの前にソースツリーを指定した日時に更新します。ISO の日時フォーマットで指定します。例 <literal>"2009-09-18 02:32Z"</literal>。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-x</option>, <option>--no-xvfb</option></term>
          <listitem>
            <simpara>Xvfb によりシミュレートされたものではなく、実際の X サーバーでグラフィカルなテストを実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-C</option>, <option>--try-checkout</option></term>
          <listitem>
            <simpara>ビルドが失敗した場合に、バージョン管理システムがサポートしていれば、ビルドを再試行する前に、強制的にチェックアウトして <command>autogen.sh</command> を実行します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-N</option>, <option>--no-poison</option></term>
          <listitem>
            <simpara>ひとつ以上の依存関係のビルドに失敗した場合でも、強制的にモジュールのビルドを試みます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-f</option>, <option>--force</option></term>
          <listitem>
            <simpara>ビルドポリシー上ビルドが不要でも、指定のモジュールをビルドします。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--build-optional-modules</option></term>
          <listitem>
            <simpara>依存関係がオプションとなるモジュールは、目的のモジュールをビルドするのに必須ではありません。このオプションはオプションの依存関係にあるモジュールを強制的にビルドします。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--min-age</option>=<replaceable>time</replaceable></term>
          <listitem>
            <simpara>指定された相対時間より最近にインストールされたモジュールをスキップします。<replaceable>time</replaceable> の文字列書式は、単位を付加した数字です。付加する単位は、次のものがサポートされています: 秒 (s)、分 (m)、時間 (h)、日 (d)。例えば、<option>--min-age=2h</option> は2時間前以降にビルドされたモジュールをスキップします。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--nodeps</option></term>
          <listitem>
            <simpara>インストールされていないシステムの依存モジュールを無視します。単独のシステムの依存モジュールを無視するには、そのモジュールを <link linkend="cfg-skip"><varname>skip</varname></link> に追加します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-make">
      <title>make</title>

      <para><command>make</command> コマンドは、特定のモジュールで活発に行われている開発作業向けのコマンドです。ソースのチェックアウトディレクトリで実行する必要があります。このコマンドは、<command>buildone -nf $(basename $(pwd))</command> と同等です。</para>

      <cmdsynopsis><command>jhbuild make</command> <arg>--clean</arg> <arg>--check</arg> <arg>--distcheck</arg> <arg>--quiet</arg></cmdsynopsis>

      <para>このオプションは、<link linkend="command-reference-build"><command>buildone</command></link> のオプションと同じです。</para>
    </section>

    <section id="command-reference-buildone">
      <title>buildone</title>

      <para><command>buildone</command> コマンドは、<command>build</command> と似ていますが、依存するモジュールをビルドしません。このコマンドは、ひとつ以上のモジュールをリビルドするときに便利です。</para>

      <cmdsynopsis><command>jhbuild buildone</command>
        <arg>--autogen</arg>
        <arg>--clean</arg>
        <arg>--check</arg>
        <arg>--distcheck</arg>
        <arg>--distclean</arg>
        <arg>--no-network</arg>
        <arg>-D <replaceable>date</replaceable></arg>
        <arg>--no-xvfb</arg>
        <arg>--force</arg>
        <arg>--min-age=<replaceable>time</replaceable></arg>
        <arg>--nodeps</arg>
        <arg choice="plain" rep="repeat">module</arg>
      </cmdsynopsis>

      <para>The <option>--autogen</option>, <option>--check</option>,
        <option>--clean</option>, <option>-d</option>,
        <option>--distcheck</option>, <option>--distclean</option>,
        <option>--no-network</option>, <option>-D</option>, <option>-x</option>
        and <option>--nodeps</option> options are processed as per the
        <link linkend="command-reference-build"><command>build</command></link>
        command.</para>

      <para>コマンドラインで、少なくともひとつのモジュールを指定しなければなりません。</para>
    </section>

    <section id="command-reference-checkbranches">
      <title>checkbranches</title>

      <para><command>checkbranches</command> は、バージョン管理システムでブランチが正しく定義されているか、およびブランチのモジュールセットに矛盾がないかをチェックします。</para>

      <cmdsynopsis><command>jhbuild checkbranches</command> <arg rep="repeat">--branch=<replaceable>branch</replaceable></arg></cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option>--branch</option>=<replaceable>branch</replaceable>, <option>-b</option> <replaceable>branch</replaceable></term>
          <listitem>
            <simpara>チェックするブランチを指定します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>

<screen><prompt>$</prompt> <userinput>jhbuild -m gnome-2.20 checkbranches</userinput>
libgnomecanvas is missing branch definition for gnome-2-20
<prompt>$</prompt></screen>
    </section>

    <section id="command-reference-clean">
      <title>clean</title>

      <para><command>clean</command> コマンドはひとつ以上のモジュールのビルドディレクトリを clean します。</para>

      <cmdsynopsis><command>jhbuild clean</command> <arg rep="repeat">--skip=<replaceable>module</replaceable></arg> <arg>--start-at=<replaceable>module</replaceable></arg></cmdsynopsis>

      <para>コマンドラインでモジュール名が指定されなかった場合、設定ファイルの <link linkend="cfg-modules">modules</link> のリストが使用されます。</para>

      <para>利用可能なオプションについては <link linkend="command-reference-build"><command>build</command></link> コマンドのドキュメントの説明を参照してください。</para>
    </section>

    <section id="command-reference-dot">
      <title>dot</title>

      <para><command>dot</command> コマンドは、モジュール間の依存関係によって形成された、有向グラフが記述されたファイルを生成します。このファイルは、ダイアグラムを生成する <ulink url="http://www.graphviz.org/">GraphViz</ulink> ソフトウェアで処理することができます。</para>

      <cmdsynopsis><command>jhbuild dot</command> <arg>--soft-deps</arg> <arg>--clusters</arg> <arg rep="repeat">module</arg></cmdsynopsis>

      <para>コマンドラインでモジュール名が指定されなかった場合、設定ファイルの <link linkend="cfg-modules">modules</link> のリストが使用されます。</para>

      <para><option>--soft-deps</option> オプションはモジュールから、推奨される依存関係への点線を追加します。<option>--clusters</option> オプションは <link linkend="moduleset-syntax-defs-metamodule">metamodules</link> によりモジュールをグループ化します。</para>

      <para>dot コマンドの出力は、dot ユーティリティにパイプすることにより、PostScript ファイルを生成することができます:</para>

<screen><prompt>$</prompt> <userinput>jhbuild dot <replaceable>modules</replaceable> | dot -Tps &gt; dependencies.ps</userinput></screen>

      <para>PNG イメージを生成することもできます:</para>

<screen><prompt>$</prompt> <userinput>jhbuild dot <replaceable>modules</replaceable> | dot -Tpng &gt; dependencies.png</userinput></screen>

      <figure id="sample-dot-output">
        <title>JHBuild dot コマンドの出力例</title>
        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/jhbuild_sample_dot_output.png" format="PNG"/>
            </imageobject>
          </mediaobject>
        </screenshot>
      </figure>
    </section>

    <section id="command-reference-gui">
      <title>gui</title>

      <para><command>gui</command> コマンドは、JHBuild のためにモジュールを選択したり、いくつかのビルドオプションを変更できる、グラフィカルなインターフェースを起動します。</para>

      <cmdsynopsis><command>jhbuild gui</command></cmdsynopsis>

      <para>グラフィカルなインターフェースの描画には GTK を使用しているので、追加のサポートライブラリが必要です。</para>
    </section>

    <section id="command-reference-info">
      <title>info</title>

      <para><command>info</command> コマンドは、ひとつ以上のモジュールの情報を表示します。</para>

      <cmdsynopsis><command>jhbuild info</command>
          <arg choice="opt">--installed</arg>
          <arg choice="opt" rep="repeat">module</arg>
      </cmdsynopsis>

      <para>このコマンドはモジュールの名前、タイプ、依存関係、依存するパッケージ、JHBuild で最後にインストールされた日時を表示します。もし可能なら、そのモジュールの CVS リポジトリやダウンロード元の URL などの、具体的な情報も表示されます。</para>

      <para>コマンドにモジュールが指定されなかった場合、モジュールセットで定義されたすべてのモジュールについての情報が表示されます。</para>

      <para>If the <option>--installed</option> option is specified, the output will
        be filtered to include only installed packages. This resulting output only
        contains modules that were actually built and installed by jhbuild. The output
        does not include system dependencies.
      </para>

      <note>
        <simpara>
          If the <option>--installed</option> option is specified together with one or more module names,
          then only the installed modules (not including system dependencies) are printed out.
          If at least one module is not installed, then the command will exit with a return value of 1.
        </simpara>
      </note>
    </section>

    <section id="command-reference-list">
      <title>list</title>

      <para><command>list</command> コマンドは、<command>build</command> コマンドがビルドするモジュールのリストを、展開して表示します。</para>

      <cmdsynopsis><command>jhbuild list</command> <arg>-a</arg> <arg>-r</arg> <arg>-s</arg> <arg>--start-at=<replaceable>module</replaceable></arg> <arg>--tags=<replaceable>tags</replaceable></arg> <arg>--ignore-suggests</arg> <arg>--list-optional-modules</arg> <arg rep="repeat">module</arg></cmdsynopsis>

      <para>コマンドラインでモジュール名が指定されなかった場合、設定ファイルの <link linkend="cfg-modules">modules</link> のリストが使用されます。</para>

      <para><option>--skip</option>、<option>--start-at</option>、<option>--tags</option>、および <option>--ignore-suggests</option> のオプションは、<link linkend="command-reference-build"><command>build</command></link> コマンドに引き渡されます。</para>

      <variablelist>
        <varlistentry>
          <term><option>-a</option>, <option>--all-modules</option></term>
          <listitem>
            <simpara>ビルドの依存関係に関わらず、モジュールセットのモジュールをすべて一覧します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>-r</option>, <option>--show-revision</option></term>
          <listitem>
            <simpara>モジュールがブランチとして設定されている場合、モジュール名とともにブランチ名が表示されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--list-optional-modules</option></term>
          <listitem>
            <simpara>このオプションは JHBuild にたいして、オプショナルな依存関係の一覧を強制します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-rdepends">
      <title>rdepends</title>

      <para><command>rdepends</command> コマンドは、モジュールの依存関係を逆方向に表示します。</para>

      <cmdsynopsis><command>jhbuild rdepends</command> <arg>module</arg></cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option>--dependencies</option></term>
          <listitem>
            <simpara>モジュールの横に、依存関係のパスを表示します。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><option>--direct</option></term>
          <listitem>
            <simpara>指定されたモジュールと直接の依存関係にあるモジュールに、表示を限定します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-run">
      <title>run</title>

      <para><command>run</command> コマンドは、JHBuild がモジュールをビルドするのに使用するのと同じ環境で、指定したコマンドを実行します。</para>

      <cmdsynopsis><command>jhbuild run</command> <arg>--in-builddir</arg> <arg>--in-checkoutdir</arg> <arg choice="plain"><replaceable>program</replaceable></arg> <arg rep="repeat"><replaceable>argument</replaceable></arg></cmdsynopsis>

      <para>GNOME をビルドするのに JHBuild を使用する場合、このコマンドは X の起動スクリプトなどで便利です。</para>

      <variablelist>
        <varlistentry>
          <term><option>--in-builddir</option>=<replaceable>module</replaceable></term>
          <listitem>
            <simpara>指定したモジュールの、ビルドディレクトリでコマンドを実行します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>
        <varlistentry>
          <term><option>--in-checkoutdir</option>=<replaceable>module</replaceable></term>
          <listitem>
            <simpara>指定したモジュールの、ソースディレクトリでコマンドを実行します。</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-sanitycheck">
      <title>sanitycheck</title>

      <para><command>sanitycheck</command> コマンドは、ビルド環境に問題がないことを確認するために、いくつかのチェックを行います。</para>

      <cmdsynopsis><command>jhbuild sanitycheck</command></cmdsynopsis>

      <para>以下のチェックが含まれます:</para>

      <itemizedlist>
        <listitem>
          <simpara>チェックアウト先とインストール先が書き込み可能か。</simpara>
        </listitem>
        <listitem>
          <simpara>必要なビルドツールがインストールされているか。</simpara>
        </listitem>
        <listitem>
          <simpara>さまざまなバージョンの <command>automake</command> に関連付けられている <command>aclocal</command> コマンドの検索パスで、よく使用されるマクロが利用可能か。</simpara>
        </listitem>
        <listitem>
          <simpara>XML カタログに DocBook の DTD と スタイルシートが含まれているか。</simpara>
        </listitem>
      </itemizedlist>
    </section>

    <section id="command-reference-shell">
      <title>shell</title>

      <para><command>shell</command> コマンドは、JHBuild がモジュールをビルドするのと同じ環境で、ユーザーシェルを起動します。</para>

      <cmdsynopsis><command>jhbuild shell</command></cmdsynopsis>

      <para>このコマンドは次のコマンドと同等です。</para>

<screen><prompt>$</prompt> <userinput>jhbuild run $SHELL</userinput></screen>

      <para>このシェルがアクティブなときは、環境変数 <envar>UNDER_JHBUILD</envar> が "true" にセットされます。この変数の存在を利用して、JHBuild 制御下のシェルにあることがわかるようシェルのプロンプトをカスタマイズできます。たとえば、<filename>.bashrc</filename> に次の記述をするとよいでしょう。</para>

<screen>
	if [ -n "$UNDER_JHBUILD" ]; then
	    PS1="[jhbuild] $PS1"
	fi
      </screen>

      <para>これにより、あなたの bash シェルは、通常のプロンプトの前に <literal>[jhbuild]</literal> を表示するようになるので、どのシェルが JHBuild の制御下にあるかを識別しやすくなります。</para>
    </section>

    <section id="command-reference-sysdeps">
      <title>sysdeps</title>

      <para><command>sysdeps</command> コマンドは次の情報を表示します。</para>

      <orderedlist>
        <listitem>
          <simpara>ビルド中に使用する、インストール済みシステムパッケージの一覧。JHBuild は、これらのモジュールをビルドせずに、代わりにシステムパッケージを使用します。</simpara>
        </listitem>
        <listitem>
          <simpara>必須パッケージの一覧。ビルドを始めるにあたり、このパッケージがお使いのシステムで提供されている必要があります。</simpara>
        </listitem>
        <listitem>
          <simpara>オプションパッケージの一覧。対応するシステムパッケージが見つからないか、古すぎます。JHBuild は、指定のモジュールをビルドします。<link linkend="cfg-partial-build"><varname>partial_build</varname></link> が <constant>False</constant> に設定されている場合は、オプションパッケージは表示されません。</simpara>
        </listitem>
      </orderedlist>

      <cmdsynopsis><command>jhbuild sysdeps</command> <arg>--install</arg></cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option>--install</option></term>
          <listitem>
            <simpara>This option installs system packages which are
              dependencies of the moduleset. The installation method depends on
              your distribution. System packages are installed using
              <application>PackageKit</application>, if available. For
              distributions using <application>APT</application> such as
              <systemitem class="osname">Debian</systemitem> and
              <systemitem class="osname">Ubuntu</systemitem>, this option
              requires <application>apt-file</application> to be installed.
            </simpara>
          </listitem>
        </varlistentry>
      </variablelist>

      <example>
        <title><command>sysdeps</command> の例</title>
<screen><prompt>$</prompt> <userinput>jhbuild sysdeps</userinput>
System installed packages which are new enough:
  speex (speex.pc required=1.2rc1, installed=1.2rc1)
  lcms2 (lcms2.pc required=2.2, installed=2.2)
...
Required packages:
  System installed packages which are too old:
    (none)
  No matching system package installed:
    zlib (zlib.pc required=1.2)
Optional packages: (JHBuild will build the missing packages)
  System installed packages which are too old:
    WebKit (webkitgtk-3.0.pc required=1.5.1, installed=1.4.0)
    ...
  No matching system package installed:
    pulseaudio (libpulse.pc required=2.0)
    ...</screen>
      </example>
    </section>

    <section id="command-reference-tinderbox">
      <title>tinderbox</title>

      <para><command>tinderbox</command> コマンドは、<command>build</command> コマンドに似ていますが、すべての端末出力を、ウェブサイトに掲載するのに適した HTML ファイルに出力します。このコマンドは Mozilla の Tinderbox や、Debian の Buildd と同じようにシステムをセットアップします。</para>

      <cmdsynopsis><command>jhbuild tinderbox</command>
        <arg>--autogen</arg>
        <arg>--clean</arg>
        <arg>--distclean</arg>
        <arg>--no-network</arg>
        <arg>--output=<replaceable>directory</replaceable></arg>
        <arg rep="repeat">--skip=<replaceable>module</replaceable></arg>
        <arg>--start-at=<replaceable>module</replaceable></arg>
        <arg>-D <replaceable>date</replaceable></arg>
        <arg>-C</arg>
        <arg>-N</arg>
        <arg>-f</arg>
        <arg>--nodeps</arg>
        <arg rep="repeat">module</arg>
      </cmdsynopsis>

      <para>The <option>--autogen</option>, <option>--clean</option>,
        <option>--distclean</option>, <option>--no-network</option>,
        <option>--skip</option>, <option>--start-at</option>,
        <option>-D</option>, <option>-C</option>, <option>-N</option>,
        <option>-f</option> and <option>--nodeps</option> options are processed
        as per the
        <link linkend="command-reference-build"><command>build</command></link>
        command.</para>

      <variablelist>
        <varlistentry>
          <term><option>-o</option>, <option>--output</option>=<replaceable>directory</replaceable></term>
          <listitem>
            <simpara>The directory to write the HTML files. JHBuild will
              create an index (<filename>index.html</filename>) and a HTML file
              for each module.</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="command-reference-uninstall">
      <title>uninstall</title>

      <para><command>uninstall</command> コマンドは、ひとつ以上のモジュールをアンインストールします。</para>

      <cmdsynopsis><command>jhbuild uninstall</command> <arg choice="plain" rep="repeat">module</arg></cmdsynopsis>
    </section>

    <section id="command-reference-update">
      <title>update</title>

      <para><command>update</command> コマンドは <command>build</command> コマンドに似ていますが、モジュールのビルドは行わずに、ダウンロードと更新のステージのみ実行します。</para>

      <cmdsynopsis><command>jhbuild update</command> <arg rep="repeat">--skip=<replaceable>module</replaceable></arg> <arg>--start-at=<replaceable>module</replaceable></arg> <arg>--tags=<replaceable>tags</replaceable></arg> <arg>--ignore-suggests</arg> <arg>-D <replaceable>date</replaceable></arg> <arg rep="repeat">module</arg></cmdsynopsis>

      <para><option>--skip</option>、<option>--start-at</option>、<option>--tags</option>、<option>--ignore-suggests</option> および <option>-D</option> オプションは、<link linkend="command-reference-build"><command>build</command></link> コマンドと同様に処理されます。</para>
    </section>

    <section id="command-reference-updateone">
      <title>updateone</title>

      <para><command>updateone</command> コマンドは <command>update</command> と似ていますが、依存するモジュールをビルドしません。このコマンドは、ひとつ以上のモジュールをビルドするときに便利です。</para>

      <cmdsynopsis><command>jhbuild updateone</command> <arg>-D <replaceable>date</replaceable></arg> <arg choice="plain" rep="repeat">module</arg></cmdsynopsis>

      <para><option>-D</option> オプションは、<link linkend="command-reference-build"><command>build</command></link> コマンドと同様に処理されます。</para>

      <para>コマンドラインで、少なくともひとつのモジュールを指定しなければなりません。</para>
    </section>
  </section>

  <section id="config-reference">
    <title>設定ファイルリファレンス</title>

    <para>設定ファイルの <filename>~/.config/jhbuildrc</filename> は、標準的な Python の構文を使用します。このファイルは実行され、その名前空間で定義された実行結果の変数は、JHBuild の挙動を制御するのに使用されます。ユーザーの設定ファイルが実行される前に、各変数のデフォルト値がこの名前空間に読み込まれます。</para>

    <para>変数にブール値をセットする場合、以下の例で示す構文が使用されます。</para>

<programlisting>use_local_modulesets = True</programlisting>

    <para>変数に文字列をセットする場合、以下の例で示す構文が使用されます。</para>

<programlisting>autogenargs = '--disable-static --disable-gtk-doc'</programlisting>

    <para>リストへ設定値をセットする場合、以下の例で示す構文が使用されます。</para>

<programlisting>skip = ['mozilla'、'pulseaudio']</programlisting>

    <para>ディクショナリへ設定値をセットする場合、以下の例で示す構文が使用されます。</para>

<programlisting>repos['git.gnome.org'] = 'ssh://username@git.gnome.org/git/'</programlisting>

    <section id="config-reference-variables">
      <title>設定変数</title>

      <variablelist>
<?dbhtml list-presentation="table"?>
        <varlistentry id="cfg-alwaysautogen">
          <term>
            <varname>alwaysautogen</varname>
          </term>
          <listitem>
            <simpara>A boolean value if set to <constant>True</constant>,
              always run <command>autogen.sh</command>. This is equivalent to
              passing <option>--autogen</option> option to JHBuild. Defaults to
              <constant>False</constant>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-autogenargs">
          <term><varname>autogenargs</varname></term>
          <listitem>
            <simpara><command>autogen.sh</command> スクリプトに渡す引数を指定する文字列です。すべてのモジュールに適用されます。<varname>module_autogenargs</varname> ディクショナリで、特定のモジュールにたいして上書きできます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-branches">
          <term><varname>branches</varname></term>
          <listitem>
            <simpara>特定のモジュールで使用するブランチを指定するディクショナリです。あるモジュールのあるブランチで変更を加えている場合に、モジュールセットで定義されたブランチではなく、その変更を加えたブランチをビルドするときなどに便利です。</simpara>

            <simpara>ブランチの定義の仕方は、バージョン管理システムに依存します。</simpara>

            <itemizedlist>
              <listitem>
                <simpara>CVS: リビジョンを指定します。例: <literal>'BRANCH-PROJECT-0_8'</literal></simpara>
              </listitem>
              <listitem>
                <simpara>Bazaar: モジュールブランチの URI を指定します。例: <literal>'http://bzr.example.net/project/gnome-2-28'</literal></simpara>
              </listitem>
              <listitem>
                <simpara>Git: タプル で指定します。先頭要素はオプションのリポジトリ(または None 値)、2 番目の要素はブランチ名を指定します。例: <literal>('git://git.example.net/project'、'gnome-2-28')</literal></simpara>

                <example>
                  <title>シンプルな例</title>
<programlisting>branches['modulename'] = (None, 'branchname')</programlisting>
                </example>
              </listitem>
              <listitem>
                <simpara>Subversion: URI of module branch. E.g.
                  <literal>'svn://svn.example.net/project/gnome-2-28'</literal>
                </simpara>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-builddir-pattern">
          <term><varname>builddir_pattern</varname></term>
          <listitem>
            <simpara>ビルドディレクトリの名前を生成するための、<function>printf</function> スタイルの書式設定パターンです。これはソースとビルドツリーが違う場合のみ使用します。書式の中の <literal>%s</literal> は、<varname>checkoutdir</varname> で置き換えられます。デフォルトは <literal>'%s'</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-buildroot">
          <term><varname>buildroot</varname></term>
          <listitem>
            <simpara>A string specifying the parent directory to place build
              trees. Defaults to <filename>~/.cache/jhbuild/build</filename>.
              Setting the value to <constant>None</constant> causes builds
              to be performed within the source trees.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-buildscript">
          <term><varname>buildscript</varname></term>
          <listitem>
            <simpara>どのビルドスクリプトを使用するかを指定する文字列です。推奨の設定はデフォルトの <literal>terminal</literal> です。特に <literal>gtk</literal> に設定しないでください。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-build-policy">
          <term><varname>build_policy</varname></term>
          <listitem>
            <simpara>どのモジュールをビルドするかを指定する文字列です。利用可能なオプションは、要求されたモジュールをすべてビルドする <literal>all</literal>、変更されたモジュールだけをビルドする <literal>updated</literal>、モジュール または 依存するモジュールが変更されたときにモジュールをビルドする <literal>updated-deps</literal> の3つです。デフォルトは <literal>updated-deps</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-checkoutroot">
          <term><varname>checkoutroot</varname></term>
          <listitem>
            <simpara>ソースツリーを展開するディレクトリを指定する文字列です。<varname>buildroot</varname> がセットされていない場合は、ビルドもこのディレクトリで行います。デフォルトは <filename>~/checkout/gnome</filename> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-checkout-mode">
          <term><varname>checkout_mode</varname></term>
          <listitem>
            <simpara>バージョン管理されているディレクトリにたいして、どのようにチェックアウトを行うかを指定する文字列です。デフォルトは <literal>update</literal> です。モジュールごとに指定する場合は、<varname>module_checkout_mode</varname> を使用できます。利用可能な値は <literal>update</literal> (チェックアウトディレクトリを更新する)、<literal>clobber</literal> (ソースをチェックアウトする前にディレクトリを掃除する)、<literal>export</literal> (ディレクトリを掃除した後にソースのバージョン管理外コピーを作成する)、そして <literal>copy</literal> (ディレクトリにビルドされるものとは別にチェックアウトします)です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-copy-dir">
          <term><varname>copy_dir</varname></term>
          <listitem>
            <simpara><link linkend="cfg-checkout-mode"> <varname>checkout_mode</varname></link> が copy の場合に、コピー先のディレクトリを指定する文字列です。デフォルトはチェックアウトディレクトリです。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-cvs-program">
          <term><varname>cvs_program</varname></term>
          <listitem>
            <simpara>cvs をサポートするために、どのプログラムを使用するかを指定する文字列です。<literal>git-cvsimport</literal>、または <literal>cvs</literal> が指定できます。デフォルトは <literal>cvs</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-disable-Werror">
          <term>
            <varname>disable_Werror</varname>
          </term>
          <listitem>
            <simpara>
              A boolean value (default <literal>True</literal>) which controls if
              <literal>--disable-Werror</literal> will be passed to automake builds.  Many packages use this
              flag as a way to disable fatal compiler warnings.  The value of <literal>True</literal> is
              selected as a reasonable default for those using jhbuild as a means to get an up-to-date version of
              software packages without being side-tracked by build failures in other people's modules.
              Setting this value to <literal>False</literal> may make sense for those using jhbuild as part of
              a continuous integration or testing system.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-dvcs-mirror-dir">
          <term><varname>dvcs_mirror_dir</varname></term>
          <listitem>
            <simpara>ローカルミラーのディレクトリを指定する文字列です。JHBuild は指定されたディレクトリにリポジトリのローカルミラーを作成します。ミラーは複数のリポジトリグループによって共有することができ、ローカルのクローンにたいしてハードリンクが使用されるため領域と時間の節約につながります。<command>update</command> および <command>updateone</command> コマンドはミラーを作成し、オンラインのリポジトリから新規のコミットをフェッチします。このオプションは Git および Bazaar リポジトリにたいしてのみサポートされます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="exit-on-error">
          <term>
            <varname>exit_on_error</varname>
          </term>
          <listitem>
            <simpara>A boolean value specifying whether to exit immediately when a
              module fails to build. This is primarily useful in noninteractive
              mode, in order to prevent additional modules from building after
              one fails. Setting this value to <constant>True</constant> is
              equivalent to passing the <option>--exit-on-error</option> option.
              Defaults to <constant>False</constant>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-extra-prefixes">
          <term>
            <varname>extra_prefixes</varname>
          </term>
          <listitem>
            <simpara>A list of strings specifying, in precedence order, the list
              of extra prefixes.  JHBuild sets many environment variables (such
              as <envar>LD_LIBRARY_PATH</envar>, <envar>PKG_CONFIG_PATH</envar>
              and <envar>XDG_DATA_DIRS</envar>) based on the
              <varname>prefix</varname> variable.  Adding directories to
              <varname>extra_prefixes</varname> will cause these prefixes to be
              included as well, at a lower precedence than the JHBuild
              <varname>prefix</varname>, but at a higher precedence than system
              directories.  This variable is empty by default except on systems
              that install software in <filename>/usr/local</filename>, in which
              case it contains this directory.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-help-website">
          <term>
            <varname>help_website</varname>
          </term>
          <listitem>
            <simpara>A tuple specifying a help website name and URL. The
              website is displayed in the tinderbox html for failed modules.
              <varname>%(module)s</varname> in the URL will be replaced with the
              module name. To disable, set <varname>help_website</varname> to
              <literal>None</literal>. Defaults to <literal>('Gnome Live!',
              'http://live.gnome.org/JhbuildIssues/%(module)s')</literal>.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-installprog">
          <term><varname>installprog</varname></term>
          <listitem>
            <simpara>A string specifying a program to use as replacement for
              <literal>/usr/bin/install</literal>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-ignore-suggests">
          <term><varname>ignore_suggests</varname></term>
          <listitem>
            <simpara>依存ツリーを計算するときに、推奨される依存関係を無視するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-interact">
          <term><varname>interact</varname></term>
          <listitem>
            <simpara>ユーザーと対話するかどうかを指定するブール値です。この値を <constant>False</constant> に設定することは、<option>--no-interact</option> オプションを指定するのと同じです。デフォルトは <constant>True</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makeargs">
          <term><varname>makeargs</varname></term>
          <listitem>
            <simpara>A string listing additional arguments to be passed to
              <command>make</command>. JHBuild will automatically append the
              parallel execution option (<option>-j</option>) based upon
              available CPU cores. Defaults to <literal>''</literal>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makecheck">
          <term><varname>makecheck</varname></term>
          <listitem>
            <simpara><command>make</command> の後に、<command>make check</command> を実行するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makecheck-advistory">
          <term><varname>makecheck_advisory</varname></term>
          <listitem>
            <simpara><command>make check</command> が失敗したときに、ビルドを失敗させない(メッセージの表示のみ)にするかどうかを指定する文字列です。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makeclean">
          <term><varname>makeclean</varname></term>
          <listitem>
            <simpara><command>make</command> の前に、<command>make clean</command> を実行するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makedist">
          <term><varname>makedist</varname></term>
          <listitem>
            <simpara><command>make</command> の後に、<command>make dist</command> を実行するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。これは <option>--dist</option> オプションを指定するのと同じです。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-makedistcheck">
          <term><varname>makedistcheck</varname></term>
          <listitem>
            <simpara><command>make</command> の後に、<command>make distcheck</command> を実行するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。これは <option>--distcheck</option> オプションを指定するのと同じです。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-autogenargs">
          <term><varname>module_autogenargs</varname></term>
          <listitem>
            <simpara>モジュールの名前と、<command>autogen.sh</command> に渡す引数をマッピングするディクショナリです。<varname>module_autogenargs</varname> の設定は、<varname>autogenargs</varname> のグローバルな設定より優先されます。モジュールがディクショナリに指定されていないときは、グローバルな <varname>autogenargs</varname> が使用されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-checkout-mode">
          <term><varname>module_checkout_mode</varname></term>
          <listitem>
            <simpara>チェックアウトモードをモジュールごとに指定するためのディクショナリです。この設定はグローバルな <varname>checkout_mode</varname> の設定より優先されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-makeargs">
          <term><varname>module_makeargs</varname></term>
          <listitem>
            <simpara>モジュールの名前と、<command>make</command> に渡す引数をマッピングするディクショナリです。<varname>module_makeargs</varname> の設定は、<varname>makeargs</varname> の値を置き換えます。モジュールがディクショナリに指定されていないときは、グローバルな <varname>makeargs</varname> が使用されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-makecheck">
          <term><varname>module_makecheck</varname></term>
          <listitem>
            <simpara>モジュールの名前と、<command>make</command> の後に <command>make check</command> を実行するかどうかの指定をマッピングするディクショナリです。<varname>module_makecheck</varname> の設定は、<varname>makecheck</varname> の値より優先されます。モジュールがディクショナリに指定されていないときは、グローバルな <varname>makecheck</varname> の設定が使用されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-nopoison">
          <term><varname>module_nopoison</varname></term>
          <listitem>
            <simpara>モジュールの名前とブール値をマッピングするディクショナリです。モジュールに <constant>True</constant> が設定されている場合、JHBuild は指定されたモジュールのビルドが失敗しても、依存するモジュールをビルドしようと試みます。<varname>module_nopoison</varname> の設定は、<varname>nopoison</varname> の設定より優先されます。モジュールがディクショナリに指定されていないときは、グローバルな <varname>nopoison</varname> の設定が使用されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-extra-env">
          <term><varname>module_extra_env</varname></term>
          <listitem>
            <simpara>モジュールの名前と、追加の環境変数と値のディクショナリをマッピングするディクショナリです。モジュールのためにコマンドを実行するときに使用されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-module-static-analyzer">
          <term>
            <varname>module_static_analyzer</varname>
          </term>
          <listitem>
            <simpara>Dictionary mapping module names to boolean values
              indicating whether static analysis should be performed while
              building that module. This allows the global
              <varname>static_analyzer</varname> configuration option to be
              overridden.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-modules">
          <term><varname>modules</varname></term>
          <listitem>
            <simpara>ビルドするモジュールを指定する文字列のリストです。<link linkend="command-reference-buildone"> <command>buildone</command></link> コマンドを使用しないかぎり、実際にビルドされるモジュールは、指定したモジュールが依存するモジュールもすべて含まれます。依存関係は再帰的に展開されます。デフォルトは <literal>['meta-gnome-desktop']</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-moduleset">
          <term><varname>moduleset</varname></term>
          <listitem>
            <simpara>モジュールセットの名前を指定する文字列、または文字列のリスト(配列)です。これは JHBuild に含まれるファイル名(パスと拡張子を除く)、または 外部で管理されているモジュールセットの完全な HTTP URL のどちらでも構いません。HTTP URL のモジュールセットは、ローカルにキャッシュされます。ふたつ以上のモジュールセットに同じ名前のモジュールが存在する場合は、最後のモジュールセットのモジュールが優先します。JHBuild により提供されるモジュールセットは、その時の GNOME の開発リリースに合わせて更新されます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-modulesets-dir">
          <term><varname>modulesets_dir</varname></term>
          <listitem>
            <simpara>モジュールセットのあるディレクトリを指定する文字列です。デフォルトは JHBuild のソースの <filename>modulesets/</filename> ディレクトリです。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-nice-build">
          <term><varname>nice_build</varname></term>
          <listitem>
            <simpara>ビルドの実行を、Linux では <constant>SCHED_IDLE</constant> の優先度で行い、他の Unix では <command>nice</command> を通じて行います。これを利用すると、ビルドのスループットにたいする影響をごくわずかに抑えながらも、並列ビルドにたいするデスクトップの応答性能を大幅に改善できます。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-nobuild">
          <term><varname>nobuild</varname></term>
          <listitem>
            <simpara>A boolean value, if set to <constant>True</constant>
              JHBuild will not build modules, but just download and unpack the
              sources. The default value is <constant>False</constant>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-nonetwork">
          <term><varname>nonetwork</varname></term>
          <listitem>
            <simpara>ネットワークにアクセスするかどうかを指定するブール値です。この設定は CVS モジュールのチェックアウトと更新、および tarball のダウンロードと、モジュールセットの更新に影響を与えます。<constant>True</constant> に設定した場合、<option>--no-network</option> オプションを指定したのと同じです。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-nonotify">
          <term><varname>nonotify</varname></term>
          <listitem>
            <simpara>通知デーモンを使用して、通知を発行するかどうかを指定するブール値です。<constant>False</constant> に設定した場合、通知を発行します。デフォルトは <constant>True</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-nopoison">
          <term><varname>nopoison</varname></term>
          <listitem>
            <simpara>ブール値です。<constant>True</constant> に設定された場合、依存関係にある1つ以上のモジュールのビルドに失敗しても、JHBuild はビルドを試みます。このオプションは <option>--no-poison</option> を引数で指定するのと同じです。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-notrayicon">
          <term><varname>notrayicon</varname></term>
          <listitem>
            <simpara>A boolean value specifying whether to show an icon in the
              system tray using Zenity. If set to <constant>False</constant>,
              an icon is shown. Defaults to <constant>True</constant>.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-noxvfb">
          <term><varname>noxvfb</varname></term>
          <listitem>
            <simpara>A boolean value, if set to <constant>True</constant>
              JHBuild will run any graphical tests on the real X server, rather
              than using <command>Xvfb</command>. This option is equivalent to
              passing <option>--no-xvfb</option>. The default value is
              <constant>False</constant>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-partial-build">
          <term><varname>partial_build</varname></term>
          <listitem>
            <simpara>ブール値です。<constant>True</constant> に設定した場合、依存対象のモジュールがシステムパッケージとしてインストール済みで、かつそのバージョンが十分であれば、依存対象のモジュールをビルドしません。デフォルトは <constant>True</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-prefix">
          <term><varname>prefix</varname></term>
          <listitem>
            <simpara>A string specifying the prefix to install modules to.
              <varname>prefix</varname> must be an absolute path. This directory
              must be writable. Defaults to <literal>'~/jhbuild/install/'</literal>.
            </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-pretty-print">
          <term><varname>pretty_print</varname></term>
          <listitem>
            <simpara>サブプロセスの出力を、綺麗にプリントするかどうかを指定するブール値です。CVS の出力のみをサポートします。この指定により問題が発生する場合は無効にしてください。デフォルトは <literal>True</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-print-command-pattern">
          <term><varname>print_command_pattern</varname></term>
          <listitem>
            <simpara>JHBuild がコマンドを実行する前に表示する文字列です。文字列中の <varname>%(command)s</varname> は、実行対象のコマンドに置換されます。文字列中の <varname>%(cwd)s</varname> は現在の作業ディレクトリに置換されます。デフォルトは <literal>'%(command)s'</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-progress-bar">
          <term><varname>progress_bar</varname></term>
          <listitem>
            <simpara><link linkend="cfg-quiet-mode">quiet mode</link> で、プログレスバーを表示するかどうかを指定するブール値です。デフォルトは <literal>True</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-quiet-mode">
          <term><varname>quiet_mode</varname></term>
          <listitem>
            <simpara>ブール値です。<constant>True</constant> に設定した場合、コマンドの出力を抑止します。デフォルトは <literal>False</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-repos">
          <term><varname>repos</varname></term>
          <listitem>
            <simpara>特定のリポジトリにたいして、かわりのリポジトリロケーションを指定するディクショナリです。この設定変数は、モジュール開発者にとって便利です。デフォルトでは、JHBuild は匿名のリポジトリロケーションから、コードをチェックアウトします。ディクショナリのキーはリポジトリの略称で、値はリポジトリロケーションの文字列です。例:</simpara>

<programlisting>repos['git.gnome.org'] = 'ssh://username@git.gnome.org/git/'</programlisting>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-skip">
          <term><varname>skip</varname></term>
          <listitem>
            <simpara>A list of modules to skip. This <option>--skip</option>
              command line option extends the list. This list is empty by
              default. If the list contains the special value <literal>'*'</literal>,
              JHBuild will skip all modules not explicitly listed in
              the <varname>modules</varname> variable.  This may be useful if
              you want to build modules without their implicit dependencies.
             </simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-static-analyzer">
          <term>
            <varname>static_analyzer</varname>
          </term>
          <listitem>
            <simpara>A boolean value: if set to <constant>True</constant>,
              run a static analysis tool on each module as it’s being built.
              Defaults to <constant>False</constant>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-static-analyzer-outputdir">
          <term>
            <varname>static_analyzer_outputdir</varname>
          </term>
          <listitem>
            <simpara>Root directory below which static analysis reports will
              be saved (if <varname>static_analyzer</varname> is
              <constant>True</constant>). Defaults to
              <filename>/tmp/jhbuild_static_analyzer</filename>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-static-analyzer-template">
          <term>
            <varname>static_analyzer_template</varname>
          </term>
          <listitem>
            <simpara>Command template for the static analyzer. This has the
              parameters <varname>outputdir</varname> (the value of the
              <varname>static_analyzer_outputdir</varname> configuration
              variable) and <varname>module</varname> (the name of the module
              currently being built) substituted into it
              <function>printf</function>-style. The resulting command is
              used as a prefix to <command>make</command> when building a
              module. Defaults to <command>scan-build</command>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-sticky-date">
          <term><varname>sticky_date</varname></term>
          <listitem>
            <simpara>文字列型です。もし指定された場合、背後のバージョン管理システムがサポートしていれば、JHBuild はビルドの前に、ソースツリーを指定された日付に更新します。ここで指定できるのは ISO の日付書式です。例: <literal>'<replaceable>yyyy</replaceable>-<replaceable>mm</replaceable>-<replaceable>dd</replaceable>'</literal>。デフォルトは <constant>None</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-svn-program">
          <term><varname>svn_program</varname></term>
          <listitem>
            <simpara>subversion をサポートするために、どのプログラムを使用するかを指定する文字列です。<literal>svn</literal>、または <literal>git-svn</literal> が指定できます。デフォルトは <literal>svn</literal> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-system-libdirs">
          <term>
            <varname>system_libdirs</varname>
          </term>
          <listitem>
            <simpara>A list of strings specifying the system library paths.
              This is used when setting the default values of some environment
              variables, such as <envar>PKG_CONFIG_PATH</envar>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-tarballdir">
          <term><varname>tarballdir</varname></term>
          <listitem>
            <simpara>A string if set, tarballs will be downloaded to the
              specified directory instead of <varname>checkoutroot</varname>.
              This is useful if you have multiple JHBuild environments or
              regularly clear out <varname>checkoutroot</varname> and want to
              reduce bandwidth usage.  Defaults to
              <literal>'~/.cache/jhbuild/downloads'</literal>.</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-tinderbox-outputdir">
          <term><varname>tinderbox_outputdir</varname></term>
          <listitem>
            <simpara><command>jhbuild tinderbox</command> の出力を保存するディレクトリを指定する文字列です。この設定は <option>--output</option> オプションより優先されます。デフォルトは <constant>None</constant> なので、コマンドラインオプションで指定するか、設定ファイルの中でこれが指定されていなければなりません。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-trycheckout">
          <term><varname>trycheckout</varname></term>
          <listitem>
            <simpara>ブール値です。<constant>True</constant> を指定した場合、JHBuild は失敗したときに次の解決を自動的に試みます。 1) <command>autogen.sh</command> コマンドを再実行する 2) バージョン管理システムから新しいバージョンをチェックアウトする。この設定は <option>--try-checkout</option> オプションを指定するのと同じです。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-use-local-modulesets">
          <term><varname>use_local_modulesets</varname></term>
          <listitem>
            <simpara>GNOME のバージョン管理システムから、オンザ フライでモジュールセットを取得するのではなく、JHBuild のソースコードと一緒にチェックアウトしたモジュールセットを使用するかどうかを指定するブール値です。デフォルトは <constant>False</constant> です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-xvfbargs">
          <term><varname>xvfbargs</varname></term>
          <listitem>
            <simpara>グラフィックテストを <command>Xvfb</command> で実行する場合の引数を指定するリスト型です。</simpara>
          </listitem>
        </varlistentry>
        <varlistentry id="cfg-conditions">
          <term>
            <varname>conditions</varname>
          </term>
          <listitem>
            <simpara>A set of condition (strings) that can influence the modules that are built and the options
              that are used for building them.  You should use <literal>conditions.add()</literal> and
              <literal>conditions.discard()</literal> to modify the list if you want to make changes.</simpara>
            <simpara>The original set of conditions is determined on a per-OS basis and can be modified using
              the <option>--conditions=</option> commandline argument.  The changes made by
              <option>--conditions</option> are visible at the time that jhbuildrc is sourced, so you can set
              other variables based on the current value of the set, but <option>--conditions</option> will be
              applied again after any changes made by jhbuildrc.</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="config-reference-other">
      <title>その他の設定ファイルの構造</title>

      <para>上述の変数に加えて、以下の文字列が設定ファイルで指定できます:</para>

      <variablelist>
        <varlistentry id="cfg-os-environ">
          <term><varname>os.environ</varname></term>
          <listitem>
            <para>環境をあらわすディクショナリです。この環境は JHBuild により 生成されたプロセスに引き渡されます。</para>

            <para><envar>CPPFLAGS</envar>、<envar>CFLAGS</envar>、<envar>INSTALL</envar>、そして <envar>LDFLAGS</envar> を含む、影響のある環境変数が含まれます。例:</para>

<programlisting>os.environ['CFLAGS'] = '-O0 -g'</programlisting>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><function>addpath</function>(<parameter>envvar</parameter>, <parameter>pathname</parameter>)</term>
          <listitem>
            <para><envar>PATH</envar> 環境変数にディレクトリを追加します。<function>addpath</function> は、環境変数の初期値が空の場合を確実に処理します(環境変数の先頭、もしくは末尾にある単独のコロンは予期せぬ結果をもたらすことがあります)。</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><function>prependpath</function>(<parameter>envvar</parameter>, <parameter>pathname</parameter>)</term>
          <listitem>
            <para>設定ファイルを処理した後、JHBuild は <varname>prefix</varname> のような変数に基づくパスに対して変更を加えます(例: <envar>PATH</envar> の先頭に <literal>$prefix/bin</literal> を追加する)。</para>

            <para><function>prependpath</function> は <function>addpath</function> と同じように動作しますが、JHBuild が環境に対して行った変更の後に環境変数への変更が適用される点が異なります。</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>
  </section>

  <section id="moduleset-syntax">
    <title>モジュールセットファイルの構文</title>

    <para>JHBuild は モジュール間の依存関係を XML ファイルに記述します。RELAX-NG スキーマと文書型定義は、JHBuild の <filename>modulesets/</filename> ディレクトリにあります。RELAX-NG スキーマにより、Emacs の <literal>nxml-mode</literal> でモジュールセットファイルを編集できます。</para>

    <para>モジュールセットファイルのトップレベル要素は、<sgmltag class="element">moduleset</sgmltag> 要素です。XML 名前空間は使用しません。トップレベル要素の配下に来るものは 3 種類あります。モジュールソース、インクルード文、およびモジュール定義です。</para>

    <para>Content in the moduleset file can be conditionally included by use of the &lt;if&gt; tag to surround the
      conditional content.  It is currently only possible to predicate the inclusion on whether a particular
      condition flag is set or not, using &lt;if condition-set='cond'&gt; or &lt;if condition-unset='cond'&gt;.
      Conditions are set by default on a per-OS basis but can be influenced by way of the
      <varname>conditions</varname> variable in jhbuildrc or the <command>--conditions=</command> commandline
      argument.</para>

    <section id="moduleset-syntax-sources">
      <title>モジュールソース</title>

      <para>すべてのモジュールの完全な場所を記述するのではなく、いくつかの "モジュールソース" をモジュールセットに記述し、モジュール定義において名前でそのソースを参照するようにします。モジュールセットから冗長な情報を減らすだけでなく、モジュールにたいする別のソースを指定するのも簡単になります (CVS や Subversion では、開発者やユーザーがさまざまなリポジトリアクセス手段を使用するのはよくあることです)。</para>

      <para><sgmltag class="element">repository</sgmltag> 要素は、すべてのタイプのリポジトリを記述するのに使用します。<sgmltag class="element">branch</sgmltag> 要素は、モジュール定義の内部で、追加の設定を指定するのに使用します。</para>

<programlisting>
&lt;repository name="<replaceable>name</replaceable>"
  type="<replaceable>type</replaceable>"
  [ default="<replaceable>default</replaceable>" ]
  [ password="<replaceable>password</replaceable>" ]
  [ cvsroot="<replaceable>cvsroot</replaceable>" ]
  [ archive="<replaceable>archive</replaceable>" ]
  [ href="<replaceable>href</replaceable>" ]
  [ server="<replaceable>server</replaceable>" ]
  [ database="<replaceable>database</replaceable>" ]
  [ defbranch="<replaceable>defbranch</replaceable>" ]
  [ trunk-template="<replaceable>trunk-template</replaceable>" ]
  [ branches-template="<replaceable>branches-template</replaceable>" ]
  [ tags-template="<replaceable>tags-template</replaceable>" ]
  [ developer-href-example="<replaceable>developer-href-example</replaceable>" ] /&gt;
</programlisting>

      <para><sgmltag class="attribute">name</sgmltag> 属性は、リポジトリの一意に定まる識別子です。</para>

      <para><sgmltag class="attribute">default</sgmltag> 属性は、そのリポジトリがモジュールセットにおけるデフォルトのソースであるかを指定します。</para>

      <para><sgmltag class="attribute">type</sgmltag> 属性は、リポジトリタイプを指定します。この属性には <literal>bzr</literal>、<literal>cvs</literal>、<literal>darcs</literal>、<literal>fossil</literal>、<literal>git</literal>、<literal>hg</literal>、<literal>mnt</literal>、<literal>svn</literal>、<literal>tarball</literal> のどれか1つを指定できます。モジュール定義内部で使用する <sgmltag class="element">branch</sgmltag> など、その他の属性は <sgmltag class="attribute">type</sgmltag> に依存します。それらは、以下のリポジトリタイプのサブセクションで説明します。</para>

      <para><sgmltag class="attribute">developer-href-example</sgmltag> 属性は、開発者が使う、リポジトリの URL の書式を指定します。この属性は参考情報に過ぎません。</para>

      <para><sgmltag class="element">branch</sgmltag> 要素は、モジュール定義の内部で使用します。</para>

<programlisting>
&lt;branch
  [ repo="<replaceable>repository</replaceable>" ]
  [ module="<replaceable>module name</replaceable>" ]
  [ checkoutdir="<replaceable>checkoutdir</replaceable>" ]
  [ revision="<replaceable>revision</replaceable>" ]
  [ tag="<replaceable>tag</replaceable>" ]
  [ update-new-dirs="<replaceable>update-new-dirs</replaceable>" ]
  [ override-checkoutdir="<replaceable>override-checkoutdir</replaceable>" ]
  [ subdir="<replaceable>subdir</replaceable>" ]
  [ branch="<replaceable>branch</replaceable>" ]
  [ version="<replaceable>version</replaceable>" ]
  [ size="<replaceable>size</replaceable>" ]
  [ source-subdir="<replaceable>source-subdir</replaceable>" ]
  [ hash="<replaceable>hash</replaceable>" ]/&gt;
</programlisting>

      <para>All attributes have sensible defaults and depend on the module and
        repository definitions. Common attributes are described here.</para>

      <para><sgmltag class="attribute">repo</sgmltag> 属性は、リポジトリのサーバーを指定します。</para>

      <para><sgmltag class="attribute">module</sgmltag> 属性は、リポジトリからチェックアウトするモジュールの名前を指定します。デフォルトはモジュール ID です。</para>

      <para><sgmltag class="attribute">checkoutdir</sgmltag> 属性は、チェックアウトディレクトリの名前を指定します。デフォルトはモジュール ID です。</para>

      <para>その他の属性については、以下で説明します。</para>

      <section id="moduleset-syntax-sources-bzr">
        <title>Bazaar</title>

        <para>このリポジトリタイプは、Bazaar リポジトリを定義します。Bazaar 1.16 以降を推奨します。</para>

<programlisting>
&lt;repository type="bzr" name="launchpad.net"
      href="lp:"/&gt;
        </programlisting>

        <para>Additional attributes are:
          <sgmltag class="attribute">trunk-template</sgmltag> (defaults to
          <literal>"%(module)s"</literal>) and
          <sgmltag class="attribute">branches-template</sgmltag> (defaults to
          <literal>"%(module)s/%(branch)s</literal>"). These attributes are used
          to specify templates for constructing URL. A
          <sgmltag class="element">branch</sgmltag> element in the module
          definitions can specify <sgmltag class="attribute">branch</sgmltag>
          and <sgmltag class="attribute">user</sgmltag> attributes. These values
          will be substituted in the templates. If either of those are defined
          <sgmltag class="attribute">branches-template</sgmltag> is used,
          otherwise <sgmltag class="attribute">trunk-template</sgmltag> is used.
          This way you can override repository to build modules from your
          personal branch or build many modules from a repository with
          non-standard layout.</para>

        <para>An addition <sgmltag class="element">branch</sgmltag> element
          accepts <sgmltag class="attribute">revspec</sgmltag> attribute to
          anchor on a particular revision. Any valid <literal>bzr
          revspec</literal> is accepted, for example <literal>date:yesterday,
          -5, tag:0.1</literal> to get first revision since yesterday, 5 commits
          behind the tip or tag "0.1". See <literal>bzr help
          revisionspec</literal> for all possible values.</para>

        <para><sgmltag class="attribute">template</sgmltag> 属性が定義された、リポジトリの例です:</para>

<programlisting>
&lt;repository type="bzr" name="launchpad.net"
      href="lp:"
      trunk-template="~bzr-pqm/%(module)s/bzr.dev"
      branches-template="~bzr-pqm/%(module)s/%(branch)s"/&gt;
        </programlisting>

        <para>上記のリポジトリにたいする、<sgmltag class="element">branch</sgmltag> 要素の例です:</para>

<programlisting>
&lt;branch repo="launchpad.net"
      module="bzr"
      checkoutdir="bzr-next"/&gt;
        </programlisting>

<programlisting>
&lt;branch repo="launchpad.net"
      module="bzr"
      branch="2.2"
      checkoutdir="bzr-beta"/&gt;
        </programlisting>
      </section>

      <section id="moduleset-syntax-sources-cvs">
        <title>CVS</title>

        <para>このリポジトリタイプは、CVS リポジトリを定義します。</para>

        <para><sgmltag class="attribute">password</sgmltag> 属性は、リポジトリのパスワードを指定します。</para>

        <para><sgmltag class="attribute">cvsroot</sgmltag> 属性は、リポジトリの root を指定します。</para>

<programlisting>
&lt;repository type="cvs" name="tango.freedesktop.org"
    cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango"
    password=""/&gt;
        </programlisting>

<!-- TODO describe these attributes -->

        <para>追加の属性は: <sgmltag class="attribute">revision</sgmltag>、<sgmltag class="attribute">update-new-dirs</sgmltag>、および <sgmltag class="attribute">override-checkoutdir</sgmltag> です。</para>
      </section>

      <section id="moduleset-syntax-sources-darcs">
        <title>Darcs</title>

        <para>このリポジトリタイプは、Darcs リポジトリを定義します。</para>

<programlisting>
&lt;repository type="darcs" name="telepathy.freedesktop.org"
      href="http://projects.collabora.co.uk/darcs/telepathy/"/&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-sources-git">
        <title>Git</title>

        <para>このリポジトリタイプは、Git リポジトリを定義します。</para>

<programlisting>
&lt;repository type="git" name="git.freedesktop.org"
    href="git://anongit.freedesktop.org/git/"/&gt;
        </programlisting>

        <para><sgmltag class="element">branch</sgmltag> 要素には、次の属性を指定できます:</para>

        <para><sgmltag class="attribute">revision</sgmltag> 属性は、更新フェーズで切り替えるローカルまたはリモートの追跡ブランチを指定します。デフォルトは 'master' です。この属性は、設定変数 <varname>branches</varname> で上書きできます。切り替えは、現在のブランチがリモートブランチの追跡ブランチにあたる場合にだけ発生し、ユーザーの作業の邪魔をしません。</para>

        <para><sgmltag class="attribute">tag</sgmltag> 属性は、更新フェーズで無条件にチェックアウトするリビジョンを指定するために使用します。この属性は、<sgmltag class="attribute">revision</sgmltag> 属性より優先されます。</para>

<!-- TODO I can't say much about the subdir attribute. In the
        end it will just be appended to checkoutdir.
        https://bugzilla.gnome.org/show_bug.cgi?id=342846
        -->

<programlisting>
&lt;branch repo="git.freedesktop.org" module="swfdec/swfdec"
        checkoutdir="swfdec"
        revision="<replaceable>local-or-remote-branch</replaceable>"
        tag="<replaceable>tree-ish</replaceable>"/&gt;
        </programlisting>
      </section>

      <section id="moduleset-syntax-sources-hg">
        <title>Mercurial</title>

        <para>このリポジトリタイプは、Mercurial リポジトリを定義します。</para>

<programlisting>
&lt;repository type="hg" name="hg.gtk-vnc"
    href="http://gtk-vnc.codemonkey.ws/hg/" /&gt;
</programlisting>

<programlisting>
&lt;branch repo="hg.gtk-vnc" module="outgoing.hg" checkoutdir="gtk-vnc"/&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-sources-mtn">
        <title>Monotone</title>

        <para>このリポジトリタイプは、Monotone リポジトリを定義します。</para>

        <para><sgmltag class="attribute">server</sgmltag> 属性は、リポジトリのサーバーを指定します。</para>

        <para><sgmltag class="attribute">database</sgmltag> 属性は、リポジトリで使用するデータベースを指定します。</para>

        <para><sgmltag class="attribute">defbranch</sgmltag> 属性は、使用するリポジトリのブランチを指定します。</para>

<programlisting>
&lt;repository type="mtn" name="pidgin.im"
    server="pidgin.im" database="pidgin.im.mtn"
    defbranch="im.pidgin.pidgin"/&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-sources-svn">
        <title>Subversion</title>

        <para>このリポジトリタイプは、Subversion リポジトリを定義します。</para>

<programlisting>
&lt;repository type="svn" name="svn.gnome.org" default="yes"
    href="http://svn.gnome.org/svn/"/&gt;
        </programlisting>

<!-- So how do I checkout a branch at a specific revision? -->

        <para><sgmltag class="element">branch</sgmltag> に <sgmltag class="attribute">revision</sgmltag> を指定できます。この属性で、チェックアウトするブランチの定義、または、チェックアウトするブランチのリビジョン番号を指定します。</para>

<programlisting>
&lt;branch revision="gnome-2-20"/&gt;
        </programlisting>

        <para><sgmltag class="attribute">trunk-template</sgmltag> (デフォルトは "%(module)s/trunk")、<sgmltag class="attribute">branches-template</sgmltag> (デフォルトは "%(module)s/branches/%(branch)s")、<sgmltag class="attribute">tags-template</sgmltag> (デフォルトは "%(module)s/tags/%(tag)s") を使用して、カスタマイズされた <literal>svn</literal> レイアウトを指定できます。</para>
      </section>

      <section id="moduleset-syntax-sources-system">
        <title>System</title>

        <para>このリポジトリタイプは、擬似的なシステムリポジトリを定義するのに使用します。システムリポジトリは、<link linkend="moduleset-syntax-defs-systemmodule"><sgmltag class="element">systemmodules</sgmltag></link> を作成するのに必要となります。</para>

<programlisting>
&lt;repository type="system" name="system"/&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-sources-tarball">
        <title>Tarballs</title>

        <para>このリポジトリタイプは、tarball のリポジトリを定義します。</para>

<programlisting>
&lt;repository type="tarball" name="dbus/dbus-python"
    href="http://dbus.freedesktop.org/releases/dbus-python/"/&gt;
</programlisting>

        <para><sgmltag class="element">branch</sgmltag> 要素には、次の属性を指定できます:</para>

        <para><sgmltag class="attribute">module</sgmltag> 属性により、ダウンロード、およびコンパイルするファイルを指定し、<sgmltag class="attribute">version</sgmltag> 属性でモジュールのバージョンを指定します。</para>

        <para><sgmltag class="attribute">size</sgmltag>、<sgmltag class="attribute">hash</sgmltag>、同様に 旧来の <sgmltag class="attribute">md5sum</sgmltag> 属性はオプションです。これらが指定された場合、パッケージが正しくダウンロードされたかチェックするのに使用されます。</para>

        <para>The <sgmltag class="attribute">rename-tarball</sgmltag> can be
          used to rename the tarball file when downloading, in case the original
          name conflicts with another module.</para>

        <para><sgmltag class="element">branch</sgmltag> 要素は、任意の数の <sgmltag class="element">patch</sgmltag> 要素を持つことができます。ここで指定したパッチは、展開したソースツリーにたいして記述した順に適用されます。<sgmltag class="attribute">file</sgmltag> 属性でパッチのファイル名を指定し、<sgmltag class="attribute">strip</sgmltag> 属性でパッチを適用する際に無視するディレクトリのレベル数を指定します(訳注:patch コマンドの -p オプションに相当)。</para>

        <para>JHBuild に同梱されているモジュールセットでは、<filename>jhbuild/patches/</filename> ディレクトリからパッチファイルを探します。URI で参照されるモジュールセットの場合、モジュールセットと同じディレクトリ、もしくは<filename>patches/</filename> というサブディレクトリからパッチファイルを探します。<sgmltag class="attribute">file</sgmltag> 属性に URI を指定することもでき、その場合は指定された場所からファイルをダウンロードします。</para>

<programlisting>
&lt;branch module="dbus-python-0.80.2.tar.gz" version="0.80.2"
    repo="dbus/dbus-python"
    hash="md5:2807bc85215c995bd595e01edd9d2077" size="453499"&gt;
  &lt;patch file="dbus-glib-build.patch" strip="1" /&gt;
&lt;/branch&gt;
</programlisting>

        <para>また、tarball の <sgmltag class="element">branch</sgmltag> 要素は、内部に <sgmltag class="element">quilt</sgmltag> 要素を含めることで、インポートしたい入れ子の <sgmltag class="element">branch</sgmltag> を指定することもできます。</para>
      </section>
    </section>

    <section id="moduleset-syntax-includes">
      <title>他のモジュールセットのインクルード</title>

      <para>JHBuild では <sgmltag class="element">include</sgmltag> 要素により、モジュールセットから他のモジュールセットをインクルードすることができます。</para>

<programlisting>
&lt;include href="<replaceable>uri</replaceable>"/&gt;
</programlisting>

      <para><sgmltag class="attribute">href</sgmltag> は、インクルードするモジュールセットを参照するための URI で、<sgmltag class="element">include</sgmltag> 要素を含むファイルからの相対的な URI です。</para>

      <para>参照されるモジュールセットからインポートされるのはモジュール定義だけで、モジュールソースはインポートされません。複数階層のインクルードもできますが、インクルードのループはできません(今のところループの処理は実装されていません)。</para>
    </section>

    <section id="moduleset-syntax-defs">
      <title>モジュールの定義</title>

      <para>モジュールセットファイルで使用できるモジュール定義には、さまざまな種類があり、そのリストは簡単に拡張できます。以下に記載するのは、最も一般的なものです。</para>

      <para>基本的にモジュール定義は、モジュールをどうやって取得するかを記述する <sgmltag class="element">branch</sgmltag> 要素と、モジュールの依存関係を定義する <sgmltag class="element">dependencies</sgmltag>、<sgmltag class="element">suggests</sgmltag>、<sgmltag class="element">after</sgmltag> 要素で構成されます。</para>

      <para><sgmltag class="element">dependencies</sgmltag> 要素にリストされたモジュールは、それがインクルードされていない場合 <command>jhbuild build</command> のモジュールリストに追加され、依存するモジュールが最初にビルドされることを保証します。</para>

      <para>モジュールリストを生成した後で、<sgmltag class="element">suggests</sgmltag> 要素にリストされたモジュールが、モジュールリストの他に使用されます(追加のモジュールを取得しないとしても)。これはモジュールが他のモジュールに対してオプションの依存関係をもつ場合を想定したものです。</para>

      <section id="moduleset-syntax-defs-autotools">
        <title>autotools</title>

        <para><sgmltag class="element">autotools</sgmltag> 要素は、GNU Autotools ビルドシステムでモジュールをコンパイルすることを定義します。</para>

<programlisting>
&lt;autotools id="<replaceable>id</replaceable>"
	      [ autogenargs="<replaceable>autogenargs</replaceable>" ]
	      [ makeargs="<replaceable>makeargs</replaceable>" ]
	      [ makeinstallargs="<replaceable>makeinstallargs</replaceable>" ]
	      [ autogen-sh="<replaceable>autogen-sh</replaceable>" ]
	      [ makefile="<replaceable>makefile</replaceable>" ]
	      [ skip-autogen="<replaceable>skip-autogen</replaceable>" ]
	      [ skip-install="<replaceable>skip-install</replaceable>" ]
	      [ uninstall-before-install="<replaceable>uninstall-before-install</replaceable>" ]
	      [ autogen-template="<replaceable>autogen-template</replaceable>" ]
	      [ check-target="<replaceable>check-target</replaceable>" ]
	      [ supports-non-srcdir-builds="<replaceable>supports-non-srcdir-builds</replaceable>" ]
	      [ force-non-srcdir-builds="<replaceable>force-non-srcdir-builds</replaceable>" ]
	      [ supports-unknown-configure-options="<replaceable>supports-unknown-configure-options</replaceable>" ]
	      [ supports-static-analyzer="<replaceable>supports-static-analyzer</replaceable>" ]&gt;

  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;

&lt;/autotools&gt;
</programlisting>

        <para><sgmltag class="attribute">autogenargs</sgmltag>、<sgmltag class="attribute">makeargs</sgmltag>、<sgmltag class="attribute">makeinstallargs</sgmltag> 属性では、それぞれ <command>autogen.sh</command>、<command>make</command> および <command>make install</command> に引き渡す追加の引数を指定します。</para>

        <para><sgmltag class="attribute">autogen-sh</sgmltag> 属性は、実行する autogen.sh スクリプトの名前を指定します。値 <literal>autoreconf</literal> は、モジュールに <command>autogen.sh</command> に相当するスクリプトがない場合に使用できます。その場合、JHBuild は、<command>autoreconf -fi</command> を実行し、その後で適切な <command>configure</command> を実行します。<sgmltag class="attribute">skip-autogen</sgmltag> は、autogen.sh を実行するかどうかを指定します。指定できるのはブール値、あるいは <literal>never</literal> で、never を指定した場合は、<command>autogen.sh</command> の実行をスキップしません。<sgmltag class="attribute">skip-install</sgmltag> は、ブール値の属性で、該当のモジュールにたいして <command>make install</command> コマンドをスキップするかどうかを指定します。<sgmltag class="attribute">makefile</sgmltag> は、使用する makefile のファイル名を指定します。</para>

	<para>The <sgmltag class="attribute">uninstall-before-install</sgmltag>
	  specifies any old installed files from the module should before removed
	  before running the install step. This can be used to work around a
	  problem where libtool tries to link one library it is installing
	  against another library it is installing, but because of jhbuild's
	  use of DESTDIR, finds the old installed library instead. The downside
          of specifying this is that it could cause problems if the user is
	  currently running code that relies on installed files from the
	  module.</para>

        <para><sgmltag class="attribute">supports-non-srcdir-builds</sgmltag> 属性は、分離されたソースディレクトリでクリーンなビルドができないモジュールであることをマークします。</para>

        <para>The <sgmltag class="attribute">force-non-srcdir-builds</sgmltag>
          attribute is used to mark modules that can't be cleanly built from
          the source directory, but can be built from outside it.</para>

        <para><sgmltag class="attribute">autogen-template</sgmltag> 属性は、autogen のコマンドラインをより細かく制御する必要がある場合に使用できます。これには Python のフォーマット文字列を使用でき、以下の変数が置換されます: <varname>srcdir</varname>、<varname>autogen-sh</varname>、<varname>prefix</varname>、<varname>libdir</varname>、<varname>autogenargs</varname>。次の記述例はデフォルトの autogen-template です。</para>

<programlisting>
%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s
</programlisting>

        <para><sgmltag class="attribute">check-target</sgmltag> 属性は、<command>make check</command> ターゲットがないモジュールの場合は指定しなければなりません(値は false)。</para>

        <para>The <sgmltag class="attribute">supports-static-analyzer</sgmltag>
          attribute must be specified (with false as value) for modules which
          don’t support being built under a static analysis tool such as
          <command>scan-build</command>.</para>

        <para>The <sgmltag class="attribute">supports-unknown-configure-options</sgmltag>
          attribute is used to mark modules that will error out if an unknown
          option is passed to <filename>configure</filename>. Global configure
          options will not be used for that module.</para>
      </section>

      <section id="moduleset-syntax-defs-cmake">
        <title>cmake</title>

        <para><sgmltag class="element">cmake</sgmltag> 要素は、CMake ビルドシステムでモジュールをビルドすることを定義します。</para>

<programlisting>
  &lt;cmake id="<replaceable>modulename</replaceable>"
            [ skip-install="<replaceable>skip-install</replaceable>" ]
            [ cmakedir="<replaceable>cmakedir</replaceable>" ]
            [ force-non-srcdir-builds="<replaceable>force-non-srcdir-builds</replaceable>" ]&gt;
  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;
&lt;/cmake&gt;
</programlisting>

        <para>The <sgmltag class="attribute">cmakedir</sgmltag> attribute
          specifies the subdirectory where cmake will run in relation to srcdir.
        </para>

        <para>The <sgmltag class="attribute">force-non-srcdir-builds</sgmltag>
          attribute is used to mark modules that can't be cleanly built from
          the source directory, but can be built from outside it.</para>
      </section>

      <section id="moduleset-syntax-defs-meson">
        <title>Meson</title>

        <para>The <sgmltag class="element">meson</sgmltag> element is used to
          define a module which is built using the Meson build system.</para>

<programlisting>
  &lt;meson id="<replaceable>modulename</replaceable>"
            [ skip-install="<replaceable>skip-install</replaceable>" ]&gt;
  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;
&lt;/meson&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-distutils">
        <title>distutils</title>

        <para>The <sgmltag class="element">distutils</sgmltag> element is used
          to define a module which is built using python's distutils.</para>

<programlisting>
&lt;distutils id="<replaceable>modulename</replaceable>"
            [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;
&lt;/distutils&gt;
</programlisting>
      </section>


      <section id="moduleset-syntax-defs-distutils">
        <title>distutils</title>

        <para><sgmltag class="element">distutils</sgmltag> 要素は、python の distutils でビルドするモジュールを定義します。</para>

<programlisting>
&lt;distutils id="<replaceable>modulename</replaceable>"
            [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;
&lt;/distutils&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-linux">
        <title>linux</title>

        <para><sgmltag class="element">linux</sgmltag> 要素は、linux カーネルのビルドで使用されるモジュールを定義します。加えて、<sgmltag class="element">kconfig</sgmltag> サブ要素により、別のカーネル設定を選択することができます。</para>

<programlisting>
&lt;linux id="<replaceable>id</replaceable>"
	  [ makeargs="<replaceable>makeargs</replaceable>" ]&gt;

  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;

  &lt;kconfig [ repo="<replaceable>repo</replaceable>" ]
	    version="<replaceable>version</replaceable>"
	    [ module="<replaceable>module</replaceable>" ]
	    [ config="<replaceable>config</replaceable>" ] /&gt;

&lt;/linux&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-perl">
        <title>perl</title>

        <para><sgmltag class="element">perl</sgmltag> 要素は、perl モジュールをビルドするために使用します。</para>

        <para><sgmltag class="attribute">makeargs</sgmltag> 属性は、<command>make</command> に引き渡す追加の引数を指定します。</para>

<programlisting>
&lt;perl id="<replaceable>modulename</replaceable>"
	 [ makeargs="<replaceable>makeargs</replaceable>" ]&gt;

  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;

&lt;/perl&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-systemmodule">
        <title>systemmodule</title>

        <para><sgmltag class="element">systemmodule</sgmltag> 要素は、システムによって提供される必要のあるモジュールを定義するために使用します。このモジュールは、お使いのディストリビューションのパッケージ管理システムを通じてインストールされます。</para>

<programlisting>
&lt;systemmodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;pkg-config&gt;<replaceable>pkg-config</replaceable>.pc&lt;/pkg-config&gt;

  &lt;branch repo="<replaceable>system</replaceable>" version="<replaceable>version</replaceable>" /&gt;
&lt;/systemmodule&gt;
</programlisting>

        <para>システムモジュールが pkg-config ファイルを提供していない場合は、依存対象を特定するために <sgmltag class="element">systemdependencies</sgmltag> タグを使用できます。<sgmltag class="element">dep</sgmltag> タグの <sgmltag class="attribute">type</sgmltag> 属性は、2 種類の値が使用可能です。</para>

        <orderedlist>
          <listitem>
            <simpara><sgmltag class="attvalue">path</sgmltag> 値。PATH を検索して、指定した名前に合致するプログラムを探します。</simpara>
          </listitem>
          <listitem>
            <simpara><sgmltag class="attvalue">c_include</sgmltag> 値。C インクルードパスを検索して、指定した名前に合致するヘッダーを探します。<sgmltag class="attribute">name</sgmltag> には、サブディレクトリを含めることもできます。C インクルードパスは、設定変数 <varname>cflags</varname> または <link linkend="cfg-module-autogenargs"><varname>module_autogenargs</varname></link> 内の <varname>CPPFLAGS</varname> をセットすることで変更できます。</simpara>
          </listitem>
        </orderedlist>

<programlisting>
&lt;systemmodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;branch repo="<replaceable>system</replaceable>" version="<replaceable>version</replaceable>" /&gt;
  &lt;systemdependencies&gt;
    &lt;dep type="path" name="<replaceable>executable-name</replaceable>" /&gt;
  &lt;/systemdependencies&gt;
&lt;/systemmodule&gt;

&lt;systemmodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;branch repo="<replaceable>system</replaceable>" version="<replaceable>version</replaceable>" /&gt;
  &lt;systemdependencies&gt;
    &lt;dep type="c_include" name="<replaceable>header-name</replaceable>" /&gt;
  &lt;/systemdependencies&gt;
&lt;/systemmodule&gt;
</programlisting>

        <para>If the system module may be installed in different locations
          or installed with different names by different distributions,
          <sgmltag class="element">altdep</sgmltag> tag can be used as
          subelements of <sgmltag class="element">dep</sgmltag> tag to
          specify alternative locations or names.
          <sgmltag class="element">altdep</sgmltag> tag support the same
          attributes as <sgmltag class="element">dep</sgmltag> tag does.</para>

<programlisting>
&lt;systemmodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;branch repo="<replaceable>system</replaceable>" version="<replaceable>version</replaceable>" /&gt;
  &lt;systemdependencies&gt;
    &lt;dep type="path" name="<replaceable>executable-name</replaceable>"&gt;
      &lt;altdep type="path" name="<replaceable>alternative-executable-name-1</replaceable>" /&gt;
      &lt;altdep type="path" name="<replaceable>alternative-executable-name-2</replaceable>" /&gt;
      ...
    &lt;dep&gt;
  &lt;/systemdependencies&gt;
&lt;/systemmodule&gt;

&lt;systemmodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;branch repo="<replaceable>system</replaceable>" version="<replaceable>version</replaceable>" /&gt;
  &lt;systemdependencies&gt;
    &lt;dep type="c_include" name="<replaceable>header-name</replaceable>"&gt;
      &lt;altdep type="c_include" name="<replaceable>alternative-header-name-1</replaceable>" /&gt;
      &lt;altdep type="c_include" name="<replaceable>alternative-header-name-2</replaceable>" /&gt;
      ...
    &lt;dep&gt;
  &lt;/systemdependencies&gt;
&lt;/systemmodule&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-waf">
        <title>waf</title>

        <para><sgmltag class="element">waf</sgmltag> 要素は、Waf ビルドシステムでモジュールをビルドすることを定義します。</para>

        <para><sgmltag class="attribute">waf-command</sgmltag> 属性は、使用する waf コマンドスクリプトを指定します。デフォルトは <command>waf</command> です。</para>

        <para>The <sgmltag class="attribute">python-command</sgmltag> attribute
          is used to specify the Python executable to use; it defaults to
          <command>python</command>. This is useful to build modules against
          version 3 of Python.</para>

<programlisting>
&lt;waf id="<replaceable>modulename</replaceable>"&gt;
	 [ python-command="<replaceable>python-command</replaceable>" ]
	 [ waf-command="<replaceable>waf-command</replaceable>" ]&gt;
  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;
&lt;/waf&gt;
</programlisting>
      </section>

      <section id="moduleset-syntax-defs-testmodule">
        <title>testmodule</title>

        <para><sgmltag class="element">testmodule</sgmltag> 要素は、LDTP、または Dogtail でテストを実行するモジュールを作成するために使用します。</para>

<programlisting>
&lt;testmodule id="<replaceable>id</replaceable>"
	       type="<replaceable>type</replaceable>"&gt;

  &lt;branch [ ... ] &gt;
    [...]
  &lt;/branch&gt;

  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;after&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/after&gt;

  &lt;testedmodules&gt;
    &lt;tested package="<replaceable>package</replaceable>" /&gt;
  &lt;/testedmodules&gt;

&lt;/testmodule&gt;
</programlisting>

        <para><sgmltag class="attribute">type</sgmltag> 属性には、モジュールで実行するテストのタイプを指定します。'dogtail' は、すべての .py ファイルの実行に Python を使用します。'ldtp' は 'ldtprunner run.xml' を実行します。</para>

        <para>Unless the noxvfb configuration option is set, an Xvfb server is
          started to run the tests in.</para>
      </section>

      <section id="moduleset-syntax-defs-metamodule">
        <title>metamodule</title>

        <para><sgmltag class="element">metamodule</sgmltag> 要素は、実際には何もしないモジュールを定義します。このモジュールの唯一の目的は、依存関係のためです。</para>

        <para>例えば、meta-gnome-desktop は GNOME デスクトップの主要コンポーネントに依存しているので、実際には完全なデスクトップをインストールするよう JHBuild に指定することになります。</para>

<programlisting>
&lt;metamodule id="<replaceable>modulename</replaceable>"&gt;
  &lt;dependencies&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/dependencies&gt;
  &lt;suggests&gt;
    &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
    ...
  &lt;/suggests&gt;
&lt;/metamodule&gt;
</programlisting>

        <para><sgmltag class="attribute">id</sgmltag> 属性には、モジュールの名前を指定します。子要素は <link linkend="moduleset-syntax-defs-autotools"><sgmltag class="element">autotools</sgmltag></link> と同様に処理されます。</para>
      </section>
    </section>

    <section id="moduleset-deprecated-elements">
      <title>非推奨となった要素</title>

      <section id="moduleset-deprecated-elements-syntax-sources">
        <title>モジュールソース</title>

        <section id="moduleset-syntax-sources-cvsroot">
          <title>cvsroot</title>

          <para><sgmltag class="element">cvsroot</sgmltag> 要素は、現在は非推奨となっています - かわりに <sgmltag class="element">repository</sgmltag> 要素を使用してください。</para>

          <para><sgmltag class="element">cvsroot</sgmltag> 要素は、CVS リポジトリを記述するのに使用します。</para>

<programlisting>
  &lt;cvsroot name="<replaceable>rootname</replaceable>"
           [ default="<replaceable>yes|no</replaceable>" ]
           root="<replaceable>anon-cvsroot</replaceable>"
           password="<replaceable>anon-password</replaceable>"/&gt;
</programlisting>

          <para><sgmltag class="attribute">name</sgmltag> 属性は、CVS リポジトリを一意に識別する名前です。</para>

          <para><sgmltag class="attribute">default</sgmltag> 属性には、モジュールセットファイルのデフォルトのモジュールソースを記述します。</para>

          <para><sgmltag class="attribute">root</sgmltag> 属性には、このリポジトリへの匿名アクセスに使用される CVS root のリストを記述し、<sgmltag class="attribute">password</sgmltag> 属性で匿名アクセスするときのパスワードを記述します。</para>
        </section>

        <section id="moduleset-syntax-sources-svnroot">
          <title>svnroot</title>

          <para><sgmltag class="element">svnroot</sgmltag> 要素は、現在は非推奨となっています - かわりに <sgmltag class="element">repository</sgmltag> 要素を使用してください。</para>

          <para><sgmltag class="element">svnroot</sgmltag> 要素は、Subversion リポジトリを記述するのに使用します。</para>

<programlisting>
  &lt;svnroot name="<replaceable>rootname</replaceable>"
           [ default="<replaceable>yes|no</replaceable>" ]
           href="<replaceable>anon-svnroot</replaceable>"/&gt;
</programlisting>

          <para><sgmltag class="attribute">name</sgmltag> 属性は、Subversion リポジトリを一意に識別する名前です。</para>

          <para><sgmltag class="attribute">default</sgmltag> 属性には、モジュールセットファイルのデフォルトのモジュールソースを記述します。</para>

          <para><sgmltag class="attribute">href</sgmltag> 属性には、リポジトリの URL のリストを記述します。おそらく <literal>http</literal>、<literal>https</literal>、<literal>svn</literal> のような URL となるでしょう。</para>
        </section>
      </section>

<!-- end of deprecated module sources -->

      <section>
        <title>非推奨となったモジュールタイプ</title>

        <warning>
          <para>このセクションでは、既存のモジュールセットでは使用されているものの、今後の使用は非推奨の要素について説明します。</para>
        </warning>

        <section id="moduleset-syntax-defs-tarball">
          <title>tarball</title>

          <important>
            <para>この非推奨な要素は、<sgmltag class="element">autotools</sgmltag> モジュールタイプと <sgmltag class="element">tarball</sgmltag> リポジトリタイプの単なる軽量なラッパーです。</para>
          </important>

          <para><sgmltag class="element">tarball</sgmltag> 要素では、tarball からビルドされるモジュールを定義します。</para>

<programlisting>
  &lt;tarball id="<replaceable>modulename</replaceable>"
              [ version="<replaceable>version</replaceable>" ]
              [ checkoutdir="<replaceable>checkoutdir</replaceable>" ]
              [ autogenargs="<replaceable>autogenargs</replaceable>" ]
              [ makeargs="<replaceable>makeargs</replaceable>" ]
              [ autogen-sh="<replaceable>autogen-sh</replaceable>" ]
              [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
    &lt;source href="<replaceable>source-url</replaceable>"
            [ size="<replaceable>source-size</replaceable>" ]
            [ hash="<replaceable>source-algo:source-hash</replaceable>" ]
            [ md5sum="<replaceable>source-md5sum</replaceable>" ]/&gt;
    &lt;patches&gt;
      &lt;patch file="<replaceable>filename</replaceable>" strip="<replaceable>level</replaceable>"/&gt;
      ...
    &lt;/patches&gt;
    &lt;dependencies&gt;
      &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
      ...
    &lt;/dependencies&gt;
    &lt;suggests&gt;
      &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
      ...
    &lt;/suggests&gt;
  &lt;/tarball&gt;
</programlisting>

          <para><sgmltag class="attribute">id</sgmltag>、および <sgmltag class="attribute">version</sgmltag> 属性は、モジュールを識別するために使用されます。</para>

          <para><sgmltag class="element">source</sgmltag> 要素では、ダウンロードしてコンパイルするファイルを指定します。<sgmltag class="attribute">href</sgmltag> は必須の属性で、<sgmltag class="attribute">size</sgmltag>、<sgmltag class="attribute">hash</sgmltag>、同様に 旧来の <sgmltag class="attribute">md5sum</sgmltag> 属性はオプションです。最後の2つの属性が指定された場合は、ダウンロードされたソースが正しいものであるか確認するために使用されます。</para>

          <para><sgmltag class="element">patches</sgmltag> 要素は、ソースツリーを展開後に1つ (または複数) のパッチの適用を指定します。<sgmltag class="attribute">file</sgmltag> 属性はファイル名を指定し、<sgmltag class="attribute">strip</sgmltag> 属性はパッチを適用する際に無視するディレクトリのレベル数を指定します(訳注:patch コマンドの -p オプションに相当)。</para>

          <para>JHBuild に同梱されているモジュールセットでは、<filename>jhbuild/patches/</filename> ディレクトリからパッチファイルを探します。URI で参照されるモジュールセットの場合、モジュールセットと同じディレクトリ、もしくは<filename>patches/</filename> というサブディレクトリからパッチファイルを探します。<sgmltag class="attribute">file</sgmltag> 属性に URI を指定することもでき、その場合は指定された場所からファイルをダウンロードします。</para>

          <para>その他の属性、および <sgmltag class="element">dependencies</sgmltag>、<sgmltag class="element">suggests</sgmltag>、<sgmltag class="element">after</sgmltag> 要素は、<link linkend="moduleset-syntax-defs-autotools">autotools</link> によって処理されます。</para>
        </section>
      </section>

<!-- end of deprecated module types -->
    </section>

<!-- end of deprecated elements -->
  </section>
</article>
