Skip to content

Commit f4022c5

Browse files
jneiramergify[bot]
andauthored
Post 1.6.0.0 fixes and prepare 1.6.1.0 bug fix release (#2647)
* Reverse condition to upload candidates As github.event.inputs.upload-candidates has no value when the workflow is triggered via a -hackage branch * Remove parenthesis * Remove unused rerun by comment * Remove install zip (again) * Ignore gitlab ci in github * Update release instructions * Correct hls version * Use name schema of github release * Apply markdown-lint * Complete th workarounds * Bum up hls version * Fix bug hls-wrapper non static * Update dynamic build instructions * Bump up wingman due to the last fix * Correct grammar Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent ccce756 commit f4022c5

16 files changed

+69
-54
lines changed

Diff for: .github/workflows/bench.yml

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jobs:
3535
, "**/README.md"
3636
, "FUNDING.yml"
3737
, "**/stack*.yaml"
38+
, ".gitlab-ci.yaml"
39+
, ".gitlab/**"
3840
]'
3941

4042
bench_init:

Diff for: .github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ jobs:
105105

106106
- name: Build the wrapper
107107
if: matrix.ghc == '8.10.7'
108-
run: cabal build exe:hls-wrapper -O2 $LINUX_CABAL_ARGS
108+
run: cabal build exe:hls-wrapper -O2 $CABAL_ARGS
109109

110110
- name: Compress wrapper binary
111111
if: matrix.ghc == '8.10.7'

Diff for: .github/workflows/caching.yml

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ jobs:
6969
, "**/README.md"
7070
, "FUNDING.yml"
7171
, ".circleci/**"
72+
, "**/stack*.yaml"
73+
, ".gitlab-ci.yaml"
74+
, ".gitlab/**"
7275
]'
7376

7477
caching:

Diff for: .github/workflows/flags.yml

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ jobs:
3434
, "FUNDING.yml"
3535
, ".circleci/**"
3636
, "**/stack*.yaml"
37+
, ".gitlab-ci.yaml"
38+
, ".gitlab/**"
3739
]'
3840

3941
flags:

Diff for: .github/workflows/hackage.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
upload-candidates:
1212
description: 'Whether packages should be uploaded'
1313
required: true
14-
default: 'true'
14+
default: 'false'
1515
push:
1616
branches:
1717
- '*-hackage'
@@ -20,7 +20,7 @@ jobs:
2020
check-and-upload-tarballs:
2121
runs-on: ubuntu-latest
2222
strategy:
23-
fail-fast: ${{ github.event.inputs.upload-candidates == 'true' }}
23+
fail-fast: ${{ github.event.inputs.upload-candidates != 'false' }}
2424
matrix:
2525
package: ["hie-compat", "hls-graph", "shake-bench",
2626
"hls-plugin-api", "ghcide", "hls-test-utils",
@@ -139,7 +139,7 @@ jobs:
139139
path: ${{ steps.generate-dist-tarball.outputs.path }}
140140

141141
upload-candidate:
142-
if: github.event.inputs.upload-candidates == 'true'
142+
if: github.event.inputs.upload-candidates != 'false'
143143
needs: check-and-upload-tarballs
144144
runs-on: ubuntu-latest
145145
steps:

Diff for: .github/workflows/nix.yml

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ jobs:
3232
, "**/README.md"
3333
, "FUNDING.yml"
3434
, "**/stack*.yaml"
35+
, "**/stack*.yaml"
36+
, ".gitlab-ci.yaml"
37+
, ".gitlab/**"
3538
]'
3639
- id: skip_check_no_nix
3740
uses: fkirc/[email protected]

Diff for: .github/workflows/rerun.yml

-14
This file was deleted.

Diff for: .github/workflows/test.yml

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jobs:
3535
, "FUNDING.yml"
3636
, ".circleci/**"
3737
, "**/stack*.yaml"
38+
, ".gitlab-ci.yaml"
39+
, ".gitlab/**"
3840
]'
3941
# If we only change ghcide downstream packages we have not test ghcide itself
4042
- id: skip_ghcide_check

Diff for: .gitlab-ci.yml

+9-10
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ tar-aarch64-linux-deb10:
8585
script:
8686
- ./.gitlab/tar.sh
8787
variables:
88-
TARBALL_ARCHIVE_SUFFIX: aarch64-linux-deb10
88+
TARBALL_ARCHIVE_SUFFIX: Linux-aarch64
8989
TARBALL_EXT: tar.xz
9090

9191
build-armv7-linux-deb10:
@@ -107,7 +107,7 @@ tar-armv7-linux-deb10:
107107
script:
108108
- ./.gitlab/tar.sh
109109
variables:
110-
TARBALL_ARCHIVE_SUFFIX: armv7-linux-deb10
110+
TARBALL_ARCHIVE_SUFFIX: Linux-armv7
111111
TARBALL_EXT: tar.xz
112112

