2009-05-05 This text summarizes some points to pay attention to when a new release of sane-backends is planned. Timetable (approximate periods): Day 0: Announcement of upcoming release on sane-devel including timetable Day 14: Feature freeze (only bugfixes + documentation updates) Day 28: Code freeze (only fixes for bugs that can destroy hardware, can cause compilation problems or render a backend completely unusable, and documentation updates are allowed) Day 35: Release Before the release: * set :new :yes on any new backend .desc files, by looking for added files: cd backend ls | while read aa; do git log --follow --diff-filter=A --find-renames=40% --format="%ai $aa" "$aa"; done > foo.log Then inspect foo.log for any files added since the last release. * Make sure that config.guess and config.sub are up-to-date (get them from savannah.gnu.org/projects/config) (git clone is easiest) * configure.ac: remove 'git' from textual version number, and increment it * run autoreconf --force but do *NOT* use the --install option as it will overwrite our custom ltmain.sh * ChangeLog: generate from git log, something like: git log RELEASE_1_0_25..HEAD > ChangeLog * NEWS: update and enter date of release, etc Get list of heavily change backends via: git diff --stat RELEASE_1_0_25 Get other things by reading ChangeLog * sane-backends.lsm: update * git commit -a * tag git with release tag; e.g.: 'git tag -a RELEASE_1_0_15' * probably DONT want to git push here, because alioth will rebuild it's local checkout needlessly Making the release: * make tar.gz, sane-backends-x.y.z.lsm, and .md5sum with "make sane-backends" * unpack tar.gz in temporary directory * make diff from last release by unpacking it also in temporary directory and running e.g. diff -uNr sane-backends-1.0.23 sane-backends-1.0.24 > sane-backends-1.0.23-1.0.24.diff * check that the diff applies cleanly to the old version * gzip the diff * install devel headers required to build optional backends (1284,gphoto,etc) * check that the new version .tar.gz can be compiled * upload the .tar.gz, tar.gz.md5 and .diff.gz to the FTP/HTTP servers (at the moment: alioth.debian.org, ftp files are in /srv/alioth.debian.org/chroot/ftproot/pub/sane/ ) In the alioth web interface, you should upload the smallest file first, since you don't get error messages until after an upload completes, and you might need to change something. You can add the larger files afterwards. You may have to split larger files. Announcing the release: * checkout the sane/website.git module and: * copy sane-backends.html to sane-backends-"old-version".html * update sane-supported-devices.html with link to above "old" file * rebuild sane-backends.html and sane-mfgs.html (make -C doc html-pages) * use man2html from http://hydra.nac.uci.edu/indiv/ehood/man2html.html to rebuild html man pages (make -C doc html-man) (no other version works) * add md5 sum to sane-md5sums.txt * check and update platforms page (sane-support.html) * add announcement to index.html * git commit -a && git push * check that website was updated automatically. if not, see: /home/groups/sane/bin/update-htdocs.sh * rebuild descriptions.db (make -C doc descriptions.db) * scp doc/descriptions.db to alioth: /home/groups/sane/search/release * write announcements sane-devel, maybe others (e.g. freshmeat), include the md5 hash After the release: #### consider not adding old changelogs to release package * move ChangeLog to ChangeLogs/ChangeLog-"version" * start a new ChangeLog, with the following message: This file is automatically generated at release time using git commit messages. For the latest changes please refer to the output of `git log` or see: https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=sane/sane-backends.git;a=log * configure.ac: bump textual version & add 'git' suffix * configure: regenerate with autoconf * remove the ':new' tag from any new backends .desc files * git add new files and commit * git push && git push --tags (one of these might give an error 'remote: fatal: bad object 0000000000000000000000000000000000000000', try the other one)