git-annex/ install/ OSX/ porting

If you cannot get a OSX build of git-annex suitable for your computer, from eg HomeBrew or the regular OSX prebuilt app, you can try building git-annex from source on OSX, using haskell's cabal package manager.

For general instructions on building git-annex from source see fromsource

comment 9
sig11 is a Segmentation Fault, probably from a C library used by DAV for HTTP in this case.
Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
I couldn't install it on Snow Leopard

Bad news, it looks like I'm not able to install git-annex to my machine: When I run

    sudo cabal install c2hs git-annex --bindir=$HOME/bin

I get the following error:

    cabal: Error: some packages failed to install:
    DAV-0.3 failed during the building phase. The exception was:
    ExitFailure 11
    git-annex-3.20130114 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-1.1.7.2 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-auth-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-core-1.1.7.1 failed during the building phase. The exception was:
    ExitFailure 11
    yesod-default-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-form-1.2.0.2 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-json-1.1.2 depends on yesod-core-1.1.7.1 which failed to install.
    yesod-persistent-1.1.0.1 depends on yesod-core-1.1.7.1 which failed to
    install.
    yesod-static-1.1.1.2 depends on yesod-core-1.1.7.1 which failed to install.

What does ExitFailure 11 mean?

Comment by https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0 — Tue Jul 22 18:11:47 2025
build issue with brew technique on Darwin Kernel Version 13.0.0

Following the Mac OS X brew instructions from the top of the board, I got the following error:

[5 of 5] Compiling Yesod ( Yesod.hs, dist/build/Yesod.o ) In-place registering yesod-1.2.5... Installing library in /Users/srinathv/.cabal/lib/yesod-1.2.5/ghc-7.6.3 Registering yesod-1.2.5... Installed yesod-1.2.5 cabal: Error: some packages failed to install: git-annex-5.20140210 depends on libxml-sax-0.7.4 which failed to install. libxml-sax-0.7.4 failed during the configure step. The exception was: ExitFailure 1 network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to install.

Then I perused the comments and did: $brew link libmxl2 --force $cabal install git-annex --bindir=$HOME/bin

with success.

Comment by https://www.google.com/accounts/o8/id?id=AItOawn3rK4VDzxyhmrIc18z7F5OuXvEbUsgUac — Tue Jul 22 18:11:47 2025
comment 33
I installed the haskell DBus library, but it's still not picking it up. Is there some additional option to pass to cabal, or is it supposed to find it automatically?
Comment by http://alan.petitepomme.net/ — Tue Jul 22 18:11:47 2025
comment 32

You probably need to install libdbus dev stuff, and then the haskell dbus library. But it's certainly going to need code changes to make git-annex use dbus in any way on OSX, assuming there are even useful dbus events generated for network connections and drives being mounted on OSX.

It was saying "gcrypt" when it meant "git-remote-gcrypt".

Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
dbus and homebrew

I'm trying to build git-annex with dbus support, and even though I installed dbus (through homebrew), at the end of compilation I get the warning about "building without dbus". Is there something special I need to do for git-annex to see I have installed dbus?

(Also, it tells me at the beginning that I don't have gcrypt, but libgcrypt is installed.)

Comment by http://alan.petitepomme.net/ — Tue Jul 22 18:11:47 2025
comment 30
@Alan you don't need to install dbus on OSX. The polling code will work. On the other hand if you'd like to experiment with installing dbus and report back, perhaps it's worth a try. It's nice when the git-annex assistant can instantly detect when drives are plugged in, and then the network connection changes and react to it. On Linux, dbus gives it that capability.
Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
comment 29
I think I dragged you out of dev mode for commenting unnecessarily, sorry about that. Apparently, Lion and Mountain Lion are fine on older hardware. For a while a daemon cause Lion slowdowns for a day after upgrade for a while, which was enough to cause a reputation.
Comment by https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U — Tue Jul 22 18:11:47 2025
dbus support?

Hello,

I just compiled git-annex using cabal on OS X, and I see there is no dbus support:

    Assistant/Threads/NetWatcher.hs:26:0:
         warning: #warning Building without dbus support; will poll for network connection changes

    Assistant/Threads/MountWatcher.hs:33:0:
         warning: #warning Building without dbus support; will use mtab polling

Is this problematic? I see I can install dbus using homebrew. If I do so, will I have dbus support (after recompiling git-annex)?

Comment by http://alan.petitepomme.net/ — Tue Jul 22 18:11:47 2025
comment 27
The git-annex assistant uses file level FSevents to detect which files have been changed. Would it be possible to make it work with older versions that don't provide file-level events? Probably. The code for BSD kqueue deals with similar limitations in needing to scan the directory to find the files that actually changed. If someone cares about old versions of OSX and wants to do that work I'll happily support you.
Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
comment 27

The FSevents framework itself has been around since leopard.

This fsevents wrapper project supports snow leopard and even leopard, maybe it will provide some clues on how it was done.

I'm guessing it would be worth it, snow leopard is still the most popular OSX as of April. From my own experience, snow leopard is a huge life extender for 2+ year old hardware. Lion just makes them sluggishly painful to use.

Maybe someone could volunteer an SL machine for remote development? Sorry, mine are tied down :(

Comment by https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U — Tue Jul 22 18:11:47 2025
comment 24

@Kristian, a new version of the DNS library has caused this. A workaround is to pass `-f-DNS` to the cabal command.

I am in the process of adding support for the new DNS library version in git now.

By the way, please file a bug if you have a big ugly looking build failure like that, so as to not clutter up this page.

Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
Build failure using Haskel Platform

I get this error when I try to build git-annex using "cabal install git-annex"

    [ 34 of 347] Compiling Utility.Misc     ( Utility/Misc.hs, dist/build/git-annex/git-annex-tmp/Utility/Misc.o )
    [ 35 of 347] Compiling Utility.Process  ( Utility/Process.hs, dist/build/git-annex/git-annex-tmp/Utility/Process.o )
    [ 36 of 347] Compiling Utility.Network  ( Utility/Network.hs, dist/build/git-annex/git-annex-tmp/Utility/Network.o )
    [ 37 of 347] Compiling Utility.SRV      ( Utility/SRV.hs, dist/build/git-annex/git-annex-tmp/Utility/SRV.o )

    Utility/SRV.hs:70:54:
        Couldn't match expected type `Maybe
                                        [(Int, Int, Integer, B8.ByteString)]'
                    with actual type `Either
                                        dns-1.0.0:Network.DNS.Internal.DNSError
                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
        In the third argument of `maybe', namely `r'
        In the second argument of `($)', namely
          `maybe [] (orderHosts . map tohosts) r'
        In a stmt of a 'do' block:
          return $ maybe [] (orderHosts . map tohosts) r
    Failed to install git-annex-4.20130909
    cabal: Error: some packages failed to install:
    git-annex-4.20130909 failed during the building phase. The exception was:
    ExitFailure 1

Comment by https://www.google.com/accounts/o8/id?id=AItOawmL8pteP2jbYJUn1M3CbeLDvz2SWAA1wtg — Tue Jul 22 18:11:47 2025
comment 22

Rather than specifying --bindir on the command line for cabal, I edited my ~/.cabal/config to add this line:

    symlink-bindir: /usr/local/bin

This installs the binaries to ~/.cabal/bin but symlinks them into /usr/local/bin alongside the links that homebrew installs. Additionally, I symlinked /usr/local/bin/git-annex-shell to /usr/local/bin/git-annex which made things work great from remote hosts via ssh.

Comment by https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q — Tue Jul 22 18:11:47 2025
comment 19
sounds like a prime candidate for a nice lightweight linux distro ;)
Comment by http://edheil.wordpress.com/ — Tue Jul 22 18:11:47 2025
Can't update
The laptop is one of the first macbook pro's with a 32 bit chip, which apple dropped support for in 10.7, so the furthest it can update to is 10.6.x. :(
Comment by https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc — Tue Jul 22 18:11:47 2025
comment 17

@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.

You can certainly use the rest of git-annex on Snow Leopard without FSEvents.

Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
Snow Leopard Issues

I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies). Woohoo!

