Yocto - 补丁尚未应用

Yocto - 补丁尚未应用

我正在使用 Yocto 构建的 Linux。我需要对/etc/ssh/sshd_config文件添加一些更改。我使用以下命令创建了以下补丁文件meld

--- a/sshd_config
+++ b/sshd_config
@@ -116,3 +116,8 @@
 #  AllowTcpForwarding no
 #  PermitTTY no
 #  ForceCommand cvs server
+
+#SFTP server configuration
+Match Group root
+ChrootDirectory /share
+ForceCommand internal-sftp

meta-mylayer/recipes-connectivity/openssh创建了openssh_8.2p1.bbappend包含以下内容的文件:

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += "file://configure_sftp_server.patch"

我将 .patch 文件放在同一目录中。问题是 Yocto 在构建图像期间既不显示错误也不显示警告,但它不应用我的补丁。

创建补丁文件后,我更改了前两行,因为在 meld 版本中它们包含比较文件的绝对路径。我想这可能是问题所在,但我不知道应该写什么。

预先感谢您的任何帮助。

答案1

思考问题是,有一个配置过程会在应用补丁后发生的编译过程中创建 sshd_config,从而覆盖您的补丁。可能有更好的方法(利用并修改该配置过程),但未能找到相关文档,我发现我可以通过添加 do_compile_append 阶段来应用补丁。将文件命名为 .patch 以外的名称可以防止 Yocto 系统尝试应用它两次(并标记错误)。

   SRC_URI += " file://my_patch.latepatch "
    
    do_compile_append() {
       patch -i ../my_patch.latepatch
    }

答案2

openssh如果版本正确的话,我看起来是正确的。您可以在该build/tmp/work文件夹中检查您的补丁是否可以进入构建过程。

我遇到未应用补丁的主要原因是早期层中的一些傻瓜覆盖了do_install_append所有补丁而不是应用正确的补丁。

要找到这样的东西,请执行

grep -r do_install_append sources/*/recipes-connectivity/openssh*

相关内容