haskell / haskell-language-server

Official haskell ide support via language server (LSP). Successor of ghcide & haskell-ide-engine.
Apache License 2.0
2.71k stars 368 forks source link

Thread-local variable relocation issue on FreeBSD 12 #1482

Closed vdukhovni closed 2 years ago

vdukhovni commented 3 years ago

Your environment

Output of haskell-language-server --probe-tools or haskell-language-server-wrapper --probe-tools:

haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: ~/.cabal/store/ghc-8.10.4/haskell-language-server-1.0.0.0-e-haskell-language-server-1ccb8054dd41eefabc36fc46bada60160310e94370c7d465c71fa14b80cc4b92/bin/haskell-language-server)
Tool versions found on the $PATH
cabal:          3.5.0.0
stack:          2.1.3
ghc:            8.10.4

Which lsp-client do you use: vim Describe your project (alternative: link to the project): Small Cabal project using PCRE (direct cause of relocation issue) Contents of hie.yaml:

cradle:
  cabal:
      component: "exe:czds-sync"

Steps to reproduce

Just run HLS in project directory.

It first reports an error that appears to be non-fatal:

  Internal error, getIdeGlobalExtras, no entry for IdeConfigurationVar
  CallStack (from HasCallStack):
  errorIO, called at src/Development/IDE/Core/Shake.hs:286:20 in
  ghcide-1.0.0.0-73fbb4e8db1411321cea492eaa813d0d38f3b2388b5ffc2e3ec444c88d8af480:Development.IDE.Core.Shake

but ultimately fails with:

haskell-language-server: internal error: ~/.cabal/store/ghc-8.10.4/regex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33/lib/libHSregex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33.a: unhandled ELF relocation(RelA) type 19

    (GHC version 8.10.4 for x86_64_portbld_freebsd)
    Please report this as a GHC bug:  https://www.haskell.org/ghc/reportabug
Abort trap

This is because on FreeBSD the ".a" file contains objects with symbols that require R_X86_64_TLSGD(19) relocation type, which is not handled by GHC's RTS linker.

Expected behaviour

Load the regex-pcre-builtin without relocation errors. Note that in the same directory as the problem ".a" file is also a ".so" shared object for the same library, and it would not run into the same relocation issue (contains to symbols requiring unsupported relocation types):

$ ls ~/.cabal/store/ghc-8.10.4/regex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33/lib/
Paths_regex_pcre_builtin.dyn_hi
Paths_regex_pcre_builtin.hi
Text
libHSregex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33-ghc8.10.4.so
libHSregex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33.a

