我想将修补程序应用于rootfs中/ etc中的文件。所以我创建了一个Yocto食谱
├── test_1.0.bb
└── files
└── sshd.patch
我已经开始创建.bb文件,如下所示:
DESCRIPTION = "Patch files"
SECTION = "Patch"
LICENSE = "MIT"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = " \
file://sshd.patch \
"
我尝试使用do_install()进行不同的“配置”,但它们不起作用。 (当我做“bitbake core-image-base”时没有问题,但是在rootfs中没有应用补丁)
*英语不是我的母语;请原谅我的任何错误。
答案 0 :(得分:1)
如果要修补现有的配方文件,则需要创建openssh_%.bbappend
文件而不是test_1.0.bb
,并在SRC_URI
中放置要替换的每个文件(即file://sshd_config
而不是sshd.patch
。
然后,由于这些文件已经存在,您无需从原始配方修改do_install。否则你需要添加
do_install_append(){
install -Dm 0644 ${S}/myfile ${D}${sysconfdir}/example/myfile
}
# and modify FILES_${PN} if file is added in unusual place
顺便说一下,配方不能在没有冲突的情况下覆盖另一个配方文件,因此另一个解决方案是在创建rootfs时使用ROOTFS_POSTPROCESS_COMMAND对其进行修补。 (这就是为什么你不能使用test_0.1.bb
)。
否则,会自动应用补丁文件,因此您无需修改do_patch或do_install。
如果您添加了食谱,请不要忘记将其添加到IMAGE_INSTALL_append = " test"
local.conf
的图片中。