From 3ce6a17e562a63aeb0e7b1624229bbef123c3d61 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 21 Apr 2013 19:10:23 -0400 Subject: got XMPP building for Android Also enable local pairing, which also builds now thanks to WebDAV fixes to the haskell network library. --- Makefile | 2 +- ...ls-0.1.4-0001-statically-link-with-gnutls.patch | 35 ++++++++++++ .../gsasl-0.3.5-0001-link-with-libgsasl.patch | 27 ++++++++++ ...l-sax-0.7.3-0001-static-link-with-libxml2.patch | 27 ++++++++++ ...otocol-xmpp-0.4.4-0001-avoid-using-gnuidn.patch | 60 +++++++++++++++++++++ standalone/licences.gz | Bin 59505 -> 59934 bytes 6 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 standalone/android/haskell-patches/gnutls-0.1.4-0001-statically-link-with-gnutls.patch create mode 100644 standalone/android/haskell-patches/gsasl-0.3.5-0001-link-with-libgsasl.patch create mode 100644 standalone/android/haskell-patches/libxml-sax-0.7.3-0001-static-link-with-libxml2.patch create mode 100644 standalone/android/haskell-patches/network-protocol-xmpp-0.4.4-0001-avoid-using-gnuidn.patch diff --git a/Makefile b/Makefile index 76722179d..ec0891504 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/standalone/android/haskell-patches/gnutls-0.1.4-0001-statically-link-with-gnutls.patch b/standalone/android/haskell-patches/gnutls-0.1.4-0001-statically-link-with-gnutls.patch new file mode 100644 index 000000000..6c4ae0c63 --- /dev/null +++ b/standalone/android/haskell-patches/gnutls-0.1.4-0001-statically-link-with-gnutls.patch @@ -0,0 +1,35 @@ +From c46af28d00a67d372bf59490d288c8cb77bae307 Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 + diff --git a/standalone/android/haskell-patches/gsasl-0.3.5-0001-link-with-libgsasl.patch b/standalone/android/haskell-patches/gsasl-0.3.5-0001-link-with-libgsasl.patch new file mode 100644 index 000000000..05495a320 --- /dev/null +++ b/standalone/android/haskell-patches/gsasl-0.3.5-0001-link-with-libgsasl.patch @@ -0,0 +1,27 @@ +From c7d39a8f91af93203194313195a79b04d80a16a3 Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 + diff --git a/standalone/android/haskell-patches/libxml-sax-0.7.3-0001-static-link-with-libxml2.patch b/standalone/android/haskell-patches/libxml-sax-0.7.3-0001-static-link-with-libxml2.patch new file mode 100644 index 000000000..752f601cc --- /dev/null +++ b/standalone/android/haskell-patches/libxml-sax-0.7.3-0001-static-link-with-libxml2.patch @@ -0,0 +1,27 @@ +From 9d53e3fa4516a948a6e84987e9c1c9fd07f973bf Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 + diff --git a/standalone/android/haskell-patches/network-protocol-xmpp-0.4.4-0001-avoid-using-gnuidn.patch b/standalone/android/haskell-patches/network-protocol-xmpp-0.4.4-0001-avoid-using-gnuidn.patch new file mode 100644 index 000000000..26734fa70 --- /dev/null +++ b/standalone/android/haskell-patches/network-protocol-xmpp-0.4.4-0001-avoid-using-gnuidn.patch @@ -0,0 +1,60 @@ +From d15ae2193eff9cd38ebce641279996233434b50f Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 + diff --git a/standalone/licences.gz b/standalone/licences.gz index 032bee9be..c2f026b38 100644 Binary files a/standalone/licences.gz and b/standalone/licences.gz differ -- cgit v1.2.3