Homebrew has a formula for git-annex.
Warning: Homebew enables telemetry by default, which is not a good practice.
If you are surprised by it doing this, see here
and you may want to run brew analytics off
.
Homebrew users can simply run brew install git-annex
to install git-annex.
buiding git-annex from sources
This is the old recipe for building git-annex from source, using packages from homebrew. Useful if you want a newer version than the version in homebrew.
brew install haskell-platform git ossp-uuid md5sha1sum coreutils gnutls libidn gsasl pkg-config libxml2 brew link libxml2 --force cabal update mkdir $HOME/bin PATH=$HOME/bin:$PATH PATH=$HOME/.cabal/bin:$PATH cabal install c2hs --bindir=$HOME/bin cabal install gnuidn cabal install git-annex --bindir=$HOME/bin
When I run the following command: cabal install c2hs --bindir=$HOME/bin
I get the following error:
Error: some packages failed to install: c2hs-0.28.1 depends on language-c-0.5.0 which failed to install. language-c-0.5.0 failed during the configure step. The exception was: ExitFailure 1
It seems that for me at least, OSX installations performed with
brew install git-annex
do not include man pages, e.g., if I subsequently runman git-annex
I get the errorNo manual entry for git-annex
. This isn't an enormous bother as I can instead browse documentation as needed on the website, but it's a headache when I'm working offline and even when not it can be irksome to have to leave the terminal.Below I've pasted the relevant lines that govern how homebrew performs the installation (or in practice, how the "bottle" is built as part of a CI process, and which bottle is typically "poured" by end users rather than compiling locally).
Notably, it uses
cabal
to do the installation, but it doesn't quite follow any of the cabal-related patterns currently outlined on the "installing from source" documentation. I inspected the bottle that homebrew downloads, and indeed it contains just a handful of files that do not include the man pages, i.e.:Is there an easy tweak to the cabal-based installation that homebrew currently uses to do its bottling that would include man pages, or would it be a potentially significant undertaking that would require an appreciably different build approach?
Homebrew doesn't seem to install the remote helper (
git remote-annex
is not a known command).Building from source doesn't work because brew installs base>4.20 which is incompatible with filepath-bytestring. Since homebrew is against backward compatibility I presume changing base version by installing a different ghc is out of the question.
Maybe there's a way to do this with sandboxes? I'm not familiar with haskell, can anyone update the build recipe on how to build git-annex on MacOS (Apple silicon)? As I understand it one would need:
brew install ghc cabal-install haskell-stack
instead ofhaskell-platform
--bindir -> --installdir
extra-lib-dirs
andextra-include-dirs
to/opt/homebrew/(lib|include)
respectively in cabal config or as additional optionsbase
version< 4.20
must be installed when installingghc
This is where I got stuck because I can't reinstall
base
without understanding sandboxes or installing a different GHC version (I think? This is effectively my first exposure to haskell)