Fam Zheng <f...@redhat.com> writes: > On Mon, 02/29 17:08, Alex Bennée wrote: >> >> Fam Zheng <f...@redhat.com> 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 <f...@redhat.com> >> > --- >> > 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