haskell-language-server/haskell-language-server.cabal

305 lines
8.0 KiB
Plaintext
Raw Normal View History

2020-04-18 23:50:31 +03:00
cabal-version: 2.2
2020-01-25 17:36:33 +03:00
category: Development
name: haskell-language-server
2020-07-23 18:37:18 +03:00
version: 0.2.2.0
2020-01-25 17:36:33 +03:00
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
2020-01-25 17:33:53 +03:00
author: Alan Zimmerman
maintainer: alan.zimm@gmail.com
copyright: Alan Zimmerman
license: Apache-2.0
license-file: LICENSE
build-type: Simple
extra-source-files:
README.md
ChangeLog.md
2020-08-01 18:18:53 +03:00
include/ghc-api-version.h
2020-01-25 17:33:53 +03:00
2020-04-18 23:50:31 +03:00
flag agpl
Description: Enable AGPL dependencies
Default: True
2020-07-29 10:50:25 +03:00
Manual: True
2020-04-18 23:50:31 +03:00
flag pedantic
Description: Enable -Werror
Default: False
Manual: True
2020-01-25 17:33:53 +03:00
source-repository head
type: git
location: https://github.com/haskell/haskell-language-server
2020-01-25 17:33:53 +03:00
2020-04-18 23:50:31 +03:00
common agpl
if flag(agpl)
cpp-options:
-DAGPL
2020-01-25 17:33:53 +03:00
library
2020-04-18 23:50:31 +03:00
import: agpl
2020-01-25 17:33:53 +03:00
exposed-modules:
Ide.Logger
Ide.Plugin
Ide.Plugin.Config
2020-07-09 22:17:55 +03:00
Ide.Plugin.Eval
Ide.Plugin.Example
Ide.Plugin.Example2
2020-08-01 03:06:55 +03:00
Ide.Plugin.Fourmolu
Ide.Plugin.GhcIde
Ide.Plugin.Ormolu
Ide.Plugin.Pragmas
Ide.Plugin.Retrie
Ide.Plugin.Floskell
Ide.Plugin.Formatter
Ide.Plugin.StylishHaskell
Ide.PluginUtils
Ide.Types
Ide.Version
2020-01-25 17:33:53 +03:00
other-modules:
Paths_haskell_language_server
2020-01-25 17:33:53 +03:00
hs-source-dirs:
src
build-depends:
base >=4.12 && <5
, aeson
, binary
, bytestring
, containers
, data-default
, deepseq
, Diff
, directory
, extra
, filepath
, floskell == 0.10.*
2020-08-01 03:06:55 +03:00
, fourmolu ^>= 0.1
, ghc
, ghc-boot-th
, ghcide >= 0.1
, gitrev
, hashable
2020-05-05 20:53:57 +03:00
, haskell-lsp == 0.22.*
2020-07-12 21:47:27 +03:00
, hie-bios ^>= 0.6.1
, hslogger
, lens
2020-07-07 01:58:52 +03:00
, ormolu ^>= 0.1.2
, optparse-simple
, process
, regex-tdfa >= 1.3.1.0
, retrie >= 0.1.1.0
, safe-exceptions
, shake >= 0.17.5
, stylish-haskell == 0.11.*
2020-07-11 15:07:47 +03:00
, temporary
, text
2020-07-09 22:17:55 +03:00
, time
, transformers
, unordered-containers
2020-08-01 18:18:53 +03:00
include-dirs:
include
2020-03-15 16:46:29 +03:00
if os(windows)
build-depends: Win32
else
build-depends: unix
2020-04-18 23:50:31 +03:00
if flag(agpl)
if impl(ghc < 8.10)
build-depends:
brittany
exposed-modules:
Ide.Plugin.Brittany
2020-04-18 23:50:31 +03:00
ghc-options:
-Wall
-Wredundant-constraints
-Wno-name-shadowing
if flag(pedantic)
ghc-options: -Werror
2020-01-25 17:33:53 +03:00
default-language: Haskell2010
executable haskell-language-server
2020-04-18 23:50:31 +03:00
import: agpl
2020-01-25 17:33:53 +03:00
main-is: Main.hs
hs-source-dirs:
exe
other-modules:
Arguments
Paths_haskell_language_server
autogen-modules:
Paths_haskell_language_server
ghc-options:
-threaded
-Wall
-Wno-name-shadowing
-Wredundant-constraints
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- disable parallel GC
-- increase nursery size
"-with-rtsopts=-I0 -qg -A128M"
if flag(pedantic)
ghc-options: -Werror
2020-01-25 17:33:53 +03:00
build-depends:
base >=4.7 && <5
, binary
, containers
, data-default
, directory
, extra
, filepath
Distributable binaries (#165) Update ghcide to obtain the GHC lib dir at runtime, rather than at compile time with ghc-paths. This means that the binaries can be moved about since the lib dir is obtained on the fly Share the exe/main.hs logic between ghcide and hls: the session setup logic which previously took up most of exe/main.hs now resides inside the ghcide library, and is used by both ghcide and hls's executables Add a --project-ghc-version option to the wrapper which spits out the project's ghc version to stdout. This is useful for the vscode extension which can then use it to download the corresponding version of binary that the wrapper would have otherwise attempted to launch Make the wrapper check to see if the correct tool is installed beforehand. For example, if it detects a stack project but stack isn't on the path, it will report an error then and there, rather than having hls/ghcide confusingly fail later on. The vscode extension uses this new error message as well to provide a pop up message linking the user to a website to install the missing tool Remove cabal-helper from the wrapper, so that the implicit cradle logic is the same between ghcide/hls/hls-wrapper And of course, add a GitHub action workflow that runs whenever a release is created on GitHub that builds static binaries on Linux, and distributable enough binaries on macOS and windows. This is documented a bit more in docs/releases.md * WIP * WIP 2 * WIP 3 * WIP 4 * WIP 5 * WIP 6 * WIP 7 * WIP 8 * WIP 9 Use patched hie-bios to get libdir dynamically * Try building the wrapper * Try to fix build_wrapper env variable not being picked up * Try again * Give up on the env var idea * Try out static optimised builds? * Try squashing the working dir * Woops * Try squashing the builddir * Try going into the parent directory * Radical approach - don't use such a long name for the wrapper * Use dist-binary flag * Debug why floskell fails to build on windows * haskell-language-server => hls on CI I hate that I have to do this * Employ extreme path saving measures * sed time :( * Try making sed command portable * Compress artefacts * Tidy up wrapper logging * Use version checking logic in hie-bios * Add documentation on the releases process * Remove unused code * Append .exe to windows binaries * Try out building remaining supported ghc configurations * Add wrapper tests and update hie-bios * Use index timestamp that exists on hackage Fixes warning * Update hie-bios * Update hie-bios * Try building windows jobs on -j1 * Skip windows 8.8.2 * Update ghc-check to use hie-bios runtime ghc libdir * Upload binaries as an artifact too * Try flicking on enable-executable-static I don't expect this to work, puffnfresh has already tried this and had to fork ghcup * Fix artifact upload * Update to latest ghcide and reuse loadSession * Check if the tool is installed in --project-ghc-version in the wrapper * Fix wrapper tests by copying to temporary directory * Try caching * Tidy up and switch back to cabal helper implicit cradle * use split sections * Remove cabal-helper and replace it with hie-bios implicit logic The cabal-helper cradle was only used by the wrapper for detecting the project GHC version in the absence of an explicit hie.yaml file, whilst ghcide itself used the hie-bios implicit cradle logic. This brings the two in sync so the wrapper should behave more predictably now. * Undo agpl common stanza change * Add release number Co-authored-by: amesgen <amesgen@amesgen.de>
2020-07-20 22:28:52 +03:00
, process
, ghc
2020-02-07 01:17:15 +03:00
--------------------------------------------------------------
, ghcide
, gitrev
, hashable
, haskell-lsp
Distributable binaries (#165) Update ghcide to obtain the GHC lib dir at runtime, rather than at compile time with ghc-paths. This means that the binaries can be moved about since the lib dir is obtained on the fly Share the exe/main.hs logic between ghcide and hls: the session setup logic which previously took up most of exe/main.hs now resides inside the ghcide library, and is used by both ghcide and hls's executables Add a --project-ghc-version option to the wrapper which spits out the project's ghc version to stdout. This is useful for the vscode extension which can then use it to download the corresponding version of binary that the wrapper would have otherwise attempted to launch Make the wrapper check to see if the correct tool is installed beforehand. For example, if it detects a stack project but stack isn't on the path, it will report an error then and there, rather than having hls/ghcide confusingly fail later on. The vscode extension uses this new error message as well to provide a pop up message linking the user to a website to install the missing tool Remove cabal-helper from the wrapper, so that the implicit cradle logic is the same between ghcide/hls/hls-wrapper And of course, add a GitHub action workflow that runs whenever a release is created on GitHub that builds static binaries on Linux, and distributable enough binaries on macOS and windows. This is documented a bit more in docs/releases.md * WIP * WIP 2 * WIP 3 * WIP 4 * WIP 5 * WIP 6 * WIP 7 * WIP 8 * WIP 9 Use patched hie-bios to get libdir dynamically * Try building the wrapper * Try to fix build_wrapper env variable not being picked up * Try again * Give up on the env var idea * Try out static optimised builds? * Try squashing the working dir * Woops * Try squashing the builddir * Try going into the parent directory * Radical approach - don't use such a long name for the wrapper * Use dist-binary flag * Debug why floskell fails to build on windows * haskell-language-server => hls on CI I hate that I have to do this * Employ extreme path saving measures * sed time :( * Try making sed command portable * Compress artefacts * Tidy up wrapper logging * Use version checking logic in hie-bios * Add documentation on the releases process * Remove unused code * Append .exe to windows binaries * Try out building remaining supported ghc configurations * Add wrapper tests and update hie-bios * Use index timestamp that exists on hackage Fixes warning * Update hie-bios * Update hie-bios * Try building windows jobs on -j1 * Skip windows 8.8.2 * Update ghc-check to use hie-bios runtime ghc libdir * Upload binaries as an artifact too * Try flicking on enable-executable-static I don't expect this to work, puffnfresh has already tried this and had to fork ghcup * Fix artifact upload * Update to latest ghcide and reuse loadSession * Check if the tool is installed in --project-ghc-version in the wrapper * Fix wrapper tests by copying to temporary directory * Try caching * Tidy up and switch back to cabal helper implicit cradle * use split sections * Remove cabal-helper and replace it with hie-bios implicit logic The cabal-helper cradle was only used by the wrapper for detecting the project GHC version in the absence of an explicit hie.yaml file, whilst ghcide itself used the hie-bios implicit cradle logic. This brings the two in sync so the wrapper should behave more predictably now. * Undo agpl common stanza change * Add release number Co-authored-by: amesgen <amesgen@amesgen.de>
2020-07-20 22:28:52 +03:00
, hie-bios
, haskell-language-server
, hslogger
, optparse-applicative
2020-06-13 20:16:03 +03:00
, safe-exceptions
, shake >= 0.17.5
, text
, time
2020-02-14 02:19:29 +03:00
, unordered-containers
2020-01-25 17:33:53 +03:00
default-language: Haskell2010
executable haskell-language-server-wrapper
2020-04-18 23:50:31 +03:00
import: agpl
main-is: Wrapper.hs
hs-source-dirs:
exe
other-modules:
Arguments
Paths_haskell_language_server
autogen-modules:
Paths_haskell_language_server
ghc-options:
-threaded
-Wall
-Wno-name-shadowing
-Wredundant-constraints
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- disable parallel GC
-- increase nursery size
"-with-rtsopts=-I0 -qg -A128M"
if flag(pedantic)
ghc-options: -Werror
build-depends:
base
, directory
, extra
, filepath
, gitrev
, ghc
, ghc-paths
, hie-bios
, haskell-language-server
, optparse-applicative
, process
default-language: Haskell2010
-- This common stanza simulates a previous private lib
-- We removed it due to issues with stack when loading the project using a stack based hie.yaml
-- See https://github.com/haskell/haskell-language-server/issues/114
2020-05-27 00:15:30 +03:00
common hls-test-utils
import: agpl
hs-source-dirs: test/utils
other-modules: Test.Hls.Util
build-depends: base
, haskell-language-server
, haskell-lsp
, hie-bios
, aeson
, blaze-markup
, containers
, data-default
, directory
, filepath
, hslogger
, hspec
, hspec-core
, lsp-test >= 0.11.0.3
2020-05-27 00:15:30 +03:00
, stm
, tasty-hunit
Distributable binaries (#165) Update ghcide to obtain the GHC lib dir at runtime, rather than at compile time with ghc-paths. This means that the binaries can be moved about since the lib dir is obtained on the fly Share the exe/main.hs logic between ghcide and hls: the session setup logic which previously took up most of exe/main.hs now resides inside the ghcide library, and is used by both ghcide and hls's executables Add a --project-ghc-version option to the wrapper which spits out the project's ghc version to stdout. This is useful for the vscode extension which can then use it to download the corresponding version of binary that the wrapper would have otherwise attempted to launch Make the wrapper check to see if the correct tool is installed beforehand. For example, if it detects a stack project but stack isn't on the path, it will report an error then and there, rather than having hls/ghcide confusingly fail later on. The vscode extension uses this new error message as well to provide a pop up message linking the user to a website to install the missing tool Remove cabal-helper from the wrapper, so that the implicit cradle logic is the same between ghcide/hls/hls-wrapper And of course, add a GitHub action workflow that runs whenever a release is created on GitHub that builds static binaries on Linux, and distributable enough binaries on macOS and windows. This is documented a bit more in docs/releases.md * WIP * WIP 2 * WIP 3 * WIP 4 * WIP 5 * WIP 6 * WIP 7 * WIP 8 * WIP 9 Use patched hie-bios to get libdir dynamically * Try building the wrapper * Try to fix build_wrapper env variable not being picked up * Try again * Give up on the env var idea * Try out static optimised builds? * Try squashing the working dir * Woops * Try squashing the builddir * Try going into the parent directory * Radical approach - don't use such a long name for the wrapper * Use dist-binary flag * Debug why floskell fails to build on windows * haskell-language-server => hls on CI I hate that I have to do this * Employ extreme path saving measures * sed time :( * Try making sed command portable * Compress artefacts * Tidy up wrapper logging * Use version checking logic in hie-bios * Add documentation on the releases process * Remove unused code * Append .exe to windows binaries * Try out building remaining supported ghc configurations * Add wrapper tests and update hie-bios * Use index timestamp that exists on hackage Fixes warning * Update hie-bios * Update hie-bios * Try building windows jobs on -j1 * Skip windows 8.8.2 * Update ghc-check to use hie-bios runtime ghc libdir * Upload binaries as an artifact too * Try flicking on enable-executable-static I don't expect this to work, puffnfresh has already tried this and had to fork ghcup * Fix artifact upload * Update to latest ghcide and reuse loadSession * Check if the tool is installed in --project-ghc-version in the wrapper * Fix wrapper tests by copying to temporary directory * Try caching * Tidy up and switch back to cabal helper implicit cradle * use split sections * Remove cabal-helper and replace it with hie-bios implicit logic The cabal-helper cradle was only used by the wrapper for detecting the project GHC version in the absence of an explicit hie.yaml file, whilst ghcide itself used the hie-bios implicit cradle logic. This brings the two in sync so the wrapper should behave more predictably now. * Undo agpl common stanza change * Add release number Co-authored-by: amesgen <amesgen@amesgen.de>
2020-07-20 22:28:52 +03:00
, temporary
2020-05-27 00:15:30 +03:00
, text
Distributable binaries (#165) Update ghcide to obtain the GHC lib dir at runtime, rather than at compile time with ghc-paths. This means that the binaries can be moved about since the lib dir is obtained on the fly Share the exe/main.hs logic between ghcide and hls: the session setup logic which previously took up most of exe/main.hs now resides inside the ghcide library, and is used by both ghcide and hls's executables Add a --project-ghc-version option to the wrapper which spits out the project's ghc version to stdout. This is useful for the vscode extension which can then use it to download the corresponding version of binary that the wrapper would have otherwise attempted to launch Make the wrapper check to see if the correct tool is installed beforehand. For example, if it detects a stack project but stack isn't on the path, it will report an error then and there, rather than having hls/ghcide confusingly fail later on. The vscode extension uses this new error message as well to provide a pop up message linking the user to a website to install the missing tool Remove cabal-helper from the wrapper, so that the implicit cradle logic is the same between ghcide/hls/hls-wrapper And of course, add a GitHub action workflow that runs whenever a release is created on GitHub that builds static binaries on Linux, and distributable enough binaries on macOS and windows. This is documented a bit more in docs/releases.md * WIP * WIP 2 * WIP 3 * WIP 4 * WIP 5 * WIP 6 * WIP 7 * WIP 8 * WIP 9 Use patched hie-bios to get libdir dynamically * Try building the wrapper * Try to fix build_wrapper env variable not being picked up * Try again * Give up on the env var idea * Try out static optimised builds? * Try squashing the working dir * Woops * Try squashing the builddir * Try going into the parent directory * Radical approach - don't use such a long name for the wrapper * Use dist-binary flag * Debug why floskell fails to build on windows * haskell-language-server => hls on CI I hate that I have to do this * Employ extreme path saving measures * sed time :( * Try making sed command portable * Compress artefacts * Tidy up wrapper logging * Use version checking logic in hie-bios * Add documentation on the releases process * Remove unused code * Append .exe to windows binaries * Try out building remaining supported ghc configurations * Add wrapper tests and update hie-bios * Use index timestamp that exists on hackage Fixes warning * Update hie-bios * Update hie-bios * Try building windows jobs on -j1 * Skip windows 8.8.2 * Update ghc-check to use hie-bios runtime ghc libdir * Upload binaries as an artifact too * Try flicking on enable-executable-static I don't expect this to work, puffnfresh has already tried this and had to fork ghcup * Fix artifact upload * Update to latest ghcide and reuse loadSession * Check if the tool is installed in --project-ghc-version in the wrapper * Fix wrapper tests by copying to temporary directory * Try caching * Tidy up and switch back to cabal helper implicit cradle * use split sections * Remove cabal-helper and replace it with hie-bios implicit logic The cabal-helper cradle was only used by the wrapper for detecting the project GHC version in the absence of an explicit hie.yaml file, whilst ghcide itself used the hie-bios implicit cradle logic. This brings the two in sync so the wrapper should behave more predictably now. * Undo agpl common stanza change * Add release number Co-authored-by: amesgen <amesgen@amesgen.de>
2020-07-20 22:28:52 +03:00
, transformers
2020-05-27 00:15:30 +03:00
, unordered-containers
, yaml
ghc-options: -Wall -Wredundant-constraints
if flag(pedantic)
ghc-options: -Werror
default-language: Haskell2010
test-suite func-test
2020-05-27 00:15:30 +03:00
import: agpl, hls-test-utils
2020-05-10 02:50:19 +03:00
type: exitcode-stdio-1.0
default-language: Haskell2010
build-tool-depends: haskell-language-server:haskell-language-server
, ghcide:ghcide-test-preprocessor
build-depends: base >=4.7 && <5
, aeson
, bytestring
2020-05-10 02:50:19 +03:00
, data-default
, directory
, filepath
2020-05-10 04:51:05 +03:00
, haskell-language-server
, haskell-lsp
2020-05-10 02:50:19 +03:00
, haskell-lsp-types
, lens
, lsp-test >= 0.11.0.3
2020-05-10 02:50:19 +03:00
, tasty
2020-05-19 17:34:28 +03:00
, tasty-ant-xml >= 1.1.6
2020-05-17 05:19:49 +03:00
, tasty-expected-failure
, tasty-golden
2020-05-10 02:50:19 +03:00
, tasty-hunit
2020-05-11 04:45:50 +03:00
, tasty-rerun
2020-05-10 02:50:19 +03:00
, text
, unordered-containers
hs-source-dirs: test/functional
main-is: Main.hs
other-modules: Command
, Completion
, Deferred
2020-05-10 04:03:10 +03:00
, Definition
2020-05-10 04:51:05 +03:00
, Diagnostic
2020-07-11 15:08:12 +03:00
, Eval
2020-05-10 05:12:59 +03:00
, Format
2020-05-10 21:57:34 +03:00
, FunctionalBadProject
2020-05-10 06:19:30 +03:00
, FunctionalCodeAction
, FunctionalLiquid
, HieBios
, Highlight
2020-05-10 21:57:34 +03:00
, Progress
, Reference
, Rename
, Symbol
, TypeDefinition
2020-05-10 02:50:19 +03:00
ghc-options: -Wall
-Wno-name-shadowing
-threaded -rtsopts -with-rtsopts=-N
2020-05-04 05:02:01 +03:00
if flag(pedantic)
ghc-options: -Werror -Wredundant-constraints
Distributable binaries (#165) Update ghcide to obtain the GHC lib dir at runtime, rather than at compile time with ghc-paths. This means that the binaries can be moved about since the lib dir is obtained on the fly Share the exe/main.hs logic between ghcide and hls: the session setup logic which previously took up most of exe/main.hs now resides inside the ghcide library, and is used by both ghcide and hls's executables Add a --project-ghc-version option to the wrapper which spits out the project's ghc version to stdout. This is useful for the vscode extension which can then use it to download the corresponding version of binary that the wrapper would have otherwise attempted to launch Make the wrapper check to see if the correct tool is installed beforehand. For example, if it detects a stack project but stack isn't on the path, it will report an error then and there, rather than having hls/ghcide confusingly fail later on. The vscode extension uses this new error message as well to provide a pop up message linking the user to a website to install the missing tool Remove cabal-helper from the wrapper, so that the implicit cradle logic is the same between ghcide/hls/hls-wrapper And of course, add a GitHub action workflow that runs whenever a release is created on GitHub that builds static binaries on Linux, and distributable enough binaries on macOS and windows. This is documented a bit more in docs/releases.md * WIP * WIP 2 * WIP 3 * WIP 4 * WIP 5 * WIP 6 * WIP 7 * WIP 8 * WIP 9 Use patched hie-bios to get libdir dynamically * Try building the wrapper * Try to fix build_wrapper env variable not being picked up * Try again * Give up on the env var idea * Try out static optimised builds? * Try squashing the working dir * Woops * Try squashing the builddir * Try going into the parent directory * Radical approach - don't use such a long name for the wrapper * Use dist-binary flag * Debug why floskell fails to build on windows * haskell-language-server => hls on CI I hate that I have to do this * Employ extreme path saving measures * sed time :( * Try making sed command portable * Compress artefacts * Tidy up wrapper logging * Use version checking logic in hie-bios * Add documentation on the releases process * Remove unused code * Append .exe to windows binaries * Try out building remaining supported ghc configurations * Add wrapper tests and update hie-bios * Use index timestamp that exists on hackage Fixes warning * Update hie-bios * Update hie-bios * Try building windows jobs on -j1 * Skip windows 8.8.2 * Update ghc-check to use hie-bios runtime ghc libdir * Upload binaries as an artifact too * Try flicking on enable-executable-static I don't expect this to work, puffnfresh has already tried this and had to fork ghcup * Fix artifact upload * Update to latest ghcide and reuse loadSession * Check if the tool is installed in --project-ghc-version in the wrapper * Fix wrapper tests by copying to temporary directory * Try caching * Tidy up and switch back to cabal helper implicit cradle * use split sections * Remove cabal-helper and replace it with hie-bios implicit logic The cabal-helper cradle was only used by the wrapper for detecting the project GHC version in the absence of an explicit hie.yaml file, whilst ghcide itself used the hie-bios implicit cradle logic. This brings the two in sync so the wrapper should behave more predictably now. * Undo agpl common stanza change * Add release number Co-authored-by: amesgen <amesgen@amesgen.de>
2020-07-20 22:28:52 +03:00
test-suite wrapper-test
import: agpl, hls-test-utils
type: exitcode-stdio-1.0
build-tool-depends: haskell-language-server:haskell-language-server-wrapper
default-language: Haskell2010
build-depends: base == 4.*
, directory
, process
, tasty
, tasty-hunit
, tasty-ant-xml >= 1.1.6
hs-source-dirs: test/wrapper
main-is: Main.hs
ghc-options: -Wall