HaikuPorts のレシピを読む
HaikuPorts ではプログラムやフォントなどをパッケージ化するためのプロジェクトです。 Haiku OS 用にソフトを移植したり、フォントをまとめてインストールできるようにしたければ、レシピを書きましょう。
HaikuPorts ではソフトなどをレシピとして管理しており、レシピにはパッケージの情報やビルド情報が記載されています。
自分でレシピを書けるように既存のレシピを見ていきます。
aobook のレシピを題材にレシピの大まかな内容を説明します。aobook は青空文庫のデータのためのビューアーです。
最初の部分にパッケージの説明やビルドに使われるソースコードやファイルの取得方法を記載します。
SUMMARY="Aozora Bunko text viewer"
DESCRIPTION="Aobook is a viewer for Aozora Bunko which is a digital library \
of Japanese-language literature."
HOMEPAGE="https://osdn.net/projects/aobook/"
COPYRIGHT="2014-2018 Azel"
LICENSE="BSD (3-clause)"
REVISION="1"
SOURCE_URI="https://github.com/hanya/aobook-haiku/archive/v${portVersion/_/-}.tar.gz"
CHECKSUM_SHA256="f840a98b0f0c1f3fa31ae19498bc9051106e068b9af95eb4065643693f7f1e07"
SOURCE_FILENAME="aobook-haiku-${portVersion/_/-}.tar.gz"
SOURCE_DIR="aobook-haiku-${portVersion/_/-}"
次に互換性のある環境を指定します。
ARCHITECTURES="!x86_gcc2 x86 x86_64"
SECONDARY_ARCHITECTURES="x86"
x86_gcc2 でビルドできないため、前に ! 記号がついています。 haikuports.conf で二番目のアーキテクチャが有効なら SECONDARY_ARCHITECTURES に指定されているアーキテクチャが利用できるかもしれません。
PROVIDES ではパッケージ名とインストール後に提供される実行ファイルなどを記載します。app 指定は実行ファイルが /boot/system/apps に入ることを示します。
PROVIDES="
aobook$secondaryArchSuffix = $portVersion
app:Aobook = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libiconv$secondaryArchSuffix
lib:libjpeg$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
REQUIRES は実行時に必要なファイルを指定します。$secondaryArchSuffix は SECONDARY_ARCHITECTURES 用にビルドしたときに _x86 などが追加されることを示します。
BUILD_REQUIRES はビルド時にリンクされるライブラリです。
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libfontconfig$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libiconv$secondaryArchSuffix
devel:libjpeg$secondaryArchSuffix
devel:libpng16$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
makefile_engine
cmd:g++$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:make
cmd:sed
"
BUILD_PREREQUIRES はビルド時に必要な make やコンパイラなどのツールを指定します。ビルドは隔離された環境で行われるため、ここで指定していないツールは利用できずにエラーになることがあります。リンクするライブラリなども同様です。自作のレシピをビルドするときにエラーが出た場合、必要なファイルを見直して追加してみてください。
BUILD ではビルドするコマンドなどを記載します。
BUILD()
{
make -C mlib -f Makefile.haiku $jobArgs OBJ_DIR=objects
make -C src -f Makefile.haiku $jobArgs OBJ_DIR=objects \
default catalogs bindcatalogs
}
INSTALL ではインストール時に実行するコマンドを指定します。特殊なコマンドもあり、ここでは実行ファイルをデスクバーのメニューから実行できるように addAppDeskbarSymlink で登録しています。
INSTALL()
{
mkdir -p $appsDir
cp -af src/objects/aobook $appsDir/Aobook
mkdir -p $dataDir/aobook/doc
cp -af doc/manual.html $dataDir/aobook/doc
addAppDeskbarSymlink $appsDir/Aobook
mkdir -p $dataDir/locale/catalogs/x-vnd.azsky.aobook
cp src/objects/x-vnd.azsky.aobook/* \
$dataDir/locale/catalogs/x-vnd.azsky.aobook
}
このレシピを haikuporter でビルドするとインストール可能なパッケージができます。レシピを haikuports に取り込んでもらえば、いつのまにか HaikuDepot からインストールできるようになります。