fd10706ce3
Charles LeDoux did some awesome work providing this Docker environment which can test across multiple Perl versions using perlbrew, so it would be crazy not to use it.
141 lines
4 KiB
Text
141 lines
4 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"
|
|
|
|
- Run the tests on various Perl versions via Docker:
|
|
|
|
./build-docker.sh
|
|
./test-docker.sh
|
|
|
|
- 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
|
|
|
|
- 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'
|
|
|
|
- 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
|