From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCO5C-0005sF-ET for qemu-devel@nongnu.org; Mon, 13 Jun 2016 05:22:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCO57-0006My-8l for qemu-devel@nongnu.org; Mon, 13 Jun 2016 05:22:57 -0400 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:37107) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCO56-0006Mi-UQ for qemu-devel@nongnu.org; Mon, 13 Jun 2016 05:22:53 -0400 Received: by mail-wm0-x233.google.com with SMTP id k204so70393417wmk.0 for ; Mon, 13 Jun 2016 02:22:52 -0700 (PDT) From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <20160612070500.GN27167@ad.usersys.redhat.com> Date: Mon, 13 Jun 2016 10:23:14 +0100 Message-ID: <87k2ht788t.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2 3/3] add debian-bootstrap.docker target (and pre script) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: qemu-devel@nongnu.org, riku.voipio@linaro.org Fam Zheng 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 >> >> --- >> 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