给dwm应用alpha透明补丁时出现patch失败错误如何解决?
dwm alpha补丁打补丁失败解决方案
核心原因是你已经提前打上了gridmode补丁,修改了dwm的核心源文件,当前源码和alpha-6.1补丁适配的原版dwm 6.1源码存在差异,导致补丁无法匹配到指定代码行,所以大部分hunk应用失败。你可以按照以下任意一种方法解决:
- 方法一:按优先级顺序重新打补丁
优先恢复到原版dwm 6.1源码状态,你可以直接重新解压一份原版dwm 6.1源码包,也可以执行patch -R -p1 < ../patches/dwm-gridmode-对应版本.diff回退已打的gridmode补丁。
恢复到原版代码后,先打alpha补丁,执行patch -p1 < ../patches/dwm-alpha-6.1.diff,确认补丁完全应用成功、可以正常编译后,再执行命令打gridmode补丁。基础渲染类补丁优先打、布局扩展类补丁后打可以大幅降低冲突概率。 - 方法二:手动合并冲突内容
如果你不想改动已经调试好的gridmode相关配置,可以手动处理冲突:- 打开每个后缀为
.rej的冲突文件,文件内会明确标注补丁想要新增、修改的代码片段 - 对照
.rej的内容,打开对应的源文件(比如drw.c.rej对应修改drw.c),找到相似逻辑的代码位置,手动把补丁要求的改动补充进去 - 所有冲突处理完成后,删除所有
.rej、.orig后缀的临时文件,再执行make测试编译是否正常
- 打开每个后缀为
- 方法三:更换兼容补丁
你也可以直接找已经适配了gridmode补丁的alpha补丁版本,替换你现在用的补丁文件后重新执行打补丁命令,不会出现冲突。
注意:如果你之前自行修改过config.def.h的自定义配置,也会导致config.def.h的hunk匹配失败,这种情况只需手动在config.def.h里加上alpha补丁要求的透明参数配置项即可。
内容的提问来源于stack exchange,提问作者dibusure
相关产品推荐
相关产品推荐

