我怎样才能覆盖另一个.bbappend

时间:2016-12-21 15:36:27

标签: linux yocto dhcp openembedded

我使用systemddhcp-client制作了一张图片。在dhcp中的配方meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp中有一个bbappend,它创建了一个dhclient.service。我想修改(或覆盖)这个文件但是当我启动bitbake时,我有一个错误告诉我Applying patch 0001-dhclient-modify-interface.patch can't find file to patch at input line 5

这是我的dhclient.service补丁:

Index: 4.3.3-r0/dhclient.service
===================================================================
--- 4.3.3-r0.orig/dhclient.service
+++ 4.3.3-r0/dhclient.service
@@ -6,7 +6,7 @@ After=syslog.target network.target
 Type=forking
 PIDFile=/var/run/dhclient.pid
 EnvironmentFile=-/etc/default/dhcp-client
-ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $INTERFACES
+ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases eth0

 [Install]
 WantedBy=multi-user.target

我的dhcp _%。bbappend:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://dhclient.service"

我也尝试覆盖该文件,但似乎完全忽略了我的文件......

我想默认启用此功能但是如何将此ligne(存在于dhcp文件夹中)覆盖为enableSYSTEMD_AUTO_ENABLE_dhcp-client = "disable"

2 个答案:

答案 0 :(得分:3)

好吧,你不能轻易修补文件,因为它不是源文件的一部分。

但是,使用

添加.bbappend就足够了
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SYSTEMD_AUTO_ENABLE_dhcp-client = "enable"

并在dhclient.service的图层中放置recipes-core/dhcp/dhcp/dhclient.service

这假设您的图层与meta-systemd相比具有更高的优先级。

答案 1 :(得分:1)

另一个适用于我的解决方案是首先禁用原始bbappend,然后添加自己的bbappend。

BBMASK = "meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/original.bbappend"放入build/conf/layers.conf以禁用原始上游bbappend,然后将新的bbappend添加到您自己的配方中。那样可以"覆盖" bbappend。

这更灵活,可以应用于不受您的情况限制的更多场景。