@@ -280,7 +280,68 @@ final release.
280280
281281 Publish the GitHub release.
282282
283- ### D: Update versions and `ChangeLog.md` for 'unreleased'
283+ ### D: Consider adding other platforms to the GitHub release
284+
285+ The
286+ [Integration Tests workflow](https://github.com/commercialhaskell/stack/actions?query=workflow%3A%22Integration+tests%22)
287+ is limited to the platforms supported by the GitHub-hosted runners
288+ (currently, only x86_64) and any self-hosted runners (currently, only
289+ Linux/AArch64). However, it is possible to edit the GitHub release to
290+ include binary distributions for other platforms (for example,
291+ macOS/AArch64). The prerequisites are:
292+
293+ * a computer with that platform (operating system, machine architecture);
294+ * a sufficiently-recent existing version of Stack for that platform (for
295+ example, GHCup has published versions of Stack for macOS/AArch64);
296+ * a tool to print SHA checksums, such as `shasum` on Linux and macOS; and
297+ * the GNU Privacy Guard tool (`gpg`), which has had imported the private key
298+ used to sign Stack executables (see further below).
299+
300+ The steps are similar to those in the workflow:
301+
302+ 1. Change to the root directory of the Stack project.
303+
304+ 2. `stack etc/scripts/release.hs check`, to check before building.
305+
306+ 3. `stack etc/scripts/release.hs build`, to build. The output 'assets'
307+ (`stack-<version>-<os>-<architecture> ...`) will be in
308+ the `_release` directory in the root directory of the Stack project.
309+
310+ 4. For each of the output assets, create a corresponding SHA 256 file with
311+ a `.sha256` extension. For example (where `<asset>` is the name of the
312+ file):
313+
314+ ~~~text
315+ shasum -a 256 <asset> > <asset>.sha256
316+ ~~~
317+
318+ 5. For each of the output assets, create a corresponding ASCII-armored
319+ signature file with an `.asc` extension using `gpg`. For example (where
320+ `<asset>` is the name of the file):
321+
322+ ~~~text
323+ gpg --digest-algo=sha512 --detach-sig --armor -u 0x575159689BEFB442 <asset>
324+ ~~~
325+
326+ 6. Edit the GitHub release to include the output assets and their
327+ corresponding `.sha256` and `.asc` files.
328+
329+ The private key used to sign Stack executables can be exported from a
330+ version of `gpg` to which it has previously been imported with:
331+
332+ ~~~text
333+ gpg --armor --export-secret-key 0x575159689BEFB442
334+ ~~~
335+
336+ The private key, so obtained, can be imported into `gpg` by:
337+
338+ 1. Commanding `gpg --import`.
339+
340+ 2. Pasting the private key.
341+
342+ 3. Entering Ctrl+D and Enter.
343+
344+ ### E: Update versions and `ChangeLog.md` for 'unreleased'
284345
285346 In the `rc/vX.Y` branch:
286347
@@ -311,7 +372,7 @@ final release.
311372 Bug fixes:
312373 ~~~
313374
314- ### E : Announce the release candidate
375+ ### F : Announce the release candidate
315376
316377 Announce the release candidate to the following mailing lists
317378
@@ -408,7 +469,68 @@ final release.
408469
409470 Publish the GitHub release.
410471
411- ### D: Upload to Hackage and reset branches
472+ ### D: Consider adding other platforms to the GitHub release
473+
474+ The
475+ [Integration Tests workflow](https://github.com/commercialhaskell/stack/actions?query=workflow%3A%22Integration+tests%22)
476+ is limited to the platforms supported by the GitHub-hosted runners
477+ (currently, only x86_64) and any self-hosted runners (currently, only
478+ Linux/AArch64). However, it is possible to edit the GitHub release to
479+ include binary distributions for other platforms (for example,
480+ macOS/AArch64). The prerequisites are:
481+
482+ * a computer with that platform (operating system, machine architecture);
483+ * a sufficiently-recent existing version of Stack for that platform (for
484+ example, GHCup has published versions of Stack for macOS/AArch64);
485+ * a tool to print SHA checksums, such as `shasum` on Linux and macOS; and
486+ * the GNU Privacy Guard tool (`gpg`), which has had imported the private key
487+ used to sign Stack executables (see further below).
488+
489+ The steps are similar to those in the workflow:
490+
491+ 1. Change to the root directory of the Stack project.
492+
493+ 2. `stack etc/scripts/release.hs check`, to check before building.
494+
495+ 3. `stack etc/scripts/release.hs build`, to build. The output 'assets'
496+ (`stack-<version>-<os>-<architecture> ...`) will be in
497+ the `_release` directory in the root directory of the Stack project.
498+
499+ 4. For each of the output assets, create a corresponding SHA 256 file with
500+ a `.sha256` extension. For example (where `<asset>` is the name of the
501+ file):
502+
503+ ~~~text
504+ shasum -a 256 <asset> > <asset>.sha256
505+ ~~~
506+
507+ 5. For each of the output assets, create a corresponding ASCII-armored
508+ signature file with an `.asc` extension using `gpg`. For example (where
509+ `<asset>` is the name of the file):
510+
511+ ~~~text
512+ gpg --digest-algo=sha512 --detach-sig --armor -u 0x575159689BEFB442 <asset>
513+ ~~~
514+
515+ 6. Edit the GitHub release to include the output assets and their
516+ corresponding `.sha256` and `.asc` files.
517+
518+ The private key used to sign Stack executables can be exported from a
519+ version of `gpg` to which it has previously been imported with:
520+
521+ ~~~text
522+ gpg --armor --export-secret-key 0x575159689BEFB442
523+ ~~~
524+
525+ The private key, so obtained, can be imported into `gpg` by:
526+
527+ 1. Commanding `gpg --import`.
528+
529+ 2. Pasting the private key.
530+
531+ 3. Entering Ctrl+D and Enter.
532+
533+ ### E: Upload to Hackage and reset branches
412534
413535 Upload the `stack` package to Hackage with the command:
414536
@@ -448,14 +570,14 @@ final release.
448570 git push origin :rc/vX.Y
449571 ~~~
450572
451- ### E : Activate the version on Read The Docs
573+ ### F : Activate the version on Read The Docs
452574
453575 Activate the version for new release tag, on
454576 [readthedocs.org](https://readthedocs.org/projects/stack/versions/).
455577
456578 Ensure that the `stable` documentation has updated.
457579
458- ### F : Update get.haskellstack.org redirects
580+ ### G : Update get.haskellstack.org redirects
459581
460582 Update the https://get.haskellstack.org redirects by updating the
461583 `_redirects` file in the root of the
@@ -484,7 +606,7 @@ final release.
484606
485607 and make sure it redirects to the new version.
486608
487- ### G : Update versions and `ChangeLog.md` for 'unreleased'
609+ ### H : Update versions and `ChangeLog.md` for 'unreleased'
488610
489611 In the `stable` branch:
490612
@@ -515,12 +637,12 @@ final release.
515637 Bug fixes:
516638 ~~~
517639
518- ### H : Update the repository's issue and pull request templates
640+ ### I : Update the repository's issue and pull request templates
519641
520642 The repository's issue and pull request templates are the `.github`
521643 directory. Update them to refer to the new release version (`X.Y.Z`).
522644
523- ### I : Announce the release
645+ ### J : Announce the release
524646
525647 Announce the release to the following mailing lists
526648
@@ -562,7 +684,7 @@ final release.
562684
563685 * the release description from Github.
564686
565- ### J : Update Docker images
687+ ### K : Update Docker images
566688
567689 Docker Hub includes Docker images under
568690 [`fpco/stack-build'](https://hub.docker.com/r/fpco/stack-build).
0 commit comments