1 @c -*- coding: utf-8; mode: texinfo; -*-
7 * Minor release checklist::
8 * Major release checklist::
9 * Release extra notes::
13 @node Development phases
14 @section Development phases
16 There are 2 states of development on @code{master}:
20 @item @strong{Normal development}:
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.
28 This should occur approximately 1 month before any alpha version
29 of the next stable release, and ends when the next unstable branch
35 After announcing a beta release, branch @code{stable/2.x}. There
36 are 2 states of development for this branch:
39 @item @strong{Normal maintenance}:
40 The following patches @strong{MAY NOT} be merged with this branch:
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
47 Exception: any bugfix to a Critical issue.
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.
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
61 @item @strong{Release prep}:
62 Only translation updates and important bugfixes are allowed.
67 @node Minor release checklist
68 @section Minor release checklist
70 A @qq{minor release} means an update of @code{y} in @code{2.x.y}.
72 @subheading Pre-release
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.
84 git checkout origin/release/unstable
86 vi Documentation/web/news-front.itexi Documentation/web/news.itexi
90 Commit, push, switch back to master (or wherever else):
93 git commit -m "Release: update news." Documentation/web/
94 git push origin HEAD:release/unstable
99 If you do not have the previous release test-output tarball, download
100 it and put it in @code{regtests/}
102 @item Prepare GUB environment by running:
106 # special terminal, and default PATH environment.
107 # import these special environment vars:
108 # HOME, HTTP_PROXY, TERM
111 HTTP_PROXY=$HTTP_PROXY \
112 bash --rcfile my-bashrc
117 export PS1="\[\e[1;33mGUB-ENV \w\]$ \[\e[0m\]"
123 @item Build release on GUB by running:
126 make LILYPOND_BRANCH=release/unstable lilypond
133 make LILYPOND_BRANCH=stable/2.12 lilypond
136 @item Check the regtest comparison in @file{uploads/webtest/} for
137 any unintentional breakage. More info in
138 @ref{Precompiled regression tests}.
140 @item If any work was done on GUB since the last release, upload
141 binaries to a temporary location, ask for feedback, and wait a day
142 or two in case there's any major problems.
144 @warning{Always do this for a stable release.}
149 @subheading Actual release
153 @item If you're not the right user on the webserver, remove the
154 @code{t} from the rsync command in:
157 test-lily/rsync-lily-doc.py
158 test-lily/rsync-test.py
161 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
163 @item Upload GUB by running:
166 make lilypond-upload \
167 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
168 LILYPOND_BRANCH=release/unstable
175 make lilypond-upload \
176 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
177 LILYPOND_BRANCH=stable/2.12
183 @subheading Post release
187 @item Switch back to master and get the updated news:
190 git checkout origin/staging
191 git merge origin/release/unstable
194 @item Update @file{VERSION} in lilypond git and upload changes:
202 VERSION = what you just did +0.0.1
205 DEVEL_VERSION = what you just did (i.e. is now online)
208 STABLE_VERSION = what's online (probably no change here)
213 git commit -m "Release: bump version." VERSION
214 git push origin HEAD:staging
218 @item (for now) do a @code{make doc} and manually upload:
221 ### upload-lily-web-media.sh
223 BUILD_DIR=$HOME/src/build-lilypond
225 PICS=$BUILD_DIR/Documentation/pictures/out-www/
226 EXAMPLES=$BUILD_DIR/Documentation/ly-examples/out-www/
229 rsync -a $PICS graham@@lilypond.org:media/pictures
230 rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
233 @item Wait a few hours for the website to update.
235 @item Email release notice to @code{info-lilypond}
241 @node Major release checklist
242 @section Major release checklist
244 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
246 @subheading Main requirements
248 This is the current official guidelines.
252 0 Critical issues for two weeks (14 days) after the latest release
258 @subheading Potential requirements
260 These might become official guidelines in the future.
267 Check all 2ly scripts
270 Check for emergencies the docs:
273 grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
274 --exclude "snippets/*" ????*/*
278 Check for altered regtests, and document as necessary. (update
279 numbers in the following command as appropriate)
282 git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
288 @subheading Housekeeping requirements
294 write release notes. note: stringent size requirements for
295 various websites, so be brief.
298 Run convert-ly on all files, bump parser minimum version.
301 Make directories on lilypond.org:
304 ~/web/download/sources/v2.14
305 ~/web/download/sources/v2.15
309 Shortly after the release, move all current contributors to
310 previous contributors in:
313 Documentation/included/authors.itexi
316 Also, delete old material in:
319 Documentation/changes.tely
322 but don't forget to check it still compiles! also update the
330 make a link from the old unstable to the next stable in
331 lilypond.org's /doc/ dir. Keep all previous unstable->stable doc
334 Also, make the old docs self-contained -- if there's a redirect in
335 /doc/v2.12/Documentation/index.html , replace it with the
336 index.html.old-2.12 files.
338 The post-2.13 docs will need another way of handling the
339 self-containment. It won't be hard to whip up a python script
340 that changes the link to ../../../../manuals.html to
341 ../website/manuals.html , but it's still a 30-minute task that
342 needs to be done before 2.16.
345 doc auto redirects to v2.LATEST-STABLE
348 add these two lines to http://www.lilypond.org/robots.txt:
351 Disallow: /doc/v2.PREVIOUS-STABLE/
352 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
363 submit pots for translation: send url of tarball to
364 translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot
367 update links to distros providing lilypond packages? link in:
368 @file{Documentation/web/download.itexi}
370 This has nothing to do with the release, but it's a "periodic
371 maintenance" task that might make sense to include with releases.
374 Send announcements to...
380 comp.os.linux.announce
389 info-lilypond@@gnu.org
391 linux-audio-announce@@lists.linuxaudio.org
392 linux-audio-user@@lists.linuxaudio.org
393 linux-audio-dev@@lists.linuxaudio.org
395 tex-music@@icking-music-archive.org
398 abcusers@@blackmill.net
400 rosegarden-user@@lists.sourceforge.net
402 noteedit-user@@berlios.de
404 gmane.comp.audio.fomus.devel
405 gmane.linux.audio.users
406 gmane.linux.audio.announce
407 gmane.comp.audio.rosegarden.devel
416 http://www.apple.com/downloads
417 harmony-central.com (news@@harmony-central.com)
418 versiontracker.com [auto]
421 https://savannah.gnu.org/news/submit.php?group_id=1673 @c => planet.gnu.org
427 @node Release extra notes
428 @section Release extra notes
430 @subsubheading Regenerating regression tests
432 Regenerating regtests (if the lilypond-book naming has changed):
437 git checkout release/lilypond-X.Y.Z-A
440 take lilypond-book and any related makefile updates from the
444 configure; make; make test
447 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
450 mv lilypond-X.Y.Z-A.test-output.tar.bz2 ../gub/regtests/
461 @subsubheading stable/2.12
463 If releasing stable/2.12, then:
468 apply doc patch: patches/rsync-lily.patch (or something like
472 change infodir in gub/specs/lilypond-doc.py from "lilypond.info"
473 to "lilypond-web.info"
476 @subsubheading Updating a release (changing a in x.y.z-a)
478 Really tentative instructions, almost certainly can be done
484 change the VERSION back to release you want. push change.
485 (hopefully you'll have forgotten to update it when you made your
489 make sure that there aren't any lilypond files floating around in
490 target/ (like usr/bin/lilypond).
493 build the specific package(s) you want, i.e.
496 bin/gub mingw::lilypond-installer
497 make LILYPOND_BRANCH=stable/2.12 -f lilypond.make doc
498 bin/gub --platform=darwin-x86 \
499 'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
504 build everything with the normal "make lilypond", then (maybe)
505 manually delete stuff you don't want to upload.
508 manually upload them. good luck figuring out the rsync
509 command(s). Hints are in test-lily/
513 run the normal lilypond-upload command, and (maybe) manually
514 delete stuff you didn't want to upload from the server.