17bbfb05c6
Let's try a new approach where we increment the version number immediately after publishing a release, not just before. This will mean that anyone who builds from git gets a version of Stow which is higher than the release which was just cut, and this could provide valuable debugging hints in case a bug report does not clearly state whether the problem arose with the latest release or with a build from git.
130 lines
3.7 KiB
Text
130 lines
3.7 KiB
Text
How to make a new release of GNU Stow
|
|
=====================================
|
|
|
|
Prerequisite reading
|
|
--------------------
|
|
|
|
First read the official information for maintainers of GNU software:
|
|
|
|
https://www.gnu.org/prep/maintain/
|
|
|
|
Release procedure
|
|
-----------------
|
|
|
|
- Set a shell variable to the version to be released, e.g. if the
|
|
final step of this document was carried out after the previous
|
|
release was published:
|
|
|
|
version=$( git describe --match v* --abbrev=0 )
|
|
|
|
- Ensure NEWS contains the latest changes, and that any new
|
|
contributors have been added to THANKS.
|
|
|
|
- git commit -m "Prepare NEWS and THANKS for $version release"
|
|
|
|
- Ensure configure.ac contains the new version number.
|
|
This should follow Semantic Versioning as described at:
|
|
|
|
http://semver.org/
|
|
|
|
- Check CPAN distribution will work via Module::Build:
|
|
|
|
- Generate stow, chkstow, and lib/Stow.pm via:
|
|
|
|
eval `perl -V:siteprefix`
|
|
automake --add-missing
|
|
./configure --prefix=$siteprefix && make
|
|
|
|
(N.B. the CPAN distribution will contain these files, whereas
|
|
the GNU distribution will not.)
|
|
|
|
- Make sure all the following commands all run successfully:
|
|
|
|
perl Build.PL --prefix=/tmp/stow-test
|
|
./Build test
|
|
./Build install
|
|
./Build distcheck
|
|
./Build distmeta
|
|
|
|
- Check META.yaml and META.json have the new version number.
|
|
They already should if the final step of this document was
|
|
carried out after the previous release was published, but
|
|
if not:
|
|
|
|
git commit -m "Bump version to X.Y.Z"
|
|
|
|
- Ensure all changes are committed to git.
|
|
|
|
- Run make distcheck and ensure that everything looks good.
|
|
It should generate the distribution files for you.
|
|
|
|
- Tag the current git HEAD with the new version number:
|
|
|
|
git tag -s $version -m "Release $version"
|
|
|
|
- Push HEAD and tag to savannah
|
|
|
|
git push
|
|
git push --tags
|
|
|
|
- Regenerate the documentation for the website:
|
|
|
|
# First check out gnulib repository via:
|
|
# git clone git://git.savannah.gnu.org/gnulib.git
|
|
|
|
# and stow-web CVS repository via the instructions here:
|
|
# https://savannah.gnu.org/cvs/?group=stow
|
|
|
|
# Set paths:
|
|
stow_repo=/path/to/stow/git/repo
|
|
stow_web_repo=/path/to/stow-web/CVS/working/dir
|
|
gnulib_repo=/path/to/gnulib/git/repo
|
|
|
|
cd $stow_repo
|
|
export GENDOCS_TEMPLATE_DIR=$gnulib_repo/doc
|
|
$gnulib_repo/util/gendocs.sh \
|
|
-s doc/stow.texi \
|
|
-o $stow_web_repo/manual \
|
|
--email bug-stow@gnu.org \
|
|
stow "GNU Stow manual"
|
|
|
|
cd $stow_web_repo
|
|
# Check that the changes look OK
|
|
cvs diff
|
|
# Then commit
|
|
cvs commit -m 'Update manual to v7.8.9'
|
|
|
|
- Run ./Build dist
|
|
|
|
- Upload the resulting Stow-v7.8.9.tar.gz to CPAN via https://pause.perl.org/
|
|
|
|
- Upload to ftp.gnu.org. This is easiest using gnupload:
|
|
|
|
- git clone git://git.savannah.gnu.org/gnulib.git
|
|
- Copy gnulib/build-aux/gnupload to somewhere on your $PATH
|
|
- Run gnupload --to ftp.gnu.org:stow --symlink-regex stow-7.8.9.tar.*
|
|
|
|
- Send release announcements to
|
|
|
|
- info-stow@gnu.org
|
|
- stow-devel@gnu.org
|
|
- info-gnu@gnu.org
|
|
- https://savannah.gnu.org/news/?group=stow
|
|
|
|
See http://www.gnu.org/prep/maintain/html_node/Announcements.html for
|
|
more on making release announcements.
|
|
|
|
- Update the git repositories to the next expected version, so that anyone
|
|
who builds from git gets a version of Stow which is higher than the release
|
|
which was just cut:
|
|
|
|
- Increment the patchlevel of the version number in configure.ac.
|
|
|
|
- Repeat the same procedure listed in the Module::Build section
|
|
above, in order to update META.yaml and META.json.
|
|
|
|
- git commit -m "Bump version to X.Y.Z for development of next release"
|
|
|
|
- git push savannah
|
|
|
|
- git push github
|