It is not obvious why HLS is loading the ".a" and not the ".so" (perhaps there's a good reason).

Include debug information

Execute in the root of your project the command haskell-language-server --debug . and paste the logs here:

Debug output: ``` $ haskell-language-server --debug haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: ~/.cabal/store/ghc-8.10.4/haskell-language-server-1.0.0.0-e-haskell-language-server-1ccb8054dd41eefabc36fc46bada60160310e94370c7d465c71fa14b80cc4b92/bin/haskell-language-server) ghcide setup tester in ~/dev/czds. Report bugs at https://github.com/haskell/haskell-language-server/issues Step 1/4: Finding files to test in ~/dev/czds Found 6 files Step 2/4: Looking for hie.yaml files that control setup Found 1 cradle (~/dev/czds/hie.yaml) Step 3/4: Initializing the IDE Step 4/4: Type checking the files 2021-03-03 01:15:29.139896678 [ThreadId 4] DEBUG hls: Set files of interest to: [(NormalizedFilePath "~/dev/czds/Opts.hs",OnDisk),(NormalizedFilePath "~/dev/czds/Constants.hs",OnDisk),(NormalizedFilePath "~/dev/czds/Task.hs",OnDisk),(NormalizedFilePath "~/dev/czds/BoundedLines.hs",OnDisk),(NormalizedFilePath "~/dev/czds/Types.hs",OnDisk),(NormalizedFilePath "~/dev/czds/Main.hs",OnDisk)] 2021-03-03 01:15:29.145060197 [ThreadId 29] INFO hls: File: Hidden: no Range: 1:1-2:1 Source: compiler Severity: DsError Message: Internal error, getIdeGlobalExtras, no entry for IdeConfigurationVar CallStack (from HasCallStack): errorIO, called at src/Development/IDE/Core/Shake.hs:286:20 in ghcide-1.0.0.0-73fbb4e8db1411321cea492eaa813d0d38f3b2388b5ffc2e3ec444c88d8af480:Development.IDE.Core.Shake 2021-03-03 01:15:29.148014343 [ThreadId 38] INFO hls: Consulting the cradle for "BoundedLines.hs" Output from setting up the cradle Cradle {cradleRootDir = "~/dev/czds", cradleOptsProg = CradleAction: Cabal} > Build profile: -w ghc-8.10.4 -O1 > In order, the following will be built (use -v for more details): > - czds-sync-0.1.0.0 (exe:czds-sync) (first run) > Preprocessing executable 'czds-sync' for czds-sync-0.1.0.0.. 2021-03-03 01:15:29.617016053 [ThreadId 38] DEBUG hls: Session loading result: Right (ComponentOptions {componentOptions = ["-fbuilding-cabal-package","-O0","-outputdir","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-odir","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-hidir","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-stubdir","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-i","-i~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-i.","-i~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/autogen","-i~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/global-autogen","-I~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/autogen","-I~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/global-autogen","-I~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/czds-sync-tmp","-optP-include","-optP~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/build/czds-sync/autogen/cabal_macros.h","-hide-all-packages","-Wmissing-home-modules","-no-user-package-db","-package-db","~/.cabal/store/ghc-8.10.4/package.db","-package-db","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/packagedb/ghc-8.10.4","-package-db","~/.cache/hie-bios/dist-czds-27173cfba5350883890f5f3355c1bc3f/build/x86_64-freebsd/ghc-8.10.4/czds-sync-0.1.0.0/x/czds-sync/package.conf.inplace","-package-id","aeson-1.5.6.0-ef4f9ad3f46269641858b5ec7da59175fc341eb2ee41e1485be7aadfdbfe159a","-package-id","base-4.14.1.0","-package-id","base-prelude-1.4-c276993236c1e798b91f6606d99f871c1f1ae79c9a56658692027299e49cc585","-package-id","bytestring-0.10.12.0","-package-id","case-insensitive-1.2.1.0-d68492cf1caf0f325f9ade62c30169414fbcc7118b0c3aee2cbd71d36e99f439","-package-id","conduit-1.3.4-8929b6a22c72b39621a16c1e404ed4bd9a72c79797917e68e7d936eccd9cbc67","-package-id","conduit-extra-1.3.5-0ab776c59ecd0187503f6a97ae0b7208159ed5c231ce1e42c0113650528c1290","-package-id","containers-0.6.4.1","-package-id","csv-conduit-0.7.2.0-56d3682d5d2ccd8dadfebd5a9cd854265a0c080bf3ef058d535041b17ef41988","-package-id","directory-1.3.6.0","-package-id","extra-1.7.9-c63a693dbc22faf462aeac146df0965540d4159524ee5397895070e34f72eacd","-package-id","http-conduit-2.3.8-5bf0ea5f4749e3f155d457305705041256efd6e766f1c19c4959c3341aa8080c","-package-id","http-types-0.12.3-7b3153d7a46d7a239d075681a6eaedfe779c52c70dece45d8ec3b618e934f640","-package-id","json-stream-0.4.2.4-8c6511eaf455341299847b32a1b402a7fcb3d69b48071db70e6816c9391cd894","-package-id","lifted-base-0.2.3.12-3ede491ba70f060390fef12d9a3c677ce18f77474b7bbf0854dcd01e704ee254","-package-id","monad-control-1.0.2.3-b95690c78ed643c4b9b972965febccf70eebb6285b366b8ae7a33c5cca33533e","-package-id","mtl-2.2.2","-package-id","optparse-applicative-0.16.1.0-eee378057b7539bcf75579d76e9f4ff170b047a9ccc498b6fe1ba5d2dfa9075a","-package-id","regex-with-pcre-1.1.0.0-22ab0614220f1411d0bcbffb991c1f6f1f4c82ef4a17acf931570f9f5796635d","-package-id","stm-2.5.0.0","-package-id","text-1.2.4.1","-package-id","time-1.9.3","-XHaskell2010","./Main.hs","BoundedLines","Constants","Opts","Task","Types","-Wall","-rtsopts","-hide-all-packages"], componentRoot = "~/dev/czds", componentDependencies = ["~/dev/czds/czds-sync.cabal","cabal.project","cabal.project.local"]},"~/.local/ghc-8.10/lib/ghc-8.10.4/lib") 2021-03-03 01:15:29.726404265 [ThreadId 38] INFO hls: Using interface files cache dir: ~/.cache/ghcide/main-63d8b9d8a1fa2307977aaeb5d467863a59cd7825 2021-03-03 01:15:29.726705585 [ThreadId 38] INFO hls: Making new HscEnv[main] 2021-03-03 01:15:29.746164968 [ThreadId 38] DEBUG hls: New Component Cache HscEnvEq: (([],Just HscEnvEq 56),fromList [("~/dev/czds/czds-sync.cabal",Just 2020-10-07 04:58:03.412536 UTC),("~/dev/czds/hie.yaml",Just 2021-02-28 08:41:17.20017 UTC),("cabal.project",Just 2021-02-28 08:44:40.456988 UTC),("cabal.project.local",Nothing)]) 2021-03-03 01:15:29.746764239 [ThreadId 38] DEBUG hls: Known files updated: fromList [(TargetFile NormalizedFilePath "~/dev/czds/Opts.hs",["~/dev/czds/Opts.hs"]),(TargetFile NormalizedFilePath "~/dev/czds/Main.hs",["~/dev/czds/Main.hs"]),(TargetFile NormalizedFilePath "~/dev/czds/Types.hs",["~/dev/czds/Types.hs"]),(TargetFile NormalizedFilePath "~/dev/czds/Task.hs",["~/dev/czds/Task.hs"]),(TargetFile NormalizedFilePath "~/dev/czds/Constants.hs",["~/dev/czds/Constants.hs"]),(TargetFile NormalizedFilePath "~/dev/czds/BoundedLines.hs",["~dev/czds/BoundedLines.hs"])] 2021-03-03 01:15:29.747217289 [ThreadId 18] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-03-03 01:15:29.747289666 [ThreadId 38] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) haskell-language-server: internal error: ~/.cabal/store/ghc-8.10.4/regex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33/lib/libHSregex-pcre-builtin-0.95.1.3.8.43-1fe18e9c318087ece8506e808805c038df19c84d965df956d80847e334423e33.a: unhandled ELF relocation(RelA) type 19 (GHC version 8.10.4 for x86_64_portbld_freebsd) Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug Abort trap ```
mpickering commented 3 years ago

You should try building a dynamic version of hls. I am not sure why this isn't the default given that it is the default for GHC.

pepeiborra commented 3 years ago

@mpickering how would you make it the default without subverting Cabal?

mpickering commented 3 years ago

I think adding executable-dynamic: True in the cabal.project is sufficient? https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-executable-dynamic

wz1000 commented 3 years ago

Could we still distribute static binaries then?

vdukhovni commented 3 years ago

Building it dynamic solves the problem:

$ haskell-language-server
haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: ~/.cabal/bin/haskell-language-server) (GIT hash: eff69a76caa81633f801f31dcc336703e7ae765c)
ghcide setup tester in ~/dev/czds.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Step 1/4: Finding files to test in ~/dev/czds
Found 6 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle
  (~/czds/hie.yaml)

Step 3/4: Initializing the IDE

Step 4/4: Type checking the files
2021-03-03 15:48:18.334249703 [ThreadId 37] INFO hls:   Consulting the cradle for "BoundedLines.hs"
2021-03-03 15:48:18.33341142 [ThreadId 34] INFO hls:    File:     
Hidden:   no
Range:    1:1-2:1
Source:   compiler
Severity: DsError
Message: 
  Internal error, getIdeGlobalExtras, no entry for IdeConfigurationVar
  CallStack (from HasCallStack):
  errorIO, called at src/Development/IDE/Core/Shake.hs:286:20 in
  ghcide-1.0.0.0-inplace:Development.IDE.Core.Shake
Output from setting up the cradle Cradle {cradleRootDir = "~/dev/czds", cradleOptsProg = CradleAction: Cabal}
> Build profile: -w ghc-8.10.4 -O1
> In order, the following will be built (use -v for more details):
>  - czds-sync-0.1.0.0 (exe:czds-sync) (first run)
> Preprocessing executable 'czds-sync' for czds-sync-0.1.0.0..
2021-03-03 15:48:18.833598166 [ThreadId 37] INFO hls:   Using interface files cache dir: ~/.cache/ghcide/main-63d8b9d8a1fa2307977aaeb5d467863a59cd7825
2021-03-03 15:48:18.83410091 [ThreadId 37] INFO hls:    Making new HscEnv[main]
2021-03-03 15:48:19.610935836 [ThreadId 399] INFO hls:  finish: User TypeCheck (took 0.76s)
2021-03-03 15:48:19.673001333 [ThreadId 412] INFO hls:  finish: GetHie (took 0.06s)

Completed (6 files worked, 0 files failed)
2021-03-03 15:48:19.673348698 [ThreadId 413] INFO hls:  finish: GenerateCore (took 0.00s)

But at the cost of an enormous library RPATH (via readelf -d):

