qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 4/4] tests/docker/Makefile.include: add a generic


From: Fam Zheng
Subject: Re: [Qemu-devel] [PULL 4/4] tests/docker/Makefile.include: add a generic docker-run target
Date: Mon, 17 Oct 2016 10:03:04 +0800
User-agent: Mutt/1.7.0 (2016-08-17)

On Sat, 10/15 15:48, Alex Bennée wrote:
> 
> Paolo Bonzini <address@hidden> writes:
> 
> > On 14/10/2016 17:29, Fam Zheng wrote:
> >> From: Alex Bennée <address@hidden>
> >>
> >> This re-factors the docker makefile to include a docker-run target which
> >> can be controlled entirely from environment variables specified on the
> >> make command line. This allows us to run against any given docker image
> >> we may have in our repository, for example:
> >>
> >>     make docker-run TEST="test-quick" IMAGE="debian:arm64" \
> >>          EXECUTABLE=./aarch64-linux-user/qemu-aarch64
> >>
> >> The existing address@hidden 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ée <address@hidden>
> >>
> >> Message-Id: <address@hidden>
> >> Message-Id: <address@hidden>
> >> [Squash in the verification removal patch. - Fam]
> >> Signed-off-by: Fam Zheng <address@hidden>
> >> ---
> >>  tests/docker/Makefile.include | 61 
> >> +++++++++++++++++++++++++++----------------
> >>  1 file changed, 38 insertions(+), 23 deletions(-)
> >>
> >> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
> >> 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 container 
> >> 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=1            Ignore cache when build images.'
> >>    @echo '    EXECUTABLE=<path>    Include executable in image.'
> >>
> >> +# This rule if for directly running against an arbitrary docker target.
> >> +# It is called by the expanded docker targets (e.g. make
> >> +# address@hidden) which will do additional verification.
> >> +#
> >> +# For example: make docker-run TEST="test-quick" IMAGE="debian:arm64" 
> >> EXECUTABLE=./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=none)                    \
> >> +                  -e TARGET_LIST=$(TARGET_LIST)                   \
> >> +                  -e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \
> >> +                  -e V=$V -e J=$J -e DEBUG=$(DEBUG)               \
> >> +                  -e SHOW_ENV=$(SHOW_ENV)                         \
> >> +                  -e CCACHE_DIR=/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 address@hidden which will then be expanded into a call to 
> >> "make docker-run"
> >>  docker-run-%: CMD = $(shell echo '$@' | sed -e 
> >> 's/docker-run-\(address@hidden)@\(.*\)/\1/')
> >>  docker-run-%: IMAGE = $(shell echo '$@' | sed -e 
> >> 's/docker-run-\(address@hidden)@\(.*\)/\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=="qemu" && $$2=="$(IMAGE)"{found=1} 
> >> END{exit(!found)}'; then \
> >> -                          $(SRC_PATH)/tests/docker/docker.py run $(if 
> >> $V,,--rm) \
> >> -                          -t \
> >> -                          $(if $(DEBUG),-i,--net=none) \
> >> -                          -e TARGET_LIST=$(TARGET_LIST) \
> >> -                          -e EXTRA_CONFIGURE_OPTS=$(EXTRA_CONFIGURE_OPTS) 
> >> \
> >> -                          -e V=$V -e J=$J -e DEBUG=$(DEBUG) -e 
> >> SHOW_ENV=$(SHOW_ENV)\
> >> -                          -e CCACHE_DIR=/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=$(CMD) IMAGE=qemu:$(IMAGE)
> >
> > This "make" should be $(MAKE), so that some parameters are handled
> > correctly (e.g. -n/--dry-run) and especially so that parallel make works
> > correctly.

Parallism should terminate here because docker-run is a leaf target. But you are
right about parameters.

> 
> Fam,
> 
> Do you want me to re-spin and re-send or are you going to fix up in your
> pull request?

I'll fix up in my tree and send pull request again.

Fam

> 
> >
> > Thanks,
> >
> > Paolo
> >
> >>  docker-clean:
> >>    $(call quiet-command, $(SRC_PATH)/tests/docker/docker.py clean)
> >>
> 
> 
> --
> Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]