173 lines
5.1 KiB
Text
173 lines
5.1 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
|
|
-----------------
|
|
|
|
- Ensure configure.ac contains the number of the new unreleased
|
|
version. This should follow Semantic Versioning as described at:
|
|
|
|
http://semver.org/
|
|
|
|
- To make the following steps easier, set the $version shell variable
|
|
to the same version number as above, e.g.
|
|
|
|
version=$( tools/get-version ) && echo $version
|
|
|
|
- Ensure NEWS contains the latest changes. If necessary, commit
|
|
any additions:
|
|
|
|
git commit -m "Prepare NEWS for $version release"
|
|
|
|
- Check CPAN distribution will work via Module::Build:
|
|
|
|
- Start from a clean slate:
|
|
|
|
make maintainer-clean
|
|
autoreconf -iv
|
|
|
|
- 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
|
|
./Build dist
|
|
|
|
- Check META.yml 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 publised, but
|
|
if not:
|
|
|
|
git commit -m "Bump version to $version"
|
|
|
|
- Ensure all changes are committed to git.
|
|
|
|
- Run make distcheck and ensure that everything looks good.
|
|
It should generate the distribution files for you.
|
|
|
|
- Run the tests on various Perl versions via Docker:
|
|
|
|
./build-docker.sh
|
|
./test-docker.sh
|
|
|
|
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 v$version -m "Release $version"
|
|
|
|
- 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. If you
|
|
are the maintainer of the module, you should receive two email
|
|
notifications: a CPAN upload confirmation, and a PAUSE indexer
|
|
report. This provides some valuable final validation, as learnt the
|
|
hard way during the non-release of 2.2.1.
|
|
|
|
- Push HEAD and tag to savannah and GitHub:
|
|
|
|
git push savannah master
|
|
git push --tags savannah
|
|
git push github master
|
|
git push --tags github
|
|
|
|
- Upload the new release 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.*
|
|
|
|
- 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 v$version"
|
|
|
|
- Update the news section of stow.html in the stow-web CVS repository
|
|
to mention the new release.
|
|
|
|
cd $stow_web_repo
|
|
# Check that the changes look OK
|
|
cvs diff
|
|
# Then commit
|
|
cvs commit -m "Update home page to v$version"
|
|
|
|
- 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.
|
|
|
|
Excerpts of NEWS can be formatted for inclusion in the email by
|
|
selecting the relevant version subtree via M-x org-mark-element,
|
|
minus the "* Changes in version x.y.z", running M-x
|
|
org-export-dispatch, and exporting as plain text.
|
|
|
|
- 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.
|
|
|
|
- Run this again:
|
|
|
|
version=$( tools/get-version ) && echo $version
|
|
|
|
- In order to update META.yml and META.json, repeat the same
|
|
procedure listed above, starting at "make distclean" and
|
|
finishing after "./Build distmeta".
|
|
|
|
- Check META.yml and META.json now have the new versions.
|
|
|
|
- git add configure.ac META.{yml,json}
|
|
|
|
- git commit -m "Bump version to $version for development of next release"
|
|
|
|
- git push savannah master
|
|
|
|
- git push github master
|