diff --git a/Dockerfile b/Dockerfile index c238644..c5d5570 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/README.md b/README.md index c24c831..5aca5c2 100644 --- a/README.md +++ b/README.md @@ -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 ------------ @@ -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 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d7bef62 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: "2" + +services: + aosp: + image: kylemanna/aosp:6.0-marshmallow + volumes: + - ~/aosp/ccache:/tmp/ccache + - ~/aosp:/aosp + - ~/.gitconfig:/root/.gitconfig diff --git a/tests/build-marshmallow.sh b/tests/build-marshmallow.sh index 7507097..38c1cc3 100755 --- a/tests/build-marshmallow.sh +++ b/tests/build-marshmallow.sh @@ -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) diff --git a/utils/docker_entrypoint.sh b/utils/docker_entrypoint.sh index a607159..f40c609 100755 --- a/utils/docker_entrypoint.sh +++ b/utils/docker_entrypoint.sh @@ -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