summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-09-07 14:54:00 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-09-07 14:54:00 -0400
commita8e05c8da1484b78860557344f37df07f7abc9fc (patch)
tree3c4e8ec98d9d6afc97dcca0dd3a835cd8e331b84
parent980e93ae0ed371c6a39795bbad8781c51a93b30f (diff)
add network-multicast to bulld depends
-rw-r--r--Makefile5
-rw-r--r--debian/control1
-rw-r--r--doc/design/assistant/pairing.mdwn22
-rw-r--r--doc/install.mdwn1
-rw-r--r--git-annex.cabal9
5 files changed, 31 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 24b9a2f28..b63714c12 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,10 @@ CFLAGS=-Wall
GIT_ANNEX_TMP_BUILD_DIR?=tmp
IGNORE=-ignore-package monads-fd -ignore-package monads-tf
BASEFLAGS=-threaded -Wall $(IGNORE) -outputdir $(GIT_ANNEX_TMP_BUILD_DIR) -IUtility
-FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP -DWITH_OLD_YESOD
+
+# If you get build failures due to missing haskell libraries,
+# you can turn off some of these features.
+FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP -DWITH_OLD_YESOD -DWITH_MULTICAST
bins=git-annex
mans=git-annex.1 git-annex-shell.1
diff --git a/debian/control b/debian/control
index 89ca89283..da7ab1e70 100644
--- a/debian/control
+++ b/debian/control
@@ -38,6 +38,7 @@ Build-Depends:
libghc-crypto-api-dev,
libghc-hamlet-dev,
libghc-clientsession-dev,
+ libghc-network-multicast-dev,
ikiwiki,
perlmagick,
git,
diff --git a/doc/design/assistant/pairing.mdwn b/doc/design/assistant/pairing.mdwn
index f33c5e11d..32815698c 100644
--- a/doc/design/assistant/pairing.mdwn
+++ b/doc/design/assistant/pairing.mdwn
@@ -3,11 +3,23 @@ have some way of pairing devices.
It could work like this:
-1. Prompt for the hostname (or do avahi local machine discovery).
-2. Enable the two hosts to ssh to one-another and run git-annex shell.
- (A tricky problem, if ssh keys need to be added to do that.)
-3. Push over a clone of the repository. (Using git-annex-shell?)
-4. Start [[syncing]].
+1. Prompt for the hostname, or do avahi local machine discovery, or use
+ ZeroMQ with IP multicast, or use haskell's `network-multicast`. That
+ last option seems to work best!
+2. Let user pick host to pair with. Somehow authenticate that this is
+ the host they expected to pair with, and not an imposter. Probably
+ have the users enter a shared secret and use it to HMAC the ssh public
+ keys.
+3. Exchange a hostname or IP address with the pair. Ideally,
+ use `.local`, as it'll work as long as both are on the same subnet.
+ If mDNS is not available, regular DNS or IP addresses might have
+ to be used, but will result in a more fragile pairing. Or perhaps
+ the assistant could broadcast itself queries for current IP addresses,
+ if connecting to a paired host fails.
+4. Enable the two hosts to ssh to one-another and run git-annex shell.
+ (Set up per-host ssh keys.)
+5. Pull over a clone of the repository.
+6. Start [[syncing]].
Also look into the method used by
<https://support.mozilla.org/en-US/kb/add-a-device-to-firefox-sync>
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 31a5b15d3..92b0897f4 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -65,6 +65,7 @@ libraries. To build and use git-annex by hand, you will need:
* [crypto-api](http://hackage.haskell.org/package/crypto-api)
* [hamlet](http://hackage.haskell.org/package/hamlet)
* [clientsession](http://hackage.haskell.org/package/clientsession)
+ * [network-multicast](http://hackage.haskell.org/package/network-multicast)
* Shell commands
* [git](http://git-scm.com/)
* [uuid](http://www.ossp.org/pkg/lib/uuid/)
diff --git a/git-annex.cabal b/git-annex.cabal
index dbe180657..4407be3c9 100644
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -40,6 +40,9 @@ Flag Assistant
Flag Webapp
Description: Enable git-annex webapp
+Flag Multicast
+ Description: Enable multicast pairing
+
Executable git-annex
Main-Is: git-annex.hs
Build-Depends: MissingH, hslogger, directory, filepath,
@@ -75,13 +78,17 @@ Executable git-annex
Build-Depends: dbus
CPP-Options: -DWITH_DBUS
- if flag(Webapp)
+ if flag(Webapp) && flag(Assistant)
Build-Depends: yesod, yesod-static, case-insensitive,
http-types, transformers, wai, wai-logger, warp, blaze-builder,
blaze-html, crypto-api, hamlet, clientsession,
template-haskell, yesod-default (>= 1.1.0), data-default
CPP-Options: -DWITH_WEBAPP
+ if flag(Multicast) && flag(Webapp)
+ Build-Depends: network-multicast
+ CPP-Options: -DWITH_MULTICAST
+
if os(darwin)
CPP-Options: -DOSX