3 * assuming some variables
7 * perform a sanity check
9 - check that the nightly bench is OK
10 - `make xml-validate-local` (see below for `why3session.dtd`)
12 - run `make detect-unused` and remove unused files
13 - run `make update-doc-png` and check if some pictures need to be updated
14 - run `make doc/latex/manual.pdf` and check the manual
15 - run `make dist` and check the content of `distrib/why3-X.X.X.tar.gz`
16 - check `lib/why3/META.in` (e.g., against `EXTPKGS` in `Makefile.in`)
17 - update `opam/why3{,-ide,-coq}.opam` with correct dependencies on external packages
18 - check the gallery, especially the new examples (see below)
19 - run the manual job `trywhy3-extra` to build Alt-Ergo for TryWhy3 if needed (see below)
21 * check/update authors and copyright
22 - update the content of the About dialog in `src/ide/gconfig.ml`
24 - update the `copyright` field in `doc/conf.py` around line 50
25 - update `doc/foreword.rst`
26 - update `src/trywhy3/trywhy3.html`
27 - check headers, modify `misc/header.txt` and run `make headers` if needed
30 * perform and push the release commit
31 - create a branch if needed, `git checkout -b bugfix/v$VERSION master`
32 - or just move to it, `git checkout bugfix/v$VERSION`
33 - update the first line of `configure.in` using `$RELEASE`
34 - update the `version` and `release` fields in `doc/conf.py` around line 60
35 - add the release date to `CHANGES.md`
36 - update the date in `doc/index.rst`
39 git commit -am "Version $RELEASE"
45 * prepare and upload the archive to https://gitlab.inria.fr/why3/releases
47 - get the Git repository of the releases and move to it
49 cp .../distrib/why3-$RELEASE.tar.gz releases/
50 git add releases/why3-$RELEASE.tar.gz
51 git commit -m "Add release $RELEASE."
55 * update the repository, if this is the most recent release
56 - forward the `stable` branch of the Why3 repository:
57 `git push origin bugfix/v$VERSION:stable`
58 - merge back the changes to the `master` branch
59 - update the first line of `configure.in` using `$RELEASE+git`,
60 commit and push the change to `master`
62 * update the website, if this is the most recent release
63 - get the sources from https://gitlab.com/why3project/why3project.gitlab.io
64 - update `index.html` with the new url for download
65 - update `.gitlab-ci.yml` if the Alt-Ergo worker was rebuilt (job `trywhy3-extra`)
66 - update `why3session.dtd` with the current version
67 - wait for completion of the pipeline of the `stable` branch
68 - commit and push the changes, to trigger an update of the website
70 * prepare and upload the OPAM packages to https://github.com/ocaml/opam-repository
71 - reinitialize the repository if not fresh:
73 git remote add upstream https://github.com/ocaml/opam-repository.git
75 git reset --hard upstream/master
77 - `mkdir packages/why3/why3.$RELEASE packages/why3-coq/why3-coq.$RELEASE packages/why3-ide/why3-ide.$RELEASE`
78 - copy the `opam` files from the directories of the previous release
79 - reconcile with the changes from Why3's repository
80 - update the `url` section of all three `opam` files
81 - push and make a pull request on Github
82 - check whether some downstream developments were broken
83 and update the pull request accordingly
85 * produce the Why3 part of Toccata gallery, if this is the most recent release
86 - update the git repository of Toccata
87 - have `GALLERYDIR` point to the sub-directory `gallery` of that git repository,
88 e.g., `export GALLERYDIR=.../toccata/web/gallery`
89 - in Why3 sources, run `make gallery`;
90 it exports to `$GALLERYDIR` all the Why3 programs for which there is a session
91 - now move to the directory `$GALLERYDIR`
92 - check the examples that are currently untracked in the Toccata repository
93 and update `examples.rc` accordingly
94 - put the directories of the broken examples in `.gitignore`
95 - run `make`; this requires to have installed the newly released Why3;
96 the presence of `.prehtml.new` files means that something went wrong,
97 hopefully only for non-Why3 examples
98 - `git add` the new files
99 (except for the `.html` files, which should go in `web/gallery/.gitignore`)
100 - commit and push the modified files
102 * announce the release using the features of `CHANGES.md`