Fam Zheng <f...@redhat.com> writes: > This allows a docker file to say "ENV QEMU_CHROOT /path/to/new/root" to > indicate that the test execution should be done in a chroot in the > container. > > Bind mount dev,sys,proc into QEMU_CHROOT to make them avaiable for > testing scripts. > > The SYS_ADMIN is a required capability for mount, add it to the > docker run command line. > > Signed-off-by: Fam Zheng <f...@redhat.com> > --- > tests/docker/Makefile.include | 1 + > tests/docker/run | 12 ++++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include > index c5546ee..e9821ba 100644 > --- a/tests/docker/Makefile.include > +++ b/tests/docker/Makefile.include > @@ -107,6 +107,7 @@ docker-run-%: docker-qemu-src > $(call quiet-command,\ > $(SRC_PATH)/tests/docker/docker.py run $(if $V,,--rm) \ > -t \ > + --cap-add SYS_ADMIN \ > $(if $(DEBUG),-i,--net=none) \ > -e TARGET_LIST=$(TARGET_LIST) \ > -e EXTRA_CONFIGURE_OPTS=$(EXTRA_CONFIGURE_OPTS) > \ > diff --git a/tests/docker/run b/tests/docker/run > index 38ce789..4e80cc3 100755 > --- a/tests/docker/run > +++ b/tests/docker/run > @@ -19,6 +19,18 @@ fi > > BASE="$(dirname $(realpath $0))" > > +# cp files into the chroot and execute there > +if test -n "$QEMU_CHROOT"; then > + mkdir -p $QEMU_CHROOT/$BASE > + cp $BASE/* $QEMU_CHROOT/$BASE > + QEMU_CHROOT_SAVE="$QEMU_CHROOT" > + for bp in dev sys proc; do > + mount --bind /$bp $QEMU_CHROOT/$bp > + done > + QEMU_CHROOT="" chroot $QEMU_CHROOT_SAVE $BASE/run "$@" > + exit 0 > +fi > +
Running: make docker-test TEST="test-quick" IMAGES="debootstrap-arm" V=1 J=9 Hmm another failure: Image is up to date. /home/alex/lsrc/qemu/qemu.git/tests/docker/docker.py run -t --cap-add SYS_ADMIN --net=none -e TARGET_LIST= -e EXTRA_CONFIGURE_OPTS= -e V=1 -e J=9 -e DEBUG= -e CCACHE_DIR=/var/tmp/ccache -v $(realpath docker-src.2016-07-11-13.16.09.23334):/var/tmp/qemu:z,ro -v $HOME/.cache/qemu-docker-ccache:/var/tmp/ccache:z qemu:debootstrap-arm /var/tmp/qemu/run test-clang; +++ realpath /var/tmp/qemu/run ++ dirname /var/tmp/qemu/run + BASE=/var/tmp/qemu + test -n /debootstrap-arm + mkdir -p /debootstrap-arm//var/tmp/qemu + cp /var/tmp/qemu/dtc.tgz /var/tmp/qemu/pixman.tgz /var/tmp/qemu/qemu.tgz /var/tmp/qemu/run /debootstrap-arm//var/tmp/qemu + QEMU_CHROOT_SAVE=/debootstrap-arm + for bp in dev sys proc + mount --bind /dev /debootstrap-arm/dev mount: mount /dev on /debootstrap-arm/dev failed: Permission denied /home/alex/lsrc/qemu/qemu.git/tests/docker/Makefile.include:102: recipe for target 'docker-run-test-clang@debootstrap-arm' failed make: *** [docker-run-test-clang@debootstrap-arm] Error 32 You have new mail in /var/mail/alex > # Prepare the environment > . /etc/profile || true > export PATH=/usr/lib/ccache:$PATH -- Alex Bennée