Copy and paste the following markdown list into a deal.II Issue:
The following is a list of ouststanding QA tests that should be checked before proceeding with a release. In order to avoid duplicated efforts, add your a tag @name
with your name after assigned:
and link corresponding pull requests after pr:
. Finally, tick of the box when the task is done.
- Update regression tester (assigned:, pr: —) Check and (if necessary) update testing infrastructure so that at least one configuration runs with the latest versions of external dependencies and compilers. Also temporarily remove all test exclusion lists from the regression tester and re-evaluate whether they still have to be excluded.
- Outstanding issues and pull-requests Check issues and pull-requests for outstanding fixes. Update release milestones https://github.com/dealii/dealii/milestone/12
- cppcheck (assigned:, pr:)
Run
cppcheck
across all source files:cppcheck --force -j4 --enable=all -I./include/ ./source/*/*.cc >cppcheck-results.txt 2>&1
and look for anything that should obviously be fixed. - codespell (assigned:, pr:)
Run
codespell
across all source files:codespell ./contrib/ ./cmake/ ./doc/ ./examples/ ./include/ ./source/
and look for typos and spelling mistakes that should be fixed. - clang-tidy (assigned:, pr:)
Run clang tidy via:
mkdir build && cd build
../contrib/utilities/run_clang_tidy.sh ../
and check that no warnings are reported. - doxygen reflinks (assigned:, pr:)
Check doxygen commands and reflinks:
cd include
find . -iname "*h" -exec ../contrib/utilities/wrapcomments.py {} \; > /dev/null
Also check:grep -l '@ref[^"]*"[^"]*$' **/*.h
grep -l '@ref$' **/*.h
NOTE: Do not use wrapcomments.py to actually reflow comments - the script causes too much churn with little value. - doxygen (assigned:, pr:) Check that doxygen produces no errors when generating the documentation. Also check that the tutorial dot graph gets generated.
- Copyright years (assigned:, pr:)
Run the copyright script:
./contrib/utilities/update-copyright
and make a pull request with a commit title "Update copyright years". - Examples (assigned:, pr:)
Configure, build and run all examples by hand:
cd examples
for i in step-* ; do (cd $i ; cmake -DDEAL_II_DIR=../.. . ; make ; make run) ; done
This step will require looking at the output and checking whether anything untoward is happening. - Code Gallery (assigned:, pr: —) Do the same for the code gallery examples: They should at the very least compile. If possible, also run them to make sure they don't trip up any exceptions.
- Update
.gitattributes
(assigned:, pr:) Check that.gitattributes
is up to date by usinggit archive
and checking that the contents is meaningful. In particular, doquicktests
still run? - Update authors (assigned:, pr: —)
Update the authors list on the homepage authors.html by cross-referencing
doc/news/changes.h
and the git commit history:egrep '[0-9]+/[0-9]+/[0-9]+' doc/news/changes/*/* | perl -p -e 's/^.*\(//g; s#, *[0-9/]+\)##g; s/, */\n/g;' | sort | uniq
Compare with the git commit history between the last release and current master:git log --date=short --format="%an %aE" v9.4.0..HEAD | grep -v 'dependabot\[bot\]' | sort | uniq
The list of contributors to the current release should also be copied to the end of the release paper. - Changes file (assigned:, pr:)
This step should happen immediately before branching off so that the changes file does not need to get updated again.
- Create a new changes files by running the following commands:
mkdir build-doc && cd build-doc
cmake -DDOCUMENTATION=ON ../
make documentation
cp doc/news/changes.h ../doc/news/9.4.0-vs-9.5.0.h
cd ../
- Manually check
doc/news/9.4.0-vs-9.5.0.h
for dead links, duplicated entries, obsolete entries (e.g., commit 1 adds feature A, commit 2 fixes feature A), etc. Update@page
title and copyright year. - Then,
git checkout -b update-changes-file
git add doc/news/9.4.0-vs-9.5.0.h
git commit -m "Update the changelog file for the release."
```git commit -m "Remove now obsolete files."``` ```touch doc/news/changes/{major,minor,incompatibilities}/20230623dummy``` ```git add doc/news/changes/{major,minor,incompatibilities}/20230623dummy``` ```git commit -m "Add dummy files."```
- Adjust
doc/users/doxygen.html
to link to the to-be-created TAG file. - Make a pull request
- Create a new changes files by running the following commands:
The following steps have to be done by a single developer (with admin privileges on the repository)
- Create and push a release branch
- Verify that the local
master
branch is up to date and create local branch:git checkout master && git pull
git status
git checkout -b dealii-9.5
(Note: exactlydealii-9.5
to remain consistent!) - Update
VERSION
file from9.5.0-pre
to9.5.0-rc0
:echo 9.5.0-rc0 > VERSION
Note: Please do not use9.5.0
, or9.5.0-rc1
, directly because the soname is derived from the current version number. Therefore, 9.5.0 should only be used for the final, tagged and distributed code.git commit -a -m "update VERSION"
Note: This commit is done without a pull request! We use theupdate VERSION
commits to tag releases and release candidates and therefore should be plain commits on the release branch. - Push the branch to github (assuming
origin
points to github): ```git push origin dealii-9.5`
- Verify that the local
- Github: Update branch properties Check branch properties on github! This should be set automatically but nevertheless make sure that the following options are set: push protection + mandatory test + mandatory number of reviews, best between 2 and 3.
- Main branch: Update version
git checkout master
git checkout -b update_version
- Update the
VERSION
file from9.5.0-pre
to9.6.0-pre
.echo 9.6.0-pre > VERSION
Note: Conservatively only increment the minor version even if the plan is to later release a major update — it is always possible to convert 9.4 into 10.0 later, but one can't easily back down any more. git commit -a -m "Update VERSION"
- Make a pull request against main branch (
master
).
- Update the
The following is a list of ouststanding tasks that have to happen on the release branch before we can tag a release (candidate). In order to avoid duplicated efforts, add your a tag @name
with your name after assigned:
and link corresponding pull requests after pr:
. Finally, tick of the box when the task is done.
- Update
AUTHORS.md
andLICENSE.md
(assigned:, pr:)- Create an
AUTHORS.md
file in the top-level directory of the branch that contains a text-only copy of the authors.html file from the website. You can start from lynx -dump -nolist https://www.dealii.org/authors.html >AUTHORS and format it like this: https://github.com/dealii/dealii/blob/dealii-9.0/AUTHORS - Update
LICENSE.md
to point to the AUTHORS.md file:[...] refers to the people listed in the file AUTHORS.md.
git add AUTHORS.md LICENSE.md
git commit -a -m "update AUTHORS.md and LICENSE.md"
- Make a pull request against release branch (
dealii-9.5
).
- Create an
- Remove unfinished tutorial programs. (assigned:, pr:)
- Delete directories on the release branch:
cd examples
git rm -r step-... ...
- These steps should also not be listed on the branch in
doc/doxygen/tutorial/tutorial.h.in
git commit -a -m "remove unfinished example steps"
- Make a pull request against the release branch (
dealii-9.5
).
- Delete directories on the release branch:
- Update deprecations (assigned:, pr:)
On the main branch, replace all occurrences of
DEAL_II_DEPRECATED_EARLY
byDEAL_II_DEPRECATED
in the library. Note: This is a time critical task so that we don't lose track what declarations have been deprecated (early) before or after this release. - Update version dependencies (assigned:, pr:)
- On mainline, do something like this to require the current dev version for the tutorials and in the documentation:
perl -pi -e 's/deal.II 9.5.0/deal.II 9.6.0/g;' examples/*/CMakeLists.txt
- Also check
doc/users/*
andtests/*
:grep "FIND_PACKAGE(deal.II" -r doc/ tests/
git commit -a -m "Require the current version of deal.II."
- Make a pull request against main branch (
master
).
- On mainline, do something like this to require the current dev version for the tutorials and in the documentation:
- Documentation check (assigned:, pr:)
Ensure once more that the documentation is generated cleanly:
- Ensure that the code gallery is in place:
git clone https://github.com/dealii/code-gallery.git
- Generate documentation
mkdir build && cd build
cmake -DDOCUMENTATION=ON -DDEAL_II_DOXYGEN_USE_MATHJAX=ON -DCMAKE_INSTALL_PREFIX=<install>
make documentation
cd <install>/doc
for i in `find . | egrep '\.html$'` ; do perl <source>/doc/doxygen/scripts/validate-xrefs.pl $i ; done
- Ensure that the code gallery is in place:
The following steps have to be done by a single developer (with admin privileges on the repository)
- Push the button
- Update
VERSION
file from9.5.0-rc0
to9.5.0-rc1
(or9.5.0
for the final release):echo 9.5.0-rc1 > VERSION
git commit -a -m "update VERSION for release"
Note: This commit is done without a pull request! We use theupdate VERSION
commits to tag releases and release candidates and therefore should be plain commits on the release branch. - Create a signed tag for the commit:
git tag -s -m "deal.II Pre-Release Version 9.5.0-rc1" v9.5.0-rc1
or alternatively for a release:git tag -s -m "deal.II Version 9.5.0" v9.5.0
You need a working gnupg key for this. (You should have anyway :-P) - Push the changes to github (assuming
origin
points to github):git push origin dealii-9.5 v9.5.0-rc1
- Update
- Create and sign tar archive
- Github automatically generates a source tarball from the current repository state, see https://github.com/dealii/dealii/releases
- Download the source tarball from github, verify that its contents is what we expect, e.g., by doing the following in a clean repository:
git checkout v9.5.0-rc1
tar --strip-components=1 -xvf dealii-9.5.0-rc1.tar.gz
git status
Now, the last git status will only record some deleted files but must not show any modified file contents! - Sign it:
gpg --detach-sign --armor dealii-9.5.0-rc1.tar.gz
- Create and sign documentation tar archive
- Check out the code-gallery at the correct path
- Install MathJax locally and export the path, for example on Debian/Gentoo:
export MATHJAX_ROOT="/usr/share/mathjax"
- Generate and install the documentation from a clean working directory containing the tagged release and configure with:
cmake -DDOCUMENTATION=ON -DDEAL_II_DOXYGEN_USE_MATHJAX=ON -DDEAL_II_DOXYGEN_USE_ONLINE_MATHJAX=OFF \
-DDEAL_II_COMPILE_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=<install>
make documentation
make examples
- Download images:
<install>/doc/doxygen/deal.II
<source dir>/contrib/utilities/makeofflinedoc.sh
- (In the same directory) copy mathjax and fix includes:
cp -r "$MATHJAX_ROOT" mathjax
sed -i -e "s#$MATHJAX_ROOT#mathjax#" **/*.html
- Grep the documentation for "full path leaks", for example grep for your user name and the git repository location and fix up all remaining locations (in particular deal.tag)
- Create
dealii-9.5.0-rc1-offline_documentation.tar.gz
:cd <install>
tar --numeric-owner --owner=0 --group=0 -cvf dealii-9.5.0-rc1-offline_documentation.tar doc examples
gzip dealii-9.2.0-offline_documentation.tar
- And sign it:
gpg --detach-sign --armor dealii-9.5.0-rc1-offline_documentation.tar.gz
- Create a (pre-)release on github
- Got to https://github.com/dealii/dealii/tags and select the just uploaded v9.5.0-rc1 tag and click on "add release notes". Use the following information:
Tag: v9.0.0-rc1 existing tag
Release title: deal.II pre-release version 9.0.0-rc1
Description: ""
Note: For a release use:Tag: dealii-9.5.0 existing tag
Release title: deal.II version 9.5.0
Description: [Short version of release notes as found in announce-9.5]
A full list of changes can be found at
https://www.dealii.org/developer/doxygen/deal.II/changes_between_9_4_0_and_9_5_0.html
- Attach
dealii-9.5.0-rc1.tar.gz
(yes, once again),dealii-9.5.0-rc1.tar.gz.asc
,dealii-9.5.0-rc1-offline_documentation.tar.gz
,dealii-9.5.0-rc1-offline_documentation.tar.gz.asc
.
- Got to https://github.com/dealii/dealii/tags and select the just uploaded v9.5.0-rc1 tag and click on "add release notes". Use the following information:
The following is a list of ouststanding tasks that have to happen after we tagged a release (candidate). In order to avoid duplicated efforts, add your a tag @name
with your name after assigned:
. Finally, tick of the box when the task is done.
- Generate the documentation on the webserver (assigned:)
- Adjust
header.include
on the homepage (assigned:) Change links to the documentation of the most recent version; change the link to the changes_after_X_Y_Z.html file. - Adjust
news.html
on the homepage (assigned:)- add a new entry for the release using the link to the copied changes.h file from above
- also rotate the news entry in the short news blurbb on the fron page in
index.html
- Generate MAC bundles and attach to current (pre-)release (assigned:)
- Update deal.II package in Spack (assigned:)
- Update deal.II package in Candi (assigned:)
- Update deal.II package in Gentoo (assigned:)
- Update deal.II package in Ubuntu/Debian and generate PPA for Ubuntu LTS (assigned:)
- Update deal.II package in Archlinux AUR (assigned:)
- Update deal.II Virtualbox Images (assigned:)
- Release announcements (assigned: —)
- on the user mailing list
- send a separate mail with the list of contributors for this release
- on social media (facebook, twitter)
- send a news item to NADigest; web form breaks longer lines automatically, so keep them long to avoid awkward formatting; https://na-digest.coecis.cornell.edu/submit/
- SIAM CS&E digest
- Update wikipedia pages (assigned:)