0x000000000000000f RPATH                Library rpath: [~/.cabal/store/ghc-8.10.4/Diff-0.4.0-8b8207afccaf3564257dc6b6ab8fc2df9b7ad69c7cc875c4a5daae37109d1450/lib:~/.cabal/store/ghc-8.10.4/Glob-0.10.1-2279d70cec0baefb65457deb0a456fb8a85f72821b23df431cb312962562efc5/lib:~/.cabal/store/ghc-8.10.4/HsYAML-0.2.1.0-a399076c7d93537daf1c1af83f79413fe0aa992330adef6f8cae066613f10691/lib:~/.cabal/store/ghc-8.10.4/HsYAML-aeson-0.2.0.0-a2133f7a091868cf523b6683a0594f2c0da953f8b7ceeb3bf4e972c55ee90cf0/lib:~/.cabal/store/ghc-8.10.4/MonadRandom-0.5.2-de9f31f46d2f757ecb2cbed646dae4be887361a95fd79abc3b9ff6281ec730b7/lib:~/.cabal/store/ghc-8.10.4/Only-0.1-c26aa0176a934517815f88cd4e512eb12cc76064b669f45bbc257027804a9d3f/lib:~/.cabal/store/ghc-8.10.4/QuickCheck-2.14.2-ba3b19d50132531953f7cf54c6887dfb0c0b769751af8e71caa0dc4e14a1785d/lib:~/.cabal/store/ghc-8.10.4/StateVar-1.2.1-bf961c02c9ea00791cc8f5ca03006cf98cd7089d417e6e0d8bfc6558aaf7b216/lib:~/.cabal/store/ghc-8.10.4/adjunctions-4.4-42386dff0d32948cb67f3924e3badb0ed2b6552a7a55b2794654d4e3bf163a99/lib:~/.cabal/store/ghc-8.10.4/aeson-1.5.6.0-881ddd5890ae74723b17d04647b126244b7c95fbd4ca0afb6c538258c9d997f1/lib:~/.cabal/store/ghc-8.10.4/algebraic-graphs-0.5-c73b1f8aee598b28f57a3d5c60e2ecd4f56aff182f33a325a5754a9b78290841/lib:~/.cabal/store/ghc-8.10.4/ansi-terminal-0.10.3-00d281d2a6956909aee7ccd24df80f55b84d05bbced5ad7d6667e1bcde71bb8f/lib:~/.cabal/store/ghc-8.10.4/ansi-wl-pprint-0.6.9-ff52884089ad29bef2c885a6b54cb56ab10c1f7edb58200f70b8cf5bafc2c5ee/lib:~/.cabal/store/ghc-8.10.4/apply-refact-0.9.0.0-c59f5be2ef3847b2c34f8a3a07421c544377d3f1a3b45b5a89d708fa3b292af5/lib:~/.cabal/store/ghc-8.10.4/assoc-1.0.2-aad8513cd5ddd891b96e72ae82d8df78245f2486ad44833e527bb56abf8e3311/lib:~/.cabal/store/ghc-8.10.4/async-2.2.3-ce6ccea5973666a3efc90cdd6ccb68336d94ed58668a7a0f029e31996ef765cd/lib:~/.cabal/store/ghc-8.10.4/attoparsec-0.13.2.5-f83747fe0bc88a2588d77550242e321e2456071d5d3258f0084297f202c7d00f/lib:~/.cabal/store/ghc-8.10.4/base-compat-0.11.2-9fbf2806099b721bd7e47140d730ac0969fb7487da53f209fd47f17b4aacb538/lib:~/.cabal/store/ghc-8.10.4/base-compat-batteries-0.11.2-3ebcf47f0eb2a5e9b7026e566cf4acb33532561bae27bb1cde870187e5ff58d9/lib:~/.cabal/store/ghc-8.10.4/base-orphans-0.8.4-9c76afdda6df23f5fd8d982781d96123d2ceaedcf7c385b01cf9d28eec842091/lib:~/.cabal/store/ghc-8.10.4/base16-bytestring-0.1.1.7-df3ad3aa6998e88650eb06673861676efa3d62f54de3c164a90f252c4dd41fd4/lib:~/.cabal/store/ghc-8.10.4/bifunctors-5.5.10-a3878c2b696a82ff29f08d313b9811b2624f7460cfc5ca7038b785090345aea7/lib:~/.cabal/store/ghc-8.10.4/blaze-builder-0.4.2.1-9a2e989d53cec771c99e3ca67f8d221c7deaae0fdfb7f7ac8e05b4d00809107b/lib:~/.cabal/store/ghc-8.10.4/blaze-textual-0.2.1.0-eda41729ff05660c877ba11cfba8b5d899dc1307bc83b64b865fa07344f7c635/lib:~/.cabal/store/ghc-8.10.4/brittany-0.13.1.0-e36e009b7ade76cc7dec5ea4f5134095e463870760c0393b7fc3639a425f493d/lib:~/.cabal/store/ghc-8.10.4/butcher-1.3.3.2-854bb9502407a2b350ddabcf8630b6391ae75dc68d70d3ee733413983fe23f16/lib:~/.cabal/store/ghc-8.10.4/bytestring-encoding-0.1.0.0-dad7142737297924a5dcb31aa05a2ad57219bee058f39805c431a2adddeb34f9/lib:~/.cabal/store/ghc-8.10.4/call-stack-0.3.0-031d2f3d25f9f78ae3f05fe4f5fa5563c12997b3902710034a1736dfad3fa0d6/lib:~/.cabal/store/ghc-8.10.4/case-insensitive-1.2.1.0-f026ead166d17da245cedde84d545e6c34a538fcc41e905232e22737f1fc15d0/lib:~/.cabal/store/ghc-8.10.4/clock-0.8.2-dd92d268d9c621becc9f260a4c7cfbc45135d812ca76858c95cd56269c803bd4/lib:~/.cabal/store/ghc-8.10.4/cmdargs-0.10.21-9156ea3f260e96e297ad7d112214f7752efa655666f12353c2e09cab02916626/lib:~/.cabal/store/ghc-8.10.4/colour-2.3.5-7da78c057826a85ca256a87675349deadba7b76be4059eb2c64e5fe4fc541a1d/lib:~/.cabal/store/ghc-8.10.4/comonad-5.0.8-46cc78a54726378d60593654ee652d7444068c8f3d2931ff16cc9b0934cfe7ea/lib:~/.cabal/store/ghc-8.10.4/conduit-1.3.4-d66ebdc566acaa057017f6fca9efa3dad38cdb311bd22d030d2b342184b15315/lib:~/.cabal/store/ghc-8.10.4/conduit-extra-1.3.5-c67bd626b91b08ee8c19eda5ce8f93b89122bdfd99e753c5e29a51ef83cb434f/lib:~/.cabal/store/ghc-8.10.4/constraints-0.12-02c3b9e732b362d81d995f75604c0bc5088bdddfdc5f96bd4f86891b26c7c2c3/lib:~/.cabal/store/ghc-8.10.4/constraints-extras-0.3.0.2-740ec96af9458ca1f029e6a06c2eab3464db8ac31b2cfb12d91a6730318810dd/lib:~/.cabal/store/ghc-8.10.4/contravariant-1.5.3-6ae7771aea17b8a1def588268984dc00bb56e7dacd60f975d610e44881c198c9/lib:~/.cabal/store/ghc-8.10.4/cpphs-1.20.9.1-f93aadd1accf36c263471599de9609961108202dcfd01113ce5ceda1dbe0ec1e/lib:~/.cabal/store/ghc-8.10.4/cryptohash-md5-0.11.100.1-be6c219e67df50e5797288e4fa71dc117429b3925a8a404ab2baed6030cc4e1a/lib:~/.cabal/store/ghc-8.10.4/cryptohash-sha1-0.11.100.1-b6d64dbb30a7e4729cb6ef3441d86b7c2758482fc9a82098136db0356bcf8219/lib:~/.cabal/store/ghc-8.10.4/czipwith-1.0.1.3-80488b4b44a76ada9381107c0eb7ade0f11cf3d77546a7c9c41bea171ca1c8a1/lib:~/.cabal/store/ghc-8.10.4/data-default-0.7.1.1-57c8225885ab21f829d0a30ec3a4ec8a024746479a271755038b0f97c31fd898/lib:~/.cabal/store/ghc-8.10.4/data-default-class-0.1.2.0-0c6885c147f643cb8afae927f93a8ee03767178d9ac2e3860b3d1becde38f3a8/lib:~/.cabal/store/ghc-8.10.4/data-default-instances-containers-0.0.1-13ddb91a23f0efd03ebde6f0c0836426a4f03abda0473276f9e87f9374d63075/lib:~/.cabal/store/ghc-8.10.4/data-default-instances-dlist-0.0.1-db5c70a49ad468ee934caf59fe32ee5b0e6bc41d1947b4ec749cd4c29b5cb0a2/lib:~/.cabal/store/ghc-8.10.4/data-default-instances-old-locale-0.0.1-48d8772b459b03d1363056f3e0798ef2c114a51e1de8849485d22b4aeb0c9268/lib:~/.cabal/store/ghc-8.10.4/data-fix-0.3.1-1ab924543dbffd7520b29b049b51e81ade943f9ce7f7cf924a09774a2180fca6/lib:~/.cabal/store/ghc-8.10.4/data-tree-print-0.1.0.2-3d6bbe491744c0bd290470327e8cb4ae3fbda20107ae866130f33332dac5d405/lib:~/.cabal/store/ghc-8.10.4/dependent-map-0.4.0.0-b6fd722238e796c072e7c08c759a3d4cc25622bbdc7d078fd4899b9b50db8a18/lib:~/.cabal/store/ghc-8.10.4/dependent-sum-0.7.1.0-0558c299443d30eade267f9e0f38586cdf288bd58089e4214321eb07ed164474/lib:~/.cabal/store/ghc-8.10.4/dependent-sum-template-0.1.0.3-8fefdc0d74f82b558c85e131207de4faf84bc514f0bc6dfcf4ff8b0bf4a7f6ba/lib:~/.cabal/store/ghc-8.10.4/deque-0.4.3-5b1f190ea6232c198e55f8e9b6d58e490c4a156856c6d1de0b29618b184e6673/lib:~/.cabal/store/ghc-8.10.4/direct-sqlite-2.3.26-18a8deec39f8945aba7971b7731988534d5d30207d5ddae67885e886234b397b/lib:~/.cabal/store/ghc-8.10.4/distributive-0.6.2.1-d6ccedcd387243ce7eb417325785242d9fb460876582963f0b2218d408cf4203/lib:~/.cabal/store/ghc-8.10.4/dlist-1.0-25bf91521d51d2d902ba60db9f30471c434c2d6b5bd4ffc5856403292e2a3f8b/lib:~/.cabal/store/ghc-8.10.4/entropy-0.4.1.6-207965a041e83e075e62900c46c05f9c9cffface6cdd94f5ccfd138de229a3e0/lib:~/.cabal/store/ghc-8.10.4/extra-1.7.9-eb1aae7e0131e33e7a14b56ad9214e74ee874cbfb093590a991e285464f61ebc/lib:~/.cabal/store/ghc-8.10.4/file-embed-0.0.13.0-a0440c81be09424fb7db0322ea384783a84899727f733e0bcb3fc8e25c64b9cf/lib:~/.cabal/store/ghc-8.10.4/filemanip-0.3.6.3-8e75ee21e07fe2db3b405632c8af3cf24da919f3e733d09448704dbf77bbc6b1/lib:~/.cabal/store/ghc-8.10.4/filepattern-0.1.2-a836b7fb32135d4da062a00f365213ae16d1b88100ef4d02815b97fc6a5d3dc8/lib:~/.cabal/store/ghc-8.10.4/fingertree-0.1.4.2-55b5c74216c4d5e12c1097a49a2ad6776c90d3862a9d72f7a9201c98f2689b21/lib:~/.cabal/store/ghc-8.10.4/floskell-0.10.5-ec0f98441190a124abb4b52113f7d4ba2fdc073856ce4489238c19c0ac1b1cea/lib:~/.cabal/store/ghc-8.10.4/foldl-1.4.10-2fdbf82561ae4313854e04cd722bc93ad3bc791993683c6fdb4e63f62acd7eca/lib:~/.cabal/store/ghc-8.10.4/fourmolu-0.3.0.0-bab7c3c278475bd6f87b92b16df70eae1b9837991f541f4f1d999db389e76ca0/lib:~/.cabal/store/ghc-8.10.4/free-5.1.6-4ee4fc8534a9c5e47f399a8f08a4d91afcaa1c66103d528387de6585c0aeae89/lib:~/.cabal/store/ghc-8.10.4/fuzzy-0.1.0.0-4bbe00d28265794ab0711ac22170caa4404198cf9346ca15d84f5df1c39285a1/lib:~/.cabal/store/ghc-8.10.4/generic-lens-2.1.0.0-24f757cfdc1fd297be5629a416473a21376be58ed85aa29f6b3c3fa1fcdbff61/lib:~/.cabal/store/ghc-8.10.4/generic-lens-core-2.1.0.0-0ee565d3fd26ab6e557fc086d362deb4296d2ecb5c8922d0e3f1b295396dca31/lib:~/.cabal/store/ghc-8.10.4/ghc-check-0.5.0.3-4fee615f21ea060112775548ffdd3ec28ca69fb3ff632e6289ee90a26ca93ca7/lib:~/.cabal/store/ghc-8.10.4/ghc-exactprint-0.6.3.4-fcc3d29699ed9002a950e1fb3ab5e7bd6c01709e50ecb37c4205f6b3935c8d8c/lib:~/.cabal/store/ghc-8.10.4/ghc-lib-parser-8.10.4.20210206-d91da3015ef219abf0d1c171b3c4d60255b2f150eedf93160c50c6676307bbe3/lib:~/.cabal/store/ghc-8.10.4/ghc-lib-parser-ex-8.10.0.19-289a13cd4cb771c69b67d0309cae64d7a2eaeb27ad112f2b6c8f4c96fb707dae/lib:~/.cabal/store/ghc-8.10.4/ghc-paths-0.1.0.12-c0b00c288a0b78f576177d369d45271d780219cf471a8e6538cef3f8945e9f41/lib:~/.cabal/store/ghc-8.10.4/ghc-source-gen-0.4.0.0-37fd4fc9e2aecfa5abcc3196fd61a8ad5a5f6d81a53d04eb009a972079fd9a39/lib:~/.cabal/store/ghc-8.10.4/ghc-trace-events-0.1.2.1-fe435295ae28c5d43a717a391aebe55f034a5ca282e213cb85dbb655279252ec/lib:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/ghcide-1.0.0.0/build:~/.cabal/store/ghc-8.10.4/githash-0.1.5.0-40d74d579c76ca5029364ee867d62493d633b747786763dc1b383da5ef07a34a/lib:~/.cabal/store/ghc-8.10.4/gitrev-1.3.1-e6a0343477d66ebbfc4e0e540e0664fe816551d77d27f1915a17f2da99c467a8/lib:~/.cabal/store/ghc-8.10.4/haddock-library-1.9.0-6c93a1cfaabc1fe7b9296207f8c3e30fc6666f10c961d83eee9cdb947a7a1ac7/lib:~/.cabal/store/ghc-8.10.4/hashable-1.3.1.0-f63ecdd80c29532b052f24fa51ad79389ac76b18d27fb2965a24cf4ba9382394/lib:~/.cabal/store/ghc-8.10.4/hashtables-1.2.4.1-c9042394ec382b40abaae73218776956fd611c1a16c2915aaf15eb703f2e694f/lib:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/haskell-language-server-1.0.0.0/build:~/.cabal/store/ghc-8.10.4/haskell-src-exts-1.23.1-826118e22a73d35c05b80b9dac286fdb65fb916beae765e605674d8f6991a142/lib:~/.cabal/store/ghc-8.10.4/heaps-0.4-cb01aaeec4ab32b2b2fc2d6c2fa71df947b71512305ae9188990da4a20ce23d8/lib:~/.cabal/store/ghc-8.10.4/heapsize-0.3.0.1-17880bb91cca72b4851e87d3b9becf9ffdb5ab490d3be1a906ef33dbb861401d/lib:~/.cabal/store/ghc-8.10.4/hie-bios-0.7.4-ca0b96476cce7b605aa9f2f7a043065316ea51223549f1475225ffd778fbf0a4/lib:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hie-compat-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hiedb-0.3.0.1/build:~/.cabal/store/ghc-8.10.4/hlint-3.2.7-798074953f1d6730d712239c48250c63077fecdd1d71b47235429bd659735365/lib:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-class-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-eval-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-explicit-imports-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-haddock-comments-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-hlint-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-plugin-api-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-retrie-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-splice-plugin-1.0.0.0/build:~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/hls-tactics-plugin-1.0.0.0/build:~/.cabal/store/ghc-8.10.4/hscolour-1.24.4-1ffcc5928110a8db543cdbceb04719d511730a1223c5e5cfe32a72f9954e0c73/lib:~/.cabal/store/ghc-8.10.4/hslogger-1.3.1.0-26262814d522782af205cd3af07c246aa3afc8bf1fec58091082cf99cf67f2c5/lib:~/.cabal/store/ghc-8.10.4/implicit-hie-0.1.2.5-3b54d2cdf6f0587c1508f8d00e14e76eddc156373b71cb3170271ec46f2041d6/lib:~/.cabal/store/ghc-8.10.4/implicit-hie-cradle-0.3.0.2-91c92b6054560304ebc03f2202a9c64bbef1ec6460d07bd3011c9328402bd435/lib:~/.cabal/store/ghc-8.10.4/indexed-profunctors-0.1-7fb2a88cf17c114b739fdb031a05b537e2336d4e98bba2b6ab1dd1a0265daf24/lib:~/.cabal/store/ghc-8.10.4/indexed-traversable-0.1.1-0de6a3f24025b8fea5cc012d090818ff81a1137866d0100ccb55884c1d5bc250/lib:/usr/local/lib:~/.cabal/store/ghc-8.10.4/integer-logarithms-1.0.3.1-c191e2bba2d1c2a26ca58350c8f13e6920e3b0d8d6b1ffa3edbeb14a303e13d7/lib:~/.cabal/store/ghc-8.10.4/invariant-0.5.4-a9039ffa7cd0232031a970fd6b23402f23bae80e672362f823d26b1dce467393/lib:~/.cabal/store/ghc-8.10.4/js-dgtable-0.5.2-daa6bdf608fc80c4f81d0acdf88380cc7609b7a058fc1d757f0a4822d7d255b0/lib:~/.cabal/store/ghc-8.10.4/js-flot-0.8.3-48942c51177cc090bc533c057b0cbd9feb0804086e985c440880532ecba103ae/lib:~/.cabal/store/ghc-8.10.4/js-jquery-3.3.1-4e5dcb618282f7dcf344bb49326f6529e0a5c1d64597117092383408df0be1fe/lib:~/.cabal/store/ghc-8.10.4/kan-extensions-5.2.2-c84f1b81e8d22175427b84b4e203745bda745bdef81cd303a207496b6b34abcc/lib:~/.cabal/store/ghc-8.10.4/lens-4.19.2-6b039520d7dc416f857aea9da0dad942fe7780111eaa26d4f08ec0a98b25929c/lib:~/.cabal/store/ghc-8.10.4/libyaml-0.1.2-0799f98cc0e92c5f77a7928161ce7341f5693d07184afeae4016141577ef06fa/lib:~/.cabal/store/ghc-8.10.4/logict-0.7.0.3-9b7d84a1e1aa7295487985f14a4490e3ef98b41f278f85d07542128c32b60ea5/lib:~/.cabal/store/ghc-8.10.4/lsp-1.1.1.0-457e249fe2a1bcea08bcf4cd93a2840d0647c455ddaf9c3da4657a1893fea7b5/lib:~/.cabal/store/ghc-8.10.4/lsp-types-1.1.0.0-274c16d920047112fb7974d0ed67dd21cc16ca423ec31f21b83751aeeaa59a53/lib:~/.cabal/store/ghc-8.10.4/lucid-2.9.12-abed77b5b0e30cad4ffa796f9a0d2e4a67cd18c24c5e50bdf659addfd936b9ef/lib:~/.cabal/store/ghc-8.10.4/math-functions-0.3.4.1-ff4d0013ef9119b11405609358fb5b472120eb393449ded9381391e24b2eacf0/lib:~/.cabal/store/ghc-8.10.4/megaparsec-9.0.1-0852002eb2f53af236fd9ca4f14ce335139a3593f3ce8b4d8e89e5365444e16a/lib:~/.cabal/store/ghc-8.10.4/microlens-0.4.12.0-e5454bfb2b04658218108c70b265c5277585c70138859ed3c9e8032d41d6b82c/lib:~/.cabal/store/ghc-8.10.4/microlens-th-0.4.3.9-a8f9b8ba3e4162f4ada997277a8663ab0b6d56c8e9d2092cfd155a6eb974e68e/lib:~/.cabal/store/ghc-8.10.4/mmorph-1.1.5-b7bc11974d471b7816fe2e8d9319fc679e2c6ebde8be7238ae0455890d22513e/lib:~/.cabal/store/ghc-8.10.4/monad-control-1.0.2.3-bed03d49a7c59fc59be56e25ffff23c0387a07c2a4870ba92318b94deb9e8146/lib:~/.cabal/store/ghc-8.10.4/monad-dijkstra-0.1.1.3-26553ae54cab75d6810640bc57bf867686e5b80ad446ef520afc4c44080e4f8a/lib:~/.cabal/store/ghc-8.10.4/monad-memo-0.5.3-9439157f720cd26d72f3f688dcddb5c7663de56a388177f014a9f73c7c6768b8/lib:~/.cabal/store/ghc-8.10.4/mono-traversable-1.0.15.1-af466bb833942e7a9c3c48dff680effce362624e90962bd1fef19783c9919011/lib:~/.cabal/store/ghc-8.10.4/monoid-subclasses-1.0.1-55906a964fc2dc40fc59b33e3dbaafc4c2c1895dacc975dce521cd04b81c60f7/lib:~/.cabal/store/ghc-8.10.4/multistate-0.8.0.3-2d48165d88611078f2d06ed65cc18f529248ad152c56cb4d7ae240b57a34900c/lib:~/.cabal/store/ghc-8.10.4/mwc-random-0.14.0.0-d8dbf83b231f21d2b92c853ece8681ae4afb220abf4f9a25ec085bdd08363368/lib:~/.cabal/store/ghc-8.10.4/network-3.1.0.1-98a7540e384d7f38adf64b470664b42452fe48e8b439cab04241d361c6b7844c/lib:~/.cabal/store/ghc-8.10.4/network-bsd-2.8.1.0-e8ff399dc6f29eeb09db6d791ad6c52ae82199d390c89cd8d7c5a8db7107b096/lib:~/.cabal/store/ghc-8.10.4/network-info-0.2.0.10-8cd6fc532114b0dab91d54e29bdee6368992af3fa8c2140671d890f15601c7ef/lib:~/.cabal/store/ghc-8.10.4/network-uri-2.6.4.1-1cf1c1bf20b03dae21ec3670a087dd605379b660c3b52a4d5a209f27355dd435/lib:~/.cabal/store/ghc-8.10.4/old-locale-1.0.0.7-0fac344d7da3663701f4a97825a7604300ed2773ac7e895887a719f57cef000c/lib:~/.cabal/store/ghc-8.10.4/opentelemetry-0.6.1-2cf8b858096d9a820e32d18a25a59a03eda651793663b416921706342099fe49/lib:~/.cabal/store/ghc-8.10.4/optparse-applicative-0.15.1.0-d8ff2b6a5cd6f84e8e12c198ccd4d8be8ccd4e9c448f3b24e29f3a383f93f1bb/lib:~/.cabal/store/ghc-8.10.4/optparse-simple-0.1.1.3-da8eeb9a087bb49506205eb13b04d633a86c6784d882638c65e234d8fb723a56/lib:~/.cabal/store/ghc-8.10.4/ormolu-0.1.4.1-c696f5e0cd47724866154dbda1b35009da12fa4eacbe758a633753dbab9b8133/lib:~/.cabal/store/ghc-8.10.4/parallel-3.2.2.0-3ec0cc93f59039eb9143f714d9bac07c2504cabfb0121c0493055c2501aa23ac/lib:~/.cabal/store/ghc-8.10.4/parser-combinators-1.3.0-40f0745feb17df1fcbefe9c953b96196aa74a7b54e98eaed54dd457bad3ad435/lib:~/.cabal/store/ghc-8.10.4/polyparse-1.13-1d671ee10026e0b7c4d51b63fd5c499d4bf2e32e799de1e02bddd0824ced0681/lib:~/.cabal/store/ghc-8.10.4/pretty-simple-4.0.0.0-1c037e30e491b1ce76ec78907de762eee707f905eba6758c186d1e31e883f245/lib:~/.cabal/store/ghc-8.10.4/prettyprinter-1.7.0-6ee8d81978aa5fc22993812f7ca3739fdcba951403c733e9d0a93fc78e635f05/lib:~/.cabal/store/ghc-8.10.4/prettyprinter-ansi-terminal-1.1.2-3d4771abda0ed0eb6b6cd6865f8a82ccaed587a3f92b98d3a7aa1f0de9251bba/lib:~/.cabal/store/ghc-8.10.4/primes-0.2.1.0-2f8f341579585fc3c307c972b96f8d50957fe8e1f690ae9709e9ea25cba3cb5e/lib:~/.cabal/store/ghc-8.10.4/primitive-0.7.1.0-ad76e35b7e7ab506aa2ec111ec5fb2e9859148e94dfaaa16d9a1cf48f6c015a4/lib:~/.cabal/store/ghc-8.10.4/profunctors-5.6.2-893b986ced428b4f6894ac3b062f8b796ba973db1df85bbc4bfb3d2205b0c531/lib:~/.cabal/store/ghc-8.10.4/psqueues-0.2.7.2-89c5ce0f2a56a752ddaaeebc0f804b8a5ba19a8ea257129d737e3b2900b841e2/lib:~/.cabal/store/ghc-8.10.4/random-1.1-9b1d9613eb7769ec75eb61e6afeed0d4f08c6c1f013022550fc627fc5d0c0982/lib:~/.cabal/store/ghc-8.10.4/random-shuffle-0.0.4-aae11d0849728483165cf323a186639668c42beeb597578d999fa425513e0b7c/lib:~/.cabal/store/ghc-8.10.4/refact-0.3.0.2-13fd63ad930e79b1fd885fb490ab9cd9d6f59c8056ac8bc937ecbe1292409fe2/lib:~/.cabal/store/ghc-8.10.4/refinery-0.3.0.0-fec2c9c859b101918522486723928be391c9ef49e6c10b55aac3f7dc91cf6f0e/lib:~/.cabal/store/ghc-8.10.4/reflection-2.1.6-dd784a2330d373bb3d2bc88cdbaf8e52689763a0db42ef41d07c3d231440aaa5/lib:~/.cabal/store/ghc-8.10.4/regex-base-0.94.0.0-3394514fac1c33677612978e14f03237ecc1dcd3fdeb67ac3125dff91d83c56a/lib:~/.cabal/store/ghc-8.10.4/regex-tdfa-1.3.1.0-753e8279aa3e8320fba3bb947a7d207ca0c8c9f860f245b5ec6119b73efe671b/lib:~/.cabal/store/ghc-8.10.4/resourcet-1.2.4.2-bf3d1d343d41e81ffd317be343b4d024ee51d3c9811375d78f8046be21415adf/lib:~/.cabal/store/ghc-8.10.4/retrie-0.1.1.1-12d3be920b320269c0961c4923e4669f262af273fbc4d0b5462b325def0b85bf/lib:~/.cabal/store/ghc-8.10.4/rope-utf16-splay-0.3.2.0-dc7d2630174bbf8cc49f294d7fc01788329cf178b45f1c7297c8cd6ecf222738/lib:~/.cabal/store/ghc-8.10.4/safe-0.3.19-ca58c9edf61afab6766ce2af7537b3d30816104974efd74b66d3ad61228edeaf/lib:~/.cabal/store/ghc-8.10.4/safe-exceptions-0.1.7.1-431aca83c1ba3a0e8f4f41c699d24f9919b6f91ed586979a3815874740d130bb/lib:~/.cabal/store/ghc-8.10.4/scientific-0.3.6.2-9330520b02a016fd1495e7857f403cf1968b1586968474ed46558d574a6787d1/lib:~/.cabal/store/ghc-8.10.4/semigroupoids-5.3.5-e51bc1ce49e5c320dbc8fd8608a2815724d18c65b6bfbd7657c980e6607c241b/lib:~/.cabal/store/ghc-8.10.4/semigroups-0.19.1-b29a49ee28c8e286c6062cc79f376ba41726680105501286ffeb08f9cd1e7283/lib:~/.cabal/store/ghc-8.10.4/shake-0.19.4-6e8448d0d53cbcb846a773b152e81f3a8341cdd41e28b6e20d738e78b7acedb2/lib:~/.cabal/store/ghc-8.10.4/some-1.0.1-c48b0f7a047f0b47164afb31b3298f6bf2df52129f375944f688b8c648fe2835/lib:~/.cabal/store/ghc-8.10.4/sorted-list-0.2.1.0-03543d35f5707c089836ab8dfa22c5dc8a5a9023a91851ca06a31c5243f987e2/lib:~/.cabal/store/ghc-8.10.4/split-0.2.3.4-3948015fbbdfdbfc2832bfc66bc64cff52714a4c73ead94ae921bba9a7454860/lib:~/.cabal/store/ghc-8.10.4/splitmix-0.1.0.3-71e2628166cdb2c9331289583f26494825a8d69a2aceb2ebdaa88202cdaf7f3d/lib:~/.cabal/store/ghc-8.10.4/sqlite-simple-0.4.18.0-e2bd1e244ac7382374cf2f3be07a300ff02e8b2cabf2ec58d753f733feaab142/lib:~/.cabal/store/ghc-8.10.4/streaming-commons-0.2.2.1-5bfc5a7d2668585b915077c5cddb9a66fd5ff59ebc30f6823b26661ac68e63c4/lib:~/.cabal/store/ghc-8.10.4/strict-0.4.0.1-bf18a877930c2b074c47abc7de368767a35f6c14c5a0aa086d891480251853e1/lib:~/.cabal/store/ghc-8.10.4/strict-list-0.1.5-69078711813ac6ec36f8fd77635d7259f116cdf8d4961c139111004895c3d912/lib:~/.cabal/store/ghc-8.10.4/stylish-haskell-0.12.2.0-ae2eb29a38e485186c4887758dcf86deb7076c2a8f9bcda86e0d4759a45e90a9/lib:~/.cabal/store/ghc-8.10.4/syb-0.7.2.1-4922a2b2ad6d27eeed8e7c4d84d21beb0624755d2037bbca83a26f10beb83bc4/lib:~/.cabal/store/ghc-8.10.4/tagged-0.8.6.1-047bca550f30a6c26f36e20ac6aee0bbfe0508e6840aa323f79937c1b4a25641/lib:~/.cabal/store/ghc-8.10.4/temporary-1.3-f4c18cde6f73a62fd7f9053de2e55cac54832fa2ba6eed1e5635901aaaf9c4d8/lib:~/.cabal/store/ghc-8.10.4/th-abstraction-0.4.2.0-2c13489c4d4c02d2a976462dc65c503b45f4380ff714e5239eb56c33326e4e51/lib:~/.cabal/store/ghc-8.10.4/th-compat-0.1.1-f8771a9ab4b70ff1890eb8fde411bc04242d1771afb061d4084056fe464d8f69/lib:~/.cabal/store/ghc-8.10.4/th-extras-0.0.0.4-c533d3e6b494d40fb6940feaf5a84b9e9e670f133b3a6d21d035ac8b8fa34ca5/lib:~/.cabal/store/ghc-8.10.4/these-1.1.1.1-45169cac3736647a1e081afa9f1ec5d0022aa3dcdabbe61157430e0129adddf6/lib:~/.cabal/store/ghc-8.10.4/time-compat-1.9.5-ae872bc8e7e0417350ea3e9d515f08ca83f63b191a683f361638a2497f0745c8/lib:~/.cabal/store/ghc-8.10.4/transformers-base-0.4.5.2-b8c423271fb67bb6eca91b7e120fd5fc0014b208a43cc131608968fbbc70948d/lib:~/.cabal/store/ghc-8.10.4/transformers-compat-0.6.6-4cbf0b3d31418c2a97d9db6a8482efe56b339947847fdc5aebebb7732f078b2d/lib:~/.cabal/store/ghc-8.10.4/type-equality-1-2cf97c8cd53a75aee9f2afb7c6788fe37e15fbe1cfa825e1e64dcd43bcef0fdf/lib:~/.cabal/store/ghc-8.10.4/typed-process-0.2.6.0-93028af8bdd8d727e8e1d51d84ccf9b725127475ac2d9451727170f86ce3a7b4/lib:~/.cabal/store/ghc-8.10.4/uniplate-1.6.13-04ad3855da29c66584211026e4a7d51bbd7f614e24b5c6665d38627076fa559a/lib:~/.local/ghc-8.10/lib/ghc-8.10.4/lib/x86_64-freebsd-ghc-8.10.4:~/.cabal/store/ghc-8.10.4/unix-compat-0.5.3-0fc8d49430f7f3d47d8171e177ab6cab23b6f1941ddbbef28c15de74694d8941/lib:~/.cabal/store/ghc-8.10.4/unliftio-0.2.14-ebbd60a56ade829f69a2cf6f50217e649df9161540112cffe945afe2de2cfbc8/lib:~/.cabal/store/ghc-8.10.4/unliftio-core-0.2.0.1-e3e64cee39dc8ada43b43d0accc8d9ef2cb1adde25cf6ee899dfdfe91542623d/lib:~/.cabal/store/ghc-8.10.4/unordered-containers-0.2.13.0-0df09b9470b4e1919fd30641a283fb202207ffe7b9ff5ae8bd877c93c5f6ff93/lib:~/.cabal/store/ghc-8.10.4/unsafe-0.0-1c756d8c781ba897db5895587b1fdb590e43604c32238a05c9b78d6a3296bae2/lib:~/.cabal/store/ghc-8.10.4/utf8-string-1.0.2-061ff32485c42896e79f047e918b7d84ab77af5de3ed03f0a29afceb8ebcc801/lib:~/.cabal/store/ghc-8.10.4/uuid-1.3.14-f6087048ce049ace1ef8abc21f71b19b69e030a23b89bf3bf5dc4f5bb492568e/lib:~/.cabal/store/ghc-8.10.4/uuid-types-1.0.4-76fc834ecb05ff38d67ef0bd923ef2f90cb5ee280d7726ca023af78b210c1a1c/lib:~/.cabal/store/ghc-8.10.4/vector-0.12.2.0-e25b1b7f5cb7ac52bbc6692597eee8fa286d2722f03b1fb4f45083e4ec23a4ab/lib:~/.cabal/store/ghc-8.10.4/vector-algorithms-0.8.0.4-35f94b0ab7adfd10e0d63a3da897d2b309cf1606e0999474b71cb35b3ae0ff9c/lib:~/.cabal/store/ghc-8.10.4/void-0.7.3-7bc8b51fe463fa52cf685715eb09b73b6a8626cd3e60ce0da86f87e509adea8b/lib:~/.cabal/store/ghc-8.10.4/with-utf8-1.0.2.2-a68320bb140f9d0ab35415036ae54b686ca26140fbffb124de018f8b40ea5226/lib:~/.cabal/store/ghc-8.10.4/yaml-0.11.5.0-8a6e0038bb337bbd5659a02dc9318183bb6067fdf3c0c2ba06c677177be42c9b/lib:~/.cabal/store/ghc-8.10.4/zlib-0.6.2.2-ea687d9e2158c01eb5c0daa55fd09d25a2dc94f86a1487854c52e964fde60081/lib]

