git-annex/doc/install/fromsource.mdwn
Joey Hess 33e5f2e532 reorder cabal configure after install of dependencies
can't configure w/o all deps installed
2015-07-21 19:16:46 -04:00

78 lines
2.5 KiB
Markdown

So you want to build git-annex from source. This is encouraged for
users with experience building code from source. But the build may
require some care and feeding. This page will start with the easy
methods and work up to the harder ones.
## prerequisites
Start by installing the
[Haskell Platform](http://hackage.haskell.org/platform/).
In Debian, this is as simple as:
sudo apt-get install haskell-platform
## downloading the source code
The easiest way is using git; see [[download]] or just:
git clone git://git-annex.branchable.com/ git-annex
Or, you can use cabal to get the source code:
cabal update; cabal unpack git-annex
## building from source on Debian
This is the method used by git-annex's author, and so it's the one most
likely to work without problems.
First, install everything git-annex needs to build:
sudo apt-get build-dep git-annex
Now you can build git-annex by running either `make` or `cabal build`
inside the source tree.
## minimal build with cabal and stackage
This can be done anywhere, and builds git-annex without some optional features
that require harder-to-install C libraries. This is plenty to let you get started with
git-annex, but it does not include the assistant or webapp.
Be warned that this involves building a lot of Haskell libraries from
source, and so it has a lot of moving parts, and it's not uncommon for it
to be broken from time to time. A nice way to avoid such breakage is to
[configure cabal to use the Stackage repository](http://www.stackage.org/),
which is a more stable and consistent version of the Hackage repository.
Inside the source tree, run:
cabal install -j -f"-assistant -webapp -webdav -pairing -xmpp -dns" --only-dependencies
cabal configure -f"-assistant -webapp -webdav -pairing -xmpp -dns"
cabal build -j
PATH=$HOME/bin:$PATH
cabal install --bindir=$HOME/bin
## full build with cabal and stackage
To build with all features enabled, including the assistant and webapp,
you will need to install several C libraries and their headers,
including libgnutls, libgsasl, libxml2, and zlib. How to do that for
your OS is beyond the scope of this page.
Using [Stackage](http://www.stackage.org/) is again a good idea here!
Once the C libraries are installed, run inside the source tree:
cabal install -j --only-dependencies
cabal configure
cabal build -j
PATH=$HOME/bin:$PATH
cabal install --bindir=$HOME/bin
## EKG
When building with cabal, you can optionally enable the
[[EKG monitoring interface|ekg]]. This is great for debugging resource
usage problems. Just pass `-f+EKG` to `cabal configure`