You may have found something you are happy with now but I have compiled a binary of unison that works on android - it is possible using the hand-waving instructions you are talking about - I used them to cross-compile the linux source within ubuntu 12.10 using the android NDK and with a few alterations to the code it is now working. Follow the instructions at https://sites.google.com/site/keigoattic/ocaml-on-android and then you will need to do a few things. There is a file called pty.c in the unison source - find the following section:
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
and comment out define HAS_OPENPTY 1
as shown. You also need to open ubase/util.ml and edit:
let homeDir () =
System.fspathFromString "/Your path here"
Comment out from here:
(if (osType = `Unix) || isCygwin then
safeGetenv "HOME"
else if osType = `Win32 then
(*We don't want the behavior of Unison to depends on whether it is run
from a Cygwin shell (where HOME is set) or in any other way (where
HOME is usually not set)
try System.getenv "HOME" (* Windows 9x with Cygwin HOME set *)
with Not_found ->
*)
try System.getenv "USERPROFILE" (* Windows NT/2K standard *)
with Not_found ->
try System.getenv "UNISON" (* Use UNISON dir if it is set *)
with Not_found ->
"c:/" (* Default *)
else
assert false (* osType can't be anything else *))
...To here!
Then you'll also have to edit Makefile.Ocaml
CWD=$(shell pwd)
EXEC_EXT=
WINOBJS=
SYSTEM=generic
# openpty is in the libutil library
ifneq ($(OSARCH),solaris)
ifneq ($(OSARCH),osx)
# CLIBS+=-cclib -lutil
endif
endif
buildexecutable::
@echo Building for Unix
endif
endif
And comment out # CLIBS+=-cclib -lutil
as shown.
And as far as I can remember that all worked. The other step once compiled is to mount your android system partition as writable and copy unison to the /system folder where all the rest of the shell commands are.
Hope that is helpful to someone...I lost a lot of sleep getting it compiled.