]> git.donarmstrong.com Git - lilypond.git/blob - PATCHES.txt
patch::: 1.1.43.crypton1
[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
9 GNU lilypond (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
17 o    Add changes to NEWS, and  add  yourself  to  Documenta-
18      tion/AUTHORS.yo
19
20 o    generate a patch,
21
22 o    e-mail  your  patch  to  one  of the mailing lists gnu-
23      music-discuss@gnu.org or bug-gnu-music@gnu.org
24
25 GENERATING A PATCH
26
27      In VERSION, set MY_PATCH_LEVEL:
28
29          VERSION:
30           ...
31           MY_PATCH_LEVEL=jcn1
32
33 In NEWS, enter a summary of changes:
34
35          NEWS:
36           pl 0.1.73.jcn1
37                - added PATCHES.yo
38
39 Then, from the top of Lily's source tree, type
40
41          make dist
42          make diff
43
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.
48
49 If you didn't configure Lily using --srcdir, you can do:
50
51          make release
52
53          tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
54          patch: ../patches/lilypond-0.1.73.jcn1.gz
55          updeet: ../test/updeet
56
57 PREREQUISITES
58
59 For creating a patch you need
60
61 o    All items mentioned in INSTALL.  You're  not  going  to
62      send a patch that you haven't even built, right?
63
64 o    GNU diff
65
66 o    Python  (version 1.5 or newer).  You can of course make
67      a patch by hand, which would go something like:
68
69 -----------
70 [1] 'Make diff' generates a patch between two tar-
71 balls.  For more info type 'make diff help=='.
72
73               make distclean
74               cd ..
75               diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
76
77      but there  are  handy  python  scripts  available.   If
78      you're  doing development, you'll need Python for other
79      LilyPond scripts anyway.
80
81 o    The Lily directory structure, which looks like:
82
83               doos/                        # gnu/windows32 build and binary releases
84               harmonia -> harmonia-x.y.z
85               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
90               RedHat/RPMS
91               RedHat/SPECS
92               releases/                    # .tar.gz releases
93               test/                        # tarballs and diffs from current version
94               yodl -> yodl-1.30.17
95               yodl-1.30.17
96
97      with prefix $HOME/usr/src and (for building rpms  only)
98      in $HOME/.rpmrc:
99
100               topdir: /home/fred/usr/src/RedHat
101
102 APPLYING PATCHES
103
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:
108
109          gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
110
111 and don't forget to make automatically generated files:
112
113          autoconf footnote(patches don't include automatically generated files,
114          i.e. file(configure) and files generated by file(configure).)
115
116          configure
117
118 SYNCHRONISE
119
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
126 source tree:
127
128          cd lilypond-0.1.74
129          gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
130          autoconf
131          configure
132
133 Then, make a patch as shown above.
134
135 SEE ALSO
136
137 stepmake/INSTALL.txt
138
139 MAINTAINER
140
141 Han-Wen Nienhuys <hanwen@cs.uu.nl>
142
143 Just keep on sending those patches!