Fam Zheng <f...@redhat.com> 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 <alex.ben...@linaro.org> >> >> --- >> 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