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
87 vi Documentation/web/news-front.itexi Documentation/web/news.itexi
91 Commit, push, switch back to master (or wherever else):
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
101 If you do not have the previous release test-output tarball, download
102 it and put it in @code{regtests/}
104 @item Prepare GUB environment by running:
108 # special terminal, and default PATH environment.
109 # import these special environment vars:
110 # HOME, HTTP_PROXY, TERM
113 HTTP_PROXY=$HTTP_PROXY \
114 bash --rcfile my-bashrc
119 export PS1="\[\e[1;33mGUB-ENV \w\]$ \[\e[0m\]"
125 @item Build release on GUB by running:
128 make LILYPOND_BRANCH=release/unstable lilypond
135 make LILYPOND_BRANCH=stable/2.12 lilypond
138 @item Check the regtest comparison in @file{uploads/webtest/} for
139 any unintentional breakage. More info in
140 @ref{Precompiled regression tests}.
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.
146 @warning{Always do this for a stable release.}
151 @subheading Actual release
155 @item If you're not the right user on the webserver, remove the
156 @code{t} from the rsync command in:
159 test-lily/rsync-lily-doc.py
160 test-lily/rsync-test.py
163 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
165 @item Upload GUB by running:
168 make lilypond-upload \
169 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
170 LILYPOND_BRANCH=release/unstable
177 make lilypond-upload \
178 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
179 LILYPOND_BRANCH=stable/2.12
185 @subheading Post release
189 @item Switch back to master and get the updated news:
192 git checkout origin/staging
193 git merge origin/release/unstable
196 @item Update @file{VERSION} in lilypond git and upload changes:
204 VERSION = what you just did +0.0.1
207 DEVEL_VERSION = what you just did (i.e. is now online)
210 STABLE_VERSION = what's online (probably no change here)
215 git commit -m "Release: bump version." VERSION
216 git push origin HEAD:staging
220 @item (for now) do a @code{make doc} and manually upload:
223 ### upload-lily-web-media.sh
225 BUILD_DIR=$HOME/src/build-lilypond
227 PICS=$BUILD_DIR/Documentation/pictures/out-www/
228 EXAMPLES=$BUILD_DIR/Documentation/ly-examples/out-www/
231 rsync -a $PICS graham@@lilypond.org:media/pictures
232 rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
235 @item Wait a few hours for the website to update.
237 @item Email release notice to @code{info-lilypond}
243 @node Major release checklist
244 @section Major release checklist
246 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
248 @subheading Main requirements
250 This is the current official guidelines.
254 0 Critical issues for two weeks (14 days) after the latest release
260 @subheading Potential requirements
262 These might become official guidelines in the future.
269 Check all 2ly scripts
272 Check for emergencies the docs:
275 grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
276 --exclude "snippets/*" ????*/*
280 Check for altered regtests, and document as necessary. (update
281 numbers in the following command as appropriate)
284 git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
290 @subheading Housekeeping requirements
296 write release notes. note: stringent size requirements for
297 various websites, so be brief.
300 Run convert-ly on all files, bump parser minimum version.
310 Make directories on lilypond.org:
313 ~/web/download/sources/v2.14
314 ~/web/download/sources/v2.15
318 Shortly after the release, move all current contributors to
319 previous contributors in:
322 Documentation/included/authors.itexi
325 Also, delete old material in:
328 Documentation/changes.tely
331 but don't forget to check it still compiles! also update the
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
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.
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.
354 doc auto redirects to v2.LATEST-STABLE
357 add these two lines to http://www.lilypond.org/robots.txt:
360 Disallow: /doc/v2.PREVIOUS-STABLE/
361 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
372 submit po template for translation: send url of tarball to
373 coordinator@@translationproject.org, mentioning lilypond-VERSION.pot
376 update links to distros providing lilypond packages? link in:
377 @file{Documentation/web/download.itexi}
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.
383 Send announcements to...
389 comp.os.linux.announce
398 info-lilypond@@gnu.org
400 linux-audio-announce@@lists.linuxaudio.org
401 linux-audio-user@@lists.linuxaudio.org
402 linux-audio-dev@@lists.linuxaudio.org
404 tex-music@@icking-music-archive.org
407 abcusers@@blackmill.net
409 rosegarden-user@@lists.sourceforge.net
411 noteedit-user@@berlios.de
413 gmane.comp.audio.fomus.devel
414 gmane.linux.audio.users
415 gmane.linux.audio.announce
416 gmane.comp.audio.rosegarden.devel
425 http://www.apple.com/downloads
426 harmony-central.com (news@@harmony-central.com)
427 versiontracker.com [auto]
430 https://savannah.gnu.org/news/submit.php?group_id=1673 @c => planet.gnu.org
436 @node Release extra notes
437 @section Release extra notes
439 @subsubheading Regenerating regression tests
441 Regenerating regtests (if the lilypond-book naming has changed):
446 git checkout release/lilypond-X.Y.Z-A
449 take lilypond-book and any related makefile updates from the
453 configure; make; make test
456 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
459 mv lilypond-X.Y.Z-A.test-output.tar.bz2 ../gub/regtests/
470 @subsubheading stable/2.12
472 If releasing stable/2.12, then:
477 apply doc patch: patches/rsync-lily.patch (or something like
481 change infodir in gub/specs/lilypond-doc.py from "lilypond.info"
482 to "lilypond-web.info"
485 @subsubheading Updating a release (changing a in x.y.z-a)
487 Really tentative instructions, almost certainly can be done
493 change the VERSION back to release you want. push change.
494 (hopefully you'll have forgotten to update it when you made your
498 make sure that there aren't any lilypond files floating around in
499 target/ (like usr/bin/lilypond).
502 build the specific package(s) you want, i.e.
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'
513 build everything with the normal "make lilypond", then (maybe)
514 manually delete stuff you don't want to upload.
517 manually upload them. good luck figuring out the rsync
518 command(s). Hints are in test-lily/
522 run the normal lilypond-upload command, and (maybe) manually
523 delete stuff you didn't want to upload from the server.