如何编写patch文件

维博 2011-02-28 11:10:54
如何编写patch文件啊?

就是需要自己编改写一个xen版本的patch文件

谁知道patch文件的语法、格式、结构什么的么??非常感谢

(不是diff和patch命令)
...全文
568 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wenxy1 2011-03-02
  • 打赏
  • 举报
回复
查patch命令手册.
山椒π 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 foreverdengwei 的回复:]

就是有个软件xway是针对xen3.0.3和kernel 2.6.16.29打的patch
现在显卡虚拟化中我们又需要这个 在xen上安上这个xway
简单的对xen打patch然后编译不行
所以觉得需要自己根据xway的patch 改写一个xen的patch 然后加到src.rpm源码中的SPEC文件中 重新编译
不知道行不行?我不懂 请指导 谢
[/Quote]

没有非常明白你的问题,但大体上如果是一个补丁无法直接应用到当前源码上的话,一般是由于版本不对,即这个补丁当时制作时对应的xen的版本和你现在的不一样。

可以尝试这样,先rpmbuild -bp *xen.SPEC将xen的源码解压开,然后复制一份比如复制为xen.orig

之后打开xway的patch,根据里面的内容自己在xen中找到对应的地方加入改动。之后再重新打补丁即可。

你可以可以直接先编译好原来的,之后一边添加一边编译测试,最后再汇总所有改动。

patch的内容一般都很简洁明了的,比如:


diff --git a/include/linux/fb.h b/include/linux/fb.h
【这儿表示一个小段的开始】
index c10163b..1296af4 100644
--- a/include/linux/fb.h (一般表示原文件,a是原文件对应的目录)
+++ b/include/linux/fb.h (一般表示改动过的文件,b是其目录名,所以可以直接看他们的下层目录来找)
@@ -403,6 +403,7 @@ struct fb_cursor {
#include <linux/notifier.h>
#include <linux/list.h>
#include <linux/backlight.h>
+#include <linux/slab.h>
【+表示增加一行】
#include <asm/io.h>

struct vm_area_struct;
@@ -862,10 +863,22 @@ struct fb_info {
【@@ -862... 此处表示对应该文件的多少行多少列】
/* we need the PCI or similiar aperture base/size not
smem_start/size as smem_start may just be an object
allocated inside the aperture so may not actually overlap */
- resource_size_t aperture_base;
- resource_size_t aperture_size;
【-表示删除改行】
+ struct apertures_struct {
+ unsigned int count;
+ struct aperture {
+ resource_size_t base;
+ resource_size_t size;
+ } ranges[0];
+ } *apertures;
};

+static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
+ struct apertures_struct *a = kzalloc(sizeof(struct apertures_struct)
+ + max_num * sizeof(struct aperture), GFP_KERNEL);
+ a->count = max_num;
+ return a;
+}
+
#ifdef MODULE
#define FBINFO_DEFAULT FBINFO_MODULE
#else
维博 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tornadory 的回复:]

最好不要用这种方法,使用diff是最方便的

直接修改patch的话,如果你改的很少又刚好修改其中一行而且保证其行数不会乱掉可以,不然行数乱了它对应不上就无法使用了

建议你用rpmbuild -bp ****.spec

然后在BUILD/xen*目录下复制一份进行修改,之后通过diff制作一个补丁,新补丁再加到SPEC中并重新打包。
[/Quote]

就是有个软件xway是针对xen3.0.3和kernel 2.6.16.29打的patch
现在显卡虚拟化中我们又需要这个 在xen上安上这个xway
简单的对xen打patch然后编译不行
所以觉得需要自己根据xway的patch 改写一个xen的patch 然后加到src.rpm源码中的SPEC文件中 重新编译
不知道行不行?我不懂 请指导 谢
山椒π 2011-03-01
  • 打赏
  • 举报
回复
最好不要用这种方法,使用diff是最方便的

直接修改patch的话,如果你改的很少又刚好修改其中一行而且保证其行数不会乱掉可以,不然行数乱了它对应不上就无法使用了

建议你用rpmbuild -bp ****.spec

然后在BUILD/xen*目录下复制一份进行修改,之后通过diff制作一个补丁,新补丁再加到SPEC中并重新打包。

维博 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiazhen 的回复:]

为什么不用diff和patch命令?
[/Quote]

需要自己改写一个xen的patch 然后加到src.rpm源码中的SPEC文件中 重新编译
你能给点意见么 谢
  • 打赏
  • 举报
回复
为什么不用diff和patch命令?

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