Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,6 @@ COPY ssh_config /root/.ssh/config
# considered to be ephemeral
VOLUME ["/tmp/ccache", "/aosp"]

# Improve rebuild performance by enabling compiler cache
ENV USE_CCACHE 1
ENV CCACHE_DIR /tmp/ccache

# Work in the build directory, repo is expected to be init'd here
WORKDIR /aosp

Expand Down
41 changes: 35 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ For the terribly impatient.
5. In parallel you are expected to be drinking because I save you some time.


mkdir kitkat ; cd kitkat
mkdir marshmallow ; cd marshmallow
export AOSP_VOL=$PWD
curl -O https://raw.githubusercontent.com/kylemanna/docker-aosp/master/tests/build-kitkat.sh
bash ./build-kitkat.sh
curl -O https://raw.githubusercontent.com/kylemanna/docker-aosp/master/tests/build-marshmallow.sh
bash ./build-marshmallow.sh

How it Works
------------
Expand All @@ -70,12 +70,41 @@ Docker container. For example to run `repo sync` in the Docker container:

The `aosp` wrapper doesn't work well with setting up environments, but with
some bash magic, this can be side stepped with short little scripts. See
`tests/build-kitkat.sh` for an example of a complete fetch and build of AOSP.
`tests/build-marshmallow.sh` for an example of a complete fetch and build of AOSP.

[Docker Compose][]
------

A [Docker Compose][] file is provided in the root of this repository, you can tweak it as need be:

```yaml
version: "2"

services:
aosp:
image: kylemanna/aosp:6.0-marshmallow
volumes:
- /tmp/ccache:/ccache
- ~/aosp:/aosp
```
Example run: `docker-compose run --rm aosp repo sync -j4` -- your android build directory will be in `~/aosp`.

Issues
------

There are some known issues with using Docker Toolbox on macOS and current
virtualization technologies resulting in unusual user ID assignments and very
poor performing virtualization file sharing implementations with things like
VirtualBox. It's recommended to run this image completely in a virtual machine
with enough space to fit the entire build (80GB+) as opposed to mapping the
build to the local macOS file system via VirtualBox or similar.

Tested
------

* Android Kitkat `android-4.4.4_r2.0.1`
* Android KitKat `android-4.4.4_r2.0.1`
* Android Lollipop `android-5.0.2_r1`
* Android Marshmallow `android-6.0.1_r72`
* Android Marshmallow `android-6.0.1_r80`
* Android Nougat `android-7.0.0_r14`

[Docker Compose]: https://docs.docker.com/compose
9 changes: 9 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "2"

services:
aosp:
image: kylemanna/aosp:6.0-marshmallow
volumes:
- ~/aosp/ccache:/tmp/ccache
- ~/aosp:/aosp
- ~/.gitconfig:/root/.gitconfig
2 changes: 1 addition & 1 deletion tests/build-marshmallow.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
set -ex

if [ "$1" = "docker" ]; then
TEST_BRANCH=${TEST_BRANCH:-android-6.0.1_r72}
TEST_BRANCH=${TEST_BRANCH:-android-6.0.1_r80}
TEST_URL=${TEST_URL:-https://android.googlesource.com/platform/manifest}

cpus=$(grep ^processor /proc/cpuinfo | wc -l)
Expand Down
4 changes: 4 additions & 0 deletions utils/docker_entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ set -e
if [ -z ${USER_ID+x} ]; then USER_ID=1000; fi
if [ -z ${GROUP_ID+x} ]; then GROUP_ID=1000; fi

# ccache
export CCACHE_DIR=/tmp/ccache
export USE_CCACHE=1

msg="docker_entrypoint: Creating user UID/GID [$USER_ID/$GROUP_ID]" && echo $msg
groupadd -g $GROUP_ID -r aosp && \
useradd -u $USER_ID --create-home -r -g aosp aosp
Expand Down