Release SHTOOLS 4.11
MarkWieczorek opened this issue · comments
Scheduled Date: 2024/01/17
Before release
Make all changes on the branch develop
. Verify that the version numbers and other metadata are up to date in the following files:
-
Makefile
: update shtools version number (for use with fortran man page documentation only; not required for maintenance releases x.x.>0) -
docs/_data/sidebars/mydoc_sidebar.yml
: update pyshtools version number for web documentation -
docs/_data/sidebars/fortran_sidebar.yml
: update shtools version number for web documentation -
docs/pages/mydoc/release-notes-v4.md
: update release notes -
docs/pages/fortran/fortran-release-notes-v4.md
: update release notes -
requirements.txt
: update version numbers of the python dependencies, if necessary -
requirements-dev.txt
: update version numbers of the python developer dependencies, if necessary -
environment.yml
: update version numbers of the conda environment, if necesseary -
binder/environment.yml
: update version number of pyshtools and other dependencies -
fpm.toml
: update shtools version number -
AUTHORS.md
,docs/pages/mydoc/contributors.md
,docs/pages/fortran/fortran-contributors.md
: Add new contributors, if necessary
Update the documentation files and man pages
-
cd docs; bundle update; cd ..
: update the Gemfile for the jekyll web documentation -
make remove-doc
: this ensures that the correct version number will be written to the fortran man pages -
make doc
: make the fortran man pages, create markdown files from the python docstrings, create web documentation, and create python docstrings for wrapped functions.
Release
- Commit all changes to the
develop
branch and then merge all changes to themaster
branch. - Go to GitHub Release, create a tag of the form
vX.X
, and draft a new release. - Update the master branch on your personal repo, along with the newly created tag, using
git pull shtools master --tags
, where shtools is the name of the remote repo on github.
Verify workflow execution
- Creation and upload of a zipped archive to Zenodo
- Creation and upload of static web site.
- Upload of a source tarball as a release asset.
- Upload of the source distribution to pypi.
- Creation and upload of macOS and Linux binary wheels to pypi. If the workflow doesn't trigger, choose to run the github action on build-shtools.
- Manually trigger Appveyor on the build-shtools repo to create and upload a windows wheel.
Update Homebrew
- Verify that the homebrew bot updated the file
shtools.rb
in a pull request, and that this was merged. If this doesn't occur automatically, edit the fileshtools.rb
in the homebrew-core repo and make the following changes: - Change "url" to point to the new version (the link to the tar.gz archive can be found on the release page).
- Update the sha256 hash of the tar.gz pypi upload by using
shasum -a 256 filename
. - Commit and push changes.
Update MacPorts
- Update the MacPorts installation. If this doesn't happen automatically, editing the file
science/shtools/Portfile
in the macports-ports repo and change the following: - Change the version number in
github.setup
. - Update the sha256, rmd160 and file size of the release asset.
- Commit and push changes.
Update conda-forge
- Go to pyshtools-feedstock and check that the
recipe/meta.yaml
file has been updated and that an automatic pull request has been generated by the conda-forge bot.
Post release
- Build a new Binder image by running one of the tutorials.
- Advertise on Mastodon and Matrix.
The new Meson build backend is causing some problems in creating both the conda packages and pypi wheels. The biggest issues are related to problems with LAPACK and BLAS, but there are other issues with the macOS releases too....
If you have any experience with this, we are looking for help!
Here is the PR for the pyshtools conda feedstock (we will need to rebuild for python 3.12 after this passes): conda-forge/pyshtools-feedstock#46
And here are is the CI output for the pypi wheels: https://github.com/SHTOOLS/build-shtools/actions/runs/7582892444/job/20653398877
(I note that multibuild has caused me much grief, so it might be time to look into something else like cibuildwheel: https://github.com/pypa/cibuildwheel)