seqan / seqan3

The modern C++ library for sequence analysis. Contains version 3 of the library and API docs.
https://www.seqan.de
Other
398 stars 81 forks source link

3.3.0 Release #3166

Closed eseiler closed 7 months ago

eseiler commented 1 year ago




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](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). ```bash 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](#packaging) 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](https://github.com/seqan/seqan3/blob/3.0.2/include/seqan3/version.hpp#L19-L24).

Updating cppreference index
Check for [new releases](https://github.com/PeterFeicht/cppreference-doc/releases) and update the link and hash in [test/documentation/seqan3-doxygen.cmake](https://github.com/seqan/seqan3/blob/b0b279689fa65c2431a5162f2d8acc3ca663f72d/test/documentation/seqan3-doxygen.cmake#L37). You can compute the hash via `wget -O- | sha256sum`.

Freezing the release branch
- Make sure all PRs that should be merged are merged. - Set `SEQAN3_RELEASE_CANDIDATE` to `0` [include/seqan3/version.hpp](https://github.com/seqan/seqan3/blob/3.0.2/include/seqan3/version.hpp#L19-L24). - This should be the last commit before the release.

Creating versioned documentation
1. Checkout the release tag and build documentation. 2. Create a #.#.# directory for the release in `/web/docs.seqan.de/htdocs/seqan/` 3. Copy everything from the build (`doc_usr/html/*`) into the directory. 4. Alter the file `/web/docs.seqan.de/htdocs/seqan3.html` with a link to the new documentation build.

Creating source packages
Use a new clone of the repository. ```bash 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).

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](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). ```bash 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](https://github.com/seqan/seqan3/blob/3.0.2/include/seqan3/version.hpp#L19-L24). - The `SEQAN3_RELEASE_CANDIDATE` must be set to `1` as `0` indicates a stable release. - Bump the latest stable version number of the API-Stability test in master: [test/api_stability/CMakeLists.txt](https://github.com/seqan/seqan3/blob/3.0.3/test/api_stability/CMakeLists.txt#L10).
eseiler commented 1 year ago

RC1: https://github.com/seqan/seqan3/releases/tag/3.3.0-rc.1

mr-c commented 1 year ago

RC1 builds with GCC 13 in Debian for me; I'll upload soon to our experimental repository

Here are the patches we are still carrying; if any of them can be adapted so we don't have to carry them, that'd be great https://salsa.debian.org/med-team/seqan3/-/tree/debian/experimental/debian/patches

eseiler commented 1 year ago

RC2: https://github.com/seqan/seqan3/releases/tag/3.3.0-rc.2