open build service 道場―パッケージの新規作成編
TRANSCRIPT
2014-09-14 2
新規パッケージの作成
● 新しいサブプロジェクトも作成しましょう– 新しいパッケージを作成して、どこかのプロジェクトに取り込んでも
らいたい場合– home:xxxx を使わない
● コマンドラインは面倒なので Web UI で– Subprojects タブの Create subproject
2014-09-14 3
プロジェクトの初期設定
● リポジトリを追加● 必ず取り込んでもらう先のプロジェクトを追加する
– openSUSE 13.1 とか…ではなく● 単に配布するつもりなら、これで OK
– 追加したプロジェクトのパッケージがビルドに使われる● 例えば M17N 場合は
– M17N/openSUSE_13.1 他を追加する● M17N のパッケージ + openSUSE_13.1
2014-09-14 4
リポジトリの追加
● Add Repositories で pick one via advanced interface で順に追加する– 名前はビルド時に使う– M17N, openSUSE_Factory, i586, x86_64
● Name は openSUSE_Factory– M17N, openSUSE_13.1, i586, x86_64
● Name は openSUSE_13.1– M17N, openSUSE_12.3, i586, x86_64
● Name は openSUSE_12.3● M17N を含まない openSUSE_13.1 だけを追加することも可能
– 名前は衝突しないように工夫
2014-09-14 5
リポジトリ設定の Flag とは
● Build Flag– そのリポジトリ向けに実際にビルドするかどうか
● Publish Flag– download.opensuse.org でビルドが終わったパッケージを
公開するか● Debuginfo Flag
– デバッグシンボルが入った *-debuginfo / *-debugsourceパッケージを作成するかどうか
● Use for Build Flag– パッケージを他のプロジェクト内の他のパッケージをビルドするため
に使うかどうか(普通は常に ON )
2014-09-14 6
いよいよパッケージの作成
● プロジェクトのチェックアウト– $ osc co home:xxxx:yyyy
● 作成したプロジェクト名● 初めての人はパスワードを求められます● cd で xxxx:yyyy へ移動
● OBS パッケージの新規作成– $ osc mkpac hogehoge– Web UI でも OK だけど、 co が必要
2014-09-14 7
Spec ファイル新規作成
● テンプレから新規作成– $ rpmdev-newspec hogehoge– ディレクトリ内に hogehoge.spec ができる
rpmdev-newspec のインストール$ sudo zypper ar -c obs://devel:tools/openSUSE_13.1 devel_tools$ sudo zypper ref devel_tools$ sudo zypper install rpmdevtools
2014-09-14 8
spec ファイルのヘッダー
● Version: 1.0.0– # バージョンです
● Release: 0– 変更しないでください
● Summary: a very useful application– 説明を具体的に書いてください
● License: GPL-2.0+– 書き方には決まりがあります
● https://en.opensuse.org/openSUSE:Packaging_guidelines#Licensing● このページの表に書いてある書式
2014-09-14 9
spec ファイルのヘッダー
● Group: System/I18n/Japanese– 以下の中から適当なものを選びます
https://en.opensuse.org/openSUSE:Package_group_guidelines● Url: http://example.com/
– アップストリーププロジェクトの URL
2014-09-14 10
spec ファイルのヘッダー
● Source0: hoge-%{version}.tar.xz– ビルドに使用するソースファイル– %{version} は Version: タグの値で置き換えらる– hoge-1.0.0.tar.xz は OBS パッケージのディレクトリに
入っている必要あり● 注意
– Source0: http://example.com/hoge-%{version}.tar.xzのような指定も可能であるが、 URL が存在しないとエラーになる
● この場合もファイルはパッケージ内に含まれている必要あり
2014-09-14 11
spec ファイルのヘッダー
● BuildRequires: libfoo-devel >= 1.0BuildRequires: libbar-devel– ビルドに必要なパッケージを列挙します
● Requires:– インストール時に必要な依存関係(データ、依存するコマンド)– BuildRequires で指定したライブラリのパッケージは自動的に
Requires に追加されるので書いてはいけない● libfoo1 など
2014-09-14 12
%description, %prep
● %description– パッケージの長い説明
● %prep– 特に変更は必要なし– どのようにアーカイブを展開して cd するかを書く
● デフォルトは、展開して、 %{name}-%{version} へ cd
2014-09-14 13
%build, %install
● %build– どうやってビルドするかをシェルスクリプトのように書く– %configure は openSUSE で必要なオプションをつけて
./configure をしてくれます● %install
– ファイルをインストールために必要なコマンドを書く● (%clean)
– openSUSE では必要ない
2014-09-14 14
%files
● このパッケージが提供するファイル一覧を列挙する● %{_bindir}/hoge
– /usr/bin/hoge を追加する● %dir %{_datadir}/hoge/
– /usr/share/hoge ディレクトリを追加する● %dir %{_datadir}/hoge/*
– /usr/share/hoge 以下のすべてのファイルを追加● %doc
– 絶対パスの場合 : ドキュメントとしてファイルをパッケージに追加– 相対パスの場合 : /usr/share/packages/hoge/ にファイルを
コピーし、ドキュメントとして追加
2014-09-14 15
ライブラリの場合の注意
● インストール・アンインストール時に /sbin/ldconfig– %post -p /sbin/ldconfig– %postun -p /sbin/ldconfig
● インストール先は %{_libdir} で指定– ビルドターゲットに応じて変わる
● /usr/lib64 (x86_64)● /usr/lib (i586)
2014-09-14 16
更新履歴
● パッケージの内容を更新して、提出するときは更新履歴に追記する
● $ osc vc– %changelog の下には直接書かない– hoge.changes に書き込まれる
-------------------------------------------------------------------Mon Mar 24 19:00:00 UTC 2014 – [email protected]
- Initial package
2014-09-14 17
ソースファイルの登録
● OBS パッケージの中身はおよそ以下の通り– パッチが入る場合も
● osc add を使って登録する– $ osc add hoge-1.0.0.tar.xz– $ osc add hoge.spec– $ osc add hoge.changes
2014-09-14 18
ビルド
● ローカルビルド– $ osc build –-local-package openSUSE_13.1 x86_64
● 後ろの2つのオプションは省略すると ~/.oscrc に書かれた値が使われる
● 一度 commit するまで --local-package が必要● アップロード
– $ osc commit● オンラインの OBS サーバーにファイルを転送