|
|
1
|
+<!--
|
|
|
2
|
+
|
|
|
3
|
+This is the template to be used to create release tracking tickets. To make a new release:
|
|
|
4
|
+
|
|
|
5
|
+* **Milestone**. Create a new Gitlab milestone for the release. We refer to it here as **TODO milestone**.
|
|
|
6
|
+* **Tracking ticket**. Create a new Gitlab issue, the tracking ticket, use this template.
|
|
|
7
|
+
|
|
|
8
|
+In the template, those items marked with *major-only* can be ignored for minor releases.
|
|
|
9
|
+
|
|
|
10
|
+-->
|
|
|
11
|
+
|
|
|
12
|
+This is the release checklist for the **TODO milestone**.
|
|
|
13
|
+
|
|
|
14
|
+<!--
|
|
|
15
|
+ *(When filling in the template, make that "**TODO milestone**" into a link to the milestone, and delete this sentence.)*
|
|
|
16
|
+-->
|
|
|
17
|
+
|
|
|
18
|
+See the milestone for the planned release schedule, and other details. See [GHC HQ - Release Management](https://gitlab.haskell.org/ghc/ghc-hq/-/blob/main/release-management.mkd) for release policies.
|
|
|
19
|
+
|
|
|
20
|
+This template is part of the ghc repository at `.gitlab/issue_templates/release_tracking.md`.
|
|
|
21
|
+
|
|
|
22
|
+<!--
|
|
|
23
|
+ Pre-fork checklist is MAJOR ONLY
|
|
|
24
|
+-->
|
|
|
25
|
+# Pre-fork checklist
|
|
|
26
|
+
|
|
|
27
|
+
|
|
|
28
|
+When forking a new release branch for a new major release series (e.g. `ghc-9.14`), please check the following:
|
|
|
29
|
+
|
|
|
30
|
+* [ ] Add the release to the [status page](https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-Status), including a link to the milestone.
|
|
|
31
|
+* [ ] Verify that the platform support documentation is up-to-date with reality:
|
|
|
32
|
+ * https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms/windows
|
|
|
33
|
+ * https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms/
|
|
|
34
|
+* [ ] Remove the release notes for the previous release (e.g. `docs/users_guide/8.6.*-notes.rst`)
|
|
|
35
|
+* [ ] In `configure.ac` update `MinBootGhcVersion` to be the major version of the last supported bootstrap compiler. We currently guarantee bootstrapping with the last two major releases; therefore, when preparing, e.g., GHC `9.14` you should set `MinBootGhcVersion` to `9.10`.
|
|
|
36
|
+* [ ] Create the new branch: `git branch ghc-9.14`
|
|
|
37
|
+* [ ] In the new branch bump the version number in `configure.ac` to, e.g., `9.14`
|
|
|
38
|
+* [ ] In `master` bump the version number in `configure.ac` to that of the next development series, e.g., `9.15` and ensure that `MinBootGhcVersion` is set correctly
|
|
|
39
|
+* [ ] Verify that package versions have been bumped as necessary under PVP:
|
|
|
40
|
+ * [ ] `base`
|
|
|
41
|
+ * [ ] `template-haskell`
|
|
|
42
|
+ * [ ] `ghc-prim`
|
|
|
43
|
+* [ ] Tag this `master` commit as, e.g., `ghc-9.14-start`
|
|
|
44
|
+* [ ] Push all of the above tags and branches
|
|
|
45
|
+* [ ] Create a new worksheet in the GHC submodule tracking spreadsheet (ask in `#ghc` for a link), populate the "current" and "desired" version columns, and send an email to submodule maintainers and `ghc-releases@haskell.org` asking them to notify us of their needs
|
|
|
46
|
+* [ ] After forking, remove release notes from `master` and start a new set of release notes for the next release
|
|
|
47
|
+* [ ] After forking, notify `ghc-releases@haskell.org` that fork has been made
|
|
|
48
|
+* [ ] Create a weekly scheduled pipeline building the new branch to ensure that it does not bit-rot and bindists are persistently available
|
|
|
49
|
+
|
|
|
50
|
+# Pre-release checklist
|
|
|
51
|
+
|
|
|
52
|
+* [ ] Ensure that the Haddock (haddock-library, haddock-api) version numbers have been appropriately bumped.
|
|
|
53
|
+* [ ] Ensure that submodules are on released tags (the below is produced using [this script](https://gitlab.haskell.org/bgamari/ghc-utils/blob/master/rel-eng/submod-release-summary.py)):
|
|
|
54
|
+ * [ ] `libraries/Cabal`: version *todo*
|
|
|
55
|
+ * [ ] `libraries/Win32`: version *todo*
|
|
|
56
|
+ * [ ] `libraries/array`: version *todo*
|
|
|
57
|
+ * [ ] `libraries/binary`: version *todo*
|
|
|
58
|
+ * [ ] `libraries/bytestring`: version *todo*
|
|
|
59
|
+ * [ ] `libraries/containers`: version *todo*
|
|
|
60
|
+ * [ ] `libraries/deepseq`: version *todo*
|
|
|
61
|
+ * [ ] `libraries/directory`: version *todo*
|
|
|
62
|
+ * [ ] `libraries/exceptions`: version *todo*
|
|
|
63
|
+ * [ ] `libraries/file-io`: version *todo*
|
|
|
64
|
+ * [ ] `libraries/filepath`: version *todo*
|
|
|
65
|
+ * [ ] `libraries/haskeline`: version *todo*
|
|
|
66
|
+ * [ ] `libraries/hpc`: version *todo*
|
|
|
67
|
+ * [ ] `libraries/libffi-clib`: version *todo*
|
|
|
68
|
+ * [ ] `libraries/mtl`: version *todo*
|
|
|
69
|
+ * [ ] `libraries/os-string`: version *todo*
|
|
|
70
|
+ * [ ] `libraries/parsec`: version *todo*
|
|
|
71
|
+ * [ ] `libraries/pretty`: version *todo*
|
|
|
72
|
+ * [ ] `libraries/process`: version *todo*
|
|
|
73
|
+ * [ ] `libraries/semaphore-compat`: version *todo*
|
|
|
74
|
+ * [ ] `libraries/stm`: version *todo*
|
|
|
75
|
+ * [ ] `libraries/template-haskell-lift`: version *todo*
|
|
|
76
|
+ * [ ] `libraries/template-haskell-quasiquoter`: version *todo*
|
|
|
77
|
+ * [ ] `libraries/terminfo`: version *todo*
|
|
|
78
|
+ * [ ] `libraries/text`: version *todo*
|
|
|
79
|
+ * [ ] `libraries/time`: version *todo*
|
|
|
80
|
+ * [ ] `libraries/transformers`: version *todo*
|
|
|
81
|
+ * [ ] `libraries/unix`: version *todo*
|
|
|
82
|
+ * [ ] `libraries/xhtml`: version *todo*
|
|
|
83
|
+ * [ ] `utils/hpc`: version *todo*
|
|
|
84
|
+ * [ ] `utils/hsc2hs`: version *todo*
|
|
|
85
|
+* [ ] Announce the boot lib versions that are planned to be included in the next release on the
|
|
|
86
|
+ [Boot libraries maintainers mailing list](mailto:ghc-boot-libraries@haskell.org), then allow for appropriate amount of grace time
|
|
|
87
|
+ for boot library maintainers to include revisions.
|
|
|
88
|
+* [ ] Ensure that all of the versions above are newer than the ones for older major releases and incorporate any patch updates
|
|
|
89
|
+* [ ] Notify stakeholders of release progress, **including timeline, reason, what to look out for, platform tier changes, build platform changes, Bindist Changes** [^1]:
|
|
|
90
|
+ * [ ] [Julian Ospald](mailto:hasufell@posteo.de)
|
|
|
91
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org)
|
|
|
92
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
93
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
94
|
+* [ ] Non-released submodules up-to-date:
|
|
|
95
|
+ * [ ] `nofib` (upstream: ghc/nofib>)
|
|
|
96
|
+ * [ ] `libffi-tarballs` (upstream: ghc/libffi-tarballs>)
|
|
|
97
|
+ * [ ] `libraries/ghc-bignum/gmp/gmp-tarballs` (upstream: ghc/gmp-tarballs>)
|
|
|
98
|
+* [ ] `LlvmMinVersion` and `LlvmMaxVersion` in `configure.ac` is targetting intended LLVM version
|
|
|
99
|
+* [ ] `llvm-targets` file [updated](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#updating-the-tree)
|
|
|
100
|
+* [ ] Release notes (`docs/users_guide/x.y.z-notes.rst`) written
|
|
|
101
|
+ * Release notes linked in `docs/users_guide/release-notes.rst`
|
|
|
102
|
+ * LLVM version requirement mentioned
|
|
|
103
|
+* [ ] Remove "Included libraries" sections from old release notes
|
|
|
104
|
+* [ ] `autoconf` scripts [updated](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#updating-the-tree)
|
|
|
105
|
+* [ ] Check that Unicode database in `base` (`libraries/base/cbits/README.Unicode`) reflects current standard release (http://www.unicode.org/versions/latest/).
|
|
|
106
|
+* [ ] Verify that the ~"backport needed" label has no more issues/merge requests needing backport
|
|
|
107
|
+* [ ] Verify that all CI builds are green before moving to *release checklist*
|
|
|
108
|
+* [ ] Update hadrian bootstrap plans for the latest compiler releases:
|
|
|
109
|
+ * Update `hadrian/bootstrap/generate_bootstrap_plans` to include any new compiler releases in the last two major release series
|
|
|
110
|
+ * Drop any plans that are outside of the bootstrap support window
|
|
|
111
|
+ * Run `hadrian/bootstrap/generate_bootstrap_plans` and commit the files that it generates
|
|
|
112
|
+ * Update `bootstrap_matrix` in `.gitlab-ci.yml` to reflect the most recent minor release in each major series supported by bootstrapping
|
|
|
113
|
+
|
|
|
114
|
+# Release candidate checklist
|
|
|
115
|
+
|
|
|
116
|
+* Announce on:
|
|
|
117
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
118
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org),
|
|
|
119
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
120
|
+* [ ] For minor releases: Ask stackage maintainers to test the release candidate.
|
|
|
121
|
+* Give grace time
|
|
|
122
|
+
|
|
|
123
|
+
|
|
|
124
|
+# Release checklist
|
|
|
125
|
+
|
|
|
126
|
+* [ ] Ensure that the [Migration](https://gitlab.haskell.org/ghc/ghc/wikis/migration/) page is up-to-date
|
|
|
127
|
+* [ ] Push a provisional release commit to trigger the release builds using `git push -o ci.variable="RELEASE_JOB=yes"`
|
|
|
128
|
+* [ ] Wait until builds finish; verify that they finished successfully
|
|
|
129
|
+* [ ] Write down a link to the release pipeline here: <!-- URL -->
|
|
|
130
|
+* [ ] Fetch release artifacts:
|
|
|
131
|
+ ```bash
|
|
|
132
|
+ $ mkdir $VERSION
|
|
|
133
|
+ $ cd $VERSION
|
|
|
134
|
+ $ nix run $GHC/.gitlab/rel_eng#fetch-gitlab --pipeline $PIPELINE_ID --release $VERSION
|
|
|
135
|
+ ```
|
|
|
136
|
+ where `GHC` is the path to a GHC source tree, `VERSION` is the version number, and `PIPELINE_ID` is the release pipeline id.
|
|
|
137
|
+* [ ] Recompress release artifacts: `nix run $GHC/.gitlab/rel_eng#upload -- recompress`
|
|
|
138
|
+* [ ] Generate hashes: `nix run $GHC/.gitlab/rel_eng#upload -- gen_hashes`
|
|
|
139
|
+* [ ] Sign release artifacts: `nix run $GHC/.gitlab/rel_eng#upload -- sign`
|
|
|
140
|
+* [ ] Upload to `downloads.haskell.org`: `nix run $GHC/.gitlab/rel_eng#upload -- upload`
|
|
|
141
|
+* [ ] If most recent release: Update `latest` symlink: `nix run $GHC/.gitlab/rel_eng#upload -- set_symlink latest`
|
|
|
142
|
+* [ ] Update `X.Y-latest` symlink: `nix run $GHC/.gitlab/rel_eng#upload -- set_symlink 9.8-latest`
|
|
|
143
|
+* [ ] Purge CDN cache: `nix run $GHC/.gitlab/rel_eng#upload -- purge`
|
|
|
144
|
+* [ ] Submit `ghcup` metadata upstream:
|
|
|
145
|
+ * Manually trigger the `ghcup-metadata-testing-release` job of the release pipeline
|
|
|
146
|
+ * Download the `metadata_test.yaml` artifact from the `ghcup-metadata-release` job of the release pipeline
|
|
|
147
|
+ * Clone [`ghcup-metadata`](https://github.com/haskell/ghcup-metadata/)
|
|
|
148
|
+ * Integrate the appropriate release section into `ghcup-metadata/ghcup-0.0.7.yaml` (or `ghcup-prerelease-0.0.7.yaml` for pre-releases)
|
|
|
149
|
+ * Replace the `&id<n>` identifiers with unique names
|
|
|
150
|
+ * Add the `Latest` (or `LatestPrerelease`) to the new release's `viTags` field
|
|
|
151
|
+ * Remove `Latest` for the previous release's `viTags` field; for pre-releases add the `Prerelease` tag)
|
|
|
152
|
+ * Add the `base-w.x.y.z` (e.g. `base-4.19.0.0`) tag to `viTags`
|
|
|
153
|
+ * Sign the resulting metadata YAML file with `gpg --detach-sign`
|
|
|
154
|
+ * Open a merge request submitting the metadata upstream
|
|
|
155
|
+ * Start a "Bindist installation" [workflow](https://github.com/haskell/ghcup-metadata/actions/workflows/bindists.yaml)
|
|
|
156
|
+* [ ] [Make a release tag](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#tagging-the-release)
|
|
|
157
|
+* [ ] Release/revise GHC-maintained libraries on Hackage using [this script](https://gitlab.haskell.org/ghc/ghc/-/blob/master/.gitlab/rel_eng/upload_ghc_libs.py):
|
|
|
158
|
+ * [ ] `libraries/base`
|
|
|
159
|
+ * [ ] `libraries/ghc-prim`
|
|
|
160
|
+ * [ ] `libraries/array`
|
|
|
161
|
+ * [ ] `libraries/stm`
|
|
|
162
|
+ * [ ] `libraries/ghc-heap`
|
|
|
163
|
+ * [ ] `libraries/ghc-compact`
|
|
|
164
|
+ * [ ] `libraries/ghc-boot`
|
|
|
165
|
+ * [ ] `libraries/ghc-boot-th`
|
|
|
166
|
+ * [ ] `libraries/hpc`
|
|
|
167
|
+ * [ ] `libraries/libiserv`
|
|
|
168
|
+ * [ ] `libraries/template-haskell`
|
|
|
169
|
+ * [ ] `libraries/ghc-bignum`
|
|
|
170
|
+* [ ] Update ghc/homepage>:
|
|
|
171
|
+ * [ ] Write download page (see ghc/homepage>)
|
|
|
172
|
+ * [ ] Make sure that the Signing Key is correct for the relevant release
|
|
|
173
|
+ * [ ] Add news item to [`index.html`](https://gitlab.haskell.org/ghc/homepage/blob/master/index.shtml)
|
|
|
174
|
+ * [ ] Add link to [`download.shtml`](https://gitlab.haskell.org/ghc/homepage/blob/master/download.shtml). Be sure to link to the Migration guide.
|
|
|
175
|
+ * [ ] Look over changes locally
|
|
|
176
|
+ * [ ] Add release announcement to [GHC blog](https://gitlab.haskell.org/ghc/homepage/tree/master/blog). Be sure to link to the Migration guide.
|
|
|
177
|
+ * [ ] Push changes to `master`
|
|
|
178
|
+* [ ] Announce on:
|
|
|
179
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
180
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org),
|
|
|
181
|
+ * [ ] [Boot libraries maintainers](mailto:ghc-boot-libraries@haskell.org)
|
|
|
182
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
183
|
+ * [ ] adjacent matrix channels: #haskell-releases:matrix.org, #GHC:matrix.org, #ghc-devs:matrix.org
|
|
|
184
|
+ * [ ] [Haskell Cafe](mailto:haskell-cafe@haskell.org)
|
|
|
185
|
+ * [ ] Mention sponsors
|
|
|
186
|
+ * [ ] Mention ghc / ghc-hq
|
|
|
187
|
+ * [ ] Link to release notes and migration guide
|
|
|
188
|
+* [ ] Announce on: [Haskell Discourse](https://discourse.haskell.org/), [/r/haskell](https://reddit.com/r/haskell), [/m/haskell](https://kbin.social/m/haskell)
|
|
|
189
|
+* [ ] When releasing the latest version, update `latest` symlink on `downloads.haskell.org`, e.g. `ln -sfT 9.6.3 latest` if 9.6 was the latest major series.
|
|
|
190
|
+
|
|
|
191
|
+# Post-release checklist
|
|
|
192
|
+
|
|
|
193
|
+* [ ] Update the Wiki [status page](https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-Status)
|
|
|
194
|
+* [ ] Update the [language pragma history](https://gitlab.haskell.org/ghc/ghc/wikis/language-pragma-history)
|
|
|
195
|
+* [ ] Mark milestone as *closed*
|
|
|
196
|
+* [ ] Update `/topic` in `#ghc`
|
|
|
197
|
+* [ ] Update the [VersionHistory](https://gitlab.haskell.org/ghc/ghc/wikis/commentary/libraries/version-history) wiki page
|
|
|
198
|
+* [ ] Set `RELEASE=NO`
|
|
|
199
|
+* [ ] Create a release tracking ticket for the next release using the template in #16816
|
|
|
200
|
+
|
|
|
201
|
+[^1]: Build platform changes are major changes to how GHC is being built from sources.
|
|
|
202
|
+ Bindist changes are significant changes to the toolchains, changes to the layout of the bindists or changes to the user facing installation procedure.
|
|
|
203
|
+ Platform tier changes are changes that move platforms up or down a tier or drop a given platform from the tierlist. |