我使用systemd
和dhcp-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文件夹中)覆盖为enable
:SYSTEMD_AUTO_ENABLE_dhcp-client = "disable"
答案 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。
这更灵活,可以应用于不受您的情况限制的更多场景。