我怎样才能覆盖另一个 .bbappend
How can I override another .bbappend
我用 systemd
和 dhcp-client
构建了一个图像。在 meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp
中的食谱 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"
嗯,你不能轻易地修补文件,因为它不是源代码的一部分。
但是,添加一个.bbappend
和
应该就足够了
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SYSTEMD_AUTO_ENABLE_dhcp-client = "enable"
并将 dhclient.service
放入您位于 recipes-core/dhcp/dhcp/dhclient.service
的层中。
这假定您的图层与 meta-systemd
相比具有更高的优先级。
还有另一个适合我的解决方案是先禁用原始的 bbappend,然后添加您自己的。
将 BBMASK = "meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/original.bbappend"
放入您的 build/conf/layers.conf
以禁用原始的上游 bbappend,然后将新的 bbappend 放入您自己的配方中。这样可以"override" bbappend。
这样更灵活,可以适用于更多的场景,不受你的case限制。
我用 systemd
和 dhcp-client
构建了一个图像。在 meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp
中的食谱 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"
嗯,你不能轻易地修补文件,因为它不是源代码的一部分。
但是,添加一个.bbappend
和
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SYSTEMD_AUTO_ENABLE_dhcp-client = "enable"
并将 dhclient.service
放入您位于 recipes-core/dhcp/dhcp/dhclient.service
的层中。
这假定您的图层与 meta-systemd
相比具有更高的优先级。
还有另一个适合我的解决方案是先禁用原始的 bbappend,然后添加您自己的。
将 BBMASK = "meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/original.bbappend"
放入您的 build/conf/layers.conf
以禁用原始的上游 bbappend,然后将新的 bbappend 放入您自己的配方中。这样可以"override" bbappend。
这样更灵活,可以适用于更多的场景,不受你的case限制。