On our path towards a 1.0 release it would help to start with a 0.1 release soon. Ideally, we’d do this in a systematic way and first discuss how we want the process to look like initially.
It would make sense for the process to be similar to Bitcoin Core’s. Here are some suggestions, based on my understanding of bitcoin-maintainer-tools/make-tag.py and bitcoin/doc/release-process.md.
We would copy the start of Core’s configure.ac into ours:
0define(_CLIENT_VERSION_MAJOR, 0)
1define(_CLIENT_VERSION_MINOR, 99)
2define(_CLIENT_VERSION_BUILD, 0)
3define(_CLIENT_VERSION_RC, 0)
4define(_CLIENT_VERSION_IS_RELEASE, false)
and replace our AC_INIT
with
0AC_INIT([libsecp256k1],m4_join([.], _CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MINOR, _CLIENT_VERSION_BUILD)m4_if(_CLIENT_VERSION_RC, [0], [], [rc]_CLIENT_VERSION_RC))
We can print the version at the end of the configure script and a warning if RELEASE
is not true.
Now in order to create a release candidate we
- Start writing release notes
- Create a corresponding release branch
- Create a commit to fix the
VERSIONS
in configure.ac (includingRC=1
) - Tag the commit with a version of make-tag.py that’s adapted to libsecp
- Create github release
- Create a commit to fix the
- To create a new release candidate repeat steps 2.i through 2.iii
- Once we’re happy with the release candidate
- Archive the release notes for the new version to doc/release-notes/ (branch master and branch of the release)
- Create commit to set
IS_RELEASE
totrue
andVERSION_RC
to0
- Tag the release
- Create a new GitHub release with a link to the archived release notes
This doesn’t look as simple as I would have hoped, but it’s not terrible. What do you think?