[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/3] add debian-bootstrap.docker target (and
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/3] add debian-bootstrap.docker target (and pre script) |
Date: |
Mon, 13 Jun 2016 10:23:14 +0100 |
User-agent: |
mu4e 0.9.17; emacs 25.0.95.1 |
Fam Zheng <address@hidden> writes:
> On Wed, 06/08 17:35, Alex Bennée wrote:
>> Together with the debian-bootstrap.pre script can now build an arbitrary
>> architecture of Debian using debootstrap. The docker script will now
>> search for an associated $dockerfile.pre script which gets run in the
>> same build context as the dockerfile will be. This allows debootstrap to
>> set up its first stage before the container is built.
>>
>> To build a container you need a command line like:
>>
>> DEB_ARCH=armhf DEB_TYPE=testing \
>> ./tests/docker/docker.py build \
>> --include-executable=arm-linux-user/qemu-arm debian:armhf \
>> ./tests/docker/dockerfiles/debian-bootstrap.docker
>>
>> Signed-off-by: Alex Bennée <address@hidden>
>>
>> ---
>> v2
>> - use .pre script instead of embedded HOST_CMD
>> - make default image include all QEMU build-deps
>> ---
>> tests/docker/docker.py | 5 +++++
>
> Could you split the docker.py into a separate patch?
Sure.
>
>> tests/docker/dockerfiles/debian-bootstrap.docker | 21 +++++++++++++++++++++
>> tests/docker/dockerfiles/debian-bootstrap.pre | 5 +++++
>> 3 files changed, 31 insertions(+)
>> create mode 100644 tests/docker/dockerfiles/debian-bootstrap.docker
>> create mode 100755 tests/docker/dockerfiles/debian-bootstrap.pre
>>
>> diff --git a/tests/docker/docker.py b/tests/docker/docker.py
>> index ed6fa45..43041eb 100755
>> --- a/tests/docker/docker.py
>> +++ b/tests/docker/docker.py
>> @@ -205,6 +205,11 @@ class BuildCommand(SubCommand):
>> # Create a docker context directory for the build
>> docker_dir = tempfile.mkdtemp(prefix="docker_build")
>>
>> + # Is there a .pre file to run in the build context?
>> + docker_pre = os.path.splitext(args.dockerfile)[0]+".pre"
>> + if os.path.exists(docker_pre):
>> + subprocess.call(os.path.realpath(docker_pre),
>> cwd=docker_dir)
>
> We should probably abort here if exit code is non-zero. Use
> subprocess.check_call?
OK.
>
> Fam
>
>> +
>> # Do we include a extra binary?
>> if args.include_executable:
>> _copy_binary_with_libs(args.include_executable,
>> diff --git a/tests/docker/dockerfiles/debian-bootstrap.docker
>> b/tests/docker/dockerfiles/debian-bootstrap.docker
>> new file mode 100644
>> index 0000000..3a9125e
>> --- /dev/null
>> +++ b/tests/docker/dockerfiles/debian-bootstrap.docker
>> @@ -0,0 +1,21 @@
>> +# Create Debian Bootstrap Image
>> +#
>> +# This is intended to be pre-poluated by:
>> +# - a first stage debootstrap (see debian-bootstrap.pre)
>> +# - a native qemu-$arch that binfmt_misc will run
>> +FROM scratch
>> +
>> +# Add everything from the context into the container
>> +ADD . /
>> +
>> +# Patch all mounts as docker already has stuff set up
>> +RUN sed -i 's/in_target mount/echo not for docker in_target mount/g'
>> /debootstrap/functions
>> +
>> +# Run stage 2
>> +RUN /debootstrap/debootstrap --second-stage
>> +
>> +# At this point we can install additional packages if we want
>> +# Duplicate deb line as deb-src
>> +RUN cat /etc/apt/sources.list | sed "s/deb/deb-src/" >>
>> /etc/apt/sources.list
>> +RUN apt-get update
>> +RUN apt-get -y build-dep qemu
>> diff --git a/tests/docker/dockerfiles/debian-bootstrap.pre
>> b/tests/docker/dockerfiles/debian-bootstrap.pre
>> new file mode 100755
>> index 0000000..6f42da6
>> --- /dev/null
>> +++ b/tests/docker/dockerfiles/debian-bootstrap.pre
>> @@ -0,0 +1,5 @@
>> +#!/bin/sh
>> +#
>> +# Simple wrapper for debootstrap, run in the docker build context
>> +#
>> +fakeroot debootstrap --variant=buildd --foreign --arch=$DEB_ARCH $DEB_TYPE
>> . http://httpredir.debian.org/debian
>> --
>> 2.7.4
>>
--
Alex Bennée