前回、 Athrill の deb パッケージ作成手順を確立したので、今回はそれを git-buildpackage で管理するための手順を確認する。
作業用コンテナ立ち上げ
cowbuilder
実行の権限を渡すために --privileged
オプションを付けてコンテナ起動。
deb パッケージの作成に必要な環境を構築
# deb パッケージビルドに必要な環境変数を設定
export DEBFULLNAME="mikoto2000"
export DEBMAIL=mikoto2000@gmail.com
export LONGNAME="mikoto2000"
export USER="mikoto2000"
# tzdata の configuration が走るので、 Azia/Tokyo を選択して(Geographic area: 6, Time zone: 79)
export TZ=Asia/Tokyo
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 必要なパッケージのインストール
apt-get update
apt-get install -y build-essential dh-make git-buildpackage fakeroot devscripts pbuilder cdbs git vim cowbuilder
git config --global user.name "mikoto2000"
git config --global user.email "mikoto2000@gmail.com"
deb パッケージビルドに必要なファイル群の取得・生成
# deb パッケージ用のディレクトリ作成
mkdir athrill-rh850f1x
cd athrill-rh850f1x
git init
git commit --allow-empty -m 'Initial commit.'
# オリジナルのソースコード取得
git submodule add https://github.com/toppers/athrill.git
git submodule add https://github.com/toppers/athrill-target-rh850f1x.git
git commit -m 'Added upstream sources.'
# 作業用ブランチ作成
git checkout -b add_debian_directory
# deb パッケージに必要なファイル群を生成
dh_make --createorig -s -e ${DEBMAIL} -p athrill-rh850f1x_0.A.0 -y
git add debian
git commit -m 'Added debian directory.'
# サンプルファイル類削除
rm -rf debian/*.ex
rm -rf debian/*.EX
rm -rf debian/README.*
rm -rf debian/athrill-rh850f1x-docs.docs
メタデータ編集
・ debian/control
Source: athrill-rh850f1x
Section: misc
Priority: optional
Maintainer: kanetugu2015 <kanetugu2015@gmail.com>
Bugs: https://github.com/toppers/athrill-target-rh850f1x
Build-Depends: cdbs, debhelper (>= 10)
Standards-Version: 4.1.2
Homepage: https://github.com/toppers/athrill-target-rh850f1x
Package: athrill-rh850f1x
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Athrill emulator for RH850F1x.
Athrill core version: 1.1.1
コピーライト修正
・ debian/copyright
TOPPERS ライセンスに修正。
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: athrill-terget-rh850f1x
Source: https://github.com/toppers/athrill-target-rh850f1x
Files: *
Copyright: 2019 by Center for Embedded Computing Systems
Graduate School of Informatics, Nagoya Univ., JAPAN
2019 by ESM, Inc.
License: TOPPERS License
上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
再配布(以下,利用と呼ぶ)することを無償で許諾する.
(1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
表示,この利用条件および下記の無保証規定が,そのままの形でソース
コード中に含まれていること.
(2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
証規定を掲載すること.
(3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
できない形で再配布する場合には,次のいずれかの条件を満たすこと.
(a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
権表示,この利用条件および下記の無保証規定を掲載すること.
(b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
告すること.
(4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
により直接的または間接的に生じたいかなる損害に関しても,その責任を負
わない.
ビルドスクリプト修正
・ debian/rules
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
install/athrill-rh850f1x::
install -pd $(DEB_DESTDIR)/usr/bin
install -pm 755 athrill/bin/linux/athrill2 $(DEB_DESTDIR)/usr/bin/athrill2-rh850f1x
install -pd athrill-target-rh850f1x/params/rh850f1k/* $(DEB_DESTDIR)/usr/share/doc/athrill/params/rh850f1k
build/athrill-rh850f1x::
cd athrill-target-rh850f1x/build_linux; make
バイナリファイルのホワイトリスト作成
・ debian/source/include-binaries
athrill/bin/linux/athrill2
changelog を修正
・ debian/changelog
athrill-rh850f1x (0.A.0-1) unstable; urgency=medium
* Initial release.
-- mikoto2000 <mikoto2000@gmail.com> Sun, 04 Oct 2020 10:14:22 +0900
メンテナースクリプトの作成
・ debian/postinst
インストール後に、 update-alternatives
で athrill2
コマンドを登録
update-alternatives --install /usr/bin/athrill2 athrill2 /usr/bin/athrill2-rh850f1x 10
・ debian/prerm
アンインストール前に、 update-alternatives
で登録した athrill2
設定を削除
update-alternatives --install /usr/bin/athrill2 athrill2 /usr/bin/athrill2-rh850f1x 10
修正をコミット
ビルド
cowbuilder
でクリーンなビルド環境を作って、その中でビルド。
# ビルド環境を作る
cowbuilder --create --basepath /var/cache/pbuilder/bionic.cow --distribution bionic
# ビルド
gbp buildpackage -us -uc --git-pristine-tar-commit --git-pbuilder --git-pbuilder-options=" --basepath /var/cache/pbuilder/bionic.cow --source-only-changes" --git-tag --git-ignore-new --git-upstream-tag=add_debian_directory
add_debian_directory
: deb パッケージを作る際の元ネタに使うブランチを指定
ビルドが実行され、以下 3 つが生成される。
athrill_0.A.0-1_amd64.deb
- タグ
debian/0.A.0-1
- ブランチ
pristine-tar
マージ, push
add_debian_directory
をmaster
へマージ(GitHub なら Pull Request 出したり)- リモートリポジトリがあるならタグ・ブランチを push
debian/0.A.0-1
pristine-tar
この作業で作ったリポジトリが以下。
mikoto2000/athrill-target-rh850f1x-deb: athrill-target-rh850f1x deb package.
おまけ
あ… pristine-tar ブランチがサイズ制限に引っかかった。 pic.twitter.com/Bjuik40nVe
— 大雪 命 (@mikoto2000) October 4, 2020
以上。
参考資料
- 「Debianセキュリティ勧告」発行までの対応作業の内側 - ゲストブログ
- git-buildpackageを用いたdebパッケージ管理方法の紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ
- pbuilder でパッ ケージをビルドしてみる
- Ubuntuでdebパッケージのお手軽クリーンルーム(chroot)ビルド環境を構築するには - ククログ(2014-11-21)
- Debian JP Project - Debian ポリシーマニュアル - パッケージ間の関連性の宣言
- 5.2. パッケージのメタ情報
- update-alternatives(8) — dpkg — Debian wheezy — Debian Manpages
- update-alternativesに管理してもらうコマンドを追加する。 - Qiita
- 第5章 debianディレクトリーにあるその他のファイル
0 件のコメント:
コメントを投稿