JHBuild

提供: ArchWiki
2019年11月21日 (木) 18:49時点におけるKusakata.bot2 (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

JHBuild はモジュール (ソースコードパッケージ) を自動的にダウンロード・コンパイルすることができるツールです。様々なソース (CVS, Subversion, Git, Bazaar, tarball など) からモジュールを取得して、依存関係を解決します。プロジェクト全体をビルドするのではなく、ビルドしたい特定のモジュールを選択することも可能です。

元々 JHBuild は GNOME をビルドするために書かれましたが、今は他のプロジェクトでも使えるようになっています。

インストール

jhbuildAUR パッケージをインストールしてください。安定版が入ります。

設定

JHBuild の設定ファイルは ~/.config/jhbuildrc にあります。Python の構文を使って設定変数を定義します。以下は GNOME をビルドするときのファイル例です:

# -*- mode: python -*-
# -*- coding: utf-8 -*-

# edit this file to match your settings and copy it to ~/.config/jhbuildrc

# if you have a GNOME git account, uncomment this line
# repos['git.gnome.org'] = 'ssh://user@git.gnome.org/git/'

# what module set should be used. The default can be found in
# jhbuild/defaults.jhbuildrc, but can be any file in the modulesets directory
# or a URL of a module set file on a web server.
# moduleset = 'gnome-apps-3.12'
#
# A list of the modules to build. Defaults to the GNOME core and tested apps.
# modules = [ 'meta-gnome-core', 'meta-gnome-apps-tested' ]

# Or to build the old GNOME 2.32:
# moduleset = 'gnome2/gnome-2.32'
# modules = ['meta-gnome-desktop']

# what directory should the source be checked out to?
checkoutroot = os.path.expanduser('~/checkout/gnome')

# the prefix to configure/install modules to (must have write access)
prefix = '/opt/gnome'

# custom CFLAGS / environment pieces for the build
# os.environ['CFLAGS'] = '-Wall -g -O0'

# extra arguments to pass to all autogen.sh scripts
# to speed up builds of GNOME, try '--disable-static --disable-gtk-doc'
#autogenargs=''

# On multiprocessor systems setting makeargs to '-j2' may improve compilation
# time. Be aware that not all modules compile correctly with '-j2'.
# Set makeargs to 'V=1' for verbose build output.
#makeargs = '-j2'

modules を編集してビルドしたいモジュールを指定してください。ほとんどの設定変数は GNOME JHBuild Manual に説明が書いてあります。

使用方法

必要ツールのインストール

sysdeps を実行することで JHBuild は必要なツールがインストールされているかどうかチェックします:

$ jhbuild sysdeps

sanitychecksysdeps と同じようなチェックを行いますが、automake の regexp エラー が原因で automake 1.15 以前では automake のバージョンのチェックに失敗します (既に次のバージョンの automake では修正済み)。

何かエラーが表示される場合、リポジトリから欠けているパッケージをインストールするか、あるいは bootstrap コマンドを実行します。ビルドに必要なツールがダウンロード・ビルド・インストールされます:

$ jhbuild bootstrap

ビルド

設定ファイルに記述したモジュールを全てビルドしたい場合、build コマンドを実行:

$ jhbuild build

JHBuild は各モジュールのダウンロード・configure・コンパイル・インストールを実行します。詳しくは次を参照:

$ jhbuild help

ビルド中にエラーが発生した場合、JHBuild は何をすべきかメニューを表示します。シェルを開いてエラーを修正したり、ビルドを再実行したり、モジュールのビルドを諦めたり、あるいはエラーを無視して続行することが選べます。大抵の場合、シェルを開いて makefile や設定ファイルを確認すると良いでしょう。例えばビルドエラーが起こったときは、手動で make を実行してシェルからエラーを確認できます。

モジュールの生成を諦めた場合、そのモジュールに依存するモジュールも全て生成されなくなります。

壊れているパッケージを無視して、出来るだけ多くのパッケージをビルドしたい場合、次を実行:

$ yes 3 | jhbuild --try-checkout build

トラブルシューティング

ノート: 以下に記載されていない問題が発生した場合は、jhbuildAUR パッケージのコメント欄に報告してください。

Python の問題

JHBuild を使わずにスクラッチからビルド、あるいは JHBuild シェルでビルド

スクラッチからビルドする場合、以下のように autogen.sh を実行する必要があります:

$ PYTHON=/usr/bin/python2 ./autogen.sh

そして ~/.config/jhbuildrc に PYTHON 環境変数を設定してください:

os.environ['PYTHON'] = '/usr/bin/python2'
ノート: JHBuild は /opt/gnome/lib/python2.7 の独自の Python ライブラリディレクトリを使用します。Python のインポートチェックで問題が発生するときは前記のディレクトリに .py ファイルが存在するか確認してください。

itstool が Python モジュールを認識できない

[4] Start shell を選択して次を実行:

$ sed -ir 's/| python /| python2 /' configure

それからシェルを exit して [1] Rerun phase configure を選択してください。詳しくは このマージリクエスト を参照。

pkg-config の問題

PKG_CONFIG_PATH にある .pc ファイルのどれかが誤っていると、JHBuild はインストールされている .pc ファイルを全て検出することができず、.pc ファイルが存在しないとエラーを吐きます。jhbuild sysdeps の出力を確認してください。問題のある .pc ファイルに関するメッセージがあるはずです。

gnome-devel-docs がビルドできない

[4] Start shell を選択して以下を実行:

$ git revert --no-edit 9ba0d959

そして、シェルを終了してから [1] Rerun phase build を選択してください。詳しくは このバグレポート を参照。

pango がビルドできない

cairo.h が存在しないというエラーでビルドが失敗する場合、[4]shell を開いて pango/pangocairo.h を編集します。以下の行を:

 #define <cairo.h>

以下のように置き換えてください:

 #define <cairo/cairo.h>

geary がビルドできない

以下のエラーメッセージが表示される場合:

[ 78%] Generating webkitgtk-3.0.vapi
error: /home/rffontenelle/jhbuild/install/share/gir-1.0/WebKit-3.0.gir not found
Generation failed: 1 error(s), 0 warning(s)
make[2]: *** [src/CMakeFiles/geary.dir/build.make:1277: src/webkitgtk-3.0.vapi] Error 1
make[1]: *** [CMakeFiles/Makefile2:798: src/CMakeFiles/geary.dir/all] Error 2

geary が WebKitGTK (<= 2.4) に依存しているのに、JHBuild が WebKit2GTK (新しいバージョン) をコンパイルしてしまうのが原因です。これは既知の問題 (#741866メーリングリスト) で、Geary をポートする計画があります (#728002)。

他の壊れているモジュール

以下のモジュールはビルドができず、修正方法も存在しません (ぜひ調査してみてください):

  • aisleriot—バグレポート (調査すればおそらく修正は容易)
  • gegl
  • gnome-boxes—バグレポート (修正方法が書かれています)
  • gnome-photos
  • gtksourceviewmm
  • meta-gnome-apps-tested
  • nemiver
  • orca
  • rygel
  • valadoc

上記のリストには壊れているモジュールに依存しているモジュールも含まれています (問題のないモジュールもあるかもしれないが、未確認)。

特定のモジュールのビルドに必要なパッケージ

参照

GNOME JHBuild Manual