Added stack.yaml to support easy builds from source with stack.

Update install instructions.

Note that xmpp is disabled in the stack.yaml, because that needs C
libraries that would take extra work for the user to install.
xmpp is moving toward deprecation anyway.
This commit is contained in:
Joey Hess 2015-09-26 06:16:01 -04:00
parent dc3a538531
commit 028cdccc65
3 changed files with 55 additions and 7 deletions

1
debian/changelog vendored
View file

@ -14,6 +14,7 @@ git-annex (5.20150917) UNRELEASED; urgency=medium
yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of
a repository. a repository.
* status: Show added but not yet committed files. * status: Show added but not yet committed files.
* Added stack.yaml to support easy builds from source with stack.
-- Joey Hess <id@joeyh.name> Wed, 16 Sep 2015 12:23:33 -0400 -- Joey Hess <id@joeyh.name> Wed, 16 Sep 2015 12:23:33 -0400

View file

@ -34,7 +34,28 @@ First, install everything git-annex needs to build:
Now you can build git-annex by running either `make` or `cabal build` Now you can build git-annex by running either `make` or `cabal build`
inside the source tree. inside the source tree.
## minimal build with cabal and stackage ## 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
Use stack to install all dependencies and git-annex:
stack setup
stack install git-annex
Move git-annex into some directory that is in your PATH:
mv ~/.local/bin/git-annex ~/bin # or /usr/local/bin/ or whatever
Note that this build produces a git-annex without XMPP support.
## minimal build from source with cabal
This can be done anywhere, and builds git-annex without some optional features 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 that require harder-to-install C libraries. This is plenty to let you get started with
@ -42,9 +63,7 @@ git-annex, but it does not include the assistant or webapp.
Be warned that this involves building a lot of Haskell libraries from 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 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 to be broken from time to time.
[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: Inside the source tree, run:
@ -54,15 +73,13 @@ Inside the source tree, run:
PATH=$HOME/bin:$PATH PATH=$HOME/bin:$PATH
cabal install --bindir=$HOME/bin cabal install --bindir=$HOME/bin
## full build with cabal and stackage ## full build from source with cabal
To build with all features enabled, including the assistant and webapp, To build with all features enabled, including the assistant and webapp,
you will need to install several C libraries and their headers, you will need to install several C libraries and their headers,
including libgnutls, libgsasl, libxml2, and zlib. How to do that for including libgnutls, libgsasl, libxml2, and zlib. How to do that for
your OS is beyond the scope of this page. 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: Once the C libraries are installed, run inside the source tree:
cabal install -j --only-dependencies cabal install -j --only-dependencies

30
stack.yaml Normal file
View file

@ -0,0 +1,30 @@
flags:
git-annex:
asciiprogress: false
tahoe: true
tdfa: true
inotify: true
feed: true
database: true
webapp-secure: true
production: true
ekg: false
assistant: true
pairing: true
cryptonite: true
xmpp: false
network-uri: true
s3: true
dbus: true
testsuite: true
webdav: true
torrentparser: true
android: false
androidsplice: false
quvi: true
dns: true
desktopnotify: true
webapp: true
packages:
- '.'
extra-deps: []