4 PATCHES - track and distribute your code changes
8 This page documents how to distribute your changes to GNU lilypond
12 We would like to have unified context diffs with full pathnames. A
13 script automating supplied with Lily.
15 Distributing a change normally
18 o make your fix/add your code
19 o Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
21 o e-mail your patch to one of the mailing lists
22 gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
26 In VERSION, set MY_PATCH_LEVEL:
32 In NEWS, enter a summary of changes:
38 Then, from the top of Lily's source tree, type
43 which rolls the tarball ../releases/lilypond-0.1.73.tar.gz
44 and leaves your patch as ./lilypond-0.1.73.jcn1.diff.
45 ('Make diff' generates a patch between two tarballs. For
46 more info type 'make diff help=='.) We assume that there is a tarball
47 lilypond-0.1.73.tar.gz in 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 send a patch
62 that you haven't even built, right?
64 o Python (version 1.5 or newer).
65 You can of course make a patch by hand, which would go something like:
69 diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
71 but there are handy python scripts available. If you're doing development,
72 you'll need Python for other LilyPond scripts anyway.
74 o The Lily directory structure, which looks like:
76 doos/ # gnu/windows32 build and binary releases
77 harmonia -> harmonia-x.y.z
79 lilypond -> lilypond-x.y.z # symlink to development directory
80 lilypond-x.y.z/ # current development
81 patches/ # patches between different releases
82 RedHat/BUILD # RedHat build and binary releases
85 releases/ # .tar.gz releases
86 test/ # tarballs and diffs from current version
90 with prefix $HOME/usr/src
91 and (for building rpms only) in $HOME/.rpmrc:
93 topdir: /home/fred/usr/src/RedHat
97 If you're following LilyPond development regularly, you probably want to
98 download just the patch for each subsequent release.
99 After downloading the patch (into the patches directory, of course), simply
102 gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
104 and don't forget to make automatically generated files:
106 autoconf footnote(patches don't include automatically generated files,
107 i.e. file(configure) and files generated by file(configure).)
113 If you're not very quick with sending your patch, there's a good
114 chance that an new release of LilyPond comes available. In such a
115 case, the maintainer will probably ask you to make a new patch against
116 the latest release. Your best bet is to download the latest release,
117 and apply your patch against this new source tree:
120 gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
124 Then, make a patch as shown above.
132 Han-Wen Nienhuys <hanwen@cs.uu.nl>
134 Just keep on sending those patches!