From a9881b9d0b3b91c86c017b8538e4d15266eedf25 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 22 Sep 2013 13:03:34 -0400 Subject: [PATCH] new buildchroot script to automate android chroot setup --- doc/install/Android.mdwn | 18 ++++++++++------- standalone/android/buildchroot | 19 ++++++++++++++++++ standalone/android/buildchroot-inchroot | 20 +++++++++++++++++++ .../android/buildchroot-inchroot-asuser | 13 ++++++++++++ 4 files changed, 63 insertions(+), 7 deletions(-) create mode 100755 standalone/android/buildchroot create mode 100755 standalone/android/buildchroot-inchroot create mode 100755 standalone/android/buildchroot-inchroot-asuser diff --git a/doc/install/Android.mdwn b/doc/install/Android.mdwn index da5f6a6450..0b7fa25c7c 100644 --- a/doc/install/Android.mdwn +++ b/doc/install/Android.mdwn @@ -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 . - 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. diff --git a/standalone/android/buildchroot b/standalone/android/buildchroot new file mode 100755 index 0000000000..3f4c8eaa90 --- /dev/null +++ b/standalone/android/buildchroot @@ -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 diff --git a/standalone/android/buildchroot-inchroot b/standalone/android/buildchroot-inchroot new file mode 100755 index 0000000000..2de76fb861 --- /dev/null +++ b/standalone/android/buildchroot-inchroot @@ -0,0 +1,20 @@ +#!/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 +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 +su androidbuilder -c $0-asuser diff --git a/standalone/android/buildchroot-inchroot-asuser b/standalone/android/buildchroot-inchroot-asuser new file mode 100755 index 0000000000..a4467e66bc --- /dev/null +++ b/standalone/android/buildchroot-inchroot-asuser @@ -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