]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/release-work.itexi
Merge branch 'master' into translation
[lilypond.git] / Documentation / contributor / release-work.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @node Release work
3 @chapter Release work
4
5 @menu
6 * Development phases::
7 * Minor release checklist::
8 * Major release checklist::
9 * Release extra notes::
10 @end menu
11
12
13 @node Development phases
14 @section Development phases
15
16 There are 2 states of development on @code{master}:
17
18 @enumerate
19
20 @item @strong{Normal development}:
21 Any commits are fine.
22
23 @item @strong{Build-frozen}:
24 Do not require any additional or updated libraries or make
25 non-trivial changes to the build process.  Any such patch (or
26 branch) may not be merged with master during this period.
27
28 This should occur approximately 1 month before any alpha version
29 of the next stable release, and ends when the next unstable branch
30 begins.
31
32 @end enumerate
33
34
35 After announcing a beta release, branch @code{stable/2.x}.  There
36 are 2 states of development for this branch:
37
38 @enumerate
39 @item @strong{Normal maintenance}:
40 The following patches @strong{MAY NOT} be merged with this branch:
41
42 @itemize
43 @item Any change to the input syntax.  If a file compiled with a
44 previous @code{2.x} (beta) version, then it must compile in the
45 new version.
46
47 Exception: any bugfix to a Critical issue.
48
49 @item New features with new syntax @emph{may be committed},
50 although once committed that syntax cannot change during the
51 remainder of the stable phase.
52
53 @item Any change to the build dependencies (including programming
54 libraries, documentation process programs, or python modules used
55 in the buildscripts).  If a contributor could compile a previous
56 lilypond @code{2.x}, then he must be able to compile the new
57 version.
58
59 @end itemize
60
61 @item @strong{Release prep}:
62 Only translation updates and important bugfixes are allowed.
63
64 @end enumerate
65
66
67 @node Minor release checklist
68 @section Minor release checklist
69
70 A @qq{minor release} means an update of @code{y} in @code{2.x.y}.
71
72 @subheading Pre-release
73
74 @enumerate
75
76 @item
77 Switch to the release branch, get changes, prep release
78 announcement.  This requires a clean index and work tree.  If the
79 checkout displays modified files, you might want to run @code{git reset
80 --hard} before continuing.
81
82 @example
83 git fetch
84 git checkout origin/release/unstable
85 git merge origin
86 make po-replace
87 vi Documentation/web/news-front.itexi Documentation/web/news.itexi
88 @end example
89
90 @item
91 Commit, push, switch back to master (or wherever else):
92
93 @example
94 git commit -m "PO: update template." po/lilypond.pot
95 git commit -m "Release: update news." Documentation/web/
96 git push origin HEAD:release/unstable
97 git checkout master
98 @end example
99
100 @item
101 If you do not have the previous release test-output tarball, download
102 it and put it in @code{regtests/}
103
104 @item Prepare GUB environment by running:
105
106 @example
107 ### my-gub.sh
108 # special terminal, and default PATH environment.
109 # import these special environment vars:
110 #   HOME, HTTP_PROXY, TERM
111 env -i \
112   HOME=$HOME \
113   HTTP_PROXY=$HTTP_PROXY \
114   bash --rcfile my-bashrc
115 @end example
116
117 @example
118 ### my-bashrc
119 export PS1="\[\e[1;33mGUB-ENV \w\]$ \[\e[0m\]"
120 export PATH=$PATH
121 export TERM=xterm
122 @end example
123
124
125 @item Build release on GUB by running:
126
127 @example
128 make LILYPOND_BRANCH=release/unstable lilypond
129 @end example
130
131 @noindent
132 or something like:
133
134 @example
135 make LILYPOND_BRANCH=stable/2.12 lilypond
136 @end example
137
138 @item Check the regtest comparison in @file{uploads/webtest/} for
139 any unintentional breakage.  More info in
140 @ref{Precompiled regression tests}.
141
142 @item If any work was done on GUB since the last release, upload
143 binaries to a temporary location, ask for feedback, and wait a day
144 or two in case there's any major problems.
145
146 @warning{Always do this for a stable release.}
147
148 @end enumerate
149
150
151 @subheading Actual release
152
153 @enumerate
154
155 @item If you're not the right user on the webserver, remove the
156 @code{t} from the rsync command in:
157
158 @example
159 test-lily/rsync-lily-doc.py
160 test-lily/rsync-test.py
161 @end example
162
163 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
164
165 @item Upload GUB by running:
166
167 @example
168 make lilypond-upload \
169   LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
170   LILYPOND_BRANCH=release/unstable
171 @end example
172
173 @noindent
174 or something like:
175
176 @example
177 make lilypond-upload \
178   LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
179   LILYPOND_BRANCH=stable/2.12
180 @end example
181
182 @end enumerate
183
184
185 @subheading Post release
186
187 @enumerate
188
189 @item Switch back to master and get the updated news:
190
191 @example
192 git checkout origin/staging
193 git merge origin/release/unstable
194 @end example
195
196 @item Update @file{VERSION} in lilypond git and upload changes:
197
198 @example
199 vi VERSION
200 @end example
201
202 @itemize
203 @item
204 VERSION = what you just did +0.0.1
205
206 @item
207 DEVEL_VERSION = what you just did (i.e. is now online)
208
209 @item
210 STABLE_VERSION = what's online (probably no change here)
211
212 @end itemize
213
214 @example
215 git commit -m "Release: bump version." VERSION
216 git push origin HEAD:staging
217 @end example
218
219
220 @item (for now) do a @code{make doc} and manually upload:
221
222 @example
223 ### upload-lily-web-media.sh
224 #!/bin/sh
225 BUILD_DIR=$HOME/src/build-lilypond
226
227 PICS=$BUILD_DIR/Documentation/pictures/out-www/
228 EXAMPLES=$BUILD_DIR/Documentation/ly-examples/out-www/
229
230 cd $BUILD_DIR
231 rsync -a $PICS graham@@lilypond.org:media/pictures
232 rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
233 @end example
234
235 @item Wait a few hours for the website to update.
236
237 @item Email release notice to @code{info-lilypond}
238
239 @end enumerate
240
241
242
243 @node Major release checklist
244 @section Major release checklist
245
246 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
247
248 @subheading Main requirements
249
250 This is the current official guidelines.
251
252 @itemize
253 @item
254 0 Critical issues for two weeks (14 days) after the latest release
255 candidate.
256
257 @end itemize
258
259
260 @subheading Potential requirements
261
262 These might become official guidelines in the future.
263
264 @itemize
265 @item
266 Check reg test
267
268 @item
269 Check all 2ly scripts
270
271 @item
272 Check for emergencies the docs:
273
274 @example
275 grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
276   --exclude "snippets/*" ????*/*
277 @end example
278
279 @item
280 Check for altered regtests, and document as necessary.  (update
281 numbers in the following command as appropriate)
282
283 @example
284 git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
285 @end example
286
287 @end itemize
288
289
290 @subheading Housekeeping requirements
291
292 Before the release:
293
294 @itemize
295 @item
296 write release notes.  note: stringent size requirements for
297 various websites, so be brief.
298
299 @item
300 Run convert-ly on all files, bump parser minimum version.
301
302 @item
303 Update lilypond.pot:
304
305 @example
306 make po-replace
307 @end example
308
309 @item
310 Make directories on lilypond.org:
311
312 @example
313 ~/web/download/sources/v2.14
314 ~/web/download/sources/v2.15
315 @end example
316
317 @item
318 Shortly after the release, move all current contributors to
319 previous contributors in:
320
321 @example
322 Documentation/included/authors.itexi
323 @end example
324
325 Also, delete old material in:
326
327 @example
328 Documentation/changes.tely
329 @end example
330
331 but don't forget to check it still compiles!  also update the
332 version numbers.
333
334 @item
335 Website:
336
337 @itemize
338 @item
339 make a link from the old unstable to the next stable in
340 lilypond.org's /doc/ dir.  Keep all previous unstable->stable doc
341 symlinks.
342
343 Also, make the old docs self-contained -- if there's a redirect in
344 /doc/v2.12/Documentation/index.html , replace it with the
345 index.html.old-2.12 files.
346
347 The post-2.13 docs will need another way of handling the
348 self-containment.  It won't be hard to whip up a python script
349 that changes the link to ../../../../manuals.html to
350 ../website/manuals.html , but it's still a 30-minute task that
351 needs to be done before 2.16.
352
353 @item
354 doc auto redirects  to v2.LATEST-STABLE
355
356 @item
357 add these two lines to http://www.lilypond.org/robots.txt:
358
359 @example
360 Disallow: /doc/v2.PREVIOUS-STABLE/
361 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
362 @end example
363
364 @end itemize
365
366 @end itemize
367
368 @subheading Unsorted
369
370 @itemize
371 @item
372 submit po template for translation: send url of tarball to
373 coordinator@@translationproject.org, mentioning lilypond-VERSION.pot
374
375 @item
376 update links to distros providing lilypond packages?  link in:
377 @file{Documentation/web/download.itexi}
378
379 This has nothing to do with the release, but it's a "periodic
380 maintenance" task that might make sense to include with releases.
381
382 @item
383 Send announcements to...
384
385 News:
386
387 @example
388 comp.music.research
389 comp.os.linux.announce
390
391 comp.text.tex
392 rec.music.compose
393 @end example
394
395 Mail:
396
397 @example
398 info-lilypond@@gnu.org
399
400 linux-audio-announce@@lists.linuxaudio.org
401 linux-audio-user@@lists.linuxaudio.org
402 linux-audio-dev@@lists.linuxaudio.org
403
404 tex-music@@icking-music-archive.org
405
406 --- non-existant?
407 abcusers@@blackmill.net
408
409 rosegarden-user@@lists.sourceforge.net
410 info-gnu@@gnu.org
411 noteedit-user@@berlios.de
412
413 gmane.comp.audio.fomus.devel
414 gmane.linux.audio.users
415 gmane.linux.audio.announce
416 gmane.comp.audio.rosegarden.devel
417 @end example
418
419 Web:
420
421 @example
422 lilypond.org
423 freshmeat.net
424 linuxfr.com
425 http://www.apple.com/downloads
426 harmony-central.com (news@@harmony-central.com)
427 versiontracker.com [auto]
428 hitsquad.com [auto]
429 http://www.svgx.org
430 https://savannah.gnu.org/news/submit.php?group_id=1673  @c => planet.gnu.org
431 @end example
432
433 @end itemize
434
435
436 @node Release extra notes
437 @section Release extra notes
438
439 @subsubheading Regenerating regression tests
440
441 Regenerating regtests (if the lilypond-book naming has changed):
442
443 @itemize
444
445 @item
446 git checkout release/lilypond-X.Y.Z-A
447
448 @item
449 take lilypond-book and any related makefile updates from the
450 latest git.
451
452 @item
453 configure; make; make test
454
455 @item
456 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
457
458 @item
459 mv lilypond-X.Y.Z-A.test-output.tar.bz2 ../gub/regtests/
460
461 @item
462 cd ../gub/regtests/
463
464 @item
465 make lilypond
466
467 @end itemize
468
469
470 @subsubheading stable/2.12
471
472 If releasing stable/2.12, then:
473
474 @itemize
475
476 @item
477 apply doc patch: patches/rsync-lily.patch  (or something like
478 that)
479
480 @item
481 change infodir in gub/specs/lilypond-doc.py from "lilypond.info"
482 to "lilypond-web.info"
483 @end itemize
484
485 @subsubheading Updating a release (changing a in x.y.z-a)
486
487 Really tentative instructions, almost certainly can be done
488 better.
489
490 @enumerate
491
492 @item
493 change the VERSION back to release you want.  push change.
494 (hopefully you'll have forgotten to update it when you made your
495 last release)
496
497 @item
498 make sure that there aren't any lilypond files floating around in
499 target/  (like usr/bin/lilypond).
500
501 @item
502 build the specific package(s) you want, i.e.
503
504 @example
505 bin/gub mingw::lilypond-installer
506 make LILYPOND_BRANCH=stable/2.12 -f lilypond.make doc
507 bin/gub --platform=darwin-x86 \
508   'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
509 @end example
510
511 or
512
513 build everything with the normal "make lilypond", then (maybe)
514 manually delete stuff you don't want to upload.
515
516 @item
517 manually upload them.  good luck figuring out the rsync
518 command(s).  Hints are in test-lily/
519
520 or
521
522 run the normal lilypond-upload command, and (maybe) manually
523 delete stuff you didn't want to upload from the server.
524
525 @end enumerate
526
527
528