new buildchroot script to automate android chroot setup
This commit is contained in:
parent
cc71315c50
commit
a9881b9d0b
4 changed files with 63 additions and 7 deletions
|
@ -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
19
standalone/android/buildchroot
Executable 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
|
20
standalone/android/buildchroot-inchroot
Executable file
20
standalone/android/buildchroot-inchroot
Executable file
|
@ -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
|
13
standalone/android/buildchroot-inchroot-asuser
Executable file
13
standalone/android/buildchroot-inchroot-asuser
Executable 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
|
Loading…
Reference in a new issue