Skip to content

apply_patches.sh 说明文档

文件路径: scripts/apply_patches.sh脚本类型: 辅助工具 状态: 稳定

概述

自动应用补丁脚本,用于CI环境或本地开发中自动应用 patches/ 目录下的补丁文件。该脚本会智能查找并应用指定组件目录下的所有 .patch 文件,解决了CI中硬编码补丁文件名的问题。

使用方法

bash
# 基本用法
./scripts/apply_patches.sh <component>

# 示例 - 应用 Linux Mainline 补丁
./scripts/apply_patches.sh linux_mainline

# 示例 - 应用 U-Boot 补丁
./scripts/apply_patches.sh uboot-imx

# 示例 - 在子模块目录中调用
cd third_party/linux_mainline
../../scripts/apply_patches.sh linux_mainline

参数说明

参数说明必需/可选
component组件名称,对应 patches/<component>/ 目录必需

支持的组件名称:

  • linux_mainline - 主线内核补丁
  • linux-imx - NXP BSP 内核补丁
  • uboot-imx - U-Boot 补丁
  • busybox - BusyBox 补丁

执行流程

  1. 检查补丁目录是否存在
  2. 查找该目录下所有 .patch 文件
  3. 按文件名排序逐个应用补丁
  4. 如果 git apply --3way 失败,尝试 --reject 模式
  5. 报告应用结果(成功/失败)

依赖关系

依赖的脚本

依赖的工具

  • git - 版本控制工具,用于应用补丁
  • bash - Shell 解释器

环境变量

无特殊环境变量要求

输出产物

  • 直接修改目标源码目录的文件
  • 控制台输出应用结果

故障排除

常见错误

错误: 补丁目录不存在: patches/xxx原因: 指定的组件没有对应的补丁目录 解决: 检查 patches/ 目录下是否存在该组件的子目录

错误: 补丁应用失败 原因: 源码版本与补丁不匹配,或者有冲突 解决:

  1. 检查源码版本是否正确
  2. 查看生成的 .rej 文件了解冲突详情
  3. 手动解决冲突后重试

错误: whitespace errors原因: 补丁文件包含尾随空格等格式问题 解决: 这是警告,不影响补丁应用。可以使用 git apply --reject 忽略

设计理念

  1. 自动化 - 无需手动指定补丁文件名
  2. 可扩展 - 新增补丁时无需修改脚本或CI配置
  3. 容错性 - 单个补丁失败不会中断整个流程
  4. 透明性 - 清晰输出每个补丁的应用结果

更新日志

日期版本更新内容
2026-05-031.0初始版本,支持自动应用补丁目录下所有补丁

文档生成时间: 2026-05-03 最后更新: 2026-05-03

Built with VitePress