Skip to content

Commit f75f381

Browse files
jneiramergify[bot]
andauthored
Mention ghcup and warning about updating artifacts (#1935)
* ghcup and warning about updating artifacts * Correct typo Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent 5f6ce4a commit f75f381

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

docs/releases.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ when added to the path.
1515
* [ ] add that list to the actual [Changelog](https://github.com/haskell/haskell-language-server/blob/master/ChangeLog.md) with a description of the release.
1616
* [ ] bump up versions of changed packages. All are optional but [haskell-language-server itself](https://github.com/haskell/haskell-language-server/blob/master/haskell-language-server.cabal).
1717
* [ ] create the tag and make an initial prerelease to trigger the ci workflow (see details below)
18+
* [ ] contact ghcup team (#haskell-ghcup irc channel or via its [repo](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues)) to try to sync our release and its inclusion in ghcup
1819
* [ ] check uploaded binaries (see windows note below) and the release description (usually the changelog entry) and uncheck the prerelease box
1920
* [ ] make public the release in the usual social channels: irc, twitter, reddit, discord, discourse, mailing lists, etc (not required but useful to spread the word :slightly_smiling_face:)
2021

@@ -34,12 +35,18 @@ workflow](https://github.com/haskell/haskell-language-server/actions) will be
3435
kicked off and will start creating binaries. They will be gzipped and
3536
uploaded to the release.
3637

37-
It creates a `haskell-language-server-OS-GHC` binary for each platform
38+
It creates a `haskell-language-server-${os}-${ghcVersion}` binary for each platform
3839
(Linux, macOS, Windows) and each GHC version that we currently support, as well
39-
as a `haskell-language-server-wrapper-OS` binary for each platform. Note that
40+
as a `haskell-language-server-wrapper-${os}` binary for each platform. Note that
4041
only one wrapper binary is created per platform, and it should be built with the
4142
most recent GHC version.
4243

44+
### ghcup
45+
It also creates a `haskell-language-server-${os}-${hlsVersion}.tar.gz` tarball with
46+
the binaries for *all* supported ghc versions, to help downstream publishers in
47+
the distribution of the release. The most prominent publisher using them is `ghcup`.
48+
The `tar` job in the workflow file automates the creation of this.
49+
4350
Once all these binaries are present
4451

4552
## Distributable binaries
@@ -88,19 +95,22 @@ the prerelease and the tag itself has to be recreated to start it again.
8895
If only some of the artefacts are missing, an alternative could be make
8996
the release in a fork and upload manually them.
9097

91-
If they are missing due to ci specific problems we can build the executable locally.
98+
If they are missing due to ci specific problems we can build the executable locally
99+
and add it to the existing release.
100+
101+
### Updating release artifacts
92102

93-
To manually upload the missing binary we should:
103+
*IMPORTANT: release artifacts must not be modified, cause it would break
104+
its secure distribution using their hashes. We should only add new ones.*
105+
106+
To manually upload a new binary we should:
94107

95108
- Add the new tar/zip following the name conventions of existing ones
96109
- `haskell-language-server-${os}-${ghcVersion}.gz` for `Linux` and `macOS` and `haskell-language-server-Windows-${ghcVersion}.exe.zip` for `Windows`
97110
- the binary inside the gz file is named `haskell-language-server-${ghcVersion}` (with the `.exe` extension for `Windows`). Note that the binary name does not contain the `${os}` part.
98-
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz` following the same schema for the binary as the previous one.
99-
100-
### ghcup
101-
Ghcup can install hls binaries, provided that there is a tarfile
102-
called `haskell-language-server-{macOS,Linux}-$HLS_VERSION.tar.gz`
103-
included in the GitHub release. The `tar` job in the workflow file automates the creation of this.
111+
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz` *locally* and upload it under a new name `haskell-language-server-${os}-${ghcVersion}-rev${n}.tar.gz` following the same schema for the binary as the previous one.
112+
- `-rev${n}` is the next revision number of the tarball, starting at 1.
113+
- we should contact users of the tarball (particularly ghcup) to notify the change
104114

105115
### Windows
106116
Currently building HLS with GHC 8.8.x on Windows is very flakey and so

0 commit comments

Comments
 (0)