got XMPP building for Android

Also enable local pairing, which also builds now thanks to WebDAV
fixes to the haskell network library.
This commit is contained in:
Joey Hess 2013-04-21 19:10:23 -04:00
parent 8df5be7804
commit 4df9036fa2
6 changed files with 150 additions and 1 deletions

View file

@ -158,7 +158,7 @@ osxapp: Build/Standalone Build/OSXMkLibs
rm -f tmp/git-annex.dmg.bz2
bzip2 --fast tmp/git-annex.dmg
ANDROID_FLAGS=Assistant -Pairing -XMPP
ANDROID_FLAGS=
# Cross compile for Android.
# Uses https://github.com/neurocyte/ghc-android
android: Build/EvilSplicer

View file

@ -0,0 +1,35 @@
From c46af28d00a67d372bf59490d288c8cb77bae307 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Sun, 21 Apr 2013 17:14:03 -0400
Subject: [PATCH] statically link with gnutls
This requires libgnutls.a (and no .so) be installed in the ugly hardcoded
lib dir. When built this way, the haskell gnutls library will link the
library into executables with no further options.
Also includes dependencies of libgnutls (needed since it's a static
library).
---
gnutls.cabal | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gnutls.cabal b/gnutls.cabal
index a20e7ed..d8f4a1f 100644
--- a/gnutls.cabal
+++ b/gnutls.cabal
@@ -31,10 +31,11 @@ source-repository this
library
hs-source-dirs: lib
ghc-options: -Wall -O2
+ LD-Options: -L /home/joey/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/lib/ -lgcrypt -lgpg-error -lz
build-depends:
base >= 4.0 && < 5.0
- , bytestring >= 0.9
+ , bytestring >= 0.10.3.0
, transformers >= 0.2
, monads-tf >= 0.1 && < 0.2
--
1.7.10.4

View file

@ -0,0 +1,27 @@
From c7d39a8f91af93203194313195a79b04d80a16a3 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Sun, 21 Apr 2013 15:22:00 -0400
Subject: [PATCH] link with libgsasl
This requires libgsasl.a (and no .so) be installed in the ugly hardcoded
lib dir. When built this way, the haskell gsasl library will link the
library into executables with no further options.
---
gsasl.cabal | 1 +
1 file changed, 1 insertion(+)
diff --git a/gsasl.cabal b/gsasl.cabal
index c5c2b19..a31cc71 100644
--- a/gsasl.cabal
+++ b/gsasl.cabal
@@ -27,6 +27,7 @@ library
ghc-options: -Wall -O2
hs-source-dirs: lib
c-sources: cbits/hsgsasl-shim.c
+ LD-Options: -L /home/joey/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/lib/
build-depends:
base >= 4.0 && < 5.0
--
1.7.10.4

View file

@ -0,0 +1,27 @@
From 9d53e3fa4516a948a6e84987e9c1c9fd07f973bf Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Sun, 21 Apr 2013 15:44:51 -0400
Subject: [PATCH] static link with libxml2
This requires libxml2.a (and no .so) be installed in the ugly hardcoded
lib dir. When built this way, the haskell library will link the
C library into executables with no further options.
---
libxml-sax.cabal | 1 +
1 file changed, 1 insertion(+)
diff --git a/libxml-sax.cabal b/libxml-sax.cabal
index 5edfdb6..338bc55 100644
--- a/libxml-sax.cabal
+++ b/libxml-sax.cabal
@@ -31,6 +31,7 @@ library
hs-source-dirs: lib
ghc-options: -Wall -O2
cc-options: -Wall
+ LD-Options: -L /home/joey/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/lib/
build-depends:
base >= 4.1 && < 5.0
--
1.7.10.4

View file

@ -0,0 +1,60 @@
From d15ae2193eff9cd38ebce641279996233434b50f Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Sun, 21 Apr 2013 16:05:53 -0400
Subject: [PATCH] avoid using gnuidn
IDN is only used to handle the domain name part of a XMPP server JID.
Which seems not worth the bloat on Android.
---
lib/Network/Protocol/XMPP/JID.hs | 11 ++++-------
network-protocol-xmpp.cabal | 1 -
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/lib/Network/Protocol/XMPP/JID.hs b/lib/Network/Protocol/XMPP/JID.hs
index 91745e0..2a50409 100644
--- a/lib/Network/Protocol/XMPP/JID.hs
+++ b/lib/Network/Protocol/XMPP/JID.hs
@@ -29,7 +29,6 @@ module Network.Protocol.XMPP.JID
import qualified Data.Text
import Data.Text (Text)
-import qualified Data.Text.IDN.StringPrep as SP
import Data.String (IsString, fromString)
newtype Node = Node { strNode :: Text }
@@ -85,16 +84,14 @@ parseJID str = maybeJID where
then Just Nothing
else fmap Just (f x)
maybeJID = do
- preppedNode <- nullable node (stringprepM SP.xmppNode)
- preppedDomain <- stringprepM SP.nameprep domain
- preppedResource <- nullable resource (stringprepM SP.xmppResource)
+ preppedNode <- nullable node (stringprepM id)
+ preppedDomain <- stringprepM id domain
+ preppedResource <- nullable resource (stringprepM id)
return $ JID
(fmap Node preppedNode)
(Domain preppedDomain)
(fmap Resource preppedResource)
- stringprepM p x = case SP.stringprep p SP.defaultFlags x of
- Left _ -> Nothing
- Right y -> Just y
+ stringprepM p x = Just x
parseJID_ :: Text -> JID
parseJID_ text = case parseJID text of
diff --git a/network-protocol-xmpp.cabal b/network-protocol-xmpp.cabal
index 807cda9..3aaad67 100644
--- a/network-protocol-xmpp.cabal
+++ b/network-protocol-xmpp.cabal
@@ -30,7 +30,6 @@ library
build-depends:
base >= 4.0 && < 5.0
, bytestring >= 0.9
- , gnuidn >= 0.2 && < 0.3
, gnutls >= 0.1.4 && < 0.3
, gsasl >= 0.3 && < 0.4
, libxml-sax >= 0.7 && < 0.8
--
1.7.10.4

Binary file not shown.