Put in remaining pages and wiki contents.
[ikiwiki.git] / docs / howtos / HowToBuildingPatches.mdwn
1 Go to the original article:[PatchMaking](http://wiki.dragonflybsd.org/index.cgi/Developement/PatchMaking)
2
3 "Index"
4
5 [[!toc  levels=3]]
6
7 # Patches 
8
9 Submitting patches (or diffs) is the usual way of contributing code to DragonFly BSD. All submissions to the project should go to the submit ["mailing lists"](http://www.dragonflybsd.org/main/forums.cgi) (http://www.dragonflybsd.org/main/forums.cgi). When you submit a patch please include a description of what has been changed.
10 Making patches when you only have a copy of the source:
11
12 Let's say you just installed DragonFly BSD and you notice a problem in /bin/cat. Since you have /usr/src sync'ed with the main CVS repository. You go into /usr/src/bin/cat and make your modifications. But now what? Well here is what you can do. But next time try the procdure in the next section. :-)
13
14    1. Copy your version of cat into /usr/src/bin/cat.local
15    2. Run cvsup to resync your source tree back to a clean state.
16    3. Then run diff -ru cat cat.local and submit a patch to the mailing list (with a short description on what you did) 
17
18     
19     root# cp -r /usr/src/bin/cat /usr/src/bin/cat.local
20     root# cd /usr/src/bin
21     root# diff -ru cat cat.local > usr.bin.cat.patch
22
23
24 # Making patches when you have a copy of the repository 
25
26 Step 1: Get a copy of the CVS repository
27 Step 2: Check out a copy of the source from that CVS repository
28 Step 3: Edit the code
29 Step 4: Generate a patch with cvs diff
30
31
32 # Using cvsps 
33
34 I use cvsps 1.3.3 to monitor and extract patchsets from the FreeBSD CVS repository. This utility can be found in /usr/pkgsrc/devel/cvsps.
35
36  **Get a copy of both the FreeBSD and DragonFly cvs repositories.** 
37
38 I use cvsup and the following two files to obtain a partial copy of the two projects (DragonFly and FreeBSD).
39
40     
41     % cat dfly-supfile
42     
43     
44 *default host=cvsup.dragonflybsd.org
45     *default base=/usr/home/okumoto/Work/make  
46     *default prefix=/usr/home/okumoto/Work/make/dfly-cvs
47     *default release=cvs
48     *default delete use-rel-suffix
49     *default compress
50
51     
52     cvs-src
53     
54     % cat fbsd-supfile
55     
56     #*default host=cvsup14.us.FreeBSD.org
57     
58 *default host=cvsup4.us.FreeBSD.org
59     *default base=/usr/home/okumoto/Work/make
60     *default prefix=/usr/home/okumoto/Work/make/fbsd-cvs
61     *default release=cvs
62     *default delete use-rel-suffix
63
64     
65     src-usrbin
66
67
68 Execute the following commands:
69
70     
71     % cd /usr/home/okumoto/Work/make
72     
73     % mkdir fbsd-cvs
74     % cvsup fbsd-supfile -c fbsd-sup -i src/usr.bin/make
75     
76     % mkdir dfly-cvs
77     % cvsup dfly-supfile -c dfly-sup -i src/usr.bin/make
78
79
80 This should result in two small cvs repositories that only contain source for usr.bin/make, and which will update quickly.
81
82 Create working directories by checking out the utility you want to work on.
83
84 The cvs program wants to have a CVSROOT directory so we just create an empty directory. You can use the -R option to cvs, but that prevents you from making your own tags, or checking in stuff into your local repository copy.
85
86     
87     % mkdir -p fbsd-cvs/src/usr.bin/CVSROOT            
88     % mkdir -p fbsd-src
89     % (cd fbsd-src; cvs -d ${PWD}/fbsd-cvs/src/usr.bin co make)   
90     
91     % mkdir -p dfly-cvs/src/usr.bin/CVSROOT 
92     % mkdir -p dfly-src
93     % (cd dfly-src; cvs -d ${PWD}/dfly-cvs/src/usr.bin co make)   
94
95
96 This should result in a check out of the most current version of make from each project.
97 Use cvsps to extract a change log from the cvs working directory
98
99 Using cvsps you can extract a patch history.
100
101     
102     % cd dfly-src/make
103     % cvsps | less
104
105
106
107 From change log history extract a patch.
108
109     
110     % cvsps -s 49-50 > patch-XXX
111
112
113 ["Patch Set Example"](howtos/PatchSetExample)
114  
115 Submit patch :-)