====== Tips ======
* [[https://stackoverflow.com/questions/51002891/overwriting-yocto-classes-through-meta-layer|Overwriting Yocto Classes through meta-layer]]
===== manual patching =====
According to ''src/poky/meta/classes-recipe/kernel-yocto.bbclass'' kernel patches are skipped if 'patchdir' exists.
``kernel-yocto.bbclass`` cannot handle this special case so patches needs to be applied manually.
OVERLAY_PREFIX="${SOURCE_PREFIX}/linux_5_15/overlay"
SRC_URI:append = " \
file://0003-xxx.patch;patchdir=${OVERLAY_PREFIX};subdir=${OVERLAY_PREFIX} \
file://0004-xxx.patch;patchdir=${OVERLAY_PREFIX};subdir=${OVERLAY_PREFIX} \
"
do_patch:prepend() {
patch -b -d ${OVERLAY_PREFIX} -p 1 -i 0003-xxx.patch
patch -b -d ${OVERLAY_PREFIX} -p 1 -i 0004-xxx.patch
}
It is possible to use generic Yocto patcher and call bb.build.exec_func('patch_do_patch', d)
as it is performed by recipes:
* ''src/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb''
* ''src/meta-openembedded/meta-networking/recipes-support/netcat/netcat-openbsd_1.195.bb''
===== black list recipe =====
* create bbappend and set ''COMPATIBLE_MACHINE = "x"'' to prevent use of recipe
* BBMASK
* BBMASK += "meta-rity/meta/recipes-core/init-ifupdown/init-ifupdown_%.bbappend"
===== Pass env variables to bitbake =====
To control additional or user defined recipe's variables from env (usefull for CI) add variables to ''BB_ENV_PASSTHROUGH_ADDITIONS'':
export foo="BAR"
export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS} foo BUILD_VERSION CI_COMMIT_BRANCH CI_COMMIT_SHORT_SHA"
bitbake ...
===== add files to rootfs =====
''IMAGE_PREPROCESS_COMMAND += "rsync -a --exclude=.git ${FILE_SRC}/rootfs/* ${WORKDIR}/rootfs;"''
===== override .conf =====
No override or appends mechanism. But some workaround possible:
- override variables in ''local.conf''
- create new conf file and inherit old one with ''require''
- create new conf file with the same name to mask old file (take care of layer priority)
===== MACHINEOVERRIDES =====
When creatung new machine.conf based on existing one [[https://docs.yoctoproject.org/ref-manual/variables.html?highlight=machineoverrides#term-MACHINEOVERRIDES|MACHINEOVERRIDES]] can be used:
[[https://github.com/Freescale/meta-freescale/blob/master/classes/machine-overrides-extender.bbclass|machine-overrides-extender.bbclass]]
===== logging =====
inherit logging
bb.debug("HELLO = %s" % HELLO)