Skip to content

Commit 32e08a7

Browse files
committed
Information about releasing for other platforms
1 parent c39d928 commit 32e08a7

File tree

1 file changed

+131
-9
lines changed

1 file changed

+131
-9
lines changed

doc/maintainers/releases.md

Lines changed: 131 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)