2020年10月4日日曜日

Athrill2 の deb パッケージ作成を git-buildpackage で管理する

前回、 Athrill の deb パッケージ作成手順を確立したので、今回はそれを git-buildpackage で管理するための手順を確認する。

作業用コンテナ立ち上げ

cowbuilder 実行の権限を渡すために --privileged オプションを付けてコンテナ起動。

docker run -it --rm -v "$(pwd):/work" --workdir="/work" --privileged ubuntu:18.04

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-alternativesathrill2 コマンドを登録

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

修正をコミット

git add .
git commit -m 'Update debian directory for athrill.'
dpkg-source --commit

ビルド

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

  1. add_debian_directorymaster へマージ(GitHub なら Pull Request 出したり)
  2. リモートリポジトリがあるならタグ・ブランチを push
    • debian/0.A.0-1
    • pristine-tar

この作業で作ったリポジトリが以下。

mikoto2000/athrill-target-rh850f1x-deb: athrill-target-rh850f1x deb package.

おまけ

以上。

参考資料

0 件のコメント:

コメントを投稿