Haskell-ide-engine: can't load .so/.DLL for libHSghc-prim-0.5.3-ghc8.6.5.so

Created on 31 May 2020  路  9Comments  路  Source: haskell/haskell-ide-engine

To reproduce clone: https://github.com/razvan-flavius-panda/LagdaMdToLagda/tree/948dbdeeddcc69e594c0cdb5bf23ffe49e180243

Enter nix-shell --pure and run hie:

[nix-shell:~/Projects/LagdaMdToLagda]$ hie
2020-05-31 02:16:29.286922422 [ThreadId 4] - run entered for hie-wrapper(hie) Version 1.1 x86_64 ghc-8.6.5
2020-05-31 02:16:29.296239444 [ThreadId 4] - Current directory:/home/neo/Projects/LagdaMdToLagda
2020-05-31 02:16:29.296332845 [ThreadId 4] - Operating system:linux
2020-05-31 02:16:29.296386115 [ThreadId 4] - args:[]
2020-05-31 02:16:29.397216057 [ThreadId 4] - Cabal-Helper decided to use: ProjLocV2Dir {plProjectDirV2 = "/home/neo/Projects/LagdaMdToLagda"}
Build profile: -w ghc-8.6.5 -O1
In order, the following would be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (configuration changed)
2020-05-31 02:16:30.302817186 [ThreadId 4] - Module "/home/neo/Projects/LagdaMdToLagda/File.hs" is loaded by Cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
2020-05-31 02:16:30.302985118 [ThreadId 4] - Cradle directory:/home/neo/Projects/LagdaMdToLagda
2020-05-31 02:16:30.304647927 [ThreadId 4] - Executing GHC on path with args: --numeric-version
2020-05-31 02:16:30.345146351 [ThreadId 4] - Project GHC version:8.6.5
2020-05-31 02:16:30.345246329 [ThreadId 4] - hie exe candidates :["hie-8.6.5","hie-8.6","hie"]
2020-05-31 02:16:30.347408755 [ThreadId 4] - found hie exe at:/nix/store/5a6jp7xm8zgv39bhjd1gvvj651gnlvx4-haskell-ide-engine-combined/libexec/bin/hie-8.6.5
2020-05-31 02:16:30.347533413 [ThreadId 4] - args:[]
2020-05-31 02:16:30.347609999 [ThreadId 4] - launching ....



Running HIE(hie-8.6.5)
  Version 1.1 x86_64 ghc-8.6.5
To run as a LSP server on stdio, provide the '--lsp' argument
Current directory:/home/neo/Projects/LagdaMdToLagda

args:[]

Looking for project config cradle...

2020-05-31 02:16:31.442573684 [ThreadId 4] - Cabal-Helper decided to use: ProjLocV2Dir {plProjectDirV2 = "/home/neo/Projects/LagdaMdToLagda"}
Build profile: -w ghc-8.6.5 -O1
In order, the following would be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (configuration changed)
2020-05-31 02:16:31.68426565 [ThreadId 4] - Module "/home/neo/Projects/LagdaMdToLagda/File.hs" is loaded by Cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
2020-05-31 02:16:31.685731901 [ThreadId 4] - Executing GHC on path with args: --numeric-version
2020-05-31 02:16:31.728045902 [ThreadId 4] - Executing GHC on path with args: --print-libdir


###################################################

Cradle: Cabal project
Project Ghc version: 8.6.5
Libdir: Just "/nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5"
Searching for Haskell source files...
Found 2 Haskell source files.

###################################################

Found the following files:

/home/neo/Projects/LagdaMdToLagda/Main.hs
/home/neo/Projects/LagdaMdToLagda/Setup.hs


Load them all now. This may take a very long time.

2020-05-31 02:16:31.830770784 [ThreadId 4] - New cradle: /home/neo/Projects/LagdaMdToLagda/Main.hs
2020-05-31 02:16:31.834652653 [ThreadId 4] - Cabal-Helper decided to use: ProjLocV2Dir {plProjectDirV2 = "/home/neo/Projects/LagdaMdToLagda"}
Build profile: -w ghc-8.6.5 -O1
In order, the following would be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (configuration changed)
2020-05-31 02:16:32.406967677 [ThreadId 4] - Module "/home/neo/Projects/LagdaMdToLagda/Main.hs" is loaded by Cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
2020-05-31 02:16:32.40707938 [ThreadId 4] - Found cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
Build profile: -w ghc-8.6.5 -O1
In order, the following will be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (first run)
2020-05-31 02:16:32.728606552 [ThreadId 4] - Ghc error on cradle initialisation: "can't load .so/.DLL for: /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so (/nix/store/c745s6cnnxy6c98bvhi0qsijrh3ikag1-glibc-2.27/lib/libm.so.6: version `GLIBC_2.29' not found (required by /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so))"
2020-05-31 02:16:32.728808214 [ThreadId 4] - New cradle: /home/neo/Projects/LagdaMdToLagda/Setup.hs
2020-05-31 02:16:32.732474135 [ThreadId 4] - Cabal-Helper decided to use: ProjLocV2Dir {plProjectDirV2 = "/home/neo/Projects/LagdaMdToLagda"}
Build profile: -w ghc-8.6.5 -O1
In order, the following would be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (configuration changed)
2020-05-31 02:16:32.974869567 [ThreadId 4] - Module "/home/neo/Projects/LagdaMdToLagda/Setup.hs" is loaded by Cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
2020-05-31 02:16:32.974991438 [ThreadId 4] - Found cradle: Cradle {cradleRootDir = "/home/neo/Projects/LagdaMdToLagda", cradleOptsProg = CradleAction: Other CabalV2}
Build profile: -w ghc-8.6.5 -O1
In order, the following will be built (use -v for more details):
 - LagdaMdToLagda-0.1.0.0 (exe:LagdaMdToLagda) (first run)