I'm willing to got with that for my own machine, but there should be some way of consolidating the dependencies into a single lib directory with multiple ".so" files. That's likely a Cabal issue, not HLS.

On a separate note, I am still rather confused by the apparently non-fatal error message:

2021-03-03 15:48:18.33341142 [ThreadId 34] INFO hls:    File:     
Hidden:   no
Range:    1:1-2:1
Source:   compiler
Severity: DsError
Message: 
  Internal error, getIdeGlobalExtras, no entry for IdeConfigurationVar
  CallStack (from HasCallStack):
  errorIO, called at src/Development/IDE/Core/Shake.hs:286:20 in
  ghcide-1.0.0.0-inplace:Development.IDE.Core.Shake

What's that all about?

jneira commented 3 years ago

Could we still distribute static binaries then?

I think we won't, we could not upload it to the repo. Maybe we should add to documentation, in the install section a note about freebsd mentioning it should be build with executable-dynamic: True

vdukhovni commented 3 years ago

Could we still distribute static binaries then?

I think we won't, we could not upload it to the repo. Maybe we should add to documentation, in the install section a note about freebsd mentioning it should be build with executable-dynamic: True

The dynamic version would need a bunch of work to ensure a robust search path for the dependency. I am not sure Cabal is presently entirely up to the task. So yes, static by default, and either a note for FreeBSD users, or someone actually figures out how to handle the new relocation in rts/linker/Elf.c in GHC. That task is well outside my skill set, but there is perhaps someone out there who knows how to do it.

