qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Fam Zheng <famz@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH RFC v4 4/4] docker: Add debootstrap-arm image
Date: Mon, 11 Jul 2016 20:06:38 +0100	[thread overview]
Message-ID: <87mvlo570h.fsf@linaro.org> (raw)
In-Reply-To: <1468207242-5015-5-git-send-email-famz@redhat.com>


Fam Zheng <famz@redhat.com> writes:

> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/docker/dockerfiles/debootstrap-arm.docker | 35 +++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>  create mode 100644 tests/docker/dockerfiles/debootstrap-arm.docker
>
> diff --git a/tests/docker/dockerfiles/debootstrap-arm.docker b/tests/docker/dockerfiles/debootstrap-arm.docker
> new file mode 100644
> index 0000000..cb15f2f
> --- /dev/null
> +++ b/tests/docker/dockerfiles/debootstrap-arm.docker
> @@ -0,0 +1,35 @@
> +FROM debian:testing
> +
> +RUN apt-get update
> +RUN apt-get install -y fakeroot debootstrap qemu-user-static
> +
> +RUN mkdir /debootstrap-arm
> +
> +RUN cd /debootstrap-arm && fakeroot debootstrap --variant=buildd --foreign \
> +    --arch=armhf testing . http://httpredir.debian.org/debian
> +
> +RUN sed -i 's/in_target mount/echo not for docker in_target mount/g' \
> +    /debootstrap-arm/debootstrap/functions
> +
> +RUN mkdir -p /debootstrap-arm/usr/local/bin
> +
> +RUN ln /usr/bin/qemu-arm-static /debootstrap-arm/usr/bin/qemu-arm && \
> +    ln /usr/bin/qemu-arm-static /debootstrap-arm/usr/bin/qemu-arm-static && \
> +    ln /usr/bin/qemu-arm-static /debootstrap-arm/usr/local/bin/qemu-arm && \
> +    ln /usr/bin/qemu-arm-static /debootstrap-arm/usr/local/bin/qemu-arm-static
> +
> +# Run stage 2
> +RUN if ! chroot /debootstrap-arm /debootstrap/debootstrap --second-stage; then \
> +        echo "Failed to chroot and do stage 2"; \
> +        echo "Please set up binfmt_misc to point arm binary to one of:"; \
> +        echo "  /usr/bin/qemu-arm"; \
> +        echo "  /usr/bin/qemu-arm-static"; \
> +        echo "  /usr/local/bin/qemu-arm"; \
> +        echo "  /usr/local/bin/qemu-arm-static"; \
> +        exit 1; \
> +    fi
> +RUN chroot /debootstrap-arm sh -c 'cat /etc/apt/sources.list | sed "s/deb/deb-src/" >> /etc/apt/sources.list'
> +RUN chroot /debootstrap-arm apt-get update
> +RUN chroot /debootstrap-arm apt-get build-dep -y qemu
> +RUN chroot /debootstrap-arm apt-get install -y ccache
> +ENV QEMU_CHROOT /debootstrap-arm

OK I've done some more experimenting and two things are apparent:

  debootstrap is widely packaged for various distros

And

  The script it fairly portable so we can always run it directly

I hacked up the .pre script to do the following and tested on my Arch
VM:

#!/bin/sh
#
# Simple wrapper for debootstrap, run in the docker build context
#
FAKEROOT=`which fakeroot 2> /dev/null`
DEBOOTSTRAP=`which debootstrap 2> /dev/null`
DEBOOTSTRAP_SOURCE=https://anonscm.debian.org/git/d-i/debootstrap.git

if [ -z $FAKEROOT ]; then
    echo "Please install fakeroot to enable bootstraping"
    exit 1
fi

if [ -z $DEBOOTSTRAP ]; then
    echo "No debootstrap installed, attempting to install from SCM"
    git clone ${DEBOOTSTRAP_SOURCE} ./debootstrap.git
    export DEBOOTSTRAP_DIR=./debootstrap.git
    DEBOOTSTRAP=./debootstrap.git/debootstrap
fi

echo "Building a rootfs using ${FAKEROOT} and ${DEBOOTSTRAP}"

${FAKEROOT} /bin/sh -x ${DEBOOTSTRAP} --variant=buildd --foreign --arch=$DEB_ARCH $DEB_TYPE . http://httpredir.debian.org/debian
exit 0

So I think it is feasible to but the pre-requisite checking and work
around in the pre script and be done with it. It seems neater than the
chroot within a container approach.

Thoughts?

--
Alex Bennée

  reply	other threads:[~2016-07-11 19:06 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-11  3:20 [Qemu-devel] [PATCH RFC v4 0/4] docker: Support building qemu-user powered docker test images Fam Zheng
2016-07-11  3:20 ` [Qemu-devel] [PATCH RFC v4 1/4] docker: More sensible run script Fam Zheng
2016-07-11  3:20 ` [Qemu-devel] [PATCH RFC v4 2/4] docker: Fix exit code if $CMD failed Fam Zheng
2016-07-11 12:58   ` Eric Blake
2016-07-11  3:20 ` [Qemu-devel] [PATCH RFC v4 3/4] docker: Support "QEMU_CHROOT" in dockerfiles Fam Zheng
2016-07-11  9:20   ` Paolo Bonzini
2016-07-11 10:08     ` Alex Bennée
2016-07-11 10:37       ` Paolo Bonzini
2016-07-11 11:31   ` Alex Bennée
2016-07-11 12:17   ` Alex Bennée
2016-07-11  3:20 ` [Qemu-devel] [PATCH RFC v4 4/4] docker: Add debootstrap-arm image Fam Zheng
2016-07-11 19:06   ` Alex Bennée [this message]
2016-07-12  1:40     ` Fam Zheng
2016-07-12 14:16       ` Alex Bennée
2016-07-11  9:09 ` [Qemu-devel] [PATCH RFC v4 0/4] docker: Support building qemu-user powered docker test images Alex Bennée
2016-08-22  9:32 ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mvlo570h.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=famz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).