Background: I wanted to contribute to Stan (https://github.com/kowainik/stan) and use VS code with HLS to code. HLS kept reporting some strange errors. I found out that the problem might be related to hie-bios. In its readme I read:
If you find that hie-bios can't load a certain component or file, run stack repl and stack repl <component name> to see if stack succeeds in building your project. Chances are that there is a problem in your project and if you fix that, hie-bios will succeed to load it.
So I tried to run stack repl,
but it failed
```
agluszak@devmachina:~/code/zpf/stan$ stack repl
Using main module: 1. Package `stan' component stan:exe:stan with main-is file: /home/agluszak/code/zpf/stan/app/Main.hs
Building all executables for `stan' once. After a successful build of all of them, only specified executables will be rebuilt.
stan> configure (lib + internal-lib + exe)
Configuring stan-0.0.1.0...
stan> initial-build-steps (lib + internal-lib + exe)
Configuring GHCi with the following packages: stan
GHCi, version 8.10.3: https://www.haskell.org/ghc/ :? for help
: cannot satisfy -package z-stan-z-target
(use -v for more information)
```
It looks like it's a separate issue though (#4148),
because after running `stack build`
```
agluszak@devmachina:~/code/zpf/stan$ stack build
Building all executables for `stan' once. After a successful build of all of them, only specified executables will be rebuilt.
stan> configure (lib + internal-lib + exe)
Configuring stan-0.0.1.0...
stan> build (lib + internal-lib + exe)
Preprocessing library for stan-0.0.1.0..
Building library for stan-0.0.1.0..
[ 1 of 43] Compiling Paths_stan
[ 2 of 43] Compiling Stan.Browse
[ 3 of 43] Compiling Stan.Category
[ 4 of 43] Compiling Stan.Core.Id
[ 5 of 43] Compiling Stan.Core.List
[ 6 of 43] Compiling Stan.EnvVars
[ 7 of 43] Compiling Stan.Example
[ 8 of 43] Compiling Stan.Ghc.Compat
[ 9 of 43] Compiling Stan.Core.ModuleName
[10 of 43] Compiling Stan.Hie.Compat
[11 of 43] Compiling Stan.Cabal
[12 of 43] Compiling Stan.Info
[13 of 43] Compiling Stan.NameMeta
[14 of 43] Compiling Stan.Hie.Debug
[15 of 43] Compiling Stan.Pattern.Edsl
[16 of 43] Compiling Stan.Pattern.Type
[17 of 43] Compiling Stan.Pattern.Ast
[18 of 43] Compiling Stan.Hie
[19 of 43] Compiling Stan.Hie.MatchType
[20 of 43] Compiling Stan.Hie.MatchAst
[21 of 43] Compiling Stan.Report.Css
[22 of 43] Compiling Stan.Report.Settings
[23 of 43] Compiling Stan.Severity
[24 of 43] Compiling Stan.Inspection
[25 of 43] Compiling Stan.Inspection.Style
[26 of 43] Compiling Stan.Inspection.Partial
[27 of 43] Compiling Stan.Inspection.Infinite
[28 of 43] Compiling Stan.Inspection.AntiPattern
[29 of 43] Compiling Stan.Inspection.All
[30 of 43] Compiling Stan.Observation
[31 of 43] Compiling Stan.FileInfo
[32 of 43] Compiling Stan.Analysis.Visitor
[33 of 43] Compiling Stan.Analysis.Analyser
[34 of 43] Compiling Stan.Analysis
[35 of 43] Compiling Stan.Analysis.Pretty
[36 of 43] Compiling Stan.Config
[37 of 43] Compiling Stan.Config.Pretty
[38 of 43] Compiling Stan.Cli
[39 of 43] Compiling Stan.Analysis.Summary
[40 of 43] Compiling Stan.Report.Html
[41 of 43] Compiling Stan.Report
[42 of 43] Compiling Stan.Toml
[43 of 43] Compiling Stan
Preprocessing library 'target' for stan-0.0.1.0..
Building library 'target' for stan-0.0.1.0..
[1 of 9] Compiling Target.AntiPattern
[2 of 9] Compiling Target.AntiPattern.Stan0206
[3 of 9] Compiling Target.AntiPattern.Stan0206Extensions
[4 of 9] Compiling Target.AntiPattern.Stan0212
[5 of 9] Compiling Target.AntiPattern.Stan0213
[6 of 9] Compiling Target.AntiPattern.Stan0214
[7 of 9] Compiling Target.Infinite
[8 of 9] Compiling Target.Partial
[9 of 9] Compiling Target.Style
Preprocessing executable 'stan' for stan-0.0.1.0..
Building executable 'stan' for stan-0.0.1.0..
[1 of 1] Compiling Main
Linking .stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0/build/stan/stan ...
stan> copy/register
Installing library in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/lib/x86_64-linux-ghc-8.10.3/stan-0.0.1.0-eYx0U2wni4Juz5Jiygr4h
Installing internal library target in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/lib/x86_64-linux-ghc-8.10.3/stan-0.0.1.0-FIrEVBBAmGTCbmEQS6vdWO-target
Installing executable stan in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/bin
Registering library for stan-0.0.1.0..
Registering library 'target' for stan-0.0.1.0..
```
it failed with a different error:
```
agluszak@devmachina:~/code/zpf/stan$ stack repl
Using main module: 1. Package `stan' component stan:exe:stan with main-is file: /home/agluszak/code/zpf/stan/app/Main.hs
Configuring GHCi with the following packages: stan
GHCi, version 8.10.3: https://www.haskell.org/ghc/ :? for help
[ 1 of 53] Compiling Paths_stan
[ 2 of 53] Compiling Stan.Browse
/home/agluszak/code/zpf/stan/src/Stan/Browse.hs:46:75: error:
Variable not in scope: toText :: String -> Data.Text.Internal.Text
|
46 | errorMessage $ "Cannot guess browser for the OS: " <> toText curOs
| ^^^^^^
/home/agluszak/code/zpf/stan/src/Stan/Browse.hs:48:21: error:
Variable not in scope: exitFailure :: IO ()
|
48 | exitFailure
| ^^^^^^^^^^^
: warning: [-Wunused-packages]
The following packages were specified via -package or -package-id flags,
but were not needed for compilation:
- unordered-containers-0.2.13.0
- trial-tomland-0.0.0.0
- trial-optparse-applicative-0.0.0.0
- trial-0.0.0.0
- tomland-1.3.1.0
- slist-0.1.1.0
- pretty-simple-4.0.0.0
- optparse-applicative-0.15.1.0
- microaeson-0.1.0.0
- gitrev-1.3.1
- ghc-boot-th-8.10.3
- ghc-8.10.3
- filepath-1.4.2.1
- extensions-0.0.0.1
- dir-traverse-0.2.2.3
- cryptohash-sha1-0.11.100.1
- containers-0.6.2.1
- clay-0.13.3
- blaze-html-0.9.1.2
- base64-0.4.2.2
- array-0.5.4.0
- relude-0.7.0.0
- stan-0.0.1.0
Failed, one module loaded.
: error:
Could not load module ‘Stan’
It is a member of the hidden package ‘stan-0.0.1.0’.
You can run ‘:set -package stan’ to expose it.
(Note: this unloads all the modules in the current scope.)
Loaded GHCi configuration from /tmp/haskell-stack-ghci/958d3ea1/ghci-script
*Paths_stan>
Leaving GHCi.
```
Now the errors reported by stack repl for file Browse.hs were exactly the same as those reported by HLS.
Stan depends on relude, which provides these two missing symbols: toText :: String -> Data.Text.Internal.Text and exitFailure :: IO ().
General summary/comments (optional)
Background: I wanted to contribute to Stan (https://github.com/kowainik/stan) and use VS code with HLS to code. HLS kept reporting some strange errors. I found out that the problem might be related to hie-bios. In its readme I read:
If you find that hie-bios can't load a certain component or file, run stack repl and stack repl <component name> to see if stack succeeds in building your project. Chances are that there is a problem in your project and if you fix that, hie-bios will succeed to load it.
So I tried to runstack repl
,but it failed
``` agluszak@devmachina:~/code/zpf/stan$ stack repl Using main module: 1. Package `stan' component stan:exe:stan with main-is file: /home/agluszak/code/zpf/stan/app/Main.hs Building all executables for `stan' once. After a successful build of all of them, only specified executables will be rebuilt. stan> configure (lib + internal-lib + exe) Configuring stan-0.0.1.0... stan> initial-build-steps (lib + internal-lib + exe) Configuring GHCi with the following packages: stan GHCi, version 8.10.3: https://www.haskell.org/ghc/ :? for helpIt looks like it's a separate issue though (#4148),
because after running `stack build`
``` agluszak@devmachina:~/code/zpf/stan$ stack build Building all executables for `stan' once. After a successful build of all of them, only specified executables will be rebuilt. stan> configure (lib + internal-lib + exe) Configuring stan-0.0.1.0... stan> build (lib + internal-lib + exe) Preprocessing library for stan-0.0.1.0.. Building library for stan-0.0.1.0.. [ 1 of 43] Compiling Paths_stan [ 2 of 43] Compiling Stan.Browse [ 3 of 43] Compiling Stan.Category [ 4 of 43] Compiling Stan.Core.Id [ 5 of 43] Compiling Stan.Core.List [ 6 of 43] Compiling Stan.EnvVars [ 7 of 43] Compiling Stan.Example [ 8 of 43] Compiling Stan.Ghc.Compat [ 9 of 43] Compiling Stan.Core.ModuleName [10 of 43] Compiling Stan.Hie.Compat [11 of 43] Compiling Stan.Cabal [12 of 43] Compiling Stan.Info [13 of 43] Compiling Stan.NameMeta [14 of 43] Compiling Stan.Hie.Debug [15 of 43] Compiling Stan.Pattern.Edsl [16 of 43] Compiling Stan.Pattern.Type [17 of 43] Compiling Stan.Pattern.Ast [18 of 43] Compiling Stan.Hie [19 of 43] Compiling Stan.Hie.MatchType [20 of 43] Compiling Stan.Hie.MatchAst [21 of 43] Compiling Stan.Report.Css [22 of 43] Compiling Stan.Report.Settings [23 of 43] Compiling Stan.Severity [24 of 43] Compiling Stan.Inspection [25 of 43] Compiling Stan.Inspection.Style [26 of 43] Compiling Stan.Inspection.Partial [27 of 43] Compiling Stan.Inspection.Infinite [28 of 43] Compiling Stan.Inspection.AntiPattern [29 of 43] Compiling Stan.Inspection.All [30 of 43] Compiling Stan.Observation [31 of 43] Compiling Stan.FileInfo [32 of 43] Compiling Stan.Analysis.Visitor [33 of 43] Compiling Stan.Analysis.Analyser [34 of 43] Compiling Stan.Analysis [35 of 43] Compiling Stan.Analysis.Pretty [36 of 43] Compiling Stan.Config [37 of 43] Compiling Stan.Config.Pretty [38 of 43] Compiling Stan.Cli [39 of 43] Compiling Stan.Analysis.Summary [40 of 43] Compiling Stan.Report.Html [41 of 43] Compiling Stan.Report [42 of 43] Compiling Stan.Toml [43 of 43] Compiling Stan Preprocessing library 'target' for stan-0.0.1.0.. Building library 'target' for stan-0.0.1.0.. [1 of 9] Compiling Target.AntiPattern [2 of 9] Compiling Target.AntiPattern.Stan0206 [3 of 9] Compiling Target.AntiPattern.Stan0206Extensions [4 of 9] Compiling Target.AntiPattern.Stan0212 [5 of 9] Compiling Target.AntiPattern.Stan0213 [6 of 9] Compiling Target.AntiPattern.Stan0214 [7 of 9] Compiling Target.Infinite [8 of 9] Compiling Target.Partial [9 of 9] Compiling Target.Style Preprocessing executable 'stan' for stan-0.0.1.0.. Building executable 'stan' for stan-0.0.1.0.. [1 of 1] Compiling Main Linking .stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0/build/stan/stan ... stan> copy/register Installing library in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/lib/x86_64-linux-ghc-8.10.3/stan-0.0.1.0-eYx0U2wni4Juz5Jiygr4h Installing internal library target in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/lib/x86_64-linux-ghc-8.10.3/stan-0.0.1.0-FIrEVBBAmGTCbmEQS6vdWO-target Installing executable stan in /home/agluszak/code/zpf/stan/.stack-work/install/x86_64-linux-tinfo6/ecbe5bfaab41fbab1a17b841cfb6656a9017f8b8f433567e0dc2d7fdf99764d9/8.10.3/bin Registering library for stan-0.0.1.0.. Registering library 'target' for stan-0.0.1.0.. ```it failed with a different error:
``` agluszak@devmachina:~/code/zpf/stan$ stack repl Using main module: 1. Package `stan' component stan:exe:stan with main-is file: /home/agluszak/code/zpf/stan/app/Main.hs Configuring GHCi with the following packages: stan GHCi, version 8.10.3: https://www.haskell.org/ghc/ :? for help [ 1 of 53] Compiling Paths_stan [ 2 of 53] Compiling Stan.Browse /home/agluszak/code/zpf/stan/src/Stan/Browse.hs:46:75: error: Variable not in scope: toText :: String -> Data.Text.Internal.Text | 46 | errorMessage $ "Cannot guess browser for the OS: " <> toText curOs | ^^^^^^ /home/agluszak/code/zpf/stan/src/Stan/Browse.hs:48:21: error: Variable not in scope: exitFailure :: IO () | 48 | exitFailure | ^^^^^^^^^^^Now the errors reported by
stack repl
for fileBrowse.hs
were exactly the same as those reported by HLS. Stan depends on relude, which provides these two missing symbols:toText :: String -> Data.Text.Internal.Text
andexitFailure :: IO ()
.Relude is depended upon using the mixin functionality (see: https://github.com/kowainik/stan/blob/main/stan.cabal#L69), but it looks like it is ignored when you run
stack ghci
/stack repl
.Steps to reproduce
git clone git@github.com:kowainik/stan.git
cd stan
stack build
stack ghci
Expected
The build succeeds.
Actual
It fails with the message above.
Stack version
Method of installation