This commit is contained in:
Joey Hess 2013-02-11 16:55:59 -04:00
parent a474688a3d
commit 573e15b1df

View file

@ -1,4 +1,4 @@
## goals ### goals
1. Get git-annex working at the command line in Android, 1. Get git-annex working at the command line in Android,
along with all the programs it needs. along with all the programs it needs.
@ -9,16 +9,22 @@ Current status: git-annex can be built for Android, with `make android`.
You need <https://github.com/neurocyte/ghc-android> installed first, You need <https://github.com/neurocyte/ghc-android> installed first,
and also have to `cabal install` all necessary dependencies. and also have to `cabal install` all necessary dependencies.
### programs to port ### TODO
These will probably need to be bundled into the Android app, unless already * port rsync
available in the App Store. * port busybox, so it doesn't need KBOX's busybox
* port gpg
* port ssh, so it doesn't need KBOX's version
(probably use dropbear, only outgoing is likely to work due to firewall)
* Make a runshell wrapper for Android, setting paths, etc.
* Build a standalone tarball for Android.
* Make build system that can generate ports, and tarball, from source
checkouts.
* ssh (native ssh needed for scp, not a client like ConnectBot) * git-annex sets `#!/bin/sh` in hook script, but that is not
* rsync a valid path on android, and the right path needs to be determined at runtime.
* gpg
* git (not all git commands are needed, * support Android lsof output in lsof parser, needed for watch mode
but core plumbing and a few like `git-add` are.)
### Android specific features ### Android specific features
@ -28,18 +34,18 @@ jobs when low on battery or run flat out when plugged in.
The app should be aware of network status, and avoid expensive data The app should be aware of network status, and avoid expensive data
transfers when not on wifi. This may need to be configurable. transfers when not on wifi. This may need to be configurable.
## FAT ### FAT
Due to use of the FAT filesystem, which doesn't do symlinks, [[desymlink]] Due to use of the FAT filesystem, which doesn't do symlinks, [[desymlink]]
is probably needed for at least older Android devices that have SD cards. is probably needed for at least older Android devices that have SD cards.
## Porting notes ### Porting notes
#### git
To build git, you can use the C cross compiler installed by ghc-android. To build git, you can use the C cross compiler installed by ghc-android.
I did so like this: I did so like this:
PATH=~/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:$PATH NO_OPENSSL=1 NO_GETTEXT=1 NO_GECOS_IN_PWENT=1 NO_GETPASS=1 NO_NSEC=1 NO_MKDTEMP=1 NO_PTHREADS=1 NO_PERL=1 NO_CURL=1 NO_EXPAT=1 NO_TCLTK=1 NO_ICONV=1 make PATH=~/.ghc/android-14/arm-linux-androideabi-4.7/bin:$PATH NO_OPENSSL=1 NO_GETTEXT=1 NO_GECOS_IN_PWENT=1 NO_GETPASS=1 NO_NSEC=1 NO_MKDTEMP=1 NO_PTHREADS=1 NO_PERL=1 NO_CURL=1 NO_EXPAT=1 NO_TCLTK=1 NO_ICONV=1 make
This required coping various directories from This required first making cc a symlink to arm-linux-androideabi-gcc
~/.ghc/android-14/arm-linux-androideabi-4.7/ into
~/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/