Also don't recommend using cabal unpack to get the source, since the git clone has a more extensive source tree.
		
			
				
	
	
		
			102 lines
		
	
	
	
		
			3.5 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
	
		
			3.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 run:
 | 
						|
 | 
						|
	git clone git://git-annex.branchable.com/ 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.
 | 
						|
 | 
						|
## building from source with stack
 | 
						|
 | 
						|
Using stack automates nearly everything, will work on many systems,
 | 
						|
and avoids build failures due to fast-changing haskell libraries.
 | 
						|
 | 
						|
First, [install stack](https://github.com/commercialhaskell/stack/blob/master/doc/install_and_upgrade.md)
 | 
						|
It will be part of the Haskell Platform soon. On Debian unstable/testing:
 | 
						|
 | 
						|
	sudo apt-get install haskell-stack zlib1g-dev libtinfo-dev
 | 
						|
 | 
						|
Get the git-annex source code, and inside the source tree run:
 | 
						|
 | 
						|
	stack setup
 | 
						|
	stack install
 | 
						|
 | 
						|
Move git-annex into some directory that is in your PATH:
 | 
						|
 | 
						|
	mv ~/.local/bin/git-annex ~/bin # or /usr/local/bin/ or whatever
 | 
						|
 | 
						|
(Why not run `stack install git-annex`? Because that causes stack to 
 | 
						|
[ignore git-annex's stack.yaml file](https://github.com/commercialhaskell/stack/issues/2371),
 | 
						|
yielding a less reliable build.)
 | 
						|
 | 
						|
Note that this build produces a git-annex without the build flags
 | 
						|
XMPP, DBUS, and MagicMime.
 | 
						|
These optional features require installing additional C libraries.
 | 
						|
To try to build with these features 
 | 
						|
enabled, pass extra parameters when running stack install: 
 | 
						|
`--flag git-annex:XMPP --flag git-annex:DBUS --flag git-annex:MagicMime`
 | 
						|
 | 
						|
## minimal build from source with cabal
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Get the git-annex source code, and inside the source tree, run:
 | 
						|
 | 
						|
	cabal install -j -f"-assistant -webapp -webdav -pairing -xmpp -dns -dbus -magicmime" --only-dependencies
 | 
						|
	cabal configure -f"-assistant -webapp -webdav -pairing -xmpp -dns -dbus -magicmime"
 | 
						|
	cabal build -j
 | 
						|
	PATH=$HOME/bin:$PATH
 | 
						|
	cabal install --bindir=$HOME/bin
 | 
						|
 | 
						|
## full build from source with cabal
 | 
						|
 | 
						|
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, libmagic, and zlib. How to do
 | 
						|
that for your OS is beyond the scope of this page. 
 | 
						|
 | 
						|
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, but not for general-purpose builds.
 | 
						|
Just pass `-f+EKG` to `cabal configure`
 |