フォーラム: bitbake (スレッド #11329)

bitbake ファイルの書き方 (2006-06-01 20:46 by tnemoto #22665)

BitBake File の書き方 (自己流です。間違ってたら書き直して下さい)。
一応 公開可であると表明しておきます。

まず、置き場を決めて、local.conf の BBFILES 変数に、その置き場を記入します。
ex) BBFILES := "/OE/org.openembedded.oz354x/packages/*/*.bb /OE/org.openembedded.oz354x/pkg/*/*.bb" など

packages/*/*.bb は本家パッケージ。それに加えて、自分の bb ファイルの置き場を書いておきます。これで、必要に応じて本家 bb file も参照してコンパイルしてくれます。

次に、先程指定したディレクトリの中にパッケージ名のディレクトリを作成します。
例えば、foo というパッケージを作成するなら /OE/org.openembedded.oz354x/pkg/foo を作成します。その中に、packagename_version.bb というファイル名で先程指定したディレクトリに配置します。foo_1.0.bb 等です。
ほかにコンパイルに必要なパッチなどがある場合、更に "files" というサブディレクトリを作成し、配置します。

bb ファイルの内容: 最低限の中身
GNU Automake を使ったインストーラーが入っている場合。
--------------
DESCRIPTION = "パッケージの解説を書きます。英語がいいのかなぁ?"
PR="r1"
SECTION = "applications"
PRIORITY = "optional"
MAINTAINER = "Name <e-mail@address>"
HOMEPAGE = "http://www.aaa.bbb.ccc.jp/"
LICENSE = "GPL"
DEPENDS = "glibc"
SRC_URI = "http://aaa.bbb.ccc.jp/archive-1.0.tar.gz"
inherit autotools
-------------
最低限、この程度です。

キーワードの説明

inherit filename :
クラスファイルを読み込みます。例えば、GNU autotools を使っているソフトウェアであれば、inherit autotools となります。基本的なコンパイル手順はクラスファイルに記載されていますので、変更点のみを記述すればすみます。
inherit base : 最低限の設定。細かい設定は自分で書く必要がある。
inherit autotools : autotools (いわゆる configure / make / make installするソフトウェア)
inherit opie : OPIE 環境でコンパイルするソフトウェア

include filename :
別のファイルを読み込みます。
たとえば、version 毎に異なる bb file を作成するような場合に共通部分を分離するのに使ったりします。


DESCRIPTION
パッケージの解説を書く変数。一行程度でしょうか。
PR="r1"
リリース番号を書きます。バイナリパッケージをリリースするたびに番号を増やします。
SECTION
ソフトウェアの分類を書きます。 "applications" など。分類は後述。
PRIORITY
ソフトウェアの重要度。optional, required, standard より選択
MAINTAINER
ソフトウェアの管理者。パッケージの管理者ではない。
HOMEPAGE
ソフトウェアの Web Page
LICENSE
ライセンスの例。下に記述例。なんでもありみたいですが、わかりやすく、間違いなく。"GPL" "BSD" など
DEPENDS
コンパイル時に必要なパッケージ。RDEPENDS が実行時?
SRC_URI = "http://aaa.bbb.ccc.jp/archive-1.0.tar.gz"
ソフトウェアの取得元。



SECTION 一覧
---------------------------
admin
applications
apps
base
base/shell
bootloader
console
console/editors
console/games
console/multimedia
console/network
console/networking
console/scientific
console/shells
console/telephony
console/tools
console/util
console/utils
console/utils"
dev-lang
devel
devel/libs
devel/python
devel/ruby
devel/tcltk
e/apps
e/libs
e/utils
games
games/arcade
gnome/libs
gnome/multimedia
gpe
gpe/base
gpe/libs
gpe/multimedia
interpreters
kernel
kernel/module
kernel/modules
kernel/userland
libs
libs/inputmethods
libs/multimedia
libs/network
media-gfx
multimedia
net
net-misc
network
opie/applets
opie/applications
opie/base
opie/fonts
opie/games
opie/inputmethods
opie/libs
opie/multimedia
opie/security
opie/settings
opie/shell
unknown
utils
x11
x11-misc
x11/apps
x11/base
x11/fonts
x11/games
x11/gnome
x11/gnome/libs
x11/graphics
x11/libs
x11/multimedia
x11/network
x11/office
x11/scientific
x11/utils
x11/wm

LICENSE の例
---------------------------
MIT
Apache License, Version 2.0
Artistic
Artistic|GPL
As is
BSD
BSD GPL
BSD GPLv2
BSD Sleepycat
BSD-4
BSD-ADV
BSD-X
Bitstream Vera
Boost Software License
CLOSED
ClarifiedArtistic
Classpath
EGENIX
FNORB
GD
GPL
GPL Artistic
GPL BSD
GPL LGPL
GPL LGPL AFL
GPL LGPL FDL
GPL LGPL X11
GPL LGPL"
GPL MIT Artistic"
GPL PSF
GPL QPL
GPL libsamplerate
GPL"
GPL-2
GPL2
GPLV2
GPLv2
GPLv3
IBM
IPL
Info-ZIP
Kermit
LGPL
LGPL GPL
LGPL MPL
LGPL/GPL
MIT
MIT-X
MPL LGPL
MPL/LGPL/GPL
MetaKit
OFL
OSL
OpenLDAP
PD
PRELINK
PSF
PYCODES
PYRAF
Perl
Pine
QPL
SIL Open Font License
Squeak License
Unknown
Unspecified
X-BSD
X-MIT
X11
XFree86
Xorg
ZPL
broadcom
bzip2
cron
flite
freetype
gpe-theme-foxbox
howl
jpeg
libdes
libffi
libgsm
libmng
libpng
makedev
netperf
ngrep
nokia
nsd
ntp
openssh
python-crypto
python-sgmlop
rtaudio
sharp-binary-only
snes9x
snmp++
tcl
tcp-wrappers
unknown
vim
xmame
xrdb
zaurus-updater
zlib
zsh

RE: bitbake ファイルの書き方 (2006-06-01 21:04 by tnemoto #22666)

さて、一筋縄ではいかない場合
(これも公開可です。間違いがあったら直して下さい)

まずはパッチとか。
SRC_URI = "http://aaa.bbb.ccc/foo-1.0.tar.gz \
http://aaa.bbb.ccc/foo.patch.gz;patch=1"
などとすると foo-1.0.tar.gz を展開したあと、foo.patch.gz を伸長して、勝手にパッチをあててくれます。Patch Level のデフォルトは 1.
Patch Level を変えるときは、pnum を指定します。 http://aaa.bbb.ccc/foo.patch.gz;patch=1;pnum=0 など。
gz 圧縮くらいは適当に処理してくれますが、 lzh などで配布されている場合には、foo/files の下に展開して配置しておくか、do_compile_setup () {} セクションを
設置して自力で展開するスクリプトを書くことで解決できます。foo/files の下のファイルは file://foo.patch などとして参照できます。

もし、foo-1.0.tar.gz を展開したときに foo-1.0/* に展開されない場合には "S" 変数を定義する必要があります。
もし、foo/* に展開されるならば
S = "${WORKDIR}/foo"
としておきます。その他, "PN" (パッケージ名), "PV" (Version) なども使用することができますが、bb file 名がこれらに影響を与えますので注意してください。
#22665 への返信

bitbake ファイルの書き方 Multi Package の bb file (2006-06-01 21:15 by tnemoto #22668)

PACKAGES = "package1 package2 package3"
FILES_package1 = "filenames1"
FILES_package2 = "filenames2"
FILES_package3 = "filenames3"
DESCRIPTION_package1 = "説明1"
DESCRIPTION_package2 = "説明2"
DESCRIPTION_package3 = "説明3"

などとして、パッケージ毎に記述する。
ファイルの指定は 1番目から順に選択されるため、パッケージの記述の順番に注意する必要がある。
#22665 への返信

RE: bitbake ファイルの書き方 ライブラリ (2006-06-01 21:21 by tnemoto #22670)

Zaurus 本体にインストールするパッケージを作成するだけでなく、ほかのプログラムのコンパイル時に使用できるように、${STAGING_DIR} 以下にもファイルを配置する必要がある。
細かい指定は do_stage() {} 部に書くとよい。ヘッダファイルとライブラリ、automake 用のファイルなどをインストールする必要があるかと。
${STAGING_DIR} ${STAGING_INCDIR} ${STAGING_LIBDIR} ${STAGING_DATADIR} などの変数が利用できる。
#22665 への返信

RE: bitbake ファイルの書き方 ライブラリ (2006-06-03 22:07 by (del#20313) #22710)

おおお、詳細な説明ありがとうございます。

補足として、パッケージングまでに以下の段階があります。

fetch ファイル取得の段階
unpack アーカイブの展開の段階
patch パッチを当てる段階
configure configure/qmakeとかmakefileを作る段階
compile コンパイルの段階
stage 仮展開でいいのかな、クロス用環境にインストールする段階
install パッケージしてインストールする段階
package パッケージ作る段階

各々がpythonの関数に割り当てられていて、
上記の段階の名前にdo_をつけると定義できます。
その関数の中は、シェルスクリプトで記述すること。
pythonで書きたい場合は、関数名の前にpythonをつけてあげると、
pythonのスクリプトとして解釈されます。

また、各段階の前後でなんかしたい場合は、
preend,postend(だっったかな・・)を末尾につけます。
例:コンパイル前になんかしたい場合:do_compile_preend()。

ご自分が定義したbbファイルがどういう風に展開されるかを
確認したい場合は、bitbake -e hogehoge.bbのように
-eをつけると環境の設定なんかがdumpされるので便利
#22670 への返信