# 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](https://foruda.gitee.com/images/1722332239732664195/3a362d03_8171711.png "before.png") - **原始patch对应的源码代码行:** ![原始patch对应的源码代码行](https://foruda.gitee.com/images/1722332544499083943/8c412aea_8171711.png "src1.png") - **该patch应当对应的源码代码行:** ![该patch应当对应的源码代码行](https://foruda.gitee.com/images/1722332800009022153/28b0b783_8171711.png "src2.png") - **调整后的patch:** ![调整后的patch](https://foruda.gitee.com/images/1722332860256808709/b692bba0_8171711.png "after.png") ### 基本工作原理 - RPM源码包的SPEC文件中会指定需要打入的patch文件列表,并使用 %autosetup 命令或 %patch 命令打入补丁。
- 本工具目前支持 %autosetup,后续将进一步支持 %patch。 %autosetup命令会依次打入patch文件列表中的patch文件。
- 工具会尝试将patch文件列表中的patch文件依次打入,中途如果遇到了不匹配的patch,工具将停止打入,并尝试将该patch通过文本匹配算法调整为不存在文本冲突的新patch,并返回该patch,尚未尝试打入的patch不再处理。 - **注意**:本工具仅关注patch的文本冲突问题,即使patch能够正常打入,请进一步检查是否存在语法、语义冲突导致的编译构建问题,功能缺陷等问题。 ### 使用说明 - **工具访问地址:** https://patch.rvpt.top
- **工具主界面:** ![工具主界面](doc/img/main.png) - **工具输入:** RPM源码包的开放Git仓库地址(输入到主界面的文本框中)
- **工具输出:** 工具获取Git仓库HEAD指向的版本尝试将patch文件列表中的patch文件依次打入,中途如果遇到了不匹配的patch,工具将停止打入,并尝试将该patch通过文本匹配算法调整为不存在文本冲突的新patch,如果能够成功生成调整后的patch,该界面将显示调整后patch的下载链接