From a28de6d56ff0c5ed38929a1055fbae8ca252b2f3 Mon Sep 17 00:00:00 2001 From: Hendrik Tews Date: Sat, 28 Oct 2023 15:21:08 +0200 Subject: [PATCH] ci/doc: document test strategy and the Coq/Emacs release table --- ci/doc/.gitignore | 1 + ci/doc/README.md | 368 ++++++++++++++++++++++++++++++++++ ci/doc/README.pdf | Bin 0 -> 48307 bytes ci/doc/coq-emacs-releases.org | 60 ++++++ 4 files changed, 429 insertions(+) create mode 100644 ci/doc/.gitignore create mode 100644 ci/doc/README.md create mode 100644 ci/doc/README.pdf create mode 100644 ci/doc/coq-emacs-releases.org diff --git a/ci/doc/.gitignore b/ci/doc/.gitignore new file mode 100644 index 000000000..397b4a762 --- /dev/null +++ b/ci/doc/.gitignore @@ -0,0 +1 @@ +*.log diff --git a/ci/doc/README.md b/ci/doc/README.md new file mode 100644 index 000000000..98efd929a --- /dev/null +++ b/ci/doc/README.md @@ -0,0 +1,368 @@ +--- +title: 'Continuous integration and testing for Proof General' +toc: true +papersize: a4 +linkcolor: blue +--- + +# Introduction + +This document describes the general strategy for testing Proof General +with GitHub actions and for building the necessary containers. + +The file `.github/workflows/test.yml` defines 5 jobs. + +build + : compile Proof General sources to bytecode and build documentation + +check-doc-magic: + : check that the documentation strings from the source code that are + magically included in the manuals are correct + +test + : run the tests in `ci/coq-tests.el` + +compile-tests + : run the auto-compilation tests in `ci/compile-tests` + +simple-tests + : run the tests in `ci/simple-tests` + +test-indent + : run Coq source code indentation tests + +The jobs build, check-doc-magic and test-indent run on different Emacs +versions but they do not need Coq. They therefore use the GitHub +hosted ubuntu-latest runner together with the `purcell/setup-emacs` +action to install Emacs. + +The jobs test, compile-tests and simple-tests need Coq and Emacs in +different version pairs. They therefore use the +`proofgeneral/coq-emacs` containers build specifically for various +Coq/Emacs version pairs for this purpose. This is achieved by +installing Nix on specific containers from `coqorg/coq`, see +`proofgeneral/coq-nix`, and then installing Emacs via Nix. There +are GitLab and GitHub projects for building these containers in GitLab +pipelines. However, currently this does not work and the containers +are therefore build manually. + +This document ignores Coq point releases (e.g., 8.13.2). For one +reason we trust the Coq development team to not introduce changes in +point releases that Proof General should care about. Another reason is +that the `coqorg/coq` docker images are only available for the latest +point release of any minor version. Therefore, in this document, a Coq +version number `.` always stands for the latest point +release of that minor release. E.g., 8.17 stands for 8.17.1 released +in 2023/06. + +# Generic strategy {#generic} + +Proof General distinguishes between active and passive support for +certain Coq/Emacs versions pairs. Active support means that tests for +these Coq/Emacs versions pairs run on each pull request and the pull +request should not be merged if one of these tests fails unexpectedly. +Passive support means that the developers refrain from knowingly +breaking the compatibility with passively supported version pairs. (In +the future we plan to also run tests on passively supported version +pairs.) + +The actively supported Coq/Emacs version pairs are all Coq/Emacs +version combinations starting from the oldest Coq and the oldest Emacs +version from all Debian and Ubuntu releases that are still enjoying +standard support. For Debian these are the releases whose end of live +date is in the future. For Ubuntu these are the releases whose end of +standard support date is in the future. + +Currently, the first actively supported versions are + +| Coq | 8.11 | +|-------+------| +| Emacs | 26.3 | + +The set of passively supported Coq/Emacs version pairs is work in +progress. + +In May 2023, shortly before Ubuntu 18.04 Bionic Beaver reached its end +of standard support, all Coq versions since 8.6 and all Emacs versions +since 25.2 were actively supported, resulting in 12 major Coq +versions, 9 Emacs versions and 108 version pairs. + +To keep test runtime and space for containers reasonable, we build +containers only for a subset of the actively supported version pairs +and only a subset of these containers are used by the GitHub action +jobs. + +# Container build strategy {#contbuild} + +For an actively supported Coq/Emacs version pair (*cv*, *ev*), a +container containing that Coq and Emacs version is built, in case one +of the following points is true for *cv* and *ev*. + +#. The Emacs version *ev* is present in an Debian or Ubuntu release + still enjoying standard support and the Coq version *cv* or an + earlier Coq version is present in the same release. + + This point is motivated by the ability to reproduce problems in a + supported Debian or Ubuntu installation in which Coq has been updated + via opam. + +#. The Coq version *cv* has been released within the last two years. + + This point is motivated by the ability to reproduce Problems for + recent Coq versions. + +#. The pair (*cv*, *ev*) is an historic pair, in the sense that both + versions were for several month the newest versions in the past. + E.g., in the second half of 2020 Coq 8.12 and Emacs 27.1 were + respectively the newest versions for about 6 month. Therefore the + pair (8.12, 27.1) is considered an historic pair. + + This point is motivated by the ability to reproduce Problems for + versions that may have been used by many people for several month + in the past. + +#. The Coq version *cv* is the newest Coq version or the Emacs version + *ev* is the newest Emacs version. + + This point is motivated by the compatibility of newest versions. + +#. The Coq version *cv* is a release candidate. + + This point is motivated by the compatibility of release candidates. + + +Eventually we will also spell out the container build strategy for the +passively supported versions. For now, in addition to the rules above, +we build containers for the historic pairs of the last 6 years as +passively supported versions. + + +This results in 43 containers. + +| | 25.3 | 26.1 | 26.2 | 26.3 | 27.1 | 27.2 | 28.1 | 28.2 | 29.1 | +|---------+------+------+------+------+------+------+------+------+------| +| 8.7 | H | | | | | | | | | +| 8.8 | | H | | | | | | | | +| 8.9 | | | H | | | | | | | +| 8.10 | | | | H | | | | | | +| 8.11 | | | | SUP | | | | | N | +| 8.12 | | | | SUP | SUP | | | | N | +| 8.13 | | | | SUP | SUP | H | | | N | +| 8.14 | | | | X | X | X | X | X | X | +| 8.15 | | | | X | X | X | X | X | X | +| 8.16 | | | | X | X | X | X | X | X | +| 8.17 | | | | X | X | X | X | X | X | +| 8.18 | | | | X | X | X | X | X | X | + +In the table above, + +SUP + : denotes a supported pair according to point 1. above. + +X + : denotes a Coq release within the last 2 years according to point 2. + above. + +H + : denotes an historic pair according to point 3. + +N + : denotes newest Coq or Emacs versions according to point 4. + +RC + : denotes an release candidate according to point 5. + + + +# Testing strategy + +Currently only actively supported versions are tested via GitHub +actions. + +## Compilation and indentation + +The tests defined for the build and test-indent jobs run for all +actively supported Emacs versions. + +## Up-to-date documentation strings in the manuals + +The error scenario here is that a documentation string that is +magically included in the manuals has been updated without updating +the manuals via `make magic`. It is therefore sufficient to run the +test whether the manuals are up-to-date with only the latest two Emacs +versions. + +## Proof General interaction tests with Coq {#coq-ci} + +The tests for the GitHub actions test, compile-tests and simple-tests +can obviously only run for those version pairs for which containers +have been build, see [Container build strategy](#contbuild). To limit +the required resources, the tests only run on a subset of the +available containers. + +The jobs test, compile-tests and simple-tests run for an actively +supported Coq/Emacs version pair (*cv*, *ev*), in case one of the +following points is true for *cv* and *ev*. + +#. The version pair (*cv*, *ev*) is present in an Debian or Ubuntu release + still enjoying standard support. + + This point is for Proof General users using one of these currently + supported releases. + +#. The Emacs version *ev* is present in an Debian or Ubuntu release + still enjoying standard support and the Coq version *ev* has been + released in the last 18 month and is either equal or greater than + the Coq version of this Debian or Ubuntu release. + + This point is for Proof General users that use one of the supported + Debian or Ubuntu versions and now and then upgrade their Coq version + via opam. + + For example, in October 2023 the 18 month limit includes Coq 8.15 + (last minor version released in 2022/05) but excludes 8.14 (last + minor version released in 2021/12). Therefore we do test the pair + (8.15, 27.1) but we don't test (8.14, 27.1). We neither test (8.15, + 27.2), because there is no Debian or Ubuntu release containing + 27.2. Further, we don't test (8.15, 28.2), because Ubuntu 23 and + Debian 12, which both contain Emacs 28.2, contain Coq 8.16. + +#. The pair (*cv*, *ev*) is an historic pair in the same sense as + above. + + This point is motivated by the compatibility with version pairs + that may have enjoyed some wider use. + +#. The Coq version *cv* is the newest Coq version or the Emacs version + *ev* is the newest Emacs version. + + This point is motivated by the compatibility of newest versions. + +#. The Coq version *cv* is a release candidate. + + This point is motivated by the compatibility of release candidates. + +Running Proof General interaction tests with Coq for passively +supported versions is work in progress. + +This results in 26 version pairs for the Proof General interaction +tests with Coq. + +| | 25.3 | 26.1 | 26.2 | 26.3 | 27.1 | 27.2 | 28.1 | 28.2 | 29.1 | +|---------+------+------+------+------+------+------+------+------+------| +| 8.7 | | | | | | | | | | +| 8.8 | | | | | | | | | | +| 8.9 | | | | | | | | | | +| 8.10 | | | | | | | | | | +| 8.11 | | | | SUP | | | | | N | +| 8.12 | | | | | SUP | | | | N | +| 8.13 | | | | | | H | | | N | +| 8.14 | | | | | | H | | | N | +| 8.15 | | | | X | X | | H | | N | +| 8.16 | | | | X | X | | | SUP | N | +| 8.17 | | | | X | X | | | X | SUP | +| 8.18 | | | | X | X | N | N | X | X | + +See [Container build strategy](#contbuild) for an explanation of the +symbols in the table. + + +# Keeping the GitHub action up-to-date + +Obviously, after each Coq or Emacs release and additionally every few +month the rules in the preceding sections for building containers and +for testing must be re-evaluated and the workflow file +`.github/workflows/test.yml` must be updated. + +Large portions of this process have been automated. Coq, Emacs, Debian +and Ubuntu releases must be manually added into an Org mode table in +file `coq-emacs-releases.org`. This table is read by the OCaml program +`cipg` that performs the following tasks. + +- It evaluates the rules spelled out above and generates the tables in + the Sections [Generic strategy](#generic), [Container build + strategy](#contbuild), and [Proof General interaction tests with + Coq](#coq-ci) in this document. +- It determines missing docker images and generates command lines for + building them. +- It determines superfluous docker images and deletes them. +- It generates the lines that are needed to update + `.github/workflows/test.yml`. + + +## Release table + +The release table is the Org mode table in file +`coq-emacs-releases.org`. It contains all the data that is needed to +evaluate the rules for building containers and for testing in the +preceding sections. In particular, it contains + +- Coq, Emacs, Debian and Ubuntu releases with their release date. +- The end of standard support for Debian and Ubuntu releases. +- The Coq and Emacs versions contained in these Debian and Ubuntu + releases. +- The historic pairs. + +The remainder of this section explains how to maintain this table such +that `cipg` can process it. + +#. Whenever a new version of Coq, Emacs, Debian or Ubuntu is released, + a line needs to be added manually to the release table. + +#. The date must be present in every line in the form YYYY/MM. + +#. There are 3 kinds of lines in the table. + + Coq releases + : are specified with a date and a Coq version. + + Emacs releases + : are specified with a date and an Emacs version. + + Debian or Ubuntu releases + : are specified with a date, a distribution name and an EOL date. + +#. The Coq and Emacs versions of an Debian or Ubuntu release may be + omitted. If they are not present, they are taken from the last + preceding line containing the respective version (the table is + processed from bottom to top). E.g., the line specifying the + release of Ubuntu 20.4 (on 2020/04) inherits Coq version 8.11.0 + from the preceding line and Emacs version 26.3 from 5 lines below. + +#. The lines do not need to be sorted by date. I find it clearer to + insert Debian and Ubuntu releases at a place where they can inherit + the Coq and maybe the Emacs version from a previous line, such that + these version numbers can be omitted. E.g., the line for Debian 11 + Bullseye released in 2021/08 appears before the Coq release 8.12.1 + in 2020/11, because Bullseye was released with 8.12.0. + + Sometimes it is impossible to move a Debian or Ubuntu release line + to a place where it can inherit both, the Coq and Emacs version, + without scrambling the table too much. E.g., Ubuntu 22 was released + with Coq 8.15.0 and Emacs 27.1. In this case I prefer to keep the + table sorted by Coq releases, to specify the Emacs version for + Ubuntu 22, and move the line to a place where it can inherit the Coq + version. The Emacs column therefore contains some discontinuities + (together with the date column). + +#. Historical pairs must be manually marked in column `historic`. They + are mainly used to manually select some additional version pairs + for testing and to have some sort of diagonal in the version matrix + for Proof General interaction tests. + +#. The EOL date of Debian or Ubuntu releases must also be in the form + YYYY/MM. Trailing non-digit characters are ignored. I use `?` to + indicate EOL dates that have not yet been fixed. + +#. In Coq version numbers the patch level is ignored. Versions of + release candidates must be of the form `8.10rc` or `8.10-rc`. + `cipg` is not able to recognize outdated release candidates. The + release candidate must therefore be deleted when the release + happens. + + + diff --git a/ci/doc/README.pdf b/ci/doc/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fdc31be25153c924f2878884a8b0981f97a80b14 GIT binary patch literal 48307 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 literal 0 HcmV?d00001 diff --git a/ci/doc/coq-emacs-releases.org b/ci/doc/coq-emacs-releases.org new file mode 100644 index 000000000..dfb167f83 --- /dev/null +++ b/ci/doc/coq-emacs-releases.org @@ -0,0 +1,60 @@ +* Coq, Emacs, Debian and Ubuntu releases + This table must be maintained manually. Its content is processed + automatically, therefore please observe the requirements in Section + "Release table" in file README.md! + +| date | coq | emacs | distribution name | EOL | historic | +|---------+--------+-------+-------------------+----------+----------| +| 2023/09 | 8.18.0 | | | | | +| 2023/07 | | 29.1 | | | | +| 2023/06 | 8.17.1 | | | | | +| 2023/10 | | 29.1 | ubu 23 mantic mi | 2024/07 | | +| 2023/03 | 8.17.0 | | | | | +| 2023/06 | | | deb 12 bookworm | 2026/06? | | +| 2023/04 | | | ubu 23 lun lobs | 2024/01 | | +| 2022/11 | 8.16.1 | | | | X | +| 2022/09 | 8.16.0 | 28.2 | | | | +| 2022/05 | 8.15.2 | | | | | +| 2022/04 | | 28.1 | | | X | +| 2022/03 | 8.15.1 | | | | | +| 2022/04 | | 27.1 | ubu 22 jammy jel | 2027/04 | | +| 2022/01 | 8.15.0 | | | | | +| 2021/12 | 8.14.1 | | | | X | +| 2021/10 | 8.14.0 | | | | | +| 2021/04 | 8.13.2 | | | | X | +| 2021/03 | | 27.2 | | | | +| 2021/02 | 8.13.1 | | | | | +| 2021/01 | 8.13.0 | | | | | +| 2020/12 | 8.12.2 | | | | X | +| 2020/11 | 8.12.1 | | | | | +| 2021/10 | | | ubu 21 impish | 2022/07 | | +| 2021/08 | | | deb 11 bullseye | 2024/07? | | +| 2020/08 | | 27.1 | | | | +| 2020/07 | 8.12.0 | | | | | +| 2020/06 | 8.11.2 | | | | | +| 2020/04 | 8.11.1 | | | | X | +| 2020/04 | | | ubu 20.4 focal | 2025/04 | | +| 2020/01 | 8.11.0 | | | | | +| 2019/11 | 8.10.2 | | | | | +| 2019/10 | 8.10.1 | | | | X | +| 2019/10 | 8.10.0 | | | | | +| 2019/08 | | 26.3 | | | | +| 2019/05 | 8.9.1 | | | | X | +| 2019/07 | | | deb 10 buster | 2022/09 | | +| 2019/04 | | 26.2 | | | | +| 2019/01 | 8.9.0 | | | | | +| 2018/09 | 8.8.2 | | | | X | +| 2018/07 | 8.8.1 | | | | | +| 2018/05 | | 26.1 | | | | +| 2018/04 | 8.8.0 | | | | | +| 2018/02 | 8.7.2 | | | | | +| 2017/12 | 8.7.1 | | | | X | +| 2017/10 | 8.7.0 | | | | | +| 2017/09 | | 25.3 | | | | +| 2017/07 | 8.6.1 | | | | X | +| 2018/04 | | | ubu 18.04 bionic | 2023/04 | | +| 2017/04 | | 25.2 | | | | +| 2017/06 | | | deb 9 stretch | 2020/06 | | +| 2016/12 | 8.6 | | | | | +| 2016/10 | 8.5pl3 | | | | | +| 2016/09 | | 25.1 | | | |