[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency f
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds |
Date: |
Sun, 10 Jun 2018 21:00:58 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
Hi Alex,
On 06/08/2018 09:33 AM, Alex Bennée wrote:
> One problem with satisfying your docker dependencies in a sub-make it
> you might end up trying to satisfy the dependency multiple times. This
> is especially a problem with debian-sid based cross compilers and CI
> setups. We solve this by doing a docker build pass at the top level
> before any sub-makes are called.
>
> We still need to satisfy dependencies in the Makefile.target call so
> people can run tests from individual target directories. We introduce
> a new Makefile.probe which gets called for each PROBE_TARGET and
> allows us to build up the list. It does require multiply including
> config-target.mak which shouldn't cause any issues as it shouldn't
> define anything that clashes with config-host.mak. However we undefine
> a few key variables each time around.
>
> Signed-off-by: Alex Bennée <address@hidden>
> ---
> tests/Makefile.include | 14 +++++++++++++-
> tests/tcg/Makefile.probe | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 44 insertions(+), 1 deletion(-)
> create mode 100644 tests/tcg/Makefile.probe
>
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index ca00247e36..049a387436 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -931,7 +931,19 @@ BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%,
> $(LINUX_USER_TARGETS))
> CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARGETS))
> RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS))
>
> -build-tcg-tests-%:
> +# Probe for the Docker Builds we need for later
> +DOCKER_BUILD_TARGETS:=
> +$(foreach PROBE_TARGET,$(TARGET_LIST), \
> + $(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) \
> + $(if $(DOCKER_PREREQ), \
> + $(eval DOCKER_BUILD_TARGETS+=$(DOCKER_PREREQ))))
> +
> +$(info DOCKER_BUILD_TARGETS=$(sort $(DOCKER_BUILD_TARGETS)))
Is this verbose info on purpose?
Else this could be surrounded by something equiv to:
ifneq ($(V)$(DEBUG),)
...
endif
> +
> +.PHONY: build-docker-prereqs
> +build-docker-prereqs: $(sort $(DOCKER_BUILD_TARGETS))
> +
> +build-tcg-tests-%: build-docker-prereqs
> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)"
> TARGET_DIR="$*/" guest-tests,)
>
> run-tcg-tests-%: build-tcg-tests-%
> diff --git a/tests/tcg/Makefile.probe b/tests/tcg/Makefile.probe
> new file mode 100644
> index 0000000000..7529e203ad
> --- /dev/null
> +++ b/tests/tcg/Makefile.probe
> @@ -0,0 +1,31 @@
> +# -*- Mode: makefile -*-
> +#
> +# TCG Compiler Probe
> +#
> +# This Makefile fragement is included multiple times in the main make
> +# script to probe for available compilers. This is used to build up a
> +# selection of required docker targets before we invoke a sub-make for
> +# each target.
> +
> +# First we need the target makefile which tells us the target architecture
> +-include $(BUILD_DIR)/$(PROBE_TARGET)/config-target.mak
> +
> +# Then we load up the target architecture makefiles which tell us
> +# about the compilers
> +undefine CROSS_CC_GUEST
> +undefine DOCKER_IMAGE
> +DOCKER_PREREQ:=
> +
> +-include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include
> +-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include
> +
> +ifndef CROSS_CC_GUEST
> +ifneq ($(DOCKER_IMAGE),)
> +DOCKER_PREREQ:=docker-image-$(DOCKER_IMAGE)
> +endif
> +endif
> +
> +# Clean-up
> +undefine TARGET_NAME
> +undefine TARGET_BASE_ARCH
> +undefine TARGET_ABI_DIR
>
- [Qemu-devel] [PATCH v6 35/49] tests/tcg: enable building for sh4, (continued)
- [Qemu-devel] [PATCH v6 35/49] tests/tcg: enable building for sh4, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 34/49] tests/tcg: enable building for m68k, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 12/49] tests/tcg/multiarch: move most output to stdout, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 36/49] tests/tcg: enable building for sparc64, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 32/49] tests/tcg/alpha: add Alpha specific tests, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 16/49] tests/tcg/i386: fix test-i386, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 21/49] tests/tcg: move ARM specific tests into subdir, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 49/49] .travis.yml: add check-tcg test, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 43/49] tests/Makefile.include: add [build|clean|check]-tcg targets, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 18/49] tests/tcg/x86_64: add Makefile.target, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 31/49] tests/tcg: enable building for Alpha, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 25/49] tests/tcg/arm: add fcvt test cases for AArch32/64, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)guest-tests targets, Alex Bennée, 2018/06/08
- Re: [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg, no-reply, 2018/06/08