stow/doc/HOWTO-RELEASE

146 lines
4.2 KiB
Text
Raw Normal View History

2011-11-26 13:15:26 -05:00
How to make a new release of GNU Stow
=====================================
Prerequisite reading
--------------------
First read the official information for maintainers of GNU software:
2015-11-09 06:05:00 -05:00
https://www.gnu.org/prep/maintain/
Release procedure
-----------------
2019-06-25 15:04:11 -04:00
- Ensure configure.ac contains the number of the new unreleased
version. This should follow Semantic Versioning as described at:
2019-06-25 15:04:11 -04:00
http://semver.org/
2019-06-25 15:04:11 -04:00
- To make the following steps easier, set the $version shell variable
to the same version number as above, e.g.
2011-11-26 13:15:26 -05:00
2019-06-25 15:04:11 -04:00
version=$( tools/get-version ) && echo $version
2019-06-25 15:04:11 -04:00
- Ensure NEWS contains the latest changes, and that any new
contributors have been added to THANKS. If necessary, commit
any additions:
2015-11-09 05:13:34 -05:00
2019-06-25 15:04:11 -04:00
git commit -m "Prepare NEWS and THANKS for $version release"
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- Check CPAN distribution will work via Module::Build:
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- Generate stow, chkstow, and lib/Stow.pm via:
2015-11-09 06:05:00 -05:00
eval `perl -V:siteprefix`
automake --add-missing
./configure --prefix=$siteprefix && make
2015-11-09 06:05:00 -05:00
(N.B. the CPAN distribution will contain these files, whereas
the GNU distribution will not.)
2015-11-09 06:05:00 -05:00
- Make sure all the following commands all run successfully:
2015-11-09 06:05:00 -05:00
perl Build.PL --prefix=/tmp/stow-test
./Build test
./Build install
./Build distcheck
./Build distmeta
2015-11-09 06:05:00 -05:00
- 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:
2019-06-25 15:04:11 -04:00
git commit -m "Bump version to $version"
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- Ensure all changes are committed to git.
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- Run make distcheck and ensure that everything looks good.
It should generate the distribution files for you.
2011-11-26 13:15:26 -05:00
- Run the tests on various Perl versions via Docker:
./build-docker.sh
./test-docker.sh
2019-06-25 15:04:11 -04:00
Obviously if there are any failures, they will need to be fixed
first, and then repeat the above steps.
- At this point we have a release candidate. Tag the current git HEAD
with the new version number:
git tag -s $version -m "Release $version"
- Run ./Build dist
- Upload the resulting Stow-v7.8.9.tar.gz to CPAN via https://pause.perl.org/
- Wait until PAUSE has accepted the upload as a valid module.
This provides some valuable final validation, as shown by the
non-release of 2.2.1.
- Push HEAD and tag to savannah and GitHub:
git push savannah
git push --tags savannah
git push github
git push --tags github
2015-11-09 06:05:00 -05:00
- Regenerate the documentation for the website:
2015-11-09 06:05:00 -05:00
# First check out gnulib repository via:
# git clone git://git.savannah.gnu.org/gnulib.git
2015-11-09 06:05:00 -05:00
# and stow-web CVS repository via the instructions here:
# https://savannah.gnu.org/cvs/?group=stow
2015-11-09 06:05:00 -05:00
# 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
2015-11-09 06:05:00 -05:00
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"
2015-11-09 06:05:00 -05:00
cd $stow_web_repo
# Check that the changes look OK
cvs diff
# Then commit
cvs commit -m 'Update manual to v7.8.9'
2015-11-09 06:05:00 -05:00
- Upload to ftp.gnu.org. This is easiest using gnupload:
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- 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.*
2011-11-26 13:15:26 -05:00
2016-11-20 16:51:41 -05:00
- Send release announcements to
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
- info-stow@gnu.org
- stow-devel@gnu.org
- info-gnu@gnu.org
- https://savannah.gnu.org/news/?group=stow
2011-11-26 13:15:26 -05:00
2015-11-09 06:05:00 -05:00
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