【问题标题】:How can I override another .bbappend如何覆盖另一个 .bbappend
【发布时间】:2016-12-21 15:36:27
【问题描述】:

我已经用systemddhcp-client 构建了一个图像。在meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp 中的配方dhcp 中有一个创建dhclient.service 的bbappend。我想修改(或覆盖)这个文件,但是当我启动 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"

【问题讨论】:

  • 请说明您使用的 OpenEmbedded 版本。

标签: linux yocto dhcp openembedded


【解决方案1】:

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

但是,添加.bbappend 应该就足够了

FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SYSTEMD_AUTO_ENABLE_dhcp-client = "enable"

然后将dhclient.service 放入您的层recipes-core/dhcp/dhcp/dhclient.service

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

【讨论】:

    【解决方案2】:

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

    BBMASK = "meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/original.bbappend" 放入您的 build/conf/layers.conf 以禁用原始上游 bbappend,然后在您自己的配方中创建一个新的 bbappend。这种方式可以“覆盖” bbappend。

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

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多