|
1 | 1 | # Releasing |
2 | 2 |
|
| 3 | +## opam |
| 4 | + |
3 | 5 | 1. Update list of authors and contributors in `.zenodo.json`, `CITATION.cff` and `dune-project`. |
4 | 6 | 2. Update `CHANGELOG.md`: |
5 | 7 |
|
|
36 | 38 | 3. Run Docker container in extracted directory: `docker run -it --rm -v $(pwd):/goblint ocaml/opam:ubuntu-22.04-ocaml-4.14` (or newer). |
37 | 39 | 4. Navigate to distribution archive inside Docker container: `cd /goblint`. |
38 | 40 | 5. Pin package from distribution archive: `opam pin add --no-action .`. |
39 | | - 6. Install depexts: `opam depext goblint`. |
| 41 | + 6. Install depexts: `opam depext --with-test goblint`. |
40 | 42 | 7. Install and test package: `opam install --with-test goblint`. |
41 | 43 | 8. Activate opam environment: `eval $(opam env)`. |
42 | 44 | 9. Check version: `goblint --version`. |
|
50 | 52 |
|
51 | 53 | 13. Create an opam package: `dune-release opam pkg`. |
52 | 54 | 14. Submit the opam package to opam-repository: `dune-release opam submit`. |
| 55 | + |
| 56 | + |
| 57 | +## SV-COMP |
| 58 | + |
| 59 | +### Before all preruns |
| 60 | + |
| 61 | +1. Make sure you are running the same Ubuntu version as will be used for SV-COMP. |
| 62 | +2. Create conf file for SV-COMP year. |
| 63 | +3. Make sure this repository is checked out into a directory called `goblint`, not the default `analyzer`. |
| 64 | + |
| 65 | + This is required such that the created archive would have everything in a single directory called `goblint`. |
| 66 | + |
| 67 | +4. Update SV-COMP year in `sv-comp/archive.sh`. |
| 68 | + |
| 69 | + This includes: git tag name, git tag message and zipped conf file. |
| 70 | + |
| 71 | +### For each prerun |
| 72 | + |
| 73 | +1. Update opam pins: |
| 74 | + |
| 75 | + 1. Make sure you have the same `goblint-cil` version pinned as `goblint.opam` specifies. |
| 76 | + 2. Unpin `zarith.1.12-gob0`, because Gobview compatibility is not required. |
| 77 | + |
| 78 | +2. Make sure you have nothing valuable that would be deleted by `make clean`. |
| 79 | +3. Delete git tag from previous prerun: `git tag -d svcompXY`. |
| 80 | +4. Create archive: `./sv-comp/archive.sh`. |
| 81 | + |
| 82 | + The resulting archive is `sv-comp/goblint.zip`. |
| 83 | + |
| 84 | +5. Check unextracted archive in latest SV-COMP container image: <https://gitlab.com/sosy-lab/benchmarking/competition-scripts/#container-image>. |
| 85 | + |
| 86 | + Inside Docker: |
| 87 | + |
| 88 | + 1. Check version: `./goblint --version`. |
| 89 | + 2. Mount some sv-benchmarks and properties, e.g. as `/tool-test`, and run Goblint on them manually. |
| 90 | + |
| 91 | + This ensures that the environment and the archive have all the correct system libraries. |
| 92 | + |
| 93 | +6. Commit and push the archive to an SV-COMP archives repository branch (but don't open a MR yet): <https://gitlab.com/sosy-lab/sv-comp/archives-2023#sparse-checkout> (SV-COMP 2023). |
| 94 | +7. Check pushed archive via CoveriTeam-Remote: <https://gitlab.com/sosy-lab/software/coveriteam/-/blob/main/doc/competition-help.md>. |
| 95 | + |
| 96 | + 1. Clone coveriteam repository. |
| 97 | + 2. Locally modify `actors/goblint.yml` archive location to the raw URL of the pushed archive. |
| 98 | + 3. Run Goblint on some sv-benchmarks and properties via CoveriTeam. |
| 99 | + |
| 100 | + This ensures that Goblint runs on SoSy-Lab servers. |
| 101 | + |
| 102 | +8. Open MR to the SV-COMP archives repository. |
| 103 | + |
| 104 | +### After all preruns |
| 105 | + |
| 106 | +1. Push git tag from last prerun: `git push origin svcompXY`. |
| 107 | +2. Temporarily disable Zenodo webhook. |
| 108 | + |
| 109 | + This is because we don't want a new out-of-place version of Goblint in our Zenodo artifact. |
| 110 | + A separate Zenodo artifact for the SV-COMP version can be created later if tool paper is submitted. |
| 111 | + |
| 112 | +3. Create GitHub release from the git tag and attach latest submitted archive as a download. |
| 113 | +4. Manually run `docker` workflow on `svcompXY` git tag and targeting `svcompXY` Docker tag. |
| 114 | + |
| 115 | + This is because the usual `docker` workflow only handles semver releases. |
| 116 | + |
| 117 | +5. Re-enable Zenodo webhook. |
| 118 | +6. Release new semver version on opam. See above. |
0 commit comments