]> git.donarmstrong.com Git - lilypond.git/blob - PATCHES.txt
patch::: 1.0.8.jcn3: png
[lilypond.git] / PATCHES.txt
1
2 NAME
3
4 PATCHES - track and distribute your code changes
5
6 DESCRIPTION
7
8 This page documents how to distribute your changes to GNU lilypond
9 (or in fact any other StepMake package).
10
11 ABSTRACT
12
13 Distributing a change normally goes like this:
14
15 o make your fix/add your code 
16 o Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
17 o generate a patch, 
18 o e-mail your patch to one of the mailing lists
19     gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
20
21 GENERATING A PATCH
22
23 In VERSION, set MY_PATCH_LEVEL:
24
25     VERSION:
26         ...
27         MY_PATCH_LEVEL=jcn1
28
29 In NEWS, enter a summary of changes:
30
31     NEWS:
32         pl 0.1.73.jcn1
33                 - added PATCHES.yo
34
35 Then, from the top of Lily's source tree, type
36
37     make diff
38
39 which leaves your patch as ./lilypond-0.1.73.jcn1.diff.
40
41 If you didn't configure Lily using --srcdir, you can do:
42
43     make release
44
45     tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
46     patch: ../patches/lilypond-0.1.73.jcn1.gz
47     updeet: ../test/updeet
48
49 PREREQUISITES
50
51 For creating a patch you need
52
53 o All items mentioned in INSTALL.  You're not going to send a patch
54     that you haven't even built, right?
55 o GNU diff
56 o Python (version 1.5 or newer).  
57     You can of course make a patch by hand, which would go something like:
58
59     make distclean
60     cd ..
61     diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
62
63 but there are handy python scripts available.  If you're doing development,
64 you'll need Python for other LilyPond scripts anyway.
65
66 o The Lily directory structure, which looks like:
67
68     doos/                        # gnu/windows32 build and binary releases
69     harmonia -> harmonia-x.y.z 
70     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
75     RedHat/RPMS
76     RedHat/SPECS
77     releases/                    # .tar.gz releases
78     test/                        # tarballs and diffs from current version
79     yodl -> yodl-1.30.17
80     yodl-1.30.17
81
82 with prefix $HOME/usr/src
83 and (for building rpms only) in $HOME/.rpmrc:
84
85     topdir: /home/fred/usr/src/RedHat
86
87 APPLYING PATCHES
88
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 
92 apply it:
93
94     gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
95
96 and don't forget to make automatically generated files:
97
98     autoconf footnote(patches don't include automatically generated files, 
99     i.e. file(configure) and files generated by file(configure).)
100
101     configure
102
103 SYNCHRONISE
104
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:
111
112     cd lilypond-0.1.74
113     gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
114     autoconf
115     configure
116
117 Then, make a patch as shown above.
118
119 SEE ALSO
120
121 stepmake/INSTALL.txt
122
123 MAINTAINER
124
125 Han-Wen Nienhuys <hanwen@cs.uu.nl>
126
127 Just keep on sending those patches!