Fam Zheng <f...@redhat.com> writes: > Signed-off-by: Fam Zheng <f...@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