[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 02/15] Makefile: Rules for docker testing
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v2 02/15] Makefile: Rules for docker testing |
Date: |
Tue, 01 Mar 2016 09:56:37 +0000 |
User-agent: |
mu4e 0.9.17; emacs 25.0.91.6 |
Fam Zheng <address@hidden> writes:
> On Mon, 02/29 17:08, Alex Bennée wrote:
>>
>> Fam Zheng <address@hidden> 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 (address@hidden)
>> > 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 address@hidden/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 <address@hidden>
>> > ---
>> > 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 address@hidden) \
>> > + $(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \
>> > + $(eval .PHONY: address@hidden) \
>> > + $(eval address@hidden: docker-image-$i) \
>> > + $(eval address@hidden: address@hidden) \
>> > + $(eval address@hidden: address@hidden) \
>> > + $(eval docker-test: address@hidden) \
>> > + ) \
>> > +)
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 address@hidden/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
- Re: [Qemu-devel] [PATCH v2 02/15] Makefile: Rules for docker testing,
Alex Bennée <=