From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52106) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bvxGh-0003tv-Qa for qemu-devel@nongnu.org; Sun, 16 Oct 2016 22:03:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bvxGe-0003aQ-JR for qemu-devel@nongnu.org; Sun, 16 Oct 2016 22:03:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38426) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bvxGe-0003aB-Bl for qemu-devel@nongnu.org; Sun, 16 Oct 2016 22:03:08 -0400 Date: Mon, 17 Oct 2016 10:03:04 +0800 From: Fam Zheng Message-ID: <20161017020304.GB16588@lemon> References: <1476458957-12856-1-git-send-email-famz@redhat.com> <1476458957-12856-5-git-send-email-famz@redhat.com> <708bf751-35b6-330e-7c9c-72e7d8741fdd@redhat.com> <87wph91xee.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <87wph91xee.fsf@linaro.org> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PULL 4/4] tests/docker/Makefile.include: add a generic docker-run target List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alex =?iso-8859-1?Q?Benn=E9e?= Cc: Paolo Bonzini , qemu-devel@nongnu.org, Peter Maydell On Sat, 10/15 15:48, Alex Benn=E9e wrote: >=20 > Paolo Bonzini writes: >=20 > > On 14/10/2016 17:29, Fam Zheng wrote: > >> From: Alex Benn=E9e > >> > >> This re-factors the docker makefile to include a docker-run target w= hich > >> can be controlled entirely from environment variables specified on t= he > >> make command line. This allows us to run against any given docker im= age > >> we may have in our repository, for example: > >> > >> make docker-run TEST=3D"test-quick" IMAGE=3D"debian:arm64" \ > >> EXECUTABLE=3D./aarch64-linux-user/qemu-aarch64 > >> > >> The existing docker-foo@bar targets still work but the inline > >> verification has been dropped because we already don't hit that due = to > >> other pattern rules in rules.mak. > >> > >> Signed-off-by: Alex Benn=E9e > >> > >> Message-Id: <20161011161625.9070-5-alex.bennee@linaro.org> > >> Message-Id: <20161011161625.9070-6-alex.bennee@linaro.org> > >> [Squash in the verification removal patch. - Fam] > >> Signed-off-by: Fam Zheng > >> --- > >> tests/docker/Makefile.include | 61 +++++++++++++++++++++++++++-----= ----------- > >> 1 file changed, 38 insertions(+), 23 deletions(-) > >> > >> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.i= nclude > >> index b44daab..925f711 100644 > >> --- a/tests/docker/Makefile.include > >> +++ b/tests/docker/Makefile.include > >> @@ -78,6 +78,7 @@ docker: > >> @echo ' "IMAGE" is one of the listed conta= iner name."' > >> @echo ' docker-image: Build all images.' > >> @echo ' docker-image-IMAGE: Build image "IMAGE".' > >> + @echo ' docker-run: For manually running a "TEST" with= "IMAGE"' > >> @echo > >> @echo 'Available container images:' > >> @echo ' $(DOCKER_IMAGES)' > >> @@ -101,31 +102,45 @@ docker: > >> @echo ' NOCACHE=3D1 Ignore cache when build images.' > >> @echo ' EXECUTABLE=3D Include executable in image.' > >> > >> +# This rule if for directly running against an arbitrary docker tar= get. > >> +# It is called by the expanded docker targets (e.g. make > >> +# docker-test-foo@bar) which will do additional verification. > >> +# > >> +# For example: make docker-run TEST=3D"test-quick" IMAGE=3D"debian:= arm64" EXECUTABLE=3D./aarch64-linux-user/qemu-aarch64 > >> +# > >> +docker-run: docker-qemu-src > >> + @mkdir -p "$(DOCKER_CCACHE_DIR)" > >> + @if test -z "$(IMAGE)" || test -z "$(TEST)"; \ > >> + then echo "Invalid target $(IMAGE)/$(TEST)"; exit 1; \ > >> + fi > >> + $(if $(EXECUTABLE), \ > >> + $(call quiet-command, \ > >> + $(SRC_PATH)/tests/docker/docker.py update \ > >> + $(IMAGE) $(EXECUTABLE), \ > >> + " COPYING $(EXECUTABLE) to $(IMAGE)")) > >> + $(call quiet-command, \ > >> + $(SRC_PATH)/tests/docker/docker.py run \ > >> + -t \ > >> + $(if $V,,--rm) \ > >> + $(if $(DEBUG),-i,--net=3Dnone) \ > >> + -e TARGET_LIST=3D$(TARGET_LIST) \ > >> + -e EXTRA_CONFIGURE_OPTS=3D"$(EXTRA_CONFIGURE_OPTS)" \ > >> + -e V=3D$V -e J=3D$J -e DEBUG=3D$(DEBUG) \ > >> + -e SHOW_ENV=3D$(SHOW_ENV) \ > >> + -e CCACHE_DIR=3D/var/tmp/ccache \ > >> + -v $$(readlink -e $(DOCKER_SRC_COPY)):/var/tmp/qemu:z$(COMMA)ro = \ > >> + -v $(DOCKER_CCACHE_DIR):/var/tmp/ccache:z \ > >> + $(IMAGE) \ > >> + /var/tmp/qemu/run \ > >> + $(TEST), " RUN $(TEST) in ${IMAGE}") > >> + > >> +# Run targets: > >> +# > >> +# Of the form docker-TEST-FOO@IMAGE-BAR which will then be expanded= into a call to "make docker-run" > >> docker-run-%: CMD =3D $(shell echo '$@' | sed -e 's/docker-run-\([^= @]*\)@\(.*\)/\1/') > >> docker-run-%: IMAGE =3D $(shell echo '$@' | sed -e 's/docker-run-\(= [^@]*\)@\(.*\)/\2/') > >> -docker-run-%: docker-qemu-src > >> - @mkdir -p "$(DOCKER_CCACHE_DIR)" > >> - @if test -z "$(IMAGE)" || test -z "$(CMD)"; \ > >> - then echo "Invalid target"; exit 1; \ > >> - fi > >> - $(if $(filter $(TESTS),$(CMD)),$(if $(filter $(IMAGES),$(IMAGE)), = \ > >> - $(call quiet-command,\ > >> - if $(SRC_PATH)/tests/docker/docker.py images | \ > >> - awk '$$1=3D=3D"qemu" && $$2=3D=3D"$(IMAGE)"{found=3D1} END{exit= (!found)}'; then \ > >> - $(SRC_PATH)/tests/docker/docker.py run $(if $V,,--rm) \ > >> - -t \ > >> - $(if $(DEBUG),-i,--net=3Dnone) \ > >> - -e TARGET_LIST=3D$(TARGET_LIST) \ > >> - -e EXTRA_CONFIGURE_OPTS=3D$(EXTRA_CONFIGURE_OPTS) \ > >> - -e V=3D$V -e J=3D$J -e DEBUG=3D$(DEBUG) -e SHOW_ENV=3D$(SHOW_EN= V)\ > >> - -e CCACHE_DIR=3D/var/tmp/ccache \ > >> - -v $$(readlink -e $(DOCKER_SRC_COPY)):/var/tmp/qemu:z$(COMMA)ro= \ > >> - -v $(DOCKER_CCACHE_DIR):/var/tmp/ccache:z \ > >> - qemu:$(IMAGE) \ > >> - /var/tmp/qemu/run \ > >> - $(CMD); \ > >> - fi \ > >> - ,"RUN","$(CMD) in $(IMAGE)"))) > >> +docker-run-%: > >> + @make docker-run TEST=3D$(CMD) IMAGE=3Dqemu:$(IMAGE) > > > > This "make" should be $(MAKE), so that some parameters are handled > > correctly (e.g. -n/--dry-run) and especially so that parallel make wo= rks > > correctly. Parallism should terminate here because docker-run is a leaf target. But = you are right about parameters. >=20 > Fam, >=20 > Do you want me to re-spin and re-send or are you going to fix up in you= r > pull request? I'll fix up in my tree and send pull request again. Fam >=20 > > > > Thanks, > > > > Paolo > > > >> docker-clean: > >> $(call quiet-command, $(SRC_PATH)/tests/docker/docker.py clean) > >> >=20 >=20 > -- > Alex Benn=E9e