seqan3 icon indicating copy to clipboard operation
seqan3 copied to clipboard

3.2.0 Release

Open eseiler opened this issue 3 years ago • 9 comments

  • [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_CANDIDATE to 0 include/seqan3/version.hpp.
  • 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.

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.

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

eseiler avatar Jun 13 '22 08:06 eseiler

RC 1 available: https://github.com/seqan/seqan3/releases/tag/3.2.0-rc.1

eseiler avatar Jun 15 '22 18:06 eseiler

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

mr-c avatar Jun 16 '22 06:06 mr-c

Are architectures besides x86-64 supported yet? Should I test on arm64?

mr-c avatar Jun 16 '22 06:06 mr-c

Are architectures besides x86-64 supported yet? Should I test on arm64?

These should work:

  • x86-64 (tested via CI)
  • ppc64le (tested via Nightlies)
  • arm64 (tested via Travis)

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...

eseiler avatar Jun 16 '22 08:06 eseiler

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

mr-c avatar Jun 16 '22 11:06 mr-c

arm64 and ppc64le builds pass for Debian; this first release candidate looks good to me!

mr-c avatar Jun 17 '22 08:06 mr-c

3.2.0 has been released https://github.com/seqan/seqan3/releases/tag/3.2.0

eseiler avatar Jun 20 '22 14:06 eseiler

@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/

mr-c avatar Jun 24 '22 10:06 mr-c

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)

sagitter avatar Jun 26 '22 16:06 sagitter