jneira commented 3 years ago

@vdukhovni nice, could you make a pr to update the readme noting the actual requirements and caveats installing hls in freebsd?

vdukhovni commented 3 years ago

@vdukhovni nice, could you make a pr to update the readme noting the actual requirements and caveats installing hls in freebsd?

Can I offer you a "horse trade"? I'll commit to doing the FreeBSD README update, if you can help me figure out the more mundane issue mentioned at the bottom of: https://github.com/haskell/haskell-language-server/issues/1482#issuecomment-790050017

wz1000 commented 3 years ago

@vdukhovni https://github.com/haskell/haskell-language-server/pull/1495

vdukhovni commented 3 years ago

@vdukhovni #1495

Thanks, got a clean run with no crashes. I owe you some FreeBSD text... FWIW, the colourised output is difficult to read on a terminal with a dark background (errors show in dark purple which does not contrast well with black), is the CLI color-scheme configurable?

haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: ~/dev/haskell-language-server/dist-newstyle/build/x86_64-freebsd/ghc-8.10.4/haskell-language-server-1.0.0.0/x/haskell-language-server/build/haskell-language-server/haskell-language-server) (GIT hash: f46c40c8435309eb190dfe337c4a756686c65929)
2021-03-04 18:39:40.943198169 [ThreadId 30] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Task.hs"
2021-03-04 18:39:40.943274886 [ThreadId 25] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Opts.hs"
2021-03-04 18:39:40.943413019 [ThreadId 31] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Main.hs"
2021-03-04 18:39:40.943163039 [ThreadId 33] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Types.hs"
2021-03-04 18:39:40.943157754 [ThreadId 32] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Constants.hs"
2021-03-04 18:39:40.943179431 [ThreadId 34] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/BoundedLines.hs"
2021-03-04 18:39:40.944696505 [ThreadId 38] INFO hls:   Consulting the cradle for "Main.hs"
Output from setting up the cradle Cradle {cradleRootDir = "~/dev/czds", cradleOptsProg = CradleAction: Cabal}
> Build profile: -w ghc-8.10.4 -O1
> In order, the following will be built (use -v for more details):
>  - czds-sync-0.1.0.0 (exe:czds-sync) (first run)
> Preprocessing executable 'czds-sync' for czds-sync-0.1.0.0..
2021-03-04 18:39:41.463492044 [ThreadId 38] INFO hls:   Using interface files cache dir: ~/.cache/ghcide/main-63d8b9d8a1fa2307977aaeb5d467863a59cd7825
2021-03-04 18:39:41.463983997 [ThreadId 38] INFO hls:   Making new HscEnv[main]
2021-03-04 18:39:41.488104962 [ThreadId 75] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Types.hs"
2021-03-04 18:39:41.488083592 [ThreadId 79] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Task.hs"
2021-03-04 18:39:41.488159793 [ThreadId 78] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/BoundedLines.hs"
2021-03-04 18:39:41.488150142 [ThreadId 77] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Main.hs"
2021-03-04 18:39:41.488265444 [ThreadId 72] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Constants.hs"
2021-03-04 18:39:41.488838054 [ThreadId 72] INFO hls:   hlint:getIdeas:file:NormalizedFilePath "~/dev/czds/Opts.hs"
2021-03-04 18:39:42.257721916 [ThreadId 348] INFO hls:  finish: User TypeCheck (took 0.77s)
2021-03-04 18:39:42.346631976 [ThreadId 360] INFO hls:  finish: GetHie (took 0.09s)
ghcide setup tester in ~/dev/czds.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Step 1/4: Finding files to test in ~/dev/czds
Found 6 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle
  (~/dev/czds/hie.yaml)

Step 3/4: Initializing the IDE

Step 4/4: Type checking the files

Completed (6 files worked, 0 files failed)
2021-03-04 18:39:42.347302762 [ThreadId 365] INFO hls:  finish: GenerateCore (took 0.00s)
vdukhovni commented 3 years ago

I guess I still owe you a writeup, but in the meantime, I believe I've addressed the issue for future GHC releases (don't know whether a backport to 9.2 or earlier is appropriate).

The rts linker code could perhaps use some refactoring, but that should be a separate MR...

jneira commented 2 years ago

This can be included in the issues related with the ghc runtime linker, they are summarized here: https://github.com/haskell/haskell-language-server/issues/2000 and https://github.com/haskell/haskell-language-server/issues/1431 @vdukhovni thanks for the report and the further investigation