haskell-language-server/haskell-language-server.cabal
wz1000 191bda61fe
9.6 support for HLS (#3480)
* 9.6 support

Fixes

hls-refactor-plugin 9.6 support

hls-gadt-plugin

Fix 9.4 build

Fixes

hls-gadt-plugin fixes

WIP 9.6 patches

fixes

fixes

fixes

fixes

fixes

Fixes and add CI

CI

CI fixes

patch haskell/actions for https://github.com/haskell/ghcup-hs/issues/783

CI fixes

CI fixes

CI fixes

CI

CI

CI

CI

CI

Fix build on 9.0

Fix build on 9.0

hls-splice-plugin 9.6 compat

fixes

fixes

fixes

fixes

Fix benchmark build errors

9.2.5 and 8.10.7 had build errors when running benchmarks due to `mfsolve`
test suite having duplicate instances, so stop building tests for
mfsolve (see: https://github.com/kuribas/mfsolve/issues/8). Also,
`http2-4.0.0` has a parse error due to a misplaced haddock comment that
causes build failure with `-haddock`. It is fixed in the latest commit
of the source repo, so use that in the `cabal.project` for now.

Checkout correct commit on `pull_request` in CI

By default, the `pull_request` event has a `GITHUB_SHA` env variable set to the
"last merge commit on the GITHUB_REF branch"
(see https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request).
But we want to check out the latest commit on the branch whether or not it is a
merge commit. This commit changes the CI actions to do just that.

fixes

Use head.hackage for 9.4

Only use head.hackage for 9.5 and up

Reverts the change that caused head.hackage to be used for 9.4 as
well

Reintroduce source-repo-package for ekg-json

Fix refactor plugin tests

Fix missing constraint detection in refactor plugin

ghc 9.6+ allow newer unordered-containers:template-haskell

Some refactor tests no longer broken for 9.2

Fix simple-multi-test on 9.6

Mark simple-plugin as broken on 9.6

func-test fixes

Disable unsupported plugins on 9.6

Eval plugin fixes

Eval plugin test fixes, debug output in CI script

Restore 'working' setup/actions

WIP Fix GHC prerelease windows install

Fix eval plugin T11

fixes

Eval plugin fixes

Fix splice plugin test

Mark `simple plugin` ghcide test broken on 9.6

fixes

fixes

Use GHC 9.6-rc1 in CI

Try using 9.6.1 for CI

* 9.6 nix

* Remove head.hackage

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes
2023-03-22 13:56:51 +00:00

657 lines
15 KiB
Plaintext

cabal-version: 3.0
category: Development
name: haskell-language-server
version: 1.9.1.0
synopsis: LSP server for GHC
description:
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
homepage: https://github.com/haskell/haskell-language-server#readme
bug-reports: https://github.com/haskell/haskell-language-server/issues
author: The Haskell IDE Team
maintainer: alan.zimm@gmail.com
copyright: The Haskell IDE Team
license: Apache-2.0
license-file: LICENSE
build-type: Simple
tested-with: GHC == 8.10.7 || == 9.0.2 || ==9.2.5
extra-source-files:
README.md
ChangeLog.md
test/testdata/**/*.project
test/testdata/**/*.cabal
test/testdata/**/*.yaml
test/testdata/**/*.hs
bindist/wrapper.in
flag pedantic
description: Enable -Werror
default: False
manual: True
source-repository head
type: git
location: https://github.com/haskell/haskell-language-server
common common-deps
build-depends:
, base >=4.12 && <5
, directory
, extra
, filepath
, text
, prettyprinter
-- Default warnings in HLS
common warnings
ghc-options: -Wall -Wredundant-constraints -Wno-name-shadowing -Wno-unticked-promoted-constructors
-- Allow compiling in pedantic mode
common pedantic
if flag(pedantic)
ghc-options: -Werror
-- Plugin flags are designed for 'cabal install haskell-language-server':
-- - Bulk flags should be default:False
-- - Individual flags should be default:True
-- The intent of this flag is being able to keep the ghc condition for hackage
-- but skip it via flags in cabal.project as plugins for new ghcs usually
-- are buildable using cabal.project tweaks
flag ignore-plugins-ghc-bounds
description: Force the inclusion of plugins even if they are not buildable by default with a specific ghc version
default: False
manual: True
flag cabal
description: Enable cabal plugin
default: True
manual: True
flag class
description: Enable class plugin
default: True
manual: True
flag callHierarchy
description: Enable call hierarchy plugin
default: True
manual: True
flag haddockComments
description: Enable haddockComments plugin
default: True
manual: True
flag eval
description: Enable eval plugin
default: True
manual: True
flag importLens
description: Enable importLens plugin
default: True
manual: True
flag refineImports
description: Enable refineImports plugin
default: True
manual: True
flag rename
description: Enable rename plugin
default: True
manual: True
flag retrie
description: Enable retrie plugin
default: True
manual: True
flag tactic
description: Enable tactic plugin
default: True
manual: True
flag hlint
description: Enable hlint plugin
default: True
manual: True
flag stan
description: Enable stan plugin
default: True
manual: True
flag moduleName
description: Enable moduleName plugin
default: True
manual: True
flag pragmas
description: Enable pragmas plugin
default: True
manual: True
flag splice
description: Enable splice plugin
default: True
manual: True
flag alternateNumberFormat
description: Enable Alternate Number Format plugin
default: True
manual: True
flag qualifyImportedNames
description: Enable qualifyImportedNames plugin
default: True
manual: True
flag codeRange
description: Enable Code Range plugin
default: True
manual: True
flag changeTypeSignature
description: Enable changeTypeSignature plugin
default: True
manual: True
flag gadt
description: Enable gadt plugin
default: True
manual: True
flag explicitFixity
description: Enable explicitFixity plugin
default: True
manual: True
flag explicitFields
description: Enable explicitFields plugin
default: True
manual: True
-- formatters
flag floskell
description: Enable floskell plugin
default: True
manual: True
flag fourmolu
description: Enable fourmolu plugin
default: True
manual: True
flag ormolu
description: Enable ormolu plugin
default: True
manual: True
flag stylishHaskell
description: Enable stylishHaskell plugin
default: True
manual: True
flag refactor
description: Enable refactor plugin
default: True
manual: True
flag dynamic
description: Build with the dyn rts
default: True
manual: True
flag cabalfmt
description: Enable cabal-fmt plugin
default: True
manual: True
common cabalfmt
if flag(cabalfmt)
build-depends: hls-cabal-fmt-plugin ^>= 0.1.0.0
cpp-options: -Dhls_cabalfmt
common cabal
if flag(cabal)
build-depends: hls-cabal-plugin ^>= 0.1
cpp-options: -Dhls_cabal
common class
if flag(class)
build-depends: hls-class-plugin ^>= 1.1
cpp-options: -Dhls_class
common callHierarchy
if flag(callHierarchy)
build-depends: hls-call-hierarchy-plugin ^>= 1.2
cpp-options: -Dhls_callHierarchy
common haddockComments
if flag(haddockComments) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-haddock-comments-plugin ^>= 1.1
cpp-options: -Dhls_haddockComments
common eval
if flag(eval)
build-depends: hls-eval-plugin ^>= 1.4
cpp-options: -Dhls_eval
common importLens
if flag(importLens)
build-depends: hls-explicit-imports-plugin ^>= 1.2
cpp-options: -Dhls_importLens
common refineImports
if flag(refineImports)
build-depends: hls-refine-imports-plugin ^>=1.0
cpp-options: -Dhls_refineImports
common rename
if flag(rename)
build-depends: hls-rename-plugin ^>= 1.0
cpp-options: -Dhls_rename
common retrie
if flag(retrie)
build-depends: hls-retrie-plugin ^>= 1.0
cpp-options: -Dhls_retrie
common tactic
if flag(tactic) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-tactics-plugin ^>= 1.8
cpp-options: -Dhls_tactic
common hlint
if flag(hlint) && impl(ghc < 9.5)
build-depends: hls-hlint-plugin ^>= 1.1
cpp-options: -Dhls_hlint
common stan
if flag(stan) && (impl(ghc >= 8.10) && impl(ghc < 9.0))
build-depends: hls-stan-plugin ^>= 1.0
cpp-options: -Dhls_stan
common moduleName
if flag(moduleName)
build-depends: hls-module-name-plugin ^>= 1.1
cpp-options: -Dhls_moduleName
common pragmas
if flag(pragmas)
build-depends: hls-pragmas-plugin ^>= 1.0
cpp-options: -Dhls_pragmas
common splice
if flag(splice)
build-depends: hls-splice-plugin ^>=1.0.0.1
cpp-options: -Dhls_splice
common alternateNumberFormat
if flag(alternateNumberFormat)
build-depends: hls-alternate-number-format-plugin ^>= 1.3
cpp-options: -Dhls_alternateNumberFormat
common qualifyImportedNames
if flag(qualifyImportedNames)
build-depends: hls-qualify-imported-names-plugin ^>=1.0
cpp-options: -Dhls_qualifyImportedNames
common codeRange
if flag(codeRange)
build-depends: hls-code-range-plugin ^>= 1.1
cpp-options: -Dhls_codeRange
common changeTypeSignature
if flag(changeTypeSignature)
build-depends: hls-change-type-signature-plugin ^>= 1.1
cpp-options: -Dhls_changeTypeSignature
common gadt
if flag(gadt)
build-depends: hls-gadt-plugin ^>= 1.0
cpp-options: -Dhls_gadt
common explicitFixity
if flag(explicitFixity)
build-depends: hls-explicit-fixity-plugin ^>= 1.1
cpp-options: -DexplicitFixity
common explicitFields
if flag(explicitFields)
build-depends: hls-explicit-record-fields-plugin ^>= 1.0
cpp-options: -DexplicitFields
-- formatters
common floskell
if flag(floskell) && impl(ghc < 9.5)
build-depends: hls-floskell-plugin ^>= 1.0
cpp-options: -Dhls_floskell
common fourmolu
if flag(fourmolu) && impl(ghc < 9.5)
build-depends: hls-fourmolu-plugin ^>= 1.1
cpp-options: -Dhls_fourmolu
common ormolu
if flag(ormolu) && impl(ghc < 9.5)
build-depends: hls-ormolu-plugin ^>= 1.0
cpp-options: -Dhls_ormolu
common stylishHaskell
if flag(stylishHaskell) && impl(ghc < 9.5)
build-depends: hls-stylish-haskell-plugin ^>= 1.0
cpp-options: -Dhls_stylishHaskell
common refactor
if flag(refactor)
build-depends: hls-refactor-plugin ^>= 1.1
cpp-options: -Dhls_refactor
library
import: common-deps
-- configuration
, warnings
, pedantic
-- plugins
, cabal
, callHierarchy
, cabalfmt
, changeTypeSignature
, class
, haddockComments
, eval
, importLens
, refineImports
, rename
, retrie
, tactic
, hlint
, stan
, moduleName
, pragmas
, splice
, alternateNumberFormat
, qualifyImportedNames
, codeRange
, gadt
, explicitFixity
, explicitFields
, floskell
, fourmolu
, ormolu
, stylishHaskell
, refactor
exposed-modules:
Ide.Arguments
Ide.Main
Ide.Version
HlsPlugins
other-modules: Paths_haskell_language_server
autogen-modules: Paths_haskell_language_server
hs-source-dirs: src
build-depends:
, async
, base16-bytestring
, bytestring
, containers
, cryptohash-sha1
, data-default
, ghc
, ghcide ==1.9.1.0
, githash >=0.1.6.1
, lsp
, hie-bios
, hiedb
, hls-plugin-api ^>=1.6
, optparse-applicative
, optparse-simple
, process
, hls-graph
, safe-exceptions
, sqlite-simple
, unordered-containers
, aeson-pretty
default-language: Haskell2010
default-extensions: DataKinds, TypeOperators
executable haskell-language-server
import: common-deps
-- configuration
, warnings
, pedantic
main-is: Main.hs
hs-source-dirs: exe
ghc-options:
-threaded
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- increase nursery size
-- Enable collection of heap statistics
"-with-rtsopts=-I0 -A128M -T"
-Wno-unticked-promoted-constructors
if flag(pedantic)
ghc-options: -Werror
if !os(windows) && flag(dynamic)
-- We want to link against the dyn rts just like official GHC binaries do;
-- the linked rts determines how external libs are loaded dynamically by TH.
-- The standard way of doing this is via the --enable-dynamic-executables Cabal option
-- Unfortunately it doesnt' work, see https://github.com/haskell/haskell-language-server/issues/2659
-- One can use --ghc-options=-dynamic but this gets applied to the dependencies as well,
-- which results in massive rebuilds and incompatibilities with profiling.
-- So instead we set the -dynamic flag diretly here.
ghc-options: -dynamic
build-depends:
, aeson
, async
, base16-bytestring
, binary
, bytestring
, containers
, cryptohash-sha1
, deepseq
, ghc
, ghc-boot-th
, ghcide
, hashable
, haskell-language-server
, lsp
, hie-bios
, hiedb
, lens
, regex-tdfa
, optparse-applicative
, hls-plugin-api
, lens
, mtl
, regex-tdfa
, safe-exceptions
, hls-graph
, sqlite-simple
, stm
, temporary
, transformers
, unordered-containers
default-language: Haskell2010
default-extensions: DataKinds, TypeOperators
executable haskell-language-server-wrapper
import: common-deps
, warnings
, pedantic
main-is: Wrapper.hs
hs-source-dirs: exe
other-modules: Paths_haskell_language_server
autogen-modules: Paths_haskell_language_server
ghc-options:
-threaded
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- increase nursery size
"-with-rtsopts=-I0 -A128M"
build-depends:
, data-default
, ghc
, ghc-paths
, ghcide
, gitrev
, haskell-language-server
, hie-bios
, hls-plugin-api
, lsp
, lsp-types
, mtl
, optparse-applicative
, optparse-simple
, process
, transformers
, unliftio-core
if !os(windows)
build-depends:
unix
, containers
default-language: Haskell2010
test-suite func-test
import: common-deps
, warnings
, pedantic
, refactor
type: exitcode-stdio-1.0
default-language: Haskell2010
build-tool-depends:
haskell-language-server:haskell-language-server -any,
ghcide:ghcide-test-preprocessor -any
build-depends:
, bytestring
, data-default
, deepseq
, hashable
, hspec-expectations
, lens
, lens-aeson
, ghcide
, ghcide-test-utils
, hls-test-utils ^>=1.5
, lsp-types
, aeson
, hls-plugin-api
, lsp-test
, containers
, unordered-containers
hs-source-dirs: test/functional test/utils
main-is: Main.hs
other-modules:
Command
Completion
Config
Deferred
Definition
Diagnostic
Format
FunctionalBadProject
FunctionalCodeAction
HieBios
Highlight
Progress
Reference
Symbol
TypeDefinition
Test.Hls.Command
Test.Hls.Flags
default-extensions: OverloadedStrings
ghc-options:
-threaded -rtsopts -with-rtsopts=-N
-- Duplicating inclusion plugin conditions until tests are moved to their own packages
if flag(eval)
cpp-options: -Dhls_eval
-- formatters
if flag(floskell) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
cpp-options: -Dhls_floskell
if flag(fourmolu)
cpp-options: -Dhls_fourmolu
if flag(ormolu)
cpp-options: -Dhls_ormolu
test-suite wrapper-test
import: common-deps
, warnings
, pedantic
type: exitcode-stdio-1.0
build-tool-depends:
haskell-language-server:haskell-language-server-wrapper -any,
haskell-language-server:haskell-language-server -any
default-language: Haskell2010
build-depends:
process
, hls-test-utils
hs-source-dirs: test/wrapper
main-is: Main.hs
benchmark benchmark
type: exitcode-stdio-1.0
default-language: Haskell2010
ghc-options: -Wall -Wno-name-shadowing -threaded
main-is: Main.hs
hs-source-dirs: bench
build-tool-depends:
ghcide-bench:ghcide-bench,
hp2pretty:hp2pretty,
implicit-hie:gen-hie
default-extensions:
BangPatterns
DeriveFunctor
DeriveGeneric
FlexibleContexts
GeneralizedNewtypeDeriving
LambdaCase
NamedFieldPuns
RecordWildCards
ScopedTypeVariables
StandaloneDeriving
TupleSections
TypeApplications
ViewPatterns
build-depends:
aeson,
base == 4.*,
containers,
data-default,
directory,
extra,
filepath,
ghcide-bench,
haskell-language-server,
hls-plugin-api,
lens,
lens-aeson,
optparse-applicative,
shake,
shake-bench == 0.2.*,
text,
yaml