發表文章

目前顯示的是 5月, 2018的文章

yocto recipe : (4) recipe's task 撰寫

Recipe's Task recipe 包含許多 tasks, 以下紀錄關於 recipe 的 task 撰寫 1. 列出 recipe 的 tasks yijyun@wd-disk: build $ bitbake libunistring -c listtasks 2. function types of tasks 根據[1] 的 3.6.1 Promoting a Function to a Task. 能成為 task 的 function 只有兩種類型. 此外需要以 "do_" 為開頭 shell function do_shell_msg () { bbwarn 'hello' } BitBake-style Python functions python do_py_msg () { import time bb . warn( "hello %s " % ( time . strftime( '%Y%m %d ' , time . gmtime()))) } 3. 新增/刪除/插入 task 新增 以 addtask 加入 new task, 可以搭配 before 與 after 決定順序 # syntax addtask task [before task] [after task] # e.g. addtask do_msg before do_configure after do_fetch 插入 以現有 task function 名稱. 尾部使用 append or prepend 即可 do_msg_prepend () { bbwarn 'before' } do_msg_append () { bbwarn 'before' } do_msg () { bbwarn 'kkk' } addtask do_msg 刪除 deltask 特定 task 即可. 切記使用此方式會把此任務相依的 task 一併刪除. 如果要忽略某個 ta

yocto recipe : (3) 使用 External Source 來編譯軟體

Yocto 有提供許多 fetch code 的方式[3], 大都是以抓取外網的方式. 雖然很齊全, 但是開發時候多少需要以本機上的 source code 作為來源進行編譯. 這邊就紀錄如何讓 yocto 直接抓取本機上的 source code 使用本機上的 source code 這邊介紹兩種方式. 使用硬碟上的 source code, 而不是透過 yocto fetch 去網路上抓取 (1) git fetcher: 基於 git fetcher, 僅修改 src_uri 參數, 就可以用本機上的 source code (2) external source: 基於 externalsrc class. 有兩種方式達成: (1) 於 recipe 直接新增 external source 變數 (2)於 local.conf 新增特定 recipe 的 external source 參數. 事前準備 於 build 目錄底下建立 3rd-pkgs. 把下載的 giflib 程式碼放置於此 [ yijyun@localhost build ] $ pwd /media/disk1-1/Github/poky/build [ yijyun@localhost build ] $ ls 3rd-pkgs/ giflib-5.1.4.tar.bz2 新增 meta-test 於 yocto. 並在此 meta-layer 底下新增 giflib 目錄. 存放之後的 bb files [ yijyun@localhost build ] $ bitbake-layers create-layer meta-test [ yijyun@localhost build ] $ bitbake-layers add-layer meta-test [ yijyun@localhost build ] $ mkdir meta-test/recipes-example/giflib git fetcher 使用 git fetcher 有兩個重點: src_uri 的 protocol 參數需要改為 file. S 的路徑要改為 S="