doc: developer guide: update the setup docs
This commit is contained in:
parent
9728206f4a
commit
4ed6ce3442
@ -344,39 +344,62 @@ and the default view given by [bugs.hledger.org](http://bugs.hledger.org) exclud
|
|||||||
|
|
||||||
### Set up for development
|
### Set up for development
|
||||||
|
|
||||||
1. get an up-to-date [ghc](http://haskell.org/ghc), at least 7.0 and preferably 7.6
|
1. Get [GHC](https://www.haskell.org/ghc/) and [cabal-install](http://hackage.haskell.org/package/cabal-install) installed.
|
||||||
2. there's probably no need to install the [haskell platform](http://haskell.org/platform) now, but you could
|
I recommend the [stackage.org install guide](http://www.stackage.org/install).
|
||||||
3. it's probably worth getting the latest and best cabal: `cabal update; cabal install cabal-install`
|
You can see which GHC versions are officially supported in the `tested-with` field in
|
||||||
4. ensure you have [git](http://git-scm.com) installed
|
[hledger.cabal](http://hackage.haskell.org/package/hledger/hledger.cabal)
|
||||||
5. the hledger Makefile assumes GNU Make, so on some platforms you may need to spell "make" as "gmake"
|
and
|
||||||
6. get the hledger repo:
|
[hledger-web.cabal](http://hackage.haskell.org/package/hledger-web/hledger-web.cabal).
|
||||||
|
Older versions may also work.
|
||||||
|
2. Get [git](http://git-scm.com) installed.
|
||||||
|
3. Get [GNU Make](http://www.gnu.org/software/make) installed (unless you don't care about the Makefile's conveniences).
|
||||||
|
On some platforms the command will be eg `gmake` instead of `make`.
|
||||||
|
4. Get the hledger repo:
|
||||||
|
|
||||||
git clone https://github.com/simonmichael/hledger.git
|
git clone https://github.com/simonmichael/hledger.git
|
||||||
cd hledger
|
|
||||||
|
|
||||||
7. install packages required to build hledger and add-ons, or as many of them as possible:
|
5. You might want to install or upgrade some of these haskell developer tools.
|
||||||
|
If you're not sure, skip this step and return to it as needed.
|
||||||
|
Be sure the cabal bin directory where these are installed (eg ~/.cabal/bin) is in your PATH.
|
||||||
|
|
||||||
cabal update
|
cabal update
|
||||||
make install
|
cabal install alex happy # if you get alex/happy-related errors when building hledger
|
||||||
|
cabal install haddock # needed to build hledger API docs
|
||||||
|
cabal install shelltestrunner # needed to run hledger functional tests (may need latest git version)
|
||||||
|
cabal install hoogle hlint # maybe useful for searching API docs and checking code
|
||||||
|
|
||||||
This will also try to cabal install development builds of the hledger
|
You'll also want a comfortable code editor, preferably with Haskell support.
|
||||||
executables, so ghc-pkg unregister those afterwards if you don't want
|
(I use emacs + [haskell-mode](https://github.com/haskell/haskell-mode),
|
||||||
that.
|
or occasionally [IntelliJ IDEA](https://www.jetbrains.com/idea/download) + one of the [plugins](https://www.google.com/search?hl=en&q=intellij+plugins+haskell)).
|
||||||
|
|
||||||
8. try building with make:
|
6. Install haskell libs required by hledger:
|
||||||
|
|
||||||
|
cabal update
|
||||||
|
cd hledger
|
||||||
|
cabal sandbox init # optional
|
||||||
|
make installdeps # or cabal install --only-dep ./hledger-lib ./hledger [./hledger-web]
|
||||||
|
|
||||||
|
This will install the required dependencies from Hackage.
|
||||||
|
If you're new to cabal, you can expect problems at this stage.
|
||||||
|
The usual remedy is to ensure you start with a clean package db, eg by doing `cabal sandbox init`.
|
||||||
|
You can simplify and speed up this step a lot by commenting out
|
||||||
|
hledger-web in the `PACKAGES` list in the [Makefile](https://github.com/simonmichael/hledger/blob/master/Makefile#L41).
|
||||||
|
|
||||||
|
7. Build with cabal:
|
||||||
|
|
||||||
|
make cabalbuild
|
||||||
|
|
||||||
|
(Tip: `make cabalCMD` runs `cabal CMD` in each of the hledger packages).
|
||||||
|
|
||||||
|
8. Build with GHC:
|
||||||
|
|
||||||
make bin/hledgerdev
|
make bin/hledgerdev
|
||||||
|
|
||||||
This is usually quicker and simpler than fiddling with multiple cabal packages during development.
|
This builds hledger (and hledger-lib) with GHC directly, without using cabal,
|
||||||
Note this executable will not be as optimised as the normal cabal build, and has the "dev" suffix
|
and as quickly as possible, without optimizations (the "dev" suffix is a reminder of this).
|
||||||
as a reminder of this.
|
I use and recommend this method for development, as it crosses package boundaries and ensures you are building the latest code.
|
||||||
|
However it needs some files generated by cabal build, which is why we did that first.
|
||||||
|
|
||||||
<!-- 9. try auto-building with sp: -->
|
|
||||||
|
|
||||||
<!-- make auto # or autoweb -->
|
|
||||||
|
|
||||||
<!-- You'll need to follow the instructions to install `sp`. -->
|
|
||||||
<!-- This is how I do most hledger development. It will recompile whenever you save changes to source files. -->
|
|
||||||
|
|
||||||
### Get your changes accepted
|
### Get your changes accepted
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user