3.2.0 Release
- [x]
Create a release branch, e.g.release-[VERSION], and enable branch protection in the repository settings. - [x] Update copyright year. https://github.com/seqan/seqan3/pull/3011
- [x] Create at least one pre-release s.t. our package maintainers can try out a new release of our library. (Instructions)
- [x] Check that the directory structure is valid.
- [x] Check for critical performance regressions (via this tool). https://github.com/seqan/seqan3/wiki/cmp_benchmarks:-Example-Usage
- [x] Check Nightlies for critical build failures.
Change nightlies to build on release branch. - [x] Check workarounds in
platform.hpp. Are they still valid, or can they be limited to specific compiler versions? - [x] Check the Changelog.md for completeness (including changed headers). (Instructions)
- [x] Update the index from cppreference.com so that up-to-date documentation links are generated. (Instructions) https://github.com/seqan/seqan3/pull/2997
- [x] Freeze branch. (Instructions)
- [x] Add versioned documentation to docs.seqan.de. (Instructions)
- [x] Prepare
seqan3-[VERSION]-{Linux,Source}.tar.xz{,.sha265}. (Instructions) - [x] Prepare a release note with notable features, API changes, bugs, and external dependency updates. https://hackmd.io/VwCifvy3TYS7_ZjBqk2d1A?both
- [x] Tag release on GitHub and attach
seqan3-[VERSION]-{Linux,Source}.tar.xz{,.sha265}to the release. (Instructions)
- [x]
Merge release branch into master. - [x] Bump version. (Instructions)
- [x] Update the version used for update notifications. (https://github.com/OpenMS/usage_plots/pull/20)
- [x]
Delete release branch (remove branch protection in repository settings first). - [x]
Change Nightlies back to master branch. - [x] Announce release on Twitter.
- [x] Announce release on website.
- [x] Announce release on mailing list
[email protected]. - [x] Announce release on public Gitter channel.
- [ ] Notify upstream package maintainers:
- [ ] Update release template with the current release tasks.
- [ ] Clean up Wiki
- [ ] Celebrate :tada: :beer:
Instructions
Creating a pre-release
GitHub is not able to create annotated releases (https://github.com/seqan/product_backlog/issues/159), so we have to manually sign the release. Make sure you have set up signed commits.
git checkout release-[VERSION]
git tag -s [VERSION]-rc.[RC] # e.g. 3.1.0-rc.1
git push upstream [VERSION]-rc.[RC]
You will need to provide a tag message. Since this is a pre-release, it can be as simple as Tag 3.1.0-rc.1.
Now follow the packaging instructions to create seqan3-[VERSION]-rc.[RC]-{Linux,Source}.tar.xz{,.sha265}.
Go to https://github.com/seqan/seqan3/releases and create a new release using the created tag and attach the source packages.
:warning: Make sure to set the tick for "This is a pre-release" :warning:
Once again, the release message can be simply something along the lines of:
This is the first release candidate for SeqAn 3.0.3
You can find a list of changes in our [changelog](https://docs.seqan.de/seqan/3.0.3/about_changelog.html).
Afterwards, bump the succeeding release candidate number in the release branch: include/seqan3/version.hpp.
Updating cppreference index
Check for new releases and update the link and hash in test/documentation/seqan3-doxygen.cmake.
You can compute the hash via wget -O- <link to html book> | sha256sum.
Freezing the release branch
- Make sure all PRs that should be merged are merged.
- Set
SEQAN3_RELEASE_CANDIDATEto0include/seqan3/version.hpp. - This should be the last commit before the release.
Creating versioned documentation
- Checkout the release tag and build documentation.
- Create a #.#.# directory for the release in
/web/docs.seqan.de/htdocs/seqan/ - Copy everything from the build (
doc_usr/html/*) into the directory. - Alter the file
/web/docs.seqan.de/htdocs/seqan3.htmlwith a link to the new documentation build.
Creating source packages
Use a new clone of the repository.
git clone https://github.com/seqan/seqan3.git
cd seqan3
git checkout release-[VERSION] # version/branch to pack
git submodule update --init
mkdir ../package-build
cd ../package-build
cmake ../seqan3 # configure
cpack # builds binary package, e.g. seqan3-[VERSION]-Linux.tar.xz{,.sha265}
cmake --build . --target package_source # builds source package, e.g. seqan3-[VERSION]-Source.tar.xz{,.sha265}
Note: Do not use git clone --recurse-submodules https://github.com/seqan/seqan3.git because it will recursively pull sub-submodules!
Checking the changelog
- List all supported compiler, also add to https://docs.seqan.de/seqan/3-master-user/about_api.html#autotoc_md35.
- Check that all links are consistent, e.g.,
[\#2540](https://github.com/seqan/seqan3/pull/2538):- Search
(\[\\#)(\d+)(\]\(.+?)(\d+)(\))and replace$1$2$3$2$5(i.e., replace link issue-id by the displayed id).
- Search
Creating a release
GitHub is not able to create annotated releases (https://github.com/seqan/product_backlog/issues/159), so we have to manually sign the release. Make sure you have set up signed commits.
git checkout release-[VERSION]
git tag -s [VERSION]
git push upstream [VERSION]
You will need to provide a tag message. We use the first sentences of the release note:
E.g. (see https://github.com/seqan/seqan3/tags)
SeqAn 3.0.2 Release
Despite all circumstances, we are excited to present a new update of our SeqAn library.
We present some great new features and also a lot of usability improvements.
Among others, this release will fully comply with the final C++-20 standard.
:warning: In this release we harmonised the algorithm configurations for a better user experience.
This, much like 2020, will break a lot of code. But rest assured that the changes are easy to apply and are worth every bit. :smile:
You can find a comprehensive list of the changes in our [changelog](https://docs.seqan.de/seqan/3.0.2/about_changelog.html).
Bumping the version
- Bump succeeding version number in the master branch: include/seqan3/version.hpp.
- The
SEQAN3_RELEASE_CANDIDATEmust be set to1as0indicates a stable release. - Bump the latest stable version number of the API-Stability test in master: test/api_stability/CMakeLists.txt.
RC 1 available: https://github.com/seqan/seqan3/releases/tag/3.2.0-rc.1
3.2.0-Rc.1 has been uploaded for building in Debian https://tracker.debian.org/news/1335812/accepted-seqan3-320rc1ds-1-source-into-unstable/
Eventually https://buildd.debian.org/status/package.php?p=seqan3 should show the result
Are architectures besides x86-64 supported yet? Should I test on arm64?
Are architectures besides x86-64 supported yet? Should I test on arm64?
These should work:
Other 64-bit architectures might work, as long as they are little endian. E.g., s390x on Travis doesn't work because it's big endian and our alignment I/O only handles little endian for its binary stuff.
SIMD is only supported for the SSE and AVX instructions sets, i.e., basically x86-64-only. E.g., on ppc, it will fall back to non-SIMD implementations instead of using altivec-equivalents. I think we have a ticket somewhere to look into SIMD Everywhere...
Cool! The x86-64 build succeeded: https://buildd.debian.org/status/package.php?p=seqan3
I queued up a one-time test build on arm64 and ppc64le which will appear later at https://buildd.debian.org/status/package.php?p=seqan3&suite=experimental
arm64 and ppc64le builds pass for Debian; this first release candidate looks good to me!
3.2.0 has been released https://github.com/seqan/seqan3/releases/tag/3.2.0
@eseiler The 3.2.0 package for Debian is in the development distribution unstable and should migrate to the testing distribution in a 2-3 days; feel free to check that box above :-)
https://packages.debian.org/source/unstable/seqan3 https://tracker.debian.org/news/1338753/accepted-seqan3-320ds-1-source-into-unstable/
3.2.0 has been released https://github.com/seqan/seqan3/releases/tag/3.2.0
Successfully compiled and tested in Fedora 37 (devel branch)