8f71b316c9
Makefile: Remove chrpath workaround for bug in cabal, which is no longer needed. https://github.com/haskell/cabal/issues/2717 says it uses RUNPATH instead of RPATH now, but I don't even see that for statically linked libraries; the bug with that appears to be fixed. cabal-install version 1.24.0.2 compiled using version 1.24.2.0 of the Cabal library I left the rpath removal using otool on OSX because those straight up broke the linker, and I don't know if the OSX autobuilder is updated to a new enough cabal to not need it. This commit was sponsored by Ewen McNeill on Patreon.
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`
|