JHBuild
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
sanitycheck も sysdeps と同じようなチェックを行いますが、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
トラブルシューティング
Python の問題
JHBuild を使わずにスクラッチからビルド、あるいは JHBuild シェルでビルド
スクラッチからビルドする場合、以下のように autogen.sh を実行する必要があります:
$ PYTHON=/usr/bin/python2 ./autogen.sh
そして ~/.config/jhbuildrc
に PYTHON 環境変数を設定してください:
os.environ['PYTHON'] = '/usr/bin/python2'
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
上記のリストには壊れているモジュールに依存しているモジュールも含まれています (問題のないモジュールもあるかもしれないが、未確認)。
特定のモジュールのビルドに必要なパッケージ
- gitg は gtkspell3 を必要とします。
- gtk-vnc は perl-text-csv を必要とします。
- latexila は lcovAUR を必要とします。
- pango は libpthread-stubsAUR を必要とします。
- totem-pl-parser は libgcrypt15 を必要とします。
- xf86-video-intel は xorg-server-devel を必要とします。
- xwayland は xtrans, xcmiscproto[リンク切れ: パッケージが存在しません], bigreqsproto[リンク切れ: パッケージが存在しません] を必要とします。
- zeitgeist は python2-rdflib[リンク切れ: パッケージが存在しません] を必要とします。
- wireless-tools は wireless_tools を必要とします。
- xorg-macros は xorg-util-macros を必要とします。