Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thread-local variable relocation issue on FreeBSD 12 #1482

Closed
vdukhovni opened this issue Mar 3, 2021 · 13 comments
Closed

Thread-local variable relocation issue on FreeBSD 12 #1482

vdukhovni opened this issue Mar 3, 2021 · 13 comments
Labels
type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..

Comments

@vdukhovni
Copy link

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
@jneira jneira added os: freebsd type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc.. labels Mar 3, 2021
@mpickering
Copy link
Contributor

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
Copy link
Collaborator

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

@mpickering
Copy link
Contributor

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
Copy link
Collaborator

wz1000 commented Mar 3, 2021

Could we still distribute static binaries then?

@vdukhovni
Copy link
Author

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
Copy link
Member

jneira commented Mar 4, 2021

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
Copy link
Author

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
Copy link
Member

jneira commented Mar 4, 2021

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

@vdukhovni
Copy link
Author

vdukhovni commented Mar 4, 2021

@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: #1482 (comment)

@wz1000
Copy link
Collaborator

wz1000 commented Mar 4, 2021

@vdukhovni #1495

@vdukhovni
Copy link
Author

@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
Copy link
Author

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
Copy link
Member

jneira commented Jan 31, 2022

This can be included in the issues related with the ghc runtime linker, they are summarized here: #2000 and #1431
@vdukhovni thanks for the report and the further investigation

@jneira jneira closed this as completed Jan 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..
Projects
None yet
Development

No branches or pull requests

5 participants