用于替换文件的 bbappend 文件
bbappend file for replacing a file
我在 yocto 中创建了一个新层:meta-abc,一个食谱:abc-efg_0.1.bb 和一个 .bbapend:abc-efg_01.bbapend 文件。
使用 bbappend 文件,我想覆盖来自 intel-edison 开发板的文件。
更确切地说,来自 /etc/wpa_supplicant/ 的 wpa_supplicant.conf。
此 wpa_supplicant.conf 已从另一层 (meta-intel-edison-distro) 创建。
我可以在 /etc/ 中写入我的文件,这样我的食谱和 bbappend 文件就可以正常工作了。
我可以 bitbake 我的食谱,但是当我尝试创建图像时,我收到消息:
" * check_data_file_clashes: 软件包 abc-efg 想要安装文件 /home/atr-int/Desktop/Yocto/yocto-edison/build_edison/tmp/work/edison-poky-linux/edison-image/1.0-r0/rootfs/etc/wpa_supplicant/wpa_supplicant.conf
但是该文件已经由 package * wpa-supplicant 提供
* opkg_install_cmd: 无法安装包 abc-etc。
“
这是我的 bbappend 文件内容:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://wpa_supplicant.conf"
do_install_append() {
install -d ${D}${sysconfdir}/wpa_supplicant
install -m 0755 ${WORKDIR}/wpa_supplicant.conf
${D}${sysconfdir}/wpa_supplicant
}
谁能给我点小费?
谢谢。
您不应该从另一个食谱重写 wpa_supplicant.conf
,因为文件会发生冲突。
相反,将您的 abc-efg_01.bbapend
重命名为 wpa-supplicant_%.bbappend
,它应该可以工作。
如果出于某种原因你需要在 abc-efg
中包含 wpa_supplicant.conf
,你需要添加一个 wpa-supplicant_%.bbappend
,你需要在其中删除 wpa_supplicant.conf
。
使用 bbappend 文件为 p910nd 安装额外文件:
p910目录布局
.
├── files
│ ├── p910nd.conf
│ └── p910nd.init
└── p910nd_0.97.bbappend
bbappend 文件的内容
SUMMARY = "install init script"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://p910nd.init"
SRC_URI += "file://p910nd.conf"
RDEPENDS_${PN} += "bash"
do_install_append() {
install -D -m 0644 ${WORKDIR}/p910nd.conf ${D}${sysconfdir}/default/p910nd
install -D -m 0755 ${WORKDIR}/p910nd.init ${D}/etc/init.d/p910nd
}
在我的测试中,do_install_append 如果文件已经安装在目标中,也会覆盖该文件。
我在 yocto 中创建了一个新层:meta-abc,一个食谱:abc-efg_0.1.bb 和一个 .bbapend:abc-efg_01.bbapend 文件。 使用 bbappend 文件,我想覆盖来自 intel-edison 开发板的文件。 更确切地说,来自 /etc/wpa_supplicant/ 的 wpa_supplicant.conf。 此 wpa_supplicant.conf 已从另一层 (meta-intel-edison-distro) 创建。 我可以在 /etc/ 中写入我的文件,这样我的食谱和 bbappend 文件就可以正常工作了。 我可以 bitbake 我的食谱,但是当我尝试创建图像时,我收到消息:
" * check_data_file_clashes: 软件包 abc-efg 想要安装文件 /home/atr-int/Desktop/Yocto/yocto-edison/build_edison/tmp/work/edison-poky-linux/edison-image/1.0-r0/rootfs/etc/wpa_supplicant/wpa_supplicant.conf 但是该文件已经由 package * wpa-supplicant 提供 * opkg_install_cmd: 无法安装包 abc-etc。 “ 这是我的 bbappend 文件内容:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://wpa_supplicant.conf"
do_install_append() {
install -d ${D}${sysconfdir}/wpa_supplicant
install -m 0755 ${WORKDIR}/wpa_supplicant.conf
${D}${sysconfdir}/wpa_supplicant
}
谁能给我点小费? 谢谢。
您不应该从另一个食谱重写 wpa_supplicant.conf
,因为文件会发生冲突。
相反,将您的 abc-efg_01.bbapend
重命名为 wpa-supplicant_%.bbappend
,它应该可以工作。
如果出于某种原因你需要在 abc-efg
中包含 wpa_supplicant.conf
,你需要添加一个 wpa-supplicant_%.bbappend
,你需要在其中删除 wpa_supplicant.conf
。
使用 bbappend 文件为 p910nd 安装额外文件:
p910目录布局
.
├── files
│ ├── p910nd.conf
│ └── p910nd.init
└── p910nd_0.97.bbappend
bbappend 文件的内容
SUMMARY = "install init script"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://p910nd.init"
SRC_URI += "file://p910nd.conf"
RDEPENDS_${PN} += "bash"
do_install_append() {
install -D -m 0644 ${WORKDIR}/p910nd.conf ${D}${sysconfdir}/default/p910nd
install -D -m 0755 ${WORKDIR}/p910nd.init ${D}/etc/init.d/p910nd
}
在我的测试中,do_install_append 如果文件已经安装在目标中,也会覆盖该文件。