# autorpmpatch
**Repository Path**: rvsmart-porting/autorpmpatch
## Basic Information
- **Project Name**: autorpmpatch
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-30
- **Last Updated**: 2024-08-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Auto RPM Patch
### 问题
在Linux发行版软件包中使用第三方的patch(如漏洞、缺陷修复patch)是软件包维护中经常进行的一项工作。但使用第三方的patch常常面临代码行错配问题(如下图所示 zlib SRPM包中(https://gitee.com/src-openeuler/zlib) zlib-Optimize-CRC32.patch 的问题),无法直接使用,需要开发者人工修改patch,繁琐且易错。
- **原始patch:**

- **原始patch对应的源码代码行:**

- **该patch应当对应的源码代码行:**

- **调整后的patch:**

### 基本工作原理
- RPM源码包的SPEC文件中会指定需要打入的patch文件列表,并使用 %autosetup 命令或 %patch 命令打入补丁。
- 本工具目前支持 %autosetup,后续将进一步支持 %patch。 %autosetup命令会依次打入patch文件列表中的patch文件。
- 工具会尝试将patch文件列表中的patch文件依次打入,中途如果遇到了不匹配的patch,工具将停止打入,并尝试将该patch通过文本匹配算法调整为不存在文本冲突的新patch,并返回该patch,尚未尝试打入的patch不再处理。
- **注意**:本工具仅关注patch的文本冲突问题,即使patch能够正常打入,请进一步检查是否存在语法、语义冲突导致的编译构建问题,功能缺陷等问题。
### 使用说明
- **工具访问地址:** https://patch.rvpt.top
- **工具主界面:**

- **工具输入:** RPM源码包的开放Git仓库地址(输入到主界面的文本框中)
- **工具输出:** 工具获取Git仓库HEAD指向的版本尝试将patch文件列表中的patch文件依次打入,中途如果遇到了不匹配的patch,工具将停止打入,并尝试将该patch通过文本匹配算法调整为不存在文本冲突的新patch,如果能够成功生成调整后的patch,该界面将显示调整后patch的下载链接