Skip to content
This repository was archived by the owner on Oct 7, 2020. It is now read-only.

Commit 8e9258c

Browse files
committed
First draft of Build.md build documentation
1 parent d9bcbf2 commit 8e9258c

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

docs/Build.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Build system
2+
3+
`haskell-ide-engine` is built using the library `shake`. The build descriptions are defined in the file `install.hs`.
4+
5+
### Design decisions
6+
7+
The design of the build system follows 2 main goals:
8+
9+
* works same on every platform
10+
* has minimal run-time dependencies: `stack` and `git`
11+
* is completely functional right after simple `git clone`
12+
* one-stop-shop for all building
13+
14+
Previously, `haskell-ide-engine` was built using a `Makefile` on Unix systems and a `PowerShell` script on Windows. By replacing both scripts by a Haskell-based solution, the scripts can be can be replaced by a single script.
15+
16+
### Tradeoffs
17+
18+
#### `shake.yaml`
19+
20+
A `shake.yaml` is required for executing the `install.hs` file.
21+
22+
* It contains the required version of `shake`.
23+
* In contrast to the other `*.yaml` it does not contain the submodules, which is necessary for `stack` to work even before the submodules have been initialized.
24+
25+
It is necessary to update the `resolver` field of the `shake.yaml` if the .
26+
27+
#### `install.hs` installs a GHC
28+
29+
Before the code in `install.hs` can be executed, `stack` installs a `GHC`, depending on the `resolver` field in `shake.yaml`. This is a necessary if the `install.hs` should be totally functional right after a fresh `git clone` without further configuration.
30+
31+
This may lead to an extra `GHC` to be installed by `stack` if not all versions of `haskell-ide-engine` are installed.

0 commit comments

Comments
 (0)