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
81 git checkout release/unstable
83 vi Documentation/web/news-front.itexi Documentation/web/news.itexi
87 Commit, push, switch back to master:
90 git commit -m "Release: update news." Documentation/web/
95 If you do not have the previous release test-output tarball, download
96 it and put it in @code{regtests/}
98 @item Prepare GUB environment by running:
102 # special terminal, and default PATH environment.
103 # import these special environment vars:
104 # HOME, HTTP_PROXY, TERM
107 HTTP_PROXY=$HTTP_PROXY \
108 bash --rcfile my-bashrc
113 export PS1="\[\e[1;33mGUB-ENV \w\]$ \[\e[0m\]"
119 @item Build release on GUB by running:
122 make LILYPOND_BRANCH=release/unstable lilypond
129 make LILYPOND_BRANCH=stable/2.12 lilypond
132 @item Check the regtest comparison in @file{uploads/webtest/} for
133 any unintentional breakage. More info in
134 @ref{Precompiled regression tests}.
136 @item If any work was done on GUB since the last release, upload
137 binaries to a temporary location, ask for feedback, and wait a day
138 or two in case there's any major problems.
140 @warning{Always do this for a stable release.}
145 @subheading Actual release
149 @item If you're not the right user on the webserver, remove the
150 @code{t} from the rsync command in:
153 test-lily/rsync-lily-doc.py
154 test-lily/rsync-test.py
157 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
159 @item Upload GUB by running:
162 make lilypond-upload \
163 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
164 LILYPOND_BRANCH=release/unstable
171 make lilypond-upload \
172 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
173 LILYPOND_BRANCH=stable/2.12
179 @subheading Post release
183 @item Switch back to master and get the updated news:
187 git merge release/unstable
190 @item Update @file{VERSION} in lilypond git and upload changes:
198 VERSION = what you just did +0.0.1
201 DEVEL_VERSION = what you just did (i.e. is now online)
204 STABLE_VERSION = what's online (probably no change here)
209 git commit -m "Release: bump version." VERSION
214 @item (for now) do a @code{make doc} and manually upload:
217 ### upload-lily-web-media.sh
219 BUILD_DIR=$HOME/src/build-lilypond
221 PICS=$BUILD_DIR/Documentation/pictures/out-www/
222 EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/
225 rsync -a $PICS graham@@lilypond.org:media/pictures
226 rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
229 @item Wait a few hours for the website to update.
231 @item Email release notice to @code{info-lilypond}
237 @node Major release checklist
238 @section Major release checklist
240 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
242 @subheading Main requirements
244 This is the current official guidelines.
248 0 Critical issues for two weeks (14 days) after the latest release
254 @subheading Potential requirements
256 These might become official guidelines in the future.
263 Check all 2ly scripts
266 Check for emergencies the docs:
269 grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
270 --exclude "snippets/*" ????*/*
274 Check for altered regtests, and document as necessary. (update
275 numbers in the following command as appropriate)
278 git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
284 @subheading Housekeeping requirements
290 write release notes. note: stringent size requirements for
291 various websites, so be brief.
294 Run convert-ly on all files, bump parser minimum version.
297 Make directories on lilypond.org:
300 ~/web/download/sources/v2.14
301 ~/web/download/sources/v2.15
305 Shortly after the release, move all current contributors to
306 previous contributors in:
309 Documentation/included/authors.itexi
312 Also, delete old material in:
315 Documentation/changes.tely
318 but don't forget to check it still compiles! also update the
326 make a link from the old unstable to the next stable in
327 lilypond.org's /doc/ dir. Keep all previous unstable->stable doc
330 Also, make the old docs self-contained -- if there's a redirect in
331 /doc/v2.12/Documentation/index.html , replace it with the
332 index.html.old-2.12 files.
334 The post-2.13 docs will need another way of handling the
335 self-containment. It won't be hard to whip up a python script
336 that changes the link to ../../../../manuals.html to
337 ../website/manuals.html , but it's still a 30-minute task that
338 needs to be done before 2.16.
341 doc auto redirects to v2.LATEST-STABLE
344 add these two lines to http://www.lilypond.org/robots.txt:
347 Disallow: /doc/v2.PREVIOUS-STABLE/
348 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
359 submit pots for translation: send url of tarball to
360 translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot
363 update links to distros providing lilypond packages? link in:
364 @file{Documentation/web/download.itexi}
366 This has nothing to do with the release, but it's a "periodic
367 maintenance" task that might make sense to include with releases.
370 Send announcements to...
376 comp.os.linux.announce
385 info-lilypond@@gnu.org
387 linux-audio-announce@@lists.linuxaudio.org
388 linux-audio-user@@lists.linuxaudio.org
389 linux-audio-dev@@lists.linuxaudio.org
391 tex-music@@icking-music-archive.org
394 abcusers@@blackmill.net
396 rosegarden-user@@lists.sourceforge.net
398 noteedit-user@@berlios.de
400 gmane.comp.audio.fomus.devel
401 gmane.linux.audio.users
402 gmane.linux.audio.announce
403 gmane.comp.audio.rosegarden.devel
412 http://www.apple.com/downloads
413 harmony-central.com (news@@harmony-central.com)
414 versiontracker.com [auto]
417 https://savannah.gnu.org/news/submit.php?group_id=1673 @c => planet.gnu.org
423 @node Release extra notes
424 @section Release extra notes
426 @subsubheading Regenerating regression tests
428 Regenerating regtests (if the lilypond-book naming has changed):
433 git checkout release/lilypond-X.Y.Z-A
436 take lilypond-book and any related makefile updates from the
440 configure; make; make test
443 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
446 mv lilypond-X.Y.Z-A.test-output.tar.bz2 ../gub/regtests/
457 @subsubheading stable/2.12
459 If releasing stable/2.12, then:
464 apply doc patch: patches/rsync-lily.patch (or something like
468 change infodir in gub/specs/lilypond-doc.py from "lilypond.info"
469 to "lilypond-web.info"
472 @subsubheading Updating a release (changing a in x.y.z-a)
474 Really tentative instructions, almost certainly can be done
480 change the VERSION back to release you want. push change.
481 (hopefully you'll have forgotten to update it when you made your
485 make sure that there aren't any lilypond files floating around in
486 target/ (like usr/bin/lilypond).
489 build the specific package(s) you want, i.e.
492 bin/gub mingw::lilypond-installer
493 make LILYPOND_BRANCH=stable/2.12 -f lilypond.make doc
494 bin/gub --platform=darwin-x86 \
495 'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
500 build everything with the normal "make lilypond", then (maybe)
501 manually delete stuff you don't want to upload.
504 manually upload them. good luck figuring out the rsync
505 command(s). Hints are in test-lily/
509 run the normal lilypond-upload command, and (maybe) manually
510 delete stuff you didn't want to upload from the server.