|
|
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 to the boot library maintainers, then allow for appropriate amount of grace time for boot library maintainers to include revisions.
|
|
|
86
|
+* [ ] Ensure that all of the versions above are newer than the ones for older major releases and incorporate any patch updates
|
|
|
87
|
+* [ ] Notify stakeholders of release progress, **including timeline, reason, what to look out for, platform tier changes, build platform changes, Bindist Changes** [^1]:
|
|
|
88
|
+ * [ ] [Julian Ospald](mailto:hasufell@posteo.de)
|
|
|
89
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org)
|
|
|
90
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
91
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
92
|
+* [ ] Non-released submodules up-to-date:
|
|
|
93
|
+ * [ ] `nofib` (upstream: ghc/nofib>)
|
|
|
94
|
+ * [ ] `libffi-tarballs` (upstream: ghc/libffi-tarballs>)
|
|
|
95
|
+ * [ ] `libraries/ghc-bignum/gmp/gmp-tarballs` (upstream: ghc/gmp-tarballs>)
|
|
|
96
|
+* [ ] `LlvmMinVersion` and `LlvmMaxVersion` in `configure.ac` is targetting intended LLVM version
|
|
|
97
|
+* [ ] `llvm-targets` file [updated](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#updating-the-tree)
|
|
|
98
|
+* [ ] Release notes (`docs/users_guide/x.y.z-notes.rst`) written
|
|
|
99
|
+ * Release notes linked in `docs/users_guide/release-notes.rst`
|
|
|
100
|
+ * LLVM version requirement mentioned
|
|
|
101
|
+* [ ] Remove "Included libraries" sections from old release notes
|
|
|
102
|
+* [ ] `autoconf` scripts [updated](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#updating-the-tree)
|
|
|
103
|
+* [ ] Check that Unicode database in `base` (`libraries/base/cbits/README.Unicode`) reflects current standard release (http://www.unicode.org/versions/latest/).
|
|
|
104
|
+* [ ] Verify that the ~"backport needed" label has no more issues/merge requests needing backport
|
|
|
105
|
+* [ ] Verify that all CI builds are green before moving to *release checklist*
|
|
|
106
|
+* [ ] Update hadrian bootstrap plans for the latest compiler releases:
|
|
|
107
|
+ * Update `hadrian/bootstrap/generate_bootstrap_plans` to include any new compiler releases in the last two major release series
|
|
|
108
|
+ * Drop any plans that are outside of the bootstrap support window
|
|
|
109
|
+ * Run `hadrian/bootstrap/generate_bootstrap_plans` and commit the files that it generates
|
|
|
110
|
+ * Update `bootstrap_matrix` in `.gitlab-ci.yml` to reflect the most recent minor release in each major series supported by bootstrapping
|
|
|
111
|
+
|
|
|
112
|
+# Release candidate checklist
|
|
|
113
|
+
|
|
|
114
|
+* Announce on:
|
|
|
115
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
116
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org),
|
|
|
117
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
118
|
+* [ ] For minor releases: Ask stackage maintainers to test the release candidate.
|
|
|
119
|
+* Give grace time
|
|
|
120
|
+
|
|
|
121
|
+
|
|
|
122
|
+# Release checklist
|
|
|
123
|
+
|
|
|
124
|
+* [ ] Ensure that the [Migration](https://gitlab.haskell.org/ghc/ghc/wikis/migration/) page is up-to-date
|
|
|
125
|
+* [ ] Push a provisional release commit to trigger the release builds using `git push -o ci.variable="RELEASE_JOB=yes"`
|
|
|
126
|
+* [ ] Wait until builds finish; verify that they finished successfully
|
|
|
127
|
+* [ ] Write down a link to the release pipeline here: <!-- URL -->
|
|
|
128
|
+* [ ] Fetch release artifacts:
|
|
|
129
|
+ ```bash
|
|
|
130
|
+ $ mkdir $VERSION
|
|
|
131
|
+ $ cd $VERSION
|
|
|
132
|
+ $ nix run $GHC/.gitlab/rel_eng#fetch-gitlab --pipeline $PIPELINE_ID --release $VERSION
|
|
|
133
|
+ ```
|
|
|
134
|
+ where `GHC` is the path to a GHC source tree, `VERSION` is the version number, and `PIPELINE_ID` is the release pipeline id.
|
|
|
135
|
+* [ ] Recompress release artifacts: `nix run $GHC/.gitlab/rel_eng#upload -- recompress`
|
|
|
136
|
+* [ ] Generate hashes: `nix run $GHC/.gitlab/rel_eng#upload -- gen_hashes`
|
|
|
137
|
+* [ ] Sign release artifacts: `nix run $GHC/.gitlab/rel_eng#upload -- sign`
|
|
|
138
|
+* [ ] Upload to `downloads.haskell.org`: `nix run $GHC/.gitlab/rel_eng#upload -- upload`
|
|
|
139
|
+* [ ] If most recent release: Update `latest` symlink: `nix run $GHC/.gitlab/rel_eng#upload -- set_symlink latest`
|
|
|
140
|
+* [ ] Update `X.Y-latest` symlink: `nix run $GHC/.gitlab/rel_eng#upload -- set_symlink 9.8-latest`
|
|
|
141
|
+* [ ] Purge CDN cache: `nix run $GHC/.gitlab/rel_eng#upload -- purge`
|
|
|
142
|
+* [ ] Submit `ghcup` metadata upstream:
|
|
|
143
|
+ * Manually trigger the `ghcup-metadata-testing-release` job of the release pipeline
|
|
|
144
|
+ * Download the `metadata_test.yaml` artifact from the `ghcup-metadata-release` job of the release pipeline
|
|
|
145
|
+ * Clone [`ghcup-metadata`](https://github.com/haskell/ghcup-metadata/)
|
|
|
146
|
+ * Integrate the appropriate release section into `ghcup-metadata/ghcup-0.0.7.yaml` (or `ghcup-prerelease-0.0.7.yaml` for pre-releases)
|
|
|
147
|
+ * Replace the `&id<n>` identifiers with unique names
|
|
|
148
|
+ * Add the `Latest` (or `LatestPrerelease`) to the new release's `viTags` field
|
|
|
149
|
+ * Remove `Latest` for the previous release's `viTags` field; for pre-releases add the `Prerelease` tag)
|
|
|
150
|
+ * Add the `base-w.x.y.z` (e.g. `base-4.19.0.0`) tag to `viTags`
|
|
|
151
|
+ * Sign the resulting metadata YAML file with `gpg --detach-sign`
|
|
|
152
|
+ * Open a merge request submitting the metadata upstream
|
|
|
153
|
+ * Start a "Bindist installation" [workflow](https://github.com/haskell/ghcup-metadata/actions/workflows/bindists.yaml)
|
|
|
154
|
+* [ ] [Make a release tag](https://gitlab.haskell.org/ghc/ghc/wikis/making-releases#tagging-the-release)
|
|
|
155
|
+* [ ] 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):
|
|
|
156
|
+ * [ ] `libraries/base`
|
|
|
157
|
+ * [ ] `libraries/ghc-prim`
|
|
|
158
|
+ * [ ] `libraries/array`
|
|
|
159
|
+ * [ ] `libraries/stm`
|
|
|
160
|
+ * [ ] `libraries/ghc-heap`
|
|
|
161
|
+ * [ ] `libraries/ghc-compact`
|
|
|
162
|
+ * [ ] `libraries/ghc-boot`
|
|
|
163
|
+ * [ ] `libraries/ghc-boot-th`
|
|
|
164
|
+ * [ ] `libraries/hpc`
|
|
|
165
|
+ * [ ] `libraries/libiserv`
|
|
|
166
|
+ * [ ] `libraries/template-haskell`
|
|
|
167
|
+ * [ ] `libraries/ghc-bignum`
|
|
|
168
|
+* [ ] Update ghc/homepage>:
|
|
|
169
|
+ * [ ] Write download page (see ghc/homepage>)
|
|
|
170
|
+ * [ ] Make sure that the Signing Key is correct for the relevant release
|
|
|
171
|
+ * [ ] Add news item to [`index.html`](https://gitlab.haskell.org/ghc/homepage/blob/master/index.shtml)
|
|
|
172
|
+ * [ ] Add link to [`download.shtml`](https://gitlab.haskell.org/ghc/homepage/blob/master/download.shtml). Be sure to link to the Migration guide.
|
|
|
173
|
+ * [ ] Look over changes locally
|
|
|
174
|
+ * [ ] Add release announcement to [GHC blog](https://gitlab.haskell.org/ghc/homepage/tree/master/blog). Be sure to link to the Migration guide.
|
|
|
175
|
+ * [ ] Push changes to `master`
|
|
|
176
|
+* [ ] Announce on:
|
|
|
177
|
+ * [ ] [GHC developers](mailto:ghc-devs@haskell.org)
|
|
|
178
|
+ * [ ] [GHC releases](mailto:ghc-releases@haskell.org),
|
|
|
179
|
+ * [ ] [Boot libraries maintainers](mailto:ghc-boot-libraries@haskell.org)
|
|
|
180
|
+ * [ ] [GHC users](mailto:glasgow-haskell-users@haskell.org)
|
|
|
181
|
+ * [ ] adjacent matrix channels: #haskell-releases:matrix.org, #GHC:matrix.org, #ghc-devs:matrix.org
|
|
|
182
|
+ * [ ] [Haskell Cafe](mailto:haskell-cafe@haskell.org)
|
|
|
183
|
+ * [ ] Mention sponsors
|
|
|
184
|
+ * [ ] Mention ghc / ghc-hq
|
|
|
185
|
+ * [ ] Link to release notes and migration guide
|
|
|
186
|
+* [ ] Announce on: [Haskell Discourse](https://discourse.haskell.org/), [/r/haskell](https://reddit.com/r/haskell), [/m/haskell](https://kbin.social/m/haskell)
|
|
|
187
|
+* [ ] 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.
|
|
|
188
|
+
|
|
|
189
|
+# Post-release checklist
|
|
|
190
|
+
|
|
|
191
|
+* [ ] Update the Wiki [status page](https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-Status)
|
|
|
192
|
+* [ ] Update the [language pragma history](https://gitlab.haskell.org/ghc/ghc/wikis/language-pragma-history)
|
|
|
193
|
+* [ ] Mark milestone as *closed*
|
|
|
194
|
+* [ ] Update `/topic` in `#ghc`
|
|
|
195
|
+* [ ] Update the [VersionHistory](https://gitlab.haskell.org/ghc/ghc/wikis/commentary/libraries/version-history) wiki page
|
|
|
196
|
+* [ ] Set `RELEASE=NO`
|
|
|
197
|
+* [ ] Create a release tracking ticket for the next release using the template in #16816
|
|
|
198
|
+
|
|
|
199
|
+[^1]: Build platform changes are major changes to how GHC is being built from sources.
|
|
|
200
|
+ Bindist changes are significant changes to the toolchains, changes to the layout of the bindists or changes to the user facing installation procedure.
|
|
|
201
|
+ Platform tier changes are changes that move platforms up or down a tier or drop a given platform from the tierlist. |