I'm using stack to organize my Haskell projects as follows:
.
├── ProjectA
│ ├── Main.hs
│ ├── ProjectA.cabal
│ └── Setup.hs
├── ProjectB
│ ├── Main.hs
│ ├── ProjectB.cabal
│ └── Setup.hs
├── ProjectC
│ ├── Main.hs
│ ├── ProjectC.cabal
│ └── Setup.hs
└── stack.yaml
That is, I have many directories, each one containing a package, and a single stack environment containing those. During my workflow, I'm using stack build
to get compile errors and guide my work. The issue with that is it takes way too long to give me proper error messages, and it rebuilds every dependency of every file I edited. I like to work interactively - that is, I edit a few lines of code, compile, repeat - always editing only one file at once. That is slowing down my workflow considerably.
Before using stack
(with global installs), I would just run GHCI on the file I was editing, but that doesn't work anymore. Is there any way to speed up getting error messages on my setup?
This is the output of stack build --verbose
:
2015-10-23 14:58:29.987203: [debug] Checking for project config at: /Users/v/hs/stack.yaml @(stack-0.1.2.0:Stack.Config src/Stack/Config.hs:496:9)
2015-10-23 14:58:29.987438: [debug] Loading project config file stack.yaml @(stack-0.1.2.0:Stack.Config src/Stack/Config.hs:519:13)
2015-10-23 14:58:29.997623: [debug] Run process: ghc --info @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.097836: [debug] Run process: ghc --numeric-version @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.164305: [debug] Run process: ghc-pkg --no-user-package-db field --simple-output Cabal id @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.210596: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.272135: [debug] Checking resolver: lts-3.7 @(stack-0.1.2.0:Stack.Build.Source src/Stack/Build/Source.hs:86:13)
2015-10-23 14:58:30.609624: [debug] Run process: ghc-pkg --global --no-user-package-db dump --expand-pkgroot @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.69387: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ dump --expand-pkgroot @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:30.767327: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ dump --expand-pkgroot @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:31.82109: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:31.867523: [info] Game-0.1.0.0-d9d944cf39a7cec36b48d4a724502fa6: unregistering (missing dependencies: Image) @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:315:17)
2015-10-23 14:58:31.867867: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ unregister --user --force Game-0.1.0.0 @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:31.958876: [info] Image-0.1.0.0-6944dffdf3e7e7ee0a9401deccf4f104: unregistering (local file changes) @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:315:17)
2015-10-23 14:58:31.959184: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ unregister --user --force Image-0.1.0.0 @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:32.052864: [info] Image-0.1.0.0: build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:32.053139: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:36.437519: [info] Image-0.1.0.0: install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:36.437713: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:37.063125: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ field --simple-output Image id @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:37.139879: [info] Game-0.1.0.0: build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:37.140276: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:38.232964: [info] Game-0.1.0.0: install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:38.233154: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:38.85603: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ field --simple-output Game id @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:38.931549: [info] Test-0.1.0.0: build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:38.931772: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ build @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:42.550672: [info] Test-0.1.0.0: install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:490:18)
2015-10-23 14:58:42.550859: [debug] Run process: /Applications/ghc-7.10.2.app/Contents/bin/runhaskell -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ /var/folders/1r/s4q2bscs1xqfzl1913c0wwbm0000gn/T/stack3896/Setup.hs --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/ install @(stack-0.1.2.0:Stack.Build.Execute src/Stack/Build/Execute.hs:591:13)
2015-10-23 14:58:43.308516: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ field --simple-output Test id @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
2015-10-23 14:58:43.381165: [debug] Run process: ghc-pkg --no-user-package-db --package-db=/Users/v/.stack/snapshots/x86_64-osx/lts-3.7/7.10.2/pkgdb/ --package-db=/Users/v/hs/.stack-work/install/x86_64-osx/lts-3.7/7.10.2/pkgdb/ field --simple-output Test id @(stack-0.1.2.0:System.Process.Read src/System/Process/Read.hs:254:3)
Completed all 3 actions.