The way I was able to fully build on a 32-bit 10.6 machine was this

1. Delete ~/.ghc and ~/.cabal. They were full of random things and were causing problems.
2. `brew uninstall ghc and haskell-platform`
3. `brew update`
4. `brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2`
5. `brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2` (Some of these were already installed/up to date.
6. `brew link libxml2`
7. `brew install haskell-platform` (This takes a long, long time).
8. `cabal update` (assuming you have added `~/.cabal/bin` to your path
9. `cabal install cablal-install`
10. `cabal install c2hs`
11. `cabal install git-annex`

It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system. Thats also neat.

The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp: Running `git annex webapp` The browser starts up, and I get 3 of these errors: `Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents`

Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.

Also on a side note, when running `git annex webapp` it triggers the opening of an html file in whatever the default html file handler is. I edit a lot of html, so for me that is usually a text editor. I had to change the file handler to open html files with my web browser for the `git annex webapp` to actually work. Is there a way to change that so that `git annex webapp` uses the default web browser for the system rather than the default html file handler?

Comment by https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc — Tue Jul 22 18:11:47 2025
git annex on Snow Leopard

I'm having the same issue as @Pere, with a newer version of DAV :(

cabal: Error: some packages failed to install: DAV-0.3.1 failed during the building phase. The exception was: ExitFailure 11 git-annex-4.20130323 depends on shakespeare-css-1.0.3 which failed to install. persistent-1.1.5.1 failed during the building phase. The exception was: ExitFailure 11 persistent-template-1.1.3.1 depends on persistent-1.1.5.1 which failed to install. shakespeare-css-1.0.3 failed during the building phase. The exception was: ExitFailure 11 yesod-1.1.9.2 depends on shakespeare-css-1.0.3 which failed to install. yesod-auth-1.1.5.3 depends on shakespeare-css-1.0.3 which failed to install. yesod-core-1.1.8.2 depends on shakespeare-css-1.0.3 which failed to install. yesod-default-1.1.3.2 depends on shakespeare-css-1.0.3 which failed to install. yesod-form-1.2.1.3 depends on shakespeare-css-1.0.3 which failed to install. yesod-json-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install. yesod-persistent-1.1.0.1 depends on shakespeare-css-1.0.3 which failed to install. yesod-static-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.

Any ideas?

Comment by https://launchpad.net/~wincus — Tue Jul 22 18:11:47 2025
more homebrew

i had macports installed. then i installed brew, instaled haskell via brew. i needed to set PATH=$HOME/bin:/usr/local/bin:$PATH

Comment by https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM — Tue Jul 22 18:11:47 2025
comment 13
@eric `cabal update && cabal upgrade git-annex`
Comment by http://joeyh.name/ — Tue Jul 22 18:11:47 2025
git annex on Snow Leopard
Is there any way I can try to solve or by-pass the Segmentation Fault I commeted before?
Comment by https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0 — Tue Jul 22 18:11:47 2025
Updating to latest build
What is the appropriate way to update to the latest build of git-annex using cabal?
Comment by https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc — Tue Jul 22 18:11:47 2025
Segmentation Fault
I guess my adventure ends here. :'(
Comment by https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0 — Tue Jul 22 18:11:47 2025
Comments on this page are closed.