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 补丁
执行流程
- 检查补丁目录是否存在
- 查找该目录下所有
.patch文件 - 按文件名排序逐个应用补丁
- 如果
git apply --3way失败,尝试--reject模式 - 报告应用结果(成功/失败)
依赖关系
依赖的脚本
无
依赖的工具
git- 版本控制工具,用于应用补丁bash- Shell 解释器
环境变量
无特殊环境变量要求
输出产物
- 直接修改目标源码目录的文件
- 控制台输出应用结果
故障排除
常见错误
错误: 补丁目录不存在: patches/xxx原因: 指定的组件没有对应的补丁目录 解决: 检查 patches/ 目录下是否存在该组件的子目录
错误: 补丁应用失败 原因: 源码版本与补丁不匹配,或者有冲突 解决:
- 检查源码版本是否正确
- 查看生成的
.rej文件了解冲突详情 - 手动解决冲突后重试
错误: whitespace errors原因: 补丁文件包含尾随空格等格式问题 解决: 这是警告,不影响补丁应用。可以使用 git apply --reject 忽略
设计理念
- 自动化 - 无需手动指定补丁文件名
- 可扩展 - 新增补丁时无需修改脚本或CI配置
- 容错性 - 单个补丁失败不会中断整个流程
- 透明性 - 清晰输出每个补丁的应用结果
更新日志
| 日期 | 版本 | 更新内容 |
|---|---|---|
| 2026-05-03 | 1.0 | 初始版本,支持自动应用补丁目录下所有补丁 |
文档生成时间: 2026-05-03 最后更新: 2026-05-03