Merge branch 'android-rebuild' of git://git-annex.branchable.com into android-rebuild

This commit is contained in:
Joey Hess 2013-09-22 19:14:10 +01:00
commit 9a295c0653
4 changed files with 67 additions and 7 deletions

View file

@ -19,14 +19,18 @@ of Bath CS department.
## building it yourself
git-annex can be built for Android, with `make android`. It's not an easy
process:
git-annex can be built from source for Android.
1. Run `standalone/android/buildchroot` as root (requires debootstrap).
This builds a chroot with an `androidbuilder` user.
The rest of the build will run in this chroot as that user.
2. Then run `standalone/android/install-haskell-packages`
Note that this will break from time to time as new versions of packages
are released, and the patches it applies have to be updated when
this happens.
3. Finally, once the chroot is set up, you can build an Android binary
with `make android`, and `make androidapp` will build the complete APK.
* First, install <https://github.com/joeyh/ghc-android>.
The easiest way is to follow the instructions at the end of its README.md
to install in a Debian stable chroot.
* In git-annex's `standalone/android/` directory, run
`./install-haskell-packages native && ./install-haskell-packages cross`
* You will need to have the Android SDK and NDK installed; see
`standalone/android/Makefile` to configure the paths to them. You'll also
need ant, and the JDK.

19
standalone/android/buildchroot Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
set -e
if [ "$(whoami)" != root ]; then
echo "Must run this as root!" >&2
exit 1
fi
debootstrap --arch=i386 stable debian-stable-android
cp $0-inchroot debian-stable-android/tmp
cp $0-inchroot-asuser debian-stable-android/tmp
chroot debian-stable-android "tmp/$(basename $0)-inchroot"
echo
echo
echo "debian-stable-android is set up, with a user androidbuilder"
echo "your next step is probably to check out git-annex in this chroot"
echo "and run standalone/android/install-haskell-packages"
echo
echo

View file

@ -0,0 +1,24 @@
#!/bin/sh
# Runs inside the chroot set up by buildchroot
set -e
if [ "$(whoami)" != root ]; then
echo "Must run this as root!" >&2
exit 1
fi
mount -t proc proc /proc
echo "deb-src http://ftp.us.debian.org/debian stable main" >> /etc/apt/sources.list
apt-get update
apt-get -y install build-essential ghc git libncurses5-dev cabal-install
apt-get -y install llvm-3.0 # not 3.1; buggy on arm. 3.2 is ok too
apt-get -y install ca-certificates curl file m4 autoconf zlib1g-dev
apt-get -y install libgnutls-dev libxml2-dev libgsasl7-dev pkg-config c2hs
apt-get clean
wget http://snapshot.debian.org/archive/debian/20130903T155330Z/pool/main/a/automake-1.14/automake_1.14-1_all.deb
dpkg -i automake*.deb
rm *.deb
useradd androidbuilder --create-home
su androidbuilder -c $0-asuser
umount /proc

View file

@ -0,0 +1,13 @@
#!/bin/sh
# Runs inside the chroot set up by buildchroot, as the user it creates
set -e
rm -rf .ghc .cabal
cabal update
cabal install happy alex --bindir=$HOME/bin
PATH=$HOME/bin:$PATH
export PATH
git clone https://github.com/joeyh/ghc-android
cd ghc-android
git checkout stable-ghc-snapshot
./build