d.setVar('A','Value') 를 했는데 왜 한 레시피의 다른 태스크에서 읽지 못해?
=> namespace가 다르니까!
# === recipeA === #
SRC_URI="www.google.com"
A='hi'
python do_taskA() {
source = d.getVar('SRC_URI')
origin_A = d.getVar('A')
modifiy_A = origin_A + 'B'
d.setVar('A',modify_A)
}
addtask do_taskA after do_configure befroe do_install
python do_taskB() {
isModified = d.getVar('A')
bb.plain(isModified)
}
addtask do_taskB after do_install before do_package
$ bitbake recipeA
hi
addtask <task> after do_deploy before do_build
append
, prepend
base task
나 기존 task에서 _append() _prepend() 키워드를 덧붙여, 태스크를 확장할 수 있다.do_install_append() {
# 내용 작성
}
LOCAL_BUILD = "${DEPLOY_DIR_IPK}"
python do_mytask () { ... }
이며,def function():
임을 주목하자.do_install
do_build
python do_mytask () { ... }
이며,def function():
임을 주목하자.do_mypatch[nostamp] = "1"
do_mypatch[nostamp] = "1"
혹은$ bitbake recipe -c mypatch -f
do_mypatch[nostamp] = "1"
: mypatch task 를 bitbake build 시, 매번 실행하기 원한다면 [nostamp] = "1"re-run
시킬 수 있다.def get_depends(d):
if d.getVar('SOMECONDITION'):
return "dependecywithcond"
else:
return "dependency"
SOMECONDITION = "1"
DEPENDS = "${@get_depends(d)}"
do_configure:append() {
URI="${@os.path.join('${A}','${B}','${C}')}"
bbplain "${URI}"
}
VARIABLE = "${@<python-command>}"
DATE = "${@time.strftime('%Y%m%d', time.gettime())}"
CPU_COUNT = "${@oe.utils.cpu_count()}"
BB_NUMBER_THREADS = "${@max(${CPU_COUNT}*7//10,1)}"
PARALLEL_MAKE = "-j ${BB_NUMBER_THREADS}"
SOURCE_MIRROR_URL ?= "http://MIRRORSITE"
INHERIT += "own-mirrors"
d.getVar
d.getVar('SRC_URI')
같이, recipe내 변수를 가져올 수 있다.addtask write_data
python do_write_data() {
src_uri=d.getVar("SRC_URI", expand=True)
print(src_uri) # log.do_write_data 에서 확인할 수 있다.
}
args | Description |
---|---|
expand=<bool> | True : 변수의 depend on some other variable도 함께 포함해 output으로 return한다.B = "architecture_${A}" return_=d.getVar("B",expand=True) return_ : "architecture_x86" ------------------------------------------------ False : 변수의 depend on some other variable을 포함하지 않는다. |
do_compile() {
bbplain "-------- COMPILE DEBUG ${CFLAGS} "
${CC} -o test main.c ${CFLAGS} ${LDFLAGS}
}
do_install() {
bbplain "-------- INSTALL DEBUG ${bindir} "
install -d ${D}${bindir}
install -d ${D}${sysconfdir}/systemd/network
install -d ${D}${systemd_system_unitdir}
}
do_install() {
if ... ; then
bbfatal "---- Error: "
fi
}
python task_name () {
bb.fatal("[ERROR] \n"
"A: %s\n"
"B: %s\n" % (A, B)
)
}
$ bitbake -c devshell <recipename>
e.g.
$ bitbake -c devshell myhello
echo CC
echo LDFAGS
소스 수정, makefile, 컴파일 가능
$ source oe-init-build-env [TARGET_BUILD_ENV]
로 bitbake 상태로 들어가자(poky) $ source oe-init-build-env mybuild
(mybuild) $
$ bitbake <TARGET_RECIPE> -c do_devpyshell
(mybuild) $ bitbake core-image-minimal -c do_devpyshell
좋은글 감사합니다. 빠르게 도움이 되었어요. 계속 좋은글 부탁 합니다.