如何解决Bitbake 配方缺少 do_patch 任务
我有一个内核模块的基本配方文件,如下所示:
SUMMARY = "my package"
AUTHOR = "me"
PRIORITY = "required"
PR = "r1"
SECTION = "base"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://foo_${PV}.tgz"
SRC_URI += " file://foo.patch;patch=1;apply=yes "
inherit module
EXTRA_OEMAKE += "PREFIX=${D}"
EXTRA_OEMAKE_append_task-install = " -C ${STAGING_KERNEL_DIR} M=${S}"
EXTRA_OEMAKE += "KERNELDIR=${STAGING_KERNEL_DIR}"
我为源代码创建了一个补丁:foo.patch 并将其放置在 files 目录中。令人困惑的部分是我没有收到任何错误,只是没有应用补丁。 do_fetch 和 do_unpack 似乎找到补丁文件就好了,即如果我导航到工作目录,我会找到补丁文件。
基于一些搜索,我尝试了向补丁文件行添加各种属性,但收效甚微。例如:
SRC_URI += " file://foo.patch;patch=1;apply=yes;pnum=0 "
SRC_URI += " file://foo.patch "
SRC_URI += " file://foo.patch;patch=1;apply=yes;patchdir=${WORKDIR} "
我注意到的一件事是 bitbake -c listtasks foo 的输出:
NOTE: Executing RunQueue Tasks
do_build Default task for a recipe - depends on all other normal tasks required to 'build' a recipe
do_buildclean Call 'make clean' or equivalent in
do_checkuri Validates the SRC_URI value
do_checkuriall Validates the SRC_URI value for all recipes required to build a target
do_clean Removes all output files for a target
do_cleanall Removes all output files,shared state cache,and downloaded source files for a target
do_cleansstate Removes all output files and shared state cache for a target
do_compile Compiles the source in the compilation directory
do_configure Configures the source by enabling and disabling any build-time and configuration options for the software being built
do_devpyshell Starts an interactive Python shell for development/debugging
do_devshell Starts a shell with the environment set up for development/debugging
do_fetch Fetches the source code
do_fetchall Fetches all remote sources required to build a target
do_install Copies files from the compilation directory to a holding area
do_listtasks Lists all defined tasks for a target
do_make_scripts
do_package Analyzes the content of the holding area and splits it into subsets based on available packages and files
do_package_qa Runs QA checks on packaged files
do_package_write_rpm Creates the actual RPM packages and places them in the Package Feed area
do_packagedata Creates package metadata used by the build system to generate the final packages
do_populate_lic Writes license information for the recipe that is collected later when the image is constructed
do_populate_sysroot Copies a subset of files installed by do_install into the sysroot in order to make them available to other recipes
do_prepare_recipe_sysroot
do_unpack Unpacks the source code into a working directory
do_patch 没有列出!?这对我来说似乎不正确,但是我的补丁在处理到 ${WORKDIR} 后又没有被应用,而且我没有收到任何错误。我是否需要继承某个类来获取 do_patch 任务?临时目录中也没有 log.do_patch。有什么想法吗?
解决方法
我仍然不确定为什么我的食谱没有“do_patch”任务,但作为一种解决方法,我创建了一个似乎已经成功的自定义任务。我已将以下内容附加到我的食谱中:
do_mypatch(){
patch ${WORKDIR}/foo.c < ${WORKDIR}/foo.patch
}
addtask mypatch before do_compile
为了验证:我执行了 bitbake -c listtasks foo。这是输出:
NOTE: Executing RunQueue Tasks
do_build Default task for a recipe - depends on all other normal tasks required to 'build' a recipe
do_buildclean Call 'make clean' or equivalent in
do_checkuri Validates the SRC_URI value
do_checkuriall Validates the SRC_URI value for all recipes required to build a target
do_clean Removes all output files for a target
do_cleanall Removes all output files,shared state cache,and downloaded source files for a target
do_cleansstate Removes all output files and shared state cache for a target
do_compile Compiles the source in the compilation directory
do_configure Configures the source by enabling and disabling any build-time and configuration options for the software being built
do_devpyshell Starts an interactive Python shell for development/debugging
do_devshell Starts a shell with the environment set up for development/debugging
do_fetch Fetches the source code
do_fetchall Fetches all remote sources required to build a target
do_install Copies files from the compilation directory to a holding area
do_listtasks Lists all defined tasks for a target
do_make_scripts
do_mypatch
do_package Analyzes the content of the holding area and splits it into subsets based on available packages and files
do_package_qa Runs QA checks on packaged files
do_package_write_rpm Creates the actual RPM packages and places them in the Package Feed area
do_packagedata Creates package metadata used by the build system to generate the final packages
do_populate_lic Writes license information for the recipe that is collected later when the image is constructed
do_populate_sysroot Copies a subset of files installed by do_install into the sysroot in order to make them available to other recipes
do_prepare_recipe_sysroot
do_unpack Unpacks the source code into a working directory
注意我的新自定义任务存在:do_mypatch
如果有人可以评论或知道为什么我的食谱没有得到 do_patch 任务的答案,请提供。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。