2020-05-31 02:16:33.101190483 [ThreadId 4] - Fail on cradle initialisation: (ExitFailure 2)["Could not obtain flags for: \"Setup.hs\".","","This module was not part of any component we are aware of.","","Component: ChExeName \"LagdaMdToLagda\" with source directory: [\".\"]","","","To expose a module, refer to:","https://www.haskell.org/cabal/users-guide/developing-packages.html",""]

###################################################
###################################################

Dumping diagnostics:


/home/neo/Projects/LagdaMdToLagda/Main.hs: FAILED
        "can't load .so/.DLL for: /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so (/nix/store/c745s6cnnxy6c98bvhi0qsijrh3ikag1-glibc-2.27/lib/libm.so.6: version `GLIBC_2.29' not found (required by /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so))"
/home/neo/Projects/LagdaMdToLagda/Setup.hs: FAILED
        Fail on initialisation for "/home/neo/Projects/LagdaMdToLagda/Setup.hs". Could not obtain flags for: "Setup.hs".


Note: loading of 'Setup.hs' is not supported.
2020-05-31 02:16:33.144940767 [ThreadId 4] - done
bug nix

Most helpful comment

@jneira So, something like:

cradle: {cabal: {component: "exe:Screeps-Haskell"}}

in a hie.yaml?

All 9 comments

From what I understand, hie executable is calling cabal to build some Haskell packages.

If I could somehow get Nix to provide those packages required by the hie run, then it should use them instead of installing them globally. The problem is how to tell which packages I need to provide inside the nix-shell.

If I am not mistaken, hie is trying to build cabal-3.0.0.0, so if I add that to nix-shell, then hie when run should not install it globally but use the one provided successfully by Nix.

maybe using an explicit hie.yamlconfig would be a workaround, cause that way hie does not try to build Cabal

@jneira So, something like:

cradle: {cabal: {component: "exe:Screeps-Haskell"}}

in a hie.yaml?

yeah, it should work if you have only one component (lib, exe, test, etc), with more components you will need a "multi" cradle: see https://github.com/haskell/haskell-ide-engine#project-configuration

@jneira I tried what I mentioned above and the errors multiplied haha

Dumping diagnostics:


/home/neo/Projects/Screeps-Haskell/Setup.hs: FAILED
        "can't load .so/.DLL for: /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so (/nix/store/c745s6cnnxy6c98bvhi0qsijrh3ikag1-glibc-2.27/lib/libm.so.6: version `GLIBC_2.29' not found (required by /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so))"
/home/neo/Projects/Screeps-Haskell/Main.hs: FAILED
        "panic! (the 'impossible' happened)\n  (GHC version 8.6.5 for x86_64-unknown-linux):\n\tDynamic linker not initialised\n\nPlease report this as a GHC bug:  http://www.haskell.org/ghc/reportabug\n"


Note: loading of 'Setup.hs' is not supported.
2020-06-01 22:43:07.360372938 [ThreadId 4] - done

I tried with:

cradle:
  cabal:
  - path: "./Main.hs"
    component: "exe:Screeps-Haskell"

and it throws:

Dumping diagnostics:


/home/neo/Projects/Screeps-Haskell/Setup.hs: FAILED
        Fail on initialisation for "/home/neo/Projects/Screeps-Haskell/Setup.hs". Multi Cradle: No prefixes matched
/home/neo/Projects/Screeps-Haskell/Main.hs: FAILED
        "can't load .so/.DLL for: /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so (/nix/store/c745s6cnnxy6c98bvhi0qsijrh3ikag1-glibc-2.27/lib/libm.so.6: version `GLIBC_2.29' not found (required by /nix/store/v2irxsz710ghkw0whk3n36lkb31msw06-ghc-8.6.5/lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so))"


Note: loading of 'Setup.hs' is not supported.
2020-06-01 22:54:26.022937588 [ThreadId 4] - done

Oh sorry for the failed workaround, there is a fundamental issue beyond compiling Cabal.
I think a nix user would help better, maybe @Infinisil?

I can't offer any assistance, but I am also encountering this issue.

Was this page helpful?
0 / 5 - 0 ratings