当前位置: 技术问答>linux和unix
如何编写patch文件
来源: 互联网 发布时间:2016-11-11
本文导语: 如何编写patch文件啊? 就是需要自己编改写一个xen版本的patch文件 谁知道patch文件的语法、格式、结构什么的么??非常感谢 (不是diff和patch命令) | 没有非常明白你的问题,但大体上如果是一个补...
如何编写patch文件啊?
就是需要自己编改写一个xen版本的patch文件
谁知道patch文件的语法、格式、结构什么的么??非常感谢
(不是diff和patch命令)
就是需要自己编改写一个xen版本的patch文件
谁知道patch文件的语法、格式、结构什么的么??非常感谢
(不是diff和patch命令)
|
没有非常明白你的问题,但大体上如果是一个补丁无法直接应用到当前源码上的话,一般是由于版本不对,即这个补丁当时制作时对应的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
#include
#include
+#include
【+表示增加一行】
#include
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
|
最好不要用这种方法,使用diff是最方便的
直接修改patch的话,如果你改的很少又刚好修改其中一行而且保证其行数不会乱掉可以,不然行数乱了它对应不上就无法使用了
建议你用rpmbuild -bp ****.spec
然后在BUILD/xen*目录下复制一份进行修改,之后通过diff制作一个补丁,新补丁再加到SPEC中并重新打包。
直接修改patch的话,如果你改的很少又刚好修改其中一行而且保证其行数不会乱掉可以,不然行数乱了它对应不上就无法使用了
建议你用rpmbuild -bp ****.spec
然后在BUILD/xen*目录下复制一份进行修改,之后通过diff制作一个补丁,新补丁再加到SPEC中并重新打包。
|
为什么不用diff和patch命令?
|
查patch命令手册.