From nobody Tue Feb 10 20:48:25 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1528466596616950.377029410571; Fri, 8 Jun 2018 07:03:16 -0700 (PDT) Received: from localhost ([::1]:35866 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRHz2-0007U7-0k for importer@patchew.org; Fri, 08 Jun 2018 10:03:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51822) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRGpO-0005uc-Kh for qemu-devel@nongnu.org; Fri, 08 Jun 2018 08:49:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fRGpM-0006dY-7q for qemu-devel@nongnu.org; Fri, 08 Jun 2018 08:49:14 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:35322) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fRGpM-0006d4-0B for qemu-devel@nongnu.org; Fri, 08 Jun 2018 08:49:12 -0400 Received: by mail-wm0-x242.google.com with SMTP id j15-v6so3542338wme.0 for ; Fri, 08 Jun 2018 05:49:11 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id n7-v6sm27152699wrr.39.2018.06.08.05.49.08 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 08 Jun 2018 05:49:08 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 3E2FB3E0DE6; Fri, 8 Jun 2018 13:33:11 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=l+ddhA4XsiIQf62A8To+SUgJkDUdgo09yLx0mekcc5g=; b=eCc5Ib5YA06Lr+yr2q5uCkU7gcOfjm5pFZ31cW8KSzRoOLZgTfx70+7Tb+Lo6bhEi5 lhFRmKs+nsQ+2V4PXFXy9fr/XRAHcJciZhAhcVtf9uvOYUo8jNL3+1vH3MVesgAg0rxP ZK08LTQtGIxKDDfTteNhMFykmAnDEccM7t27w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l+ddhA4XsiIQf62A8To+SUgJkDUdgo09yLx0mekcc5g=; b=VG9IxKxBuyoGixzjWzqdZKgpoeQNEkikJm3aOQ4qDkSW3G+kpaV3ZRdLi7rezq7RFY bZWbS9UEW2TXlx+A8tYb29USpu1JgavvEeHPAV8dWiEspMN4X53blqPMYTnTWUmrufdL O0QosZyBS23gtOM4MnspH+Q3doKkFezNbvhH5qffJTiK7YyauF0bsDcpl0kaBDgvfKy5 EFtHqyZmR7iYKeEVsAER9bHHYGXIQg54vLikZ9rhSOo2FWCme3383q58COMVUfR+Qkmn LaohDPJPNCqbWllMU0qtDLY6OAJiHs0/fOqboZKsu1QLoV11dXT9xLp2wbKNpnHKN/DL pO3w== X-Gm-Message-State: APt69E2JuK8lhkYJZHeHYAgqjfNecocql4HYf/vRefwEKLSK9rRYtyN9 tADwYIfO1nlFPwpEpv+6jP+LeA== X-Google-Smtp-Source: ADUXVKISOcDSPa6DBRw7kS+Vq6aMtl0jvc0CbPLKYXnylvm9iiZ3uFD8F77vBzcj3PapTckDf0qPhA== X-Received: by 2002:a1c:3f56:: with SMTP id m83-v6mr1630346wma.88.1528462150862; Fri, 08 Jun 2018 05:49:10 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: cota@braap.org, famz@redhat.com, berrange@redhat.com, f4bug@amsat.org, 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 Date: Fri, 8 Jun 2018 13:33:05 +0100 Message-Id: <20180608123307.24773-48-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180608123307.24773-1-alex.bennee@linaro.org> References: <20180608123307.24773-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 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=C3=A9e --- 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=3D$(patsubst %,build-tcg-tests-= %, $(LINUX_USER_TARGETS)) CLEAN_TCG_TARGET_RULES=3D$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARG= ETS)) RUN_TCG_TARGET_RULES=3D$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS)) =20 -build-tcg-tests-%: +# Probe for the Docker Builds we need for later +DOCKER_BUILD_TARGETS:=3D +$(foreach PROBE_TARGET,$(TARGET_LIST), \ + $(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) \ + $(if $(DOCKER_PREREQ), \ + $(eval DOCKER_BUILD_TARGETS+=3D$(DOCKER_PREREQ)))) + +$(info DOCKER_BUILD_TARGETS=3D$(sort $(DOCKER_BUILD_TARGETS))) + +.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=3D"$(V)" TARGET_= DIR=3D"$*/" guest-tests,) =20 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:=3D + +-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:=3Ddocker-image-$(DOCKER_IMAGE) +endif +endif + +# Clean-up +undefine TARGET_NAME +undefine TARGET_BASE_ARCH +undefine TARGET_ABI_DIR --=20 2.17.1