4 PATCHES - track and distribute your code changes
8 This page documents how to distribute your changes to GNU lilypond
9 (or in fact any other StepMake package).
13 Distributing a change normally goes like this:
15 o make your fix/add your code
16 o Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
18 o e-mail your patch to one of the mailing lists
19 gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
23 In VERSION, set MY_PATCH_LEVEL:
29 In NEWS, enter a summary of changes:
35 Then, from the top of Lily's source tree, type
39 which leaves your patch as ./lilypond-0.1.73.jcn1.diff.
41 If you didn't configure Lily using --srcdir, you can do:
45 tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
46 patch: ../patches/lilypond-0.1.73.jcn1.gz
47 updeet: ../test/updeet
51 For creating a patch you need
53 o All items mentioned in INSTALL. You're not going to send a patch
54 that you haven't even built, right?
56 o Python (version 1.5 or newer).
57 You can of course make a patch by hand, which would go something like:
61 diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
63 but there are handy python scripts available. If you're doing development,
64 you'll need Python for other LilyPond scripts anyway.
66 o The Lily directory structure, which looks like:
68 doos/ # gnu/windows32 build and binary releases
69 harmonia -> harmonia-x.y.z
71 lilypond -> lilypond-x.y.z # symlink to development directory
72 lilypond-x.y.z/ # current development
73 patches/ # patches between different releases
74 RedHat/BUILD # RedHat build and binary releases
77 releases/ # .tar.gz releases
78 test/ # tarballs and diffs from current version
82 with prefix $HOME/usr/src
83 and (for building rpms only) in $HOME/.rpmrc:
85 topdir: /home/fred/usr/src/RedHat
89 If you're following LilyPond development regularly, you probably want to
90 download just the patch for each subsequent release.
91 After downloading the patch (into the patches directory, of course), simply
94 gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
96 and don't forget to make automatically generated files:
98 autoconf footnote(patches don't include automatically generated files,
99 i.e. file(configure) and files generated by file(configure).)
105 If you're not very quick with sending your patch, there's a good chance
106 that an new release of LilyPond comes available. In such a case (and
107 sometimes for other unkown reasons :-), the maintainer will probably ask
108 you to make a new patch against the latest release.
109 Your best bet is to download the latest release, and apply your patch
110 against this new source tree:
113 gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
117 Then, make a patch as shown above.
125 Han-Wen Nienhuys <hanwen@cs.uu.nl>
127 Just keep on sending those patches!