113113
build-x86_64-linux:
@@ -129,7 +129,7 @@ tar-x86_64-linux:
129129
script:
130130
- ./.gitlab/tar.sh
131131
variables:
132-
TARBALL_ARCHIVE_SUFFIX: x86_64-linux
132+
TARBALL_ARCHIVE_SUFFIX: Linux-x86_64
133133
TARBALL_EXT: tar.xz
134134

135135
build-x86_64-linux-alpine:
@@ -153,7 +153,7 @@ tar-x86_64-linux-alpine:
153153
script:
154154
- ./.gitlab/tar.sh
155155
variables:
156-
TARBALL_ARCHIVE_SUFFIX: x86_64-linux-alpine
156+
TARBALL_ARCHIVE_SUFFIX: Linux-alpine-x86_64
157157
TARBALL_EXT: tar.xz
158158

159159
build-x86_64-freebsd12:
@@ -173,7 +173,7 @@ tar-x86_64-freebsd12:
173173
script:
174174
- ./.gitlab/tar.sh
175175
variables:
176-
TARBALL_ARCHIVE_SUFFIX: x86_64-freebsd12
176+
TARBALL_ARCHIVE_SUFFIX: FreeBSD12-x86_64
177177
TARBALL_EXT: tar.xz
178178

179179
build-x86_64-freebsd13:
@@ -197,7 +197,7 @@ tar-x86_64-freebsd13:
197197
script:
198198
- ./.gitlab/tar.sh
199199
variables:
200-
TARBALL_ARCHIVE_SUFFIX: x86_64-freebsd13
200+
TARBALL_ARCHIVE_SUFFIX: FreeBSD13-x86_64
201201
TARBALL_EXT: tar.xz
202202

203203
build-x86_64-darwin:
@@ -217,7 +217,7 @@ tar-x86_64-darwin:
217217
script:
218218
- ./.gitlab/tar.sh
219219
variables:
220-
TARBALL_ARCHIVE_SUFFIX: x86_64-darwin
220+
TARBALL_ARCHIVE_SUFFIX: macOS-x86_64
221221
TARBALL_EXT: tar.xz
222222

223223
build-aarch64-darwin:
@@ -269,7 +269,7 @@ tar-aarch64-darwin:
269269
script:
270270
- arch -arm64 /bin/bash ./.gitlab/tar.sh
271271
variables:
272-
TARBALL_ARCHIVE_SUFFIX: aarch64-darwin
272+
TARBALL_ARCHIVE_SUFFIX: macOS-aarch64
273273
TARBALL_EXT: tar.xz
274274

275275
build-x86_64-windows:
@@ -278,7 +278,6 @@ build-x86_64-windows:
278278
- new-x86_64-windows
279279
parallel: *default_matrix
280280
script:
281-
- bash '-lc' 'pacman --noconfirm -S zip'
282281
- $env:CHERE_INVOKING = "yes"
283282
- bash '-lc' "ADD_CABAL_ARGS=$env:ADD_CABAL_ARGS GHC_VERSION=$env:GHC_VERSION CABAL_INSTALL_VERSION=$CABAL_INSTALL_VERSION .gitlab/ci.sh"
284283
variables:
@@ -294,5 +293,5 @@ tar-x86_64-windows:
294293
- $env:CHERE_INVOKING = "yes"
295294
- bash '-lc' "TARBALL_ARCHIVE_SUFFIX=$env:TARBALL_ARCHIVE_SUFFIX TARBALL_EXT=$env:TARBALL_EXT .gitlab/tar.sh"
296295
variables:
297-
TARBALL_ARCHIVE_SUFFIX: x86_64-windows
296+
TARBALL_ARCHIVE_SUFFIX: Windows-x86_64
298297
TARBALL_EXT: zip

Diff for: .gitlab/tar.sh

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ ls -la out/
88
cd out/
99

1010
# create tarball/zip
11-
TARBALL_PREFIX="haskell-language-server-$("$CI_PROJECT_DIR/out/haskell-language-server-wrapper" --numeric-version)"
11+
HLS_VERSION="$("$CI_PROJECT_DIR/out/haskell-language-server-wrapper" --numeric-version)"
12+
TARBALL_PREFIX="haskell-language-server"
1213
case "${TARBALL_EXT}" in
1314
zip)
14-
zip "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" haskell-language-server-*
15+
zip "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}-${HLS_VERSION}.zip" haskell-language-server-*
1516
find . -type f ! -name '*.zip' -delete
1617
;;
1718
tar.xz)
18-
tar caf "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" haskell-language-server-*
19+
tar caf "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}-${HLS_VERSION}.tar.xz" haskell-language-server-*
1920
find . -type f ! -name '*.tar.xz' -delete
2021
;;
2122
*)

Diff for: ChangeLog.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog for haskell-language-server
22

3-
## 1.6.0
3+
## 1.6.0.0
44

55
Time for a new and exciting hls release:
66

@@ -9,7 +9,7 @@ Time for a new and exciting hls release:
99
- [Qualify imported names](https://haskell-language-server.readthedocs.io/en/latest/features.html#qualify-imported-names) thanks to @eddiemundo
1010
- New plugin to support [selection range](https://haskell-language-server.readthedocs.io/en/latest/features.html#selection-range) (aka double click text selection) thanks to @kokobd
1111
- Finally hls [supports *ghc 9.2.1*](https://github.com/haskell/haskell-language-server/issues/2179)
12-
- Including core features and [many plugins](https://haskell-language-server.readthedocs.io/en/latest/supported-versions.html#plugins-support-by-ghc-version))
12+
- Including core features and [many plugins](https://haskell-language-server.readthedocs.io/en/latest/supported-versions.html#plugins-support-by-ghc-version)
1313
- Thanks to a great collective effort coordinated by @pepeiborra and with the help of @wz1000, @mpickering and @alanz among others
1414
- Hls now also [supports *ghc 9.0.2*](https://github.com/haskell/haskell-language-server/issues/297) with all plugins but the stylish-haskell formatter
1515
- Including the [wingman plugin](https://github.com/haskell/haskell-language-server/tree/master/plugins/hls-tactics-plugin) thanks to @isovector and @anka-213

Diff for: docs/contributing/releases.md

+6-13
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@ and it is being used in nix environments.
4343

4444
- [ ] bump up package versions following the [pvp specification](https://pvp.haskell.org/) if they are not already updated. You could use [policeman](https://github.com/kowainik/policeman) to help with this step.
4545
- [ ] create ${version}-hackage branch to trigger the hackage github workflow which will upload all changed packages to hackage as candidates
46+
- [ ] for new plugins or packages, update hackage uploaders to add the author of the plugin/package and some hls maintainer(s) other than the owner of the hackage api key used to upload them (it has to be done by the owner of the api key, actually @pepeiborra)
4647
- [ ] check manually candidates in hackage
4748
- [ ] publish them definitely
4849

4950
### ghcup release
5051

5152
- [ ] push the release tag to the [haskell-language-server gitlab repo](https://gitlab.haskell.org/haskell/haskell-language-server) to trigger the build of ghcup specific artifacts
53+
- [ ] download specific artifacts [only available in the gitlab build](#haskell-gitlab-release-pipeline) and compute their sha256sum
54+
- [ ] upload them to the github release and complete the SHA256SUMS file
5255
- [ ] change ghcup metadata to include the new release in <https://github.com/haskell/ghcup-metadata>
5356
- example pull request [here](https://github.com/haskell/ghcup-metadata/pull/11)
5457

@@ -124,20 +127,10 @@ It just kicks off a matrix of jobs varying across GHC versions and OSs, building
124127
the binaries with Cabal and extracting them from the dist-newstyle directory.
125128
The binaries are built with -O2.
126129

127-
One caveat is that we need to rename the binaries from
128-
haskell-language-server/haskell-language-server-wrapper to hls/hls-wrapper due to
129-
path length limitations on windows. But whenever we upload them to the release,
130-
we make sure to upload them as their full name variant.
131-
132130
### Failing workflow
133131

134-
If the workflow fail and all of some binaries has not been uploaded,
135-
the prerelease and the tag itself has to be recreated to start it again.
136-
If only some of the artefacts are missing, an alternative could be make
137-
the release in a fork and upload manually them.
138-
139-
If they are missing due to ci specific problems we can build the executable locally
140-
and add it to the existing release.
132+
If the workflow fail and some binaries has been already uploaded,
133+
those artifacts must be removed and the build should be re-ran (the build tries to upload themm all and it fails if there is an existing artifact with the same name)
141134

142135
### Updating release artifacts
143136

@@ -171,7 +164,7 @@ The script will upload the tarballs as candidates, maintainers will have to chec
171164

172165
The project is present in the haskell gitlab server: <https://gitlab.haskell.org/haskell/haskell-language-server>
173166
The main motivation is to leverage the ci infrastructure which includes architectures not included in the github ci.
174-
The specific architectures only available through gitlab are: `armv7-linux`, `x86_64-freebsd`, `aarch64-darwin`, `aarch64-linux`
167+
The specific architectures only available through gitlab are: `aarch64-darwin`, `aarch64-linux`, `armv7-linux`, `x86_64-freebsd12`, `x86_64-freebsd13`, `x86_64-linux-alpine`
175168
The gitlab pipeline uses the configuration file [.gitlab-ci.yml](https://github.com/haskell/haskell-language-server/blob/master/.gitlab-ci.yml)
176169
and the sh scripts in [.gitlab](https://github.com/haskell/haskell-language-server/tree/master/.gitlab)
177170
It is triggered by pushing a tag to the gitlab repo.

Diff for: docs/installation.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Installation
22

33
A typical haskell-language-server installation consists of:
4+
45
- One binary file for each supported ghc version: `haskell-language-server-${ghcVersion}`
56
- Another binary named `haskell-language-version-wrapper` which analyzes the project or file in the current working dir
67
and calls the appropiate `haskell-language-server-${ghcVersion}` variant.
@@ -15,13 +16,15 @@ A typical haskell-language-server installation consists of:
1516
## ghcup
1617

1718
If you are using [`ghcup`](https://www.haskell.org/ghcup/) to manage your installations, you can install `haskell-language-server` with
19+
1820
```bash
1921
ghcup install hls
2022
```
2123

2224
You can check if HLS is available for your platorm via ghcup here: <https://haskell.org/ghcup/install/#supported-platforms>.
2325

2426
You can also install HLS from source without checking out the code manually:
27+
2528
```bash
2629
ghcup compile hls -v 1.4.0 8.10.7
2730
```
@@ -31,6 +34,7 @@ Check `ghcup compile hls --help` for a full list of compilation options.
3134
## chocolatey
3235

3336
If you are using [`chocolatey`](https://chocolatey.org/) to manage your installations in windows, [you can install `haskell-language-server`](https://community.chocolatey.org/packages/haskell-language-server) with
37+
3438
```bash
3539
choco install haskell-language-server
3640
````
@@ -79,8 +83,6 @@ pkg install hs-haskell-language-server
7983
to install it. At the moment, HLS installed this way only supports the same GHC
8084
version as the ports one.
8185

82-
83-
8486
## Installation from source
8587

8688
### Common pre-requirements

Diff for: docs/troubleshooting.md

+26-4
Original file line numberDiff line numberDiff line change
@@ -160,18 +160,40 @@ The server log will show which cradle is being chosen.
160160

161161
Using an explicit `hie.yaml` to configure the cradle can resolve the problem, see the [configuration page](./configuration.md#configuring-your-project-build).
162162

163-
### Static binaries
163+
### Static binaries and template haskell support
164164

165165
Static binaries use the GHC linker for dynamically loading dependencies when typechecking TH code, and this can run into issues when loading shared objects linked against mismatching system libraries, or into GHC linker bugs (mainly the Mach linker used in Mac OS, but also potentially the ELF linker).
166166
Dynamically linked binaries (including`ghci`) use the system linker instead of the GHC linker and avoid both issues.
167167

168168
The easiest way to obtain a dynamically linked HLS binary is to build it locally. With `cabal` this can be done as follows:
169169

170-
cabal update && cabal install haskell-language-server --enable-executable-dynamic
170+
```bash
171+
cabal update && cabal install pkg:haskell-language-server --ghc-options="-dynamic"
172+
```
173+
174+
If you are compiling with a ghc version with a specific `cabal-ghc${ghcVersion}.project` in the repo you will have to use it. For example for ghc-9.0.x:
175+
176+
```bash
177+
cabal update && cabal install pkg:haskell-language-server --project-file=cabal-ghc90.project --ghc-options="-dynamic"
178+
```
179+
180+
With `stack` you also need add the ghc option `-dynamic`.
171181

172-
With `stack` you need to manually add the ghc option `-dynamic`.
182+
```bash
183+
stack install haskell-language-server --stack-yaml=stack-${ghcVersion}.yaml --ghc-options="-dynamic"
184+
```
173185

174-
Note: HLS binaries prior to 1.6.0 were statically linking `glibc` which is not a supported configuration and has been replaced by `musl`.
186+
You also can leverage `ghcup compile hls`:
187+
188+
```bash
189+
ghcup compile hls -g master --ghc 8.10.7 -- --ghc-options="-dynamic"
190+
```
191+
192+
as it uses cabal underneath you might need to use a specific cabal.project for some ghc versions:
193+
194+
```bash
195+
ghcup compile hls -g master --ghc 9.0.2 --project-file cabal-ghc90.project -- --ghc-options="-dynamic"
196+
```
175197

176198
### Preprocessors
177199

Diff for: haskell-language-server.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cabal-version: 2.4
22
category: Development
33
name: haskell-language-server
4-
version: 1.6.0.0
4+
version: 1.6.1.0
55
synopsis: LSP server for GHC
66
description:
77
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>

Diff for: plugins/hls-tactics-plugin/hls-tactics-plugin.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cabal-version: 2.4
22
category: Development
33
name: hls-tactics-plugin
4-
version: 1.6.0.0
4+
version: 1.6.1.0
55
synopsis: Wingman plugin for Haskell Language Server
66
description:
77
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>

0 commit comments

Comments
 (0)