1 \input texinfo @c -*-texinfo-*-
2 @setfilename PATCHES.info
11 PATCHES - track and distribute your code changes
13 @unnumberedsec description
16 This page documents how to distribute your changes to GNU lilypond
18 @unnumberedsec abstract
20 We would like to have unified context diffs with full pathnames. A
21 script automating supplied with Lily.
23 Distributing a change normally
27 @item make your fix/add your code
28 @item Add changes to NEWS, and add yourself to Documentation/topdocs/AUTHORS.yo
29 @item generate a patch,
30 @item e-mail your patch to one of the mailing lists
31 gnu-music-discuss@@gnu.org or bug-gnu-music@@gnu.org
34 @unnumberedsec Generating a patch
37 In @file{VERSION}, set MY_PATCH_LEVEL:
47 In @file{CHANGES}, enter a summary of changes:
54 Then, from the top of Lily's source tree, type
63 which rolls the tarball @file{../releases/lilypond-0.1.73.tar.gz}
64 and leaves your patch as @file{./lilypond-0.1.73.jcn1.diff}.
65 @footnote{'Make diff' generates a patch between two tarballs. For
66 more info type 'make diff help=='.} We assume that there is a tarball
67 @file{lilypond-0.1.73.tar.gz} in the directory @file{../releases}.
69 If you didn't configure Lily using --srcdir, you can do:
75 tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
76 patch: ../patches/lilypond-0.1.73.jcn1.gz
79 @unnumberedsec Prerequisites
82 For creating a patch you need
85 @item All items mentioned in @file{INSTALL}. You're not going to send a patch
86 that you haven't even built, right?
91 diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
94 but there are handy python scripts available. If you're doing development,
95 you'll need Python for other LilyPond scripts anyway.
97 @item The Lily directory structure, which looks like:
101 doos/ # gnu/windows32 build and binary releases
102 harmonia -> harmonia-x.y.z
104 lilypond -> lilypond-x.y.z # symlink to development directory
105 lilypond-x.y.z/ # current development
106 patches/ # patches between different releases
107 RedHat/BUILD # RedHat build and binary releases
110 releases/ # .tar.gz releases
111 test/ # tarballs and diffs from current version
117 with prefix @file{$HOME/usr/src}
118 and (for building rpms only) in @file{$HOME/.rpmrc}:
121 topdir: /home/fred/usr/src/RedHat
127 @unnumberedsec Applying patches
130 If you're following LilyPond development regularly, you probably want to
131 download just the patch for each subsequent release.
132 After downloading the patch (into the patches directory, of course), simply
137 gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
141 and don't forget to make automatically generated files:
145 autoconf footnote(patches don't include automatically generated files,
146 i.e. file(configure) and files generated by file(configure).)
152 @unnumberedsec Synchronise
155 If you're not very quick with sending your patch, there's a good
156 chance that an new release of LilyPond comes available. In such a
157 case, the maintainer will probably ask you to make a new patch against
158 the latest release. Your best bet is to download the latest release,
159 and apply your patch against this new source tree:
164 gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
170 Then, make a patch as shown above.
172 @unnumberedsec See also
175 @file{stepmake/INSTALL.txt}
177 @unnumberedsec maintainer
180 @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}
182 Just keep on sending those patches!