[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v4 4/4] docker: Add debootstrap-arm image
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH RFC v4 4/4] docker: Add debootstrap-arm image |
Date: |
Tue, 12 Jul 2016 09:40:35 +0800 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Mon, 07/11 20:06, Alex Bennée wrote:
>
> Fam Zheng <address@hidden> writes:
>
> > Signed-off-by: Fam Zheng <address@hidden>
> > ---
> > 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?
Yes, makes sense to me. Two more questions:
Can we have "make docker-images" to update the docker image if pre script has
been updated?
Can we skip debootstrap (i.e. skip .pre script) if it's only the dockerfile
that has changed?
Thanks,
Fam
Re: [Qemu-devel] [PATCH RFC v4 0/4] docker: Support building qemu-user powered docker test images, Alex Bennée, 2016/07/11