跳到主要内容

z_kmpkg_apply_patches

注意

这是 kmpkg内部用于实现核心逻辑的辅助函数。 其行为和参数可能会以不兼容的方式突发变更,且无任何通知。 请勿在自定义端口中使用该函数

为指定的源码树批量应用补丁文件。

用法

z_kmpkg_apply_patches(
SOURCE_PATH <path-to-source>
[QUIET]
PATCHES <patch>...
)

参数说明

SOURCE_PATH

必填参数,指定要应用补丁的源码根目录路径(补丁会被应用到该目录下的文件/目录)。

PATCHES

必填参数,指定需要应用的补丁文件列表(可传入多个补丁路径)。

  • 若传入相对路径:会以端口目录(port directory)的根目录为基准解析;
  • 若传入绝对路径:直接使用该路径指向的补丁文件。

QUIET

可选参数,启用“静默模式”:

  1. 不打印补丁应用过程中的任何日志信息;
  2. 即使补丁应用失败(如补丁无法适配源码),也不会触发 CMake 致命错误(fatal error),构建流程不会中断。

注意事项

对于体积较大的补丁文件,kmpkg 内部的常见用法是:

  1. 通过 kmpkg_download_distfile 从远程地址下载补丁文件;
  2. 将下载后的补丁文件绝对路径传入 PATCHES 参数,而非直接将大补丁文件放在端口目录中(减少端口包体积)。

示例(仅作内部逻辑参考)

# 下载大补丁文件
kmpkg_download_distfile(
PATCH_FILE
URLS "https://example.com/large-patch.patch"
FILENAME "large-patch.patch"
SHA512 1234567890abcdef...
)

# 应用补丁(内部用法示例,禁止自定义端口使用)
z_kmpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES "${PATCH_FILE}" "${CMAKE_CURRENT_LIST_DIR}/small-patch.patch"
)

源码

scripts/cmake/z_kmpkg_apply_patches.cmake