4 PATCHES - track and distribute your code changes
8 This page documents how to distribute your changes to
9 GNU lilypond (or in fact any other StepMake package).
13 Distributing a change normally goes like this:
15 o make your fix/add your code
17 o Add changes to NEWS, and add yourself to Documenta-
22 o e-mail your patch to one of the mailing lists gnu-
23 music-discuss@gnu.org or bug-gnu-music@gnu.org
27 In VERSION, set MY_PATCH_LEVEL:
33 In NEWS, enter a summary of changes:
39 Then, from the top of Lily's source tree, type
44 which rolls the tarball ../releases/lilypond-0.1.73.tar.gz
45 and leaves your patch as ./lilypond-0.1.73.jcn1.diff. [1]
46 We assume that there is a tarball lilypond-0.1.73.tar.gz in
47 the directory ../releases.
49 If you didn't configure Lily using --srcdir, you can do:
53 tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
54 patch: ../patches/lilypond-0.1.73.jcn1.gz
55 updeet: ../test/updeet
59 For creating a patch you need
61 o All items mentioned in INSTALL. You're not going to
62 send a patch that you haven't even built, right?
66 o Python (version 1.5 or newer). You can of course make
67 a patch by hand, which would go something like:
70 [1] 'Make diff' generates a patch between two tar-
71 balls. For more info type 'make diff help=='.
75 diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
77 but there are handy python scripts available. If
78 you're doing development, you'll need Python for other
79 LilyPond scripts anyway.
81 o The Lily directory structure, which looks like:
83 doos/ # gnu/windows32 build and binary releases
84 harmonia -> harmonia-x.y.z
86 lilypond -> lilypond-x.y.z # symlink to development directory
87 lilypond-x.y.z/ # current development
88 patches/ # patches between different releases
89 RedHat/BUILD # RedHat build and binary releases
92 releases/ # .tar.gz releases
93 test/ # tarballs and diffs from current version
97 with prefix $HOME/usr/src and (for building rpms only)
100 topdir: /home/fred/usr/src/RedHat
104 If you're following LilyPond development regularly, you
105 probably want to download just the patch for each subsequent
106 release. After downloading the patch (into the patches
107 directory, of course), simply apply it:
109 gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
111 and don't forget to make automatically generated files:
113 autoconf footnote(patches don't include automatically generated files,
114 i.e. file(configure) and files generated by file(configure).)
120 If you're not very quick with sending your patch, there's a
121 good chance that an new release of LilyPond comes available.
122 In such a case (and sometimes for other unkown reasons :-),
123 the maintainer will probably ask you to make a new patch
124 against the latest release. Your best bet is to download
125 the latest release, and apply your patch against this new
129 gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
133 Then, make a patch as shown above.
141 Han-Wen Nienhuys <hanwen@cs.uu.nl>
143 Just keep on sending those patches!