Skip to content

Prepare release 2.9.0.0#4319

Merged
fendor merged 9 commits into
masterfrom
wip/2.9.0.0
Jun 19, 2024
Merged

Prepare release 2.9.0.0#4319
fendor merged 9 commits into
masterfrom
wip/2.9.0.0

Conversation

@fendor

@fendor fendor commented Jun 13, 2024

Copy link
Copy Markdown
Collaborator

Releasing

Release checklist

  • check ghcup supports new GHC releases if any
  • set the supported GHCs in workflow file .github/workflows/release.yaml
    • There is currently a list of GHC versions for each major platform. Search for ghc: [ to find all lists.
    • Look for TODO: to find locations that require extra care for GHC versions.
  • check all plugins still work if release includes code changes
  • bump package versions in all *.cabal files (same version as hls)
    • HLS uses lockstep versioning. The core packages and all plugins use the same version number, and only support exactly this version.
      • Exceptions:
        • hie-compat requires no automatic version bump.
        • shake-bench is an internal testing tool, not exposed to the outside world. Thus, no version bump required for releases.
    • For updating cabal files, the following script can be used:
      • ./release/update_versions.sh <OLD_VERSION> <NEW_VERSION>
      • It still requires manual verification and review
  • generate and update changelog
  • create release branch as wip/<version>
    • git switch -c wip/<version>
  • create release tag as <version>
    • git tag <version>
  • trigger release pipeline by pushing the tag
    • this creates a draft release
    • git push <remote> <version>
  • run sh scripts/release/download-gh-artifacts.sh <version> <your-gpg-email>
    • downloads artifacts to gh-release-artifacts/haskell-language-server-<version>/
    • also downloads FreeBSD bindist from circle CI
    • adds signatures
  • upload artifacts to downloads.haskell.org from gh-release-artifacts/haskell-language-server-<version>/
    • You require sftp access, contact wz1000, bgamari or chreekat
    • cd gh-release-artifacts/haskell-language-server-<version>
    • SIGNING_KEY=... ../../release/upload.sh upload
      • Your SIGNING_KEY can be obtained with gpg --list-secret-keys --keyid-format=long
    • Afterwards, the artifacts are available at: https://downloads.haskell.org/~hls/haskell-language-server-<version>/
    • Run SIGNING_KEY=... ../../release/upload.sh purge_all to remove CDN caches
  • create PR to ghcup-metadata
    • update ghcup-vanilla-0.0.8.yaml and ghcup-vanilla-0.0.7.yaml
      • can use sh scripts/release/create-yaml-snippet.sh <version> to generate a snippet that can be manually inserted into the yaml files
    • update hls-metadata-0.0.1.json Currently unnecessary, GHCup builds its own HLS binaries and updates that file.
      • utilize cabal run ghcup-gen -- generate-hls-ghcs -f ghcup-0.0.7.yaml --format json --stdout in the root of ghcup-metadata repository
    • Be sure to mark the correct latest version and add the 'recommended' tag to the latest release.
  • get sign-off on release
    • from wz1000, michealpj, maerwald and fendor
  • publish release on github
  • upload hackage packages
    • requires credentials
  • update https://haskell-language-server.readthedocs.io/en/latest/support/ghc-version-support.html#current-ghc-version-support-status
  • Supported tools table needs to be updated:
  • post release on discourse and reddit
  • merge release PR to master or forward port relevant changes

@fendor
fendor requested a review from michaelpj as a code owner June 13, 2024 15:26
@fendor
fendor requested a review from wz1000 as a code owner June 13, 2024 15:26
@michaelpj

Copy link
Copy Markdown
Collaborator

I think we should at least wait for #4314 and re-enable the fourmolu plugin.

@fendor

fendor commented Jun 13, 2024

Copy link
Copy Markdown
Collaborator Author

@michaelpj Ok, that's fine by me. If we wait, we can also include #4318. I am just making sure, we are not further bogged down by CI issues.

@michaelpj

Copy link
Copy Markdown
Collaborator

Remember to update the support tables in the docs (that should be in the checklist!)

@fendor

fendor commented Jun 14, 2024

Copy link
Copy Markdown
Collaborator Author

It is in the checklist, just the fourth to last item, which is clearly too late :) Moved it up in the checklist.

@fendor

fendor commented Jun 14, 2024

Copy link
Copy Markdown
Collaborator Author

Done, updated the supported GHC version table

@michaelpj

Copy link
Copy Markdown
Collaborator

Uh... I should have actually read the checklist before commenting 😅

Comment thread docs/support/plugin-support.md Outdated
| `hls-floskell-plugin` | 3 | |
| `hls-stan-plugin` | 3 | 9.2.(4-8) |
| `hls-stan-plugin` | 3 | 9.2.(4-8), 9.10.1 |
| `hls-retrie-plugin` | 3 | |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are more plugins not supported on 9.10!

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which ones? In haskell-language-server.cabal, I could only find stan having:

common stan
  if flag(stan) && (impl(ghc > 8.8.1) && impl(ghc <= 9.2.3) || impl(ghc >= 9.4.0) && impl(ghc < 9.10.0))
    build-depends: haskell-language-server:hls-stan-plugin
    cpp-options: -Dhls_stan

...

  if flag(stan) && (impl(ghc > 8.8.1) && impl(ghc <= 9.2.3) || impl(ghc >= 9.4.0) && impl(ghc < 9.10.0))
    buildable: True
  else
    buildable: False

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I found more in .github/workflow/test.yml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I'm surprised nothing else has guards in the cabal file? I would expect us to still try and build them if not?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh right, we set the flags in cabal.project, that's where they're turned off.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that work? Like will this not affect cabal install haskell-language-server -w 9.10.1?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure what our policy should be here. We should probably either be consistently setting things in cabal.project or in the cabal file...

fendor added 3 commits June 15, 2024 10:54
The older 'bytestring-0.11.1.0' version doesn't compile with the recent
GHC 9.10.1 release. Bump the version to '0.12.1.0' which can be
successfully compiled on all supported GHC versions.
@michaelpj

Copy link
Copy Markdown
Collaborator

I removed the remaining unnecesssary cabal.project bits

@michaelpj

Copy link
Copy Markdown
Collaborator

Reverted sorry, I was doing it wrong

fendor and others added 5 commits June 15, 2024 15:38
Having them in the cabal.project file is a very neat way to
enable/disable a plugin, but it negatively affects Hackage users as they
can no longer trivially install HLS from Hackage.

This discussion might be revisited in the future, but not during a
release process.
On some platforms, building bytestring-0.12.1.0 is not fully supported
yet. Hence, we disable tests and benchmarks, to allow building on the
platform Windows with GHC 9.10.1.

@jhrcek jhrcek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@soulomoon soulomoon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@benz0li

benz0li commented Jun 19, 2024

Copy link
Copy Markdown

ℹ️ One has to patch

$(FIND) "$(STORE_DIR)/ghc-$(GHC_VERSION)" -type f -name "$(DLL)" -execdir $(INSTALL_X) "{}" "$(ROOT_DIR)/$(BINDIST_OUT_DIR)/lib/$(GHC_VERSION)/{}" \;
when using cabal-install versions ≥ 3.11 (i.e. cabal-install-v3.12.0.0-prerelease).
👉 Patch: Modify "$(STORE_DIR)/ghc-$(GHC_VERSION)" to "$(STORE_DIR)/ghc-$(GHC_VERSION)-inplace".

Cross reference:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants