tvl-depot/users/grfn/xanthous
sterni 2f750e4a14 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>
2021-09-11 16:00:12 +00:00
..
.github refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
app refactor(grfn/xanthous): avoid unnecessary recompilation 2021-09-11 16:00:12 +00:00
bench refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
build refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
src refactor(grfn/xanthous): avoid unnecessary recompilation 2021-09-11 16:00:12 +00:00
test fix(xanthous): Fix display of square/cubic units 2021-07-06 18:32:08 +00:00
.envrc refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
.gitignore refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
default.nix refactor(users/grfn): build all haskell packages without ifd 2021-04-13 10:34:24 +00:00
hie.yaml refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
LICENSE refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
nixpkgs.nix refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
package.yaml refactor(grfn/xanthous): avoid unnecessary recompilation 2021-09-11 16:00:12 +00:00
pkg.nix feat(xanthous): Add a generator for random english syllables 2021-06-13 01:24:47 +00:00
README.org refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
Setup.hs refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
shell.nix feat(xanthous): Install qpdf in the shell 2021-06-18 17:51:43 +00:00
xanthous.cabal refactor(grfn/xanthous): avoid unnecessary recompilation 2021-09-11 16:00:12 +00:00

Xanthous

Building

$ nix build

Running

$ ./result/bin/xanthous [--help]

Keyboard commands

Keyboard commands are currently undocumented, but can be found in [this file. Movement uses the nethack-esque hjklybnu.

Development

Use lorri, or run everything in a nix-shell

# Build (for dev)
$ cabal new-build

# Run the game
$ cabal new-run xanthous

# Run tests
$ cabal new-run test

# Run a repl
$ cabal new-repl