SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
レシピの作り方入門
Report
Nobuhiro Iwamatsu
Follow
Software Developer at home
Feb. 26, 2014
•
0 likes
•
62,525 views
1
of
70
レシピの作り方入門
Feb. 26, 2014
•
0 likes
•
62,525 views
Download Now
Download to read offline
Report
Technology
2014/2/22 に開催された Yocto Japan の勉強会のプレゼンテーション資料です。
Nobuhiro Iwamatsu
Follow
Software Developer at home
Recommended
YoctoをつかったDistroの作り方とハマり方
wata2ki
13.5K views
•
21 slides
Yocto bspを作ってみた
wata2ki
7.2K views
•
17 slides
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
12.8K views
•
49 slides
Yocto Project ハンズオン / 参加者用資料
Nobuhiro Iwamatsu
8.3K views
•
10 slides
Yocto Project ハンズオン プレゼン用資料
Nobuhiro Iwamatsu
24K views
•
58 slides
DockerコンテナでGitを使う
Kazuhiro Suga
18.3K views
•
8 slides
More Related Content
What's hot
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
68.6K views
•
63 slides
Dockerからcontainerdへの移行
Kohei Tokunaga
16.3K views
•
36 slides
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
12.8K views
•
31 slides
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
83.4K views
•
51 slides
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
7K views
•
1 slide
オンラインゲームの仕組みと工夫
Yuta Imai
867.8K views
•
56 slides
What's hot
(20)
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
•
68.6K views
Dockerからcontainerdへの移行
Kohei Tokunaga
•
16.3K views
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
•
12.8K views
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
•
83.4K views
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
•
7K views
オンラインゲームの仕組みと工夫
Yuta Imai
•
867.8K views
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
•
42.1K views
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
•
6.6K views
initとプロセス再起動
Takashi Takizawa
•
49.1K views
コンテナネットワーキング(CNI)最前線
Motonori Shindo
•
31.3K views
非同期処理の基礎
信之 岩永
•
57.1K views
Redisの特徴と活用方法について
Yuji Otani
•
100.6K views
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
•
47K views
Yoctoで綺麗なkernel configを作る
shimadah
•
3.8K views
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
•
74.4K views
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
•
172.2K views
initramfsについて
Kazuhiro Nishiyama
•
14.2K views
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
•
6.7K views
BuildKitの概要と最近の機能
Kohei Tokunaga
•
4.5K views
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
•
30.3K views
Recently uploaded
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
113 views
•
11 slides
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
91 views
•
24 slides
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
32 views
•
44 slides
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
83 views
•
1 slide
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
72 views
•
18 slides
CatBoost on GPU のひみつ
Takuji Tahara
982 views
•
30 slides
Recently uploaded
(13)
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
113 views
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
•
91 views
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
•
32 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
83 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
72 views
CatBoost on GPU のひみつ
Takuji Tahara
•
982 views
画像生成AIの問題点
iPride Co., Ltd.
•
127 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
226 views
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
•
321 views
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
90 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
137 views
指側面を入力インタフェース化するリング型デバイス
sugiuralab
•
5 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
245 views
レシピの作り方入門
1.
レシピの作り方入門 岩松 信洋 メール: iwamatsu@nigauri.org Twitter: @iwamatsu
2.
アジェンダ 1.自己紹介 2. Yoctoのビルド概要 3.レシピの作り方 4.まとめ
3.
自己紹介
4.
自己紹介 ● 名前: 岩松信洋(いわまつ のぶひろ) ● 大抵のアカウントは iwamatsu ● kuma dasu さんの紹介で発表することになりま した。 ● 普段は
Linux kernel、UBoot 、BSPの開発 ● UBoot SH/rmobile Maintainer ● Debian Project Official Developer
5.
Debian からの刺客!? クルッ . ハ,,ハ ミ
_ ドスッ /1べ:;:;:r─‐-! ( ゚ω゚ )彡―─┴┴─― . /iィ.:.:.:.:ヾ|断だ!\ / つ お断りし / ハ,,ハ /ヘ レj_.:.:.lるが! \ ~′ /´ └―─┬/ ( ゚ω゚ ) お断りします . /.:`ソ =三_`y‐i:! \ ∪ ∪ / / \ /.:::i゛:.. `ヾニノ j! .\ / ((⊂ ) ノ\つ)) ./;;i::rミ、 ;:' '! . \∧∧∧∧∧D/ (_⌒ヽ 丶iゝ``' ,:' ,t'! < お e> ヽ ヘ } ` 丶 、 /rj! < の し 断 b> ε≡Ξ ノノ `J ────────────< 予 ま わ i>──────────── ハ,,ハ お断り<. 感 す り a> ______ ( ゚ω゚ ) します<. !! n > / ./お だ ,! __〃`ヽ 〈_ /∨∨∨∨\ / ! 断 が,! γ´⌒´--ヾvーヽ⌒ヽ /お断りします \ / ,ハ,,ハ ! り ,! /⌒ ィ `i´ ); /. ハ,,ハ \ /( ゚ω゚ )`ー‐,! / ノ^ 、___¥__ / ( ゚ω゚ ) \ `ヽ、 \_,! ! ,,,ノ爻\_ _人 / .(| y |) \ `ヽ、ノ\,!
6.
Yocto なんてぶっ 潰してやるぜ!
7.
というわけではありません ので、安心してください。 Yocto なんてぶっ 潰してやるぜ!
8.
Yoctoのビルド概要
9.
ビルド概要 レシピ bitbake イメージ
10.
ビルド概要/レシピとは? ● ソフトウェアのビルド、インストール方法が書 かれたテキストファイル ● シェルスクリプト + Python を混ぜて記述 ● ソース取得からパッケージ化までの動作を記述 ● 料理のレシピと同じようなもの
11.
ビルド概要 レシピ coreimageminimal bitbake イメージ
12.
ビルド概要 レシピ bitbake coreimageminimal 依存 busybox eglibc …… イメージ
13.
ビルド概要 レシピ bitbake coreimageminimal 依存 busybox eglibc 依存 gcccross binutilscross …… …… イメージ
14.
ビルド概要 レシピ bitbake coreimageminimal 依存 busybox eglibc 依存 gcccross binutilscross …… …… 依存 gettextnative zlibnative …… イメージ
15.
ビルド概要 レシピ bitbake イメージ coreimageminimal 依存 busybox eglibc 依存 gcccross binutilscross …… …… 依存 gettextnative zlibnative …… ビルド gettextnative zlibnative ……
16.
ビルド概要 レシピ bitbake イメージ coreimageminimal 依存 busybox eglibc 依存 gcccross binutilscross …… …… ビルド gcccross 依存 gettextnative zlibnative binutilscross …… ビルド依存 …… ビルド gettextnative zlibnative ……
17.
ビルド概要 レシピ bitbake イメージ coreimageminimal 依存 busybox eglibc 依存 gcccross binutilscross …… …… ビルド ビルド busybox gcccross 依存 gettextnative zlibnative eglibc …… ビルド依存 binutilscross …… ビルド依存 …… ビルド gettextnative zlibnative ……
18.
ビルド概要 レシピ bitbake インストール coreimageminimal イメージ coreimageminimal.bz2 zImage 依存 busybox eglibc 依存 gcccross binutilscross …… …… ビルド ビルド busybox gcccross 依存 gettextnative zlibnative eglibc …… ビルド依存 binutilscross …… ビルド依存 …… ビルド gettextnative zlibnative ……
19.
ビルド概要 *.conf レシピ bitbake インストール coreimageminimal イメージ coreimageminimal.bz2 zImage 依存 busybox eglibc 依存 gcccross binutilscross …… …… ビルド ビルド busybox gcccross 依存 gettextnative zlibnative eglibc …… ビルド依存 binutilscross …… ビルド依存 …… ビルド gettextnative zlibnative ……
20.
ビルド概要/レイヤー
21.
ビルド概要/レイヤー poky/meta busybox linuxyocto
22.
ビルド概要/レイヤー poky/metayocto busybox poky/meta busybox linuxyocto
23.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox poky/meta busybox linuxyocto myprogram
24.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox poky/meta busybox myprogram linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義
25.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox poky/meta busybox myprogram linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義
26.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto myprogram busybox 機能上書き poky/meta busybox linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義
27.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox myprogram 機能追加 機能上書き poky/meta busybox linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義
28.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox myprogram 機能追加 機能上書き poky/meta busybox linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義 最終的な レシピ busybox linuxyocto myprogram
29.
ビルド概要/レイヤー linuxyocto metafoo poky/metayocto busybox myprogram 機能追加 機能上書き poky/meta busybox linuxyocto ビルドディレクト リ/conf/bblayers.conf で定義 最終的な レシピ busybox linuxyocto myprogram
30.
ビルド概要/レシピ poky/metayocto/recipescore/busybox/ | busybox1.20.2 | ` pokytiny | ` defconfig ` busybox_1.20.2.bbappend poky/meta/recipescore/busybox/ | busybox1.20.2 | | … | ` wget_dl_dir_fix.patch | busybox.inc | busybox_1.20.2.bb ` files | … ` umount.busybox
31.
ビルド概要/レシピ poky/metayocto/recipescore/busybox/ | busybox1.20.2 | ` pokytiny | ` defconfig recipescore/busybox/busybox_1.20.2.bbappend ` busybox_1.20.2.bbappend + poky/meta/recipescore/busybox/ | busybox1.20.2 | | … | ` wget_dl_dir_fix.patch | busybox.inc | busybox_1.20.2.bb ` files | … ` umount.busybox recipescore/busybox/busybox_1.20.2.bb bbappend で定義した 内容が上書きされた busybox_1.20.2.bb
32.
レシピの作り方
33.
レシピの作り方 ● レシピのひな形を作成 ● レシピ説明、セクション名の定義 ● ライセンス定義 ● ソースファイル定義 ● タスク定義 ● その他変数
34.
レシピの作り方 ● yoctolayer create でひな形作成 $ ./poky/scripts/yoctolayer create myrecipes
35.
レシピの作り方 ● yoctolayer create でひな形作成 $ ./poky/scripts/yoctolayer create myrecipes Please enter the layer priority you'd like to use for the layer: [default: 6] 6 Would you like to have an example recipe created? (y/n) [default: n] y Please enter the name you'd like to use for your example recipe: [default: example] Would you like to have an example bbappend file created? (y/n) [default: n] n New layer created in metamyrecipes. Don't forget to add it to your BBLAYERS (for details see metamyrecipesREADME). カレントディレクトリにmetamyrecipes ディレクトリが作成 され、そこにひな形が作成される
36.
実行後のディレクトリ構成 metamyrecipes | COPYING.MIT | README | conf | ` layer.conf | recipesexample ` example | example0.1 | | example.patch | ` helloworld.c ` example_0.1.bb
37.
example_0.1.bb レシピ名: example バージョン: 0.1 として処理される。 レシピ名とバージョンは _ (アンダースコア)で 区切る。
38.
example_0.1.bb DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
39.
レシピ説明、セクション名の定義 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
40.
レシピ説明、セクション名の定義 ● DESCRIPTION: レシピの説明 簡単な説明は SUMMARY を使う ● SECTION: レシピが所属するセクション 一応ビルド時にチェックされる (meta/classes/oelint.bbclass)
41.
ライセンス定義 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
42.
ライセンス定義 ● LICENSE: ライセンス名 ● LIC_FILES_CHKSUM: ファイル名とmd5 COPYING 、LICENSE ファイルのパス ファイルのライセンスヘッダ部を参照する場合もある file://ファイル名;beginline=5;endline=20;md5=チェックサム値 (指 定されたファイルの5行目から20行目にあるライセンスヘッダのmd5 チェックサムを確認する。) COMMON_LICENSE_DIRはmeta/files/commonlicenses/ がデ フォルト値
43.
ソースファイル定義 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
44.
ソースファイル定義 ● SRC_URI: ソースファイルの一覧 ソースファイルはビルドに必要なパッチや設 定ファイルを含む スペースで区切る ● 様々なプロトコルをサポート file、git、svn、http、etc...
45.
タスク定義 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
46.
タスク定義 ● Bitbake によってビルド時に実行される処理 ● 基本タスクと実行される順番が決まっている 1. do_fetch: SRC_URI で指定された場所からソースコードをダウンロード 2. do_unpack: ソースコードを展開 3. do_patch: ローカルパッチを適用 4. do_configure: configureを実行 5. do_compile: makeを実行 6. do_install: make install を実行 7. do_populate_sysroot: sysroot にインストール 8. do_package: パッケージ化用のディレクトリにインストール 9. do_package_write: パッケージの作成(ipk, deb, rpm) 10. do_build: ビルド終了用のタスク
47.
タスク定義 ● Bitbake によってビルド時に実行される処理 ● 基本タスクと実行される順番が決まっている 1. do_fetch: SRC_URI で指定された場所からソースコードをダウンロード 2. do_unpack: ソースコードを展開 3. do_patch: ローカルパッチを適用 4. do_configure: configureを実行 5. do_compile: makeを実行 実際に実行されるタスクは bitbake c listtasks レシピ名 で確認できる 6. do_install: make install を実行 7. do_populate_sysroot: sysroot にインストール 8. do_package: パッケージ化用のディレクトリにインストール 9. do_package_write: パッケージの作成(ipk, deb, rpm) 10. do_build: ビルド終了用のタスク
48.
タスク定義 $ bitbake c listtasks busybox do_fetchall do_devshell do_package_write_ipk do_cleansstate do_build do_configure do_cleanall do_populate_lic do_package_write do_populate_sysroot do_package_setscene do_menuconfig do_populate_lic_setscene do_packagedata_setscene do_patch do_packagedata do_listtasks do_checkuriall do_compile do_fetch do_checkuri do_clean do_package_write_ipk_setscene do_package do_unpack do_install do_populate_sysroot_setscene
49.
タスク定義 1. do_fetch: SRC_URI で指定された場所からソースコードをダウンロード 2. do_unpack: ソースコードを展開 3. do_patch: ローカルパッチを適用 4. do_configure: configureを実行 5. do_compile: makeを実行 6. do_install: make install を実行 7. do_populate_sysroot: sysroot にインストール 8. do_package: パッケージ化用のディレクトリにインストール 9. do_package_write: パッケージの作成(ipk, deb, rpm) 10. do_build: ビルド終了用のタスク
50.
タスク定義 1. do_fetch: SRC_URI で指定された場所からソースコードをダウンロード 2. do_unpack: ソースコードを展開 3. do_patch: ローカルパッチを適用 4. do_configure: configureを実行 ● 5. do_compile: makeを実行 ● ● 6. do_install: make install を実行 タスクは上書き、追加ができる タスク間には依存関係がある 自作のタスクを定義可能できる 7. do_populate_sysroot: sysroot にインストール 8. do_package: パッケージ化用のディレクトリにインストール 9. do_package_write: パッケージの作成(ipk, deb, rpm) 10. do_build: ビルド終了用のタスク
51.
タスク定義の上書き、追加 ● タスクの上書き do_configure() { echo ''Override do_configure'' } ● タスクの追加 do_compile_append() { touch ${S}/test } _append はタスクの処理後に追加する。タスク処理前 は_prependをつける
52.
タスク定義の依存関係と作成 ● タスク間には依存関係がある addtask package before do_build after do_install package タスクをbuildの前、installの後に実行する ● 自作のタスクを定義できる addtask mytask before do_patch after do_unpack do_mytask() { ...... } mytask タスクをpatchの前、unpackの後に実行する用 設定
53.
その他変数 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://$ {COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c o helloworld } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
54.
その他変数 PR: レシピのリビジョン。レシピを更新した時に インクリメントする。初めて作った時は必要な い。 ● S: ソースディレクトリ。展開済みのソースディ レクトリ ● WORKDIR:
レシピの作業が行われるディレクト リ。 ● D: インストール先ディレクトリ ● bindir: /usr/bin ●
55.
その他変数 PN: レシピ(パッケージ)名 ● PV: レシピ(パッケージ)のバージョン ● DEPENDS:
ビルドに必要なレシピ ● DEPENDS = ''zlib openssl'' RDEPENDS: 実行に必要なパッケージ(or レシピ) ● EXTRA_OECONF: configure実行時に渡すオプショ ン ● EXTRA_OEMAKE: make実行時に渡すオプション ● その他たくさん... ●
56.
その他 ● autotools や pkg-config
を使った手順は? 基本機能をまとめたクラスが提供されている。 inherit 命令を使って機能を継承する。 inherit autotools pkg-config ● レシピ共通の項目をまとめたい include命令が使える。項目をまとめたファイルを指定。 include boost.inc
57.
その他変数 PN: レシピ(パッケージ)名 ● PV: レシピのバージョン ● DEPENDS:
ビルドに必要なレシピ ● DEPENDS = ''zlib openssl'' RDEPENDS: 実行に必要なパッケージ(or レシピ) ● EXTRA_OECON: configure 実行時に渡すオプション ●
58.
レシピのビルド ● metamyrecipesのパスを conf/bblayers.conf の BBLAYERS に追加する BBLAYERS ?= " /home/iwamatsu/yocto/test/poky/meta /home/iwamatsu/yocto/test/poky/metayocto /home/iwamatsu/yocto/test/poky/metayoctobsp /home/iwamatsu/yocto/test/metamyrecipes "
59.
レシピのビルド ● bitbakelayers showlayers でビルド環境のレイヤーのを チェックする $ bitbakelayers showlayers layer path priority ========================================== …… metayoctobsp /home/iwamatsu/yocto/test/poky/metayoctobsp 5 metamyrecipes /home/iwamatsu/yocto/test/metamyrecipes 6
60.
レシピのビルド ● bitbakelayers showrecipes でビルド環境のレイヤーの をチェックする $ bitbakelayers showrecipes | grep A 1 ^example Parsing recipes..done. example: metamyrecipes 0.1
61.
レシピのビルド ● bitbake example を実行する $ bitbake example Build Configuration: BB_VERSION = "1.18.0" BUILD_SYS = "x86_64linux" NATIVELSBSTRING = "Unknown" TARGET_SYS = "i586pokylinuxuclibc" MACHINE = "hoge" DISTRO = "hogefoo" DISTRO_VERSION = "1.4.2" TUNE_FEATURES = "m32 i586" TARGET_FPU = "" meta metayocto metayoctobsp = "dylan:d734ab491a30078d43dee5440c03acce" metamyrecipes = "<unknown>:<unknown>" ……
62.
既存のレシピの変更方法 .bbを直接変更しない ● .bbappendファイルを作成して上書き(オーバー ライド)する ● .bbappendファイルで上書きするときは、レシピ 名(PN)とレシピのバージョン(PV)が同じである必 要がある。 ●
63.
既存のレシピの変更方法 ● metamyrecipes/recipesexample/example 以下 にexample_0.1.bbappend を作成する install タスクに ${S}/test ファイルを作成する処 理を追加 do_install_append() { touch ${S}/test }
64.
既存のレシピの変更方法 ● bitbakelayers showappends でレシピの変更状 態を確認する $ bitbakelayers showappends | grep ^example A 1 Parsing recipes..done. example_0.1.bb: /home/iwamatsu/yocto/test/metamyrecipes/recipes example/example/example_0.1.bbappend
65.
既存のレシピの変更方法 ● bitbake example を再度実行
66.
既存のレシピの変更方法 ● bitbake example を再度実行 do_install_append() { touch ${S}/test } example_0.1.bbappendの install タスク example_0.1.bbの install タスク do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} }
67.
既存のレシピの変更方法 ● bitbake example を再度実行 do_install_append() { touch ${S}/test } example_0.1.bbappendの install タスク example_0.1.bbの install タスク do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} } do_install() { install d ${D}${bindir} install m 0755 helloworld ${D}${bindir} touch ${S}/test }
68.
まとめ
69.
まとめ ● レシピはソフトウェアのビルド、インストール方法が書かれたテキストファ イル ● シェルスクリプト + Python を混ぜて記述 ● ソース取得からパッケージ化までの動作を記述 ● 各レシピは依存関係を持つ ● 変数とタスクが定義されている ● 変数とタスクは変更可能 ● yoctolayer create でひな形が作成できる ● bitbakelayers でビルド環境の確認ができる ● レシピを変更するときは .bbappend を使って上書きする
70.
質問ありますか?