From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34014) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aah2q-00006D-JL for qemu-devel@nongnu.org; Tue, 01 Mar 2016 04:56:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aah2n-0002Pp-9b for qemu-devel@nongnu.org; Tue, 01 Mar 2016 04:56:44 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:36469) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aah2m-0002OG-P5 for qemu-devel@nongnu.org; Tue, 01 Mar 2016 04:56:41 -0500 Received: by mail-wm0-x234.google.com with SMTP id n186so28003386wmn.1 for ; Tue, 01 Mar 2016 01:56:40 -0800 (PST) References: <1455626399-7111-1-git-send-email-famz@redhat.com> <1455626399-7111-3-git-send-email-famz@redhat.com> <8760x7jvgj.fsf@linaro.org> <20160301010448.GB15213@ad.usersys.redhat.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <20160301010448.GB15213@ad.usersys.redhat.com> Date: Tue, 01 Mar 2016 09:56:37 +0000 Message-ID: <877fhmed2i.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2 02/15] Makefile: Rules for docker testing List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: kwolf@redhat.com, peter.maydell@linaro.org, sw@weilnetz.de, qemu-devel@nongnu.org, stefanha@redhat.com, Paolo Bonzini , jsnow@redhat.com, david@gibson.dropbear.id.au Fam Zheng writes: > On Mon, 02/29 17:08, Alex Bennée wrote: >> >> Fam Zheng writes: >> >> > This adds a group of make targets to run docker tests, all are available >> > in source tree without running ./configure. >> > >> > The usage is shown by "make docker". >> > >> > Besides the fixed ones, dynamic targets for building each image and >> > running each test in each image are generated automatically by make, >> > scanning $(SRC_PATH)/tests/docker/ files with specific patterns. >> > >> > Alternative to manually list particular targets (docker-run-FOO@BAR) >> > set, you can control which tests/images to run by filtering variables, >> > TESTS= and IMAGES=, which are expressed in Makefile pattern syntax, >> > "foo% %bar ...". For example: >> > >> > $ make docker-run IMAGES="ubuntu fedora" >> >> This doesn't seem to work for me: >> >> 16:49 alex@zen/x86_64 [qemu.git/review/docker-tests-v2] >make >> docker-run IMAGES="ubuntu" V=1 >> /home/alex/lsrc/qemu/qemu.git/rules.mak:178: warning: overriding >> commands for target `clean-timestamp' >> /home/alex/lsrc/qemu/qemu.git/rules.mak:178: warning: ignoring old >> commands for target `clean-timestamp' >> make: *** No rule to make target `docker-run'. Stop. > > The commit message is stale, as the help text, the target is now "docker-test" > which is more intuitive. > > Fam > >> ` >> >> > >> > Unfortunately, it's impossible to propagate "-j $JOBS" into make in >> > containers, however since each combination is made a first class target >> > is the top Makefile, "make -j$N docker-run" still parallels the tests >> > coarsely. >> > >> > Signed-off-by: Fam Zheng >> > --- >> > Makefile | 4 +- >> > tests/docker/Makefile.include | 93 +++++++++++++++++++++++++++++++++++++++++++ >> > 2 files changed, 96 insertions(+), 1 deletion(-) >> > create mode 100644 tests/docker/Makefile.include >> > >> > diff --git a/Makefile b/Makefile >> > index f9fae3a..f104a08 100644 >> > --- a/Makefile >> > +++ b/Makefile >> > @@ -6,7 +6,7 @@ BUILD_DIR=$(CURDIR) >> > # Before including a proper config-host.mak, assume we are in the source tree >> > SRC_PATH=. >> > >> > -UNCHECKED_GOALS := %clean TAGS cscope ctags >> > +UNCHECKED_GOALS := %clean TAGS cscope ctags docker docker-% >> > >> > # All following code might depend on configuration variables >> > ifneq ($(wildcard config-host.mak),) >> > @@ -651,3 +651,5 @@ endif >> > # Include automatically generated dependency files >> > # Dependencies in Makefile.objs files come from our recursive subdir rules >> > -include $(wildcard *.d tests/*.d) >> > + >> > +include $(SRC_PATH)/tests/docker/Makefile.include >> > diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include >> > new file mode 100644 >> > index 0000000..d8c55c3 >> > --- /dev/null >> > +++ b/tests/docker/Makefile.include >> > @@ -0,0 +1,93 @@ >> > +# Makefile for Docker tests >> > + >> > +$(if $(quiet-command),,$(eval include $(SRC_PATH)/rules.mak)) >> > + >> > +.PHONY: docker docker-test docker-clean docker-image >> > + >> > +DOCKER_SUFFIX := .docker >> > + >> > +DOCKER_IMAGES := $(notdir $(basename \ >> > + $(wildcard $(SRC_PATH)/tests/docker/dockerfiles/*))) >> > + >> > +DOCKER_TESTS := $(notdir $(shell \ >> > + find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f -executable)) >> > + >> > +DOCKER_TOOLS := travis >> > + >> > +TESTS ?= % >> > +IMAGES ?= % >> > + >> > +$(foreach i,$(DOCKER_IMAGES), \ >> > + $(eval docker-image: docker-image-$i) \ >> > + $(eval docker-image-$i: IMAGE = $i) \ >> > + $(eval .PHONY: docker-image-$i docker-@$i) \ >> > + $(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \ >> > + $(eval .PHONY: docker-$t@$i) \ >> > + $(eval docker-$t@$i: docker-image-$i) \ >> > + $(eval docker-$t@$i: docker-run-$t@$i) \ >> > + $(eval docker-@$i: docker-$t@$i) \ >> > + $(eval docker-test: docker-run-$t@$i) \ >> > + ) \ >> > +) Also I think you need rules for updating the images here. I just updated ubuntu.docker to add libfdt-dev but on running on the command line: 09:53 alex@zen/x86_64 [qemu.git/review/docker-tests-v2] >make docker-image-ubuntu V=1 /home/alex/lsrc/qemu/qemu.git/rules.mak:178: warning: overriding commands for target `clean-timestamp' /home/alex/lsrc/qemu/qemu.git/rules.mak:178: warning: ignoring old commands for target `clean-timestamp' make: Nothing to be done for `docker-image-ubuntu'. -- Alex Bennée