refactor(grfn/xanthous): avoid unnecessary recompilation
hpack is a bit dumb when generating the list of modules for a cabal file's component if multiple of them live in the same directory. Specifically it seems to assume that all modules in the source-dirs of a particular component are also necessary for its compilation. This is quite bad in the case of xanthous since both library and executable have source-dirs: src, so all modules will be compiled twice: Once for the library and then again for the executable despite it depending on the library (actually 4 times in total since we need to build a unprofiled and profiled object for each module…). To fix this we just move Main.hs into its own directory and change the executable's source-dirs, so hpack doesn't get confused anymore. Since all components now have their own source-dirs, unnecessary redundant compilation should be down to 0. The diff of the cabal file shows quite nicely how many module recompilation we've gotten rid of. Change-Id: I2df4fab9b0299b3a2b5d3005508c79b2d9796039 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3533 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
parent
a63057414d
commit
2f750e4a14
3 changed files with 3 additions and 61 deletions
|
@ -116,7 +116,7 @@ library:
|
|||
source-dirs: src
|
||||
|
||||
executable:
|
||||
source-dirs: src
|
||||
source-dirs: app
|
||||
main: Main.hs
|
||||
dependencies:
|
||||
- xanthous
|
||||
|
|
|
@ -4,7 +4,7 @@ cabal-version: 1.12
|
|||
--
|
||||
-- see: https://github.com/sol/hpack
|
||||
--
|
||||
-- hash: 761fd1d1a9f9f9fdf8e14e56922558f7968401c879dcb95ca697dab03d1e9eec
|
||||
-- hash: c12ae4038a2e1f287de557b72b8493da05ccbf428e7ac7862349c46d241f342f
|
||||
|
||||
name: xanthous
|
||||
version: 0.1.0.0
|
||||
|
@ -29,7 +29,6 @@ source-repository head
|
|||
library
|
||||
exposed-modules:
|
||||
Data.Aeson.Generic.DerivingVia
|
||||
Main
|
||||
Xanthous.AI.Gormlak
|
||||
Xanthous.App
|
||||
Xanthous.App.Autocommands
|
||||
|
@ -188,66 +187,9 @@ library
|
|||
executable xanthous
|
||||
main-is: Main.hs
|
||||
other-modules:
|
||||
Data.Aeson.Generic.DerivingVia
|
||||
Xanthous.AI.Gormlak
|
||||
Xanthous.App
|
||||
Xanthous.App.Autocommands
|
||||
Xanthous.App.Common
|
||||
Xanthous.App.Prompt
|
||||
Xanthous.App.Time
|
||||
Xanthous.Command
|
||||
Xanthous.Data
|
||||
Xanthous.Data.App
|
||||
Xanthous.Data.Entities
|
||||
Xanthous.Data.EntityChar
|
||||
Xanthous.Data.EntityMap
|
||||
Xanthous.Data.EntityMap.Graphics
|
||||
Xanthous.Data.Levels
|
||||
Xanthous.Data.Memo
|
||||
Xanthous.Data.NestedMap
|
||||
Xanthous.Data.VectorBag
|
||||
Xanthous.Entities.Character
|
||||
Xanthous.Entities.Creature
|
||||
Xanthous.Entities.Creature.Hippocampus
|
||||
Xanthous.Entities.Draw.Util
|
||||
Xanthous.Entities.Entities
|
||||
Xanthous.Entities.Environment
|
||||
Xanthous.Entities.Item
|
||||
Xanthous.Entities.Marker
|
||||
Xanthous.Entities.Raws
|
||||
Xanthous.Entities.RawTypes
|
||||
Xanthous.Game
|
||||
Xanthous.Game.Arbitrary
|
||||
Xanthous.Game.Draw
|
||||
Xanthous.Game.Env
|
||||
Xanthous.Game.Lenses
|
||||
Xanthous.Game.Memo
|
||||
Xanthous.Game.Prompt
|
||||
Xanthous.Game.State
|
||||
Xanthous.Generators.Level
|
||||
Xanthous.Generators.Level.CaveAutomata
|
||||
Xanthous.Generators.Level.Dungeon
|
||||
Xanthous.Generators.Level.LevelContents
|
||||
Xanthous.Generators.Level.Util
|
||||
Xanthous.Generators.Level.Village
|
||||
Xanthous.Generators.Speech
|
||||
Xanthous.Messages
|
||||
Xanthous.Messages.Template
|
||||
Xanthous.Monad
|
||||
Xanthous.Orphans
|
||||
Xanthous.Prelude
|
||||
Xanthous.Random
|
||||
Xanthous.Util
|
||||
Xanthous.Util.Comonad
|
||||
Xanthous.Util.Graph
|
||||
Xanthous.Util.Graphics
|
||||
Xanthous.Util.Inflection
|
||||
Xanthous.Util.JSON
|
||||
Xanthous.Util.Optparse
|
||||
Xanthous.Util.QuickCheck
|
||||
Paths_xanthous
|
||||
hs-source-dirs:
|
||||
src
|
||||
app
|
||||
default-extensions:
|
||||
BlockArguments
|
||||
ConstraintKinds
|
||||
|
|
Loading…
Reference in a new issue