5. How to add custom packages

この節では、独自パッケージを追加する手順について説明します。

5.1. パッケージディレクトリを作成する

まず最初に、パッケージディレクトリを作成します。

X/Qt-2 では、パッケージ毎にディレクトリを作成しています。パッケージの種別毎に、以下のようなディレクトリがありますので、適宜これらの下にディレクトリを作成してください。

  • apps: アプリケーション

  • net: ネットワーキング

  • fonts: フォント

  • wm: ウィンドウマネージャ

  • im: インプットメソッド

  • libs: ライブラリ

  • sys: システム

5.2. pkgdef ファイルの作成

pkgdef ファイルを作成します。

pkgdef ファイルは、RPM の spec ファイルのようなもので、パッケージの取得方法や、ビルド手順、ipkg の生成手順などが記載されています。

以下は、Glib の pkgdef ファイルです。

#
# Glib 1.2
# 

%define ver     1.2.10
%define rel     2

%site
ftp://ftp.gtk.org/pub/gtk/v1.2

%source
glib-%{ver}.tar.gz
local:glib-%{ver}-cross.patch;patch=1

%define builddir	glib-%{ver}
%define develpkg yes

%prep
rm acinclude.m4
aclocal
libtoolize --force
automake --copy --add-missing
autoconf

%build
./configure %{config_opts} --enable-shared --disable-static
make

%install
make %{install_opts} install

%files
%{prefix}/lib/libgmodule*
%{prefix}/lib/libgthread*

%excludes
*.la
*.a

%strip
*.so*

%control
Package: glib-additional
Priority: optional
Section: libs
Maintainer: Takuya Murakami <tmurakam@mtd.biglobe.ne.jp>
Architecture: arm
Version: %{ver}-%{rel}
Depends: glibc
License: LGPL
Description: glib additional libraries
  libgmodule.so and libgthread.so

このファイルには、以下の内容が記述されています。

  • %site には、ソースパッケージをダウンロードするサイトの URL を記載します

  • %source には、ソースパッケージのファイル名を記載します。 通常は、%site で指定したサイトからファイルがダウンロードされます。

    先頭が local: で始まっている場合は、ローカルファイルを使用します。また、末尾が ;patch=n と記述されている場合は、このファイルをパッチファイルと見なして自動的にパッチを適用します。n の値は patch コマンドの -p オプションに渡される値です。

  • %define builddir には、ビルドを行うディレクトリを指定します。

  • %prep には、ソース展開後に行う処理を記述します。

  • %build には、ビルドスクリプトを記述します。

  • %install には、仮想インストール処理スクリプトを記述します。

  • %define develpkg yes と記述すると、開発パッケージが生成されます。

  • %files には、ipkg に含めるファイル一覧を列挙します。

  • %excludes には、ipkg に含めないファイルパターンを列挙します。

  • %strip には、ipkg 生成前に strip を行うファイルパターンを列挙します。

  • %control には、ipkg の control ファイルを記述します。

ファイル中に %{...} という記述がありますが、これは %define で定義されたシンボルを置換する役割があります。たとえば、%define foo bar と定義しておくと、以後 %{foo} は bar に置換されます。

%{config_opts} や %{install_opts} は定義済みのシンボルで、これらは script/config.defで設定されています。

上記サンプルには入っていませんが、%preinst, %postinst, %postrm, %conffiles を使うと %control と同様に ipkg の制御ファイルを設定できます。ipkg の詳細は、ipkg を作るにはが参考になります。

5.3. ビルドを行う

See xpkg manual.

 $ xpkg DevelWorld

フルビルド時に全自動でビルドされるようにするには、dirlist ファイルにディレクトリを追加しておきます。

5.4. X/Qt-2 本家にフィードバックするには

作成したパッケージを X/Qt-2 本家に入れたい場合は、pkgdef ファイルを管理者まで e-mail で送ってください。管理者側で動作を確認し、パッケージを取り込みます。