From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: cota@braap.org, famz@redhat.com, berrange@redhat.com,
richard.henderson@linaro.org, balrogg@gmail.com,
aurelien@aurel32.net, agraf@suse.de, pbonzini@redhat.com,
stefanha@redhat.com, stefanb@linux.vnet.ibm.com,
marcandre.lureau@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds
Date: Mon, 11 Jun 2018 08:18:26 +0100 [thread overview]
Message-ID: <87bmch94fx.fsf@linaro.org> (raw)
In-Reply-To: <b1ceee53-fbb2-5e46-75db-255ad5c5c351@amsat.org>
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
> 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 <alex.bennee@linaro.org>
>> ---
>> 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)))
>> +
>> +.PHONY: build-docker-prereqs
>> +build-docker-prereqs: $(sort $(DOCKER_BUILD_TARGETS))
>
> It seems now all docker images are built, even if you want to test a
> single arch... Using ~7GB of storage at once.
I've moved build-docker-prereqs to build-tcg and made check-tcg depend
on that. The single arch test case now relies on the sub-make building
things.
>
>> +
>> +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
>>
--
Alex Bennée
next prev parent reply other threads:[~2018-06-11 7:18 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-08 12:32 [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 01/49] configure: add support for --cross-cc-FOO Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 02/49] configure: move i386_cc to cross_cc_i386 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 03/49] configure: allow user to specify --cross-cc-cflags-foo= Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 04/49] configure: set cross_cc_FOO for host compiler Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 05/49] docker: Add "cc" subcommand Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 06/49] docker: extend "cc" command to accept compiler Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 07/49] docker: allow "cc" command to run in user context Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 08/49] docker: Makefile.include introduce DOCKER_SCRIPT Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 09/49] tests/tcg: move architecture independent tests into subdir Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 10/49] tests/tcg/multiarch: Build fix for linux-test Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 11/49] tests/tcg/multiarch: enable additional linux-test tests Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 12/49] tests/tcg/multiarch: move most output to stdout Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 13/49] tests/tcg: move i386 specific tests into subdir Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 14/49] tests/tcg: enable building for i386 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 15/49] tests/tcg/i386: Build fix for hello-i386 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 16/49] tests/tcg/i386: fix test-i386 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 17/49] tests/tcg/i386: add runner for test-i386-fprem Alex Bennée
2018-06-11 2:22 ` Philippe Mathieu-Daudé
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 18/49] tests/tcg/x86_64: add Makefile.target Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 19/49] tests/tcg/i386/test-i386: use modern vector_size attributes Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 20/49] tests/tcg/i386/test-i386: fix printf format Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 21/49] tests/tcg: move ARM specific tests into subdir Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 22/49] tests/tcg: enable building for ARM Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 23/49] tests/tcg/arm: fix up test-arm-iwmmxt test Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 24/49] tests/tcg: enable building for AArch64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 25/49] tests/tcg/arm: add fcvt test cases for AArch32/64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 26/49] tests/tcg: move MIPS specific tests into subdir Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 27/49] tests/tcg: enable building for MIPS Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 28/49] tests/tcg/mips: include common mips hello-mips Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 29/49] tests/tcg: enable building for s390x Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 30/49] tests/tcg: enable building for ppc64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 31/49] tests/tcg: enable building for Alpha Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 32/49] tests/tcg/alpha: add Alpha specific tests Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 33/49] tests/tcg: enable building for HPPA Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 34/49] tests/tcg: enable building for m68k Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 35/49] tests/tcg: enable building for sh4 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 36/49] tests/tcg: enable building for sparc64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 37/49] tests/tcg: enable building for mips64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 38/49] tests/tcg: enable building for RISCV64 Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 39/49] docker: move debian-powerpc-cross to sid based build Alex Bennée
2018-06-11 1:30 ` Philippe Mathieu-Daudé
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 40/49] tests/tcg: enable building for PowerPC Alex Bennée
2018-06-11 1:52 ` Philippe Mathieu-Daudé
2018-06-11 8:18 ` Alex Bennée
2018-06-08 12:32 ` [Qemu-devel] [PATCH v6 41/49] tests/tcg/Makefile: update to be called from Makefile.target Alex Bennée
2018-06-11 1:50 ` Philippe Mathieu-Daudé
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)guest-tests targets Alex Bennée
2018-06-11 2:15 ` Philippe Mathieu-Daudé
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 43/49] tests/Makefile.include: add [build|clean|check]-tcg targets Alex Bennée
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 44/49] tests/tcg: add run, diff, and skip helper macros Alex Bennée
2018-06-11 2:16 ` Philippe Mathieu-Daudé
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 45/49] tests/tcg: override runners for broken tests Alex Bennée
2018-06-11 1:58 ` Philippe Mathieu-Daudé
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 46/49] target/sh4: Fix translator.c assertion failure for gUSA Alex Bennée
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds Alex Bennée
2018-06-11 0:00 ` Philippe Mathieu-Daudé
2018-06-11 7:17 ` Alex Bennée
2018-06-11 1:34 ` Philippe Mathieu-Daudé
2018-06-11 7:18 ` Alex Bennée [this message]
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 48/49] tests/docker: prevent sub-makes re-building debian-sid Alex Bennée
2018-06-08 12:33 ` [Qemu-devel] [PATCH v6 49/49] .travis.yml: add check-tcg test Alex Bennée
2018-06-11 2:09 ` Philippe Mathieu-Daudé
2018-06-11 8:21 ` Alex Bennée
2018-06-08 14:23 ` [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg no-reply
2018-06-11 2:02 ` Philippe Mathieu-Daudé
2018-06-11 8:19 ` Alex Bennée
2018-06-11 10:47 ` Philippe Mathieu-Daudé
2018-06-11 2:27 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bmch94fx.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=agraf@suse.de \
--cc=aurelien@aurel32.net \
--cc=balrogg@gmail.com \
--cc=berrange@redhat.com \
--cc=cota@braap.org \
--cc=f4bug@amsat.org \
--cc=famz@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanb@linux.vnet.ibm.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).