* [PATCH 00/17] tests/docker and tests/tcg cleanup and diet
@ 2022-04-01 14:13 Paolo Bonzini
2022-04-01 14:13 ` [PATCH 01/17] tests/docker: remove dead code for linux-user containers Paolo Bonzini
` (17 more replies)
0 siblings, 18 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
The first eight patches simplify and clean up a bit the
tests/docker/Makefile.include file.
The rest adjust tests/Makefile.include to invoke the tests/tcg
Makefiles directly, without going through Makefile.qemu and
Makefile.prereqs. All information is gathered at configure time,
and the config*.mak files for each TCG test target includes
the normal Makefile variables (AC, CC, LD, etc.). tests/tcg
stops using config-host.mak, too.
This is also a first step towards moving the cross-compilation
infrastructure from tests/tcg to all of QEMU, so that it can be
used to build firmware binaries. The next steps would be along
the lines of:
- add more binutils to the tests/tcg per-target config files
- move tests/tcg/configure.sh into the main configure script
- extract parts of configure.sh into shell functions and use
them to generate the roms/ .mak files
Paolo
v1->v2:
- rebased
- also remove empty dockerfile [Alex]
- fixed container_cross_as [Richard]
- simplify docker-TEST@IMAGE even further
- cleanup hexagon-cross
- check that targets match one of *-softmmu, *-linux-user, *-bsd-user
- cleaner tests/tcg/configure.sh, set got_cross_cc=yes for docker case
- do not include config-host.mak at all in tests/tcg
- remove "docker.py check"
Paolo Bonzini (17):
tests/docker: remove dead code for linux-user containers
tests/docker: remove test targets
tests/docker: remove dead variable
tests/docker: remove unnecessary default definitions
tests/docker: inline variable definitions or move close to use
tests/docker: remove unnecessary filtering of $(DOCKER_IMAGES)
tests/docker: simplify docker-TEST@IMAGE targets
tests/docker: do not duplicate rules for hexagon-cross
tests/tcg: add compiler test variables when using containers
tests/tcg: remove CONFIG_LINUX_USER from config-target.mak
tests/tcg: remove CONFIG_USER_ONLY from config-target.mak
tests/tcg: prepare Makefile.prereqs at configure time
tests/tcg: list test targets in Makefile.prereqs
tests/tcg: invoke Makefile.target directly from QEMU's makefile
tests/tcg: isolate from QEMU's config-host.mak
tests/docker: remove SKIP_DOCKER_BUILD
tests/tcg: fix non-static build
configure | 3 +-
tests/Makefile.include | 55 ++++----
tests/docker/Makefile.include | 115 ++++-------------
tests/docker/docker.py | 57 ---------
.../build-toolchain.sh | 0
tests/docker/dockerfiles/empty.docker | 8 --
tests/tcg/Makefile.prereqs | 18 ---
tests/tcg/Makefile.qemu | 121 ------------------
tests/tcg/Makefile.target | 14 +-
tests/tcg/aarch64/Makefile.softmmu-target | 2 +-
tests/tcg/aarch64/Makefile.target | 10 +-
tests/tcg/configure.sh | 78 +++++++----
tests/tcg/i386/Makefile.target | 2 +-
tests/tcg/multiarch/Makefile.target | 2 +-
tests/tcg/ppc64/Makefile.target | 4 +-
tests/tcg/ppc64le/Makefile.target | 4 +-
tests/tcg/x86_64/Makefile.target | 2 +-
17 files changed, 123 insertions(+), 372 deletions(-)
rename tests/docker/dockerfiles/{debian-hexagon-cross.docker.d => debian-hexagon-cross.d}/build-toolchain.sh (100%)
delete mode 100644 tests/docker/dockerfiles/empty.docker
delete mode 100644 tests/tcg/Makefile.prereqs
delete mode 100644 tests/tcg/Makefile.qemu
--
2.35.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 01/17] tests/docker: remove dead code for linux-user containers
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 02/17] tests/docker: remove test targets Paolo Bonzini
` (16 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
debian-powerpc-user-cross was the only linux-user powered cross builder
and it was removed in commit 80394ccf21 ("tests/docker: remove
debian-powerpc-user-cross", 2019-09-26). Remove all the infrastructure
around it since it is now unused.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220328140240.40798-2-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index e495b163a0..a6a5a20949 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -229,12 +229,6 @@ DOCKER_PARTIAL_IMAGES += debian-tricore-cross
DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
DOCKER_PARTIAL_IMAGES += fedora-cris-cross
-# Rules for building linux-user powered images
-#
-# These are slower than using native cross compiler setups but can
-# work around issues with poorly working multi-arch systems and broken
-# packages.
-
# Expand all the pre-requistes for each docker image and test combination
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES) $(DOCKER_VIRTUAL_IMAGES),$(DOCKER_IMAGES)), \
$(foreach t,$(DOCKER_TESTS), \
@@ -266,11 +260,6 @@ docker:
@echo
@echo 'Available container images:'
@echo ' $(DOCKER_IMAGES)'
-ifneq ($(DOCKER_USER_IMAGES),)
- @echo
- @echo 'Available linux-user images (docker-binfmt-image-debian-%):'
- @echo ' $(DOCKER_USER_IMAGES)'
-endif
@echo
@echo 'Available tests:'
@echo ' $(DOCKER_TESTS)'
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 02/17] tests/docker: remove test targets
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
2022-04-01 14:13 ` [PATCH 01/17] tests/docker: remove dead code for linux-user containers Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 03/17] tests/docker: remove dead variable Paolo Bonzini
` (15 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-3-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 20 +-------------------
tests/docker/dockerfiles/empty.docker | 8 --------
2 files changed, 1 insertion(+), 27 deletions(-)
delete mode 100644 tests/docker/dockerfiles/empty.docker
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index a6a5a20949..06c40a9320 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -18,7 +18,7 @@ DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian10 debian11
# we don't directly build virtual images (they are used to build other images)
-DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain empty
+DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain
__IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
DOCKER_IMAGES := $(if $(IMAGES), $(filter $(IMAGES), $(__IMAGES)), $(__IMAGES))
DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
@@ -99,24 +99,6 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
{ echo "You will need to build $(EXECUTABLE)"; exit 1;},\
"CHECK", "debian-$* exists"))
-# These are test targets
-USER_TCG_TARGETS=$(patsubst %-linux-user,qemu-%,$(filter %-linux-user,$(TARGET_DIRS)))
-EXEC_COPY_TESTS=$(patsubst %,docker-exec-copy-test-%, $(USER_TCG_TARGETS))
-
-$(EXEC_COPY_TESTS): docker-exec-copy-test-%: $(DOCKER_FILES_DIR)/empty.docker
- $(call quiet-command, \
- $(DOCKER_SCRIPT) build -t qemu/exec-copy-test-$* -f $< \
- $(if $V,,--quiet) --no-cache \
- --include-executable=$* \
- --skip-binfmt, \
- "TEST","copy $* to container")
- $(call quiet-command, \
- $(DOCKER_SCRIPT) run qemu/exec-copy-test-$* \
- /$* -version > tests/docker-exec-copy-test-$*.out, \
- "TEST","check $* works in container")
-
-docker-exec-copy-test: $(EXEC_COPY_TESTS)
-
endif
# Enforce dependencies for composite images
diff --git a/tests/docker/dockerfiles/empty.docker b/tests/docker/dockerfiles/empty.docker
deleted file mode 100644
index 9ba980f1a8..0000000000
--- a/tests/docker/dockerfiles/empty.docker
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# Empty Dockerfile
-#
-
-FROM scratch
-
-# Add everything from the context into the container
-ADD . /
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 03/17] tests/docker: remove dead variable
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
2022-04-01 14:13 ` [PATCH 01/17] tests/docker: remove dead code for linux-user containers Paolo Bonzini
2022-04-01 14:13 ` [PATCH 02/17] tests/docker: remove test targets Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 04/17] tests/docker: remove unnecessary default definitions Paolo Bonzini
` (14 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220328140240.40798-4-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 1 -
1 file changed, 1 deletion(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 06c40a9320..c8d0ec3c66 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -13,7 +13,6 @@ HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
TESTS ?= %
IMAGES ?= %
-DOCKER_SUFFIX := .docker
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian10 debian11
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 04/17] tests/docker: remove unnecessary default definitions
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (2 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 03/17] tests/docker: remove dead variable Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 05/17] tests/docker: inline variable definitions or move close to use Paolo Bonzini
` (13 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
The definition of DOCKER_IMAGES and DOCKER_TESTS copes already with an
empty value of $(IMAGES) and $(TESTS), no need to force them to "%" if
undefined.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-5-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 5 -----
1 file changed, 5 deletions(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index c8d0ec3c66..751151d7e9 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -8,11 +8,6 @@ COMMA := ,
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
-# These variables can be set by the user to limit the set of docker
-# images and tests to a more restricted subset
-TESTS ?= %
-IMAGES ?= %
-
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian10 debian11
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 05/17] tests/docker: inline variable definitions or move close to use
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (3 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 04/17] tests/docker: remove unnecessary default definitions Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 06/17] tests/docker: remove unnecessary filtering of $(DOCKER_IMAGES) Paolo Bonzini
` (12 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Variables that are defined with ":=" are handled imperatively, so moving
them closer to the first use ensures that all the assignments prior to
the first use are taken into account.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-6-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 751151d7e9..9b4d1cf837 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -9,26 +9,12 @@ COMMA := ,
HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
-# we don't run tests on intermediate images (used as base by another image)
-DOCKER_PARTIAL_IMAGES := debian10 debian11
-# we don't directly build virtual images (they are used to build other images)
-DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain
-__IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
-DOCKER_IMAGES := $(if $(IMAGES), $(filter $(IMAGES), $(__IMAGES)), $(__IMAGES))
-DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
-# Use a global constant ccache directory to speed up repetitive builds
-DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
ifeq ($(HOST_ARCH),x86_64)
DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
endif
DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
-__TESTS := $(notdir $(shell \
- find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f))
-DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
-
ENGINE := auto
-
DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
@@ -47,8 +33,6 @@ $(DOCKER_SRC_COPY):
docker-qemu-src: $(DOCKER_SRC_COPY)
-docker-image: ${DOCKER_TARGETS}
-
# General rule for building docker images. If we are a sub-make
# invoked with SKIP_DOCKER_BUILD we still check the image is up to date
# though
@@ -96,6 +80,8 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
endif
# Enforce dependencies for composite images
+# we don't run tests on intermediate images (used as base by another image)
+DOCKER_PARTIAL_IMAGES := debian10 debian11
ifeq ($(HOST_ARCH),x86_64)
docker-image-debian-amd64: docker-image-debian10
DOCKER_PARTIAL_IMAGES += debian-amd64-cross
@@ -205,6 +191,15 @@ DOCKER_PARTIAL_IMAGES += debian-tricore-cross
DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
DOCKER_PARTIAL_IMAGES += fedora-cris-cross
+# images that are only used to build other images
+DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain
+
+__IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
+DOCKER_IMAGES := $(if $(IMAGES), $(filter $(IMAGES), $(__IMAGES)), $(__IMAGES))
+
+__TESTS := $(notdir $(shell find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f))
+DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
+
# Expand all the pre-requistes for each docker image and test combination
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES) $(DOCKER_VIRTUAL_IMAGES),$(DOCKER_IMAGES)), \
$(foreach t,$(DOCKER_TESTS), \
@@ -263,6 +258,9 @@ docker:
docker-help: docker
+# Use a global constant ccache directory to speed up repetitive builds
+DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
+
# This rule if for directly running against an arbitrary docker target.
# It is called by the expanded docker targets (e.g. make
# docker-test-foo@bar) which will do additional verification.
@@ -308,5 +306,7 @@ docker-run-%: IMAGE = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/
docker-run-%:
@$(MAKE) docker-run TEST=$(CMD) IMAGE=qemu/$(IMAGE)
+docker-image: ${DOCKER_IMAGES:%=docker-image-%}
+
docker-clean:
$(call quiet-command, $(DOCKER_SCRIPT) clean)
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 06/17] tests/docker: remove unnecessary filtering of $(DOCKER_IMAGES)
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (4 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 05/17] tests/docker: inline variable definitions or move close to use Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 07/17] tests/docker: simplify docker-TEST@IMAGE targets Paolo Bonzini
` (11 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Now that DOCKER_IMAGES is only defined after DOCKER_VIRTUAL_IMAGES is
complete, there is no need to re-filter DOCKER_IMAGES against it.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-7-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 9b4d1cf837..3b5ebd5567 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -201,7 +201,7 @@ __TESTS := $(notdir $(shell find $(SRC_PATH)/tests/docker/ -name 'test-*' -type
DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
# Expand all the pre-requistes for each docker image and test combination
-$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES) $(DOCKER_VIRTUAL_IMAGES),$(DOCKER_IMAGES)), \
+$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
$(foreach t,$(DOCKER_TESTS), \
$(eval .PHONY: docker-$t@$i) \
$(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 07/17] tests/docker: simplify docker-TEST@IMAGE targets
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (5 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 06/17] tests/docker: remove unnecessary filtering of $(DOCKER_IMAGES) Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 08/17] tests/docker: do not duplicate rules for hexagon-cross Paolo Bonzini
` (10 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
No need to go through the shell when we already have the test and images at
the point where the targets are declared.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-8-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 3b5ebd5567..2a187cb5a2 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -204,7 +204,7 @@ DOCKER_TESTS := $(if $(TESTS), $(filter $(TESTS), $(__TESTS)), $(__TESTS))
$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
$(foreach t,$(DOCKER_TESTS), \
$(eval .PHONY: docker-$t@$i) \
- $(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \
+ $(eval docker-$t@$i: docker-image-$i; @$(MAKE) docker-run TEST=$t IMAGE=$i) \
) \
$(foreach t,$(DOCKER_TESTS), \
$(eval docker-all-tests: docker-$t@$i) \
@@ -263,7 +263,7 @@ DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
# This rule if for directly running against an arbitrary docker target.
# It is called by the expanded docker targets (e.g. make
-# docker-test-foo@bar) which will do additional verification.
+# docker-test-foo@bar) which will also ensure the image is up to date.
#
# For example: make docker-run TEST="test-quick" IMAGE="debian:arm64" EXECUTABLE=./aarch64-linux-user/qemu-aarch64
#
@@ -298,14 +298,6 @@ docker-run: docker-qemu-src
$(call quiet-command, rm -r $(DOCKER_SRC_COPY), \
" CLEANUP $(DOCKER_SRC_COPY)")
-# Run targets:
-#
-# Of the form docker-TEST-FOO@IMAGE-BAR which will then be expanded into a call to "make docker-run"
-docker-run-%: CMD = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\1/')
-docker-run-%: IMAGE = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\2/')
-docker-run-%:
- @$(MAKE) docker-run TEST=$(CMD) IMAGE=qemu/$(IMAGE)
-
docker-image: ${DOCKER_IMAGES:%=docker-image-%}
docker-clean:
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 08/17] tests/docker: do not duplicate rules for hexagon-cross
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (6 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 07/17] tests/docker: simplify docker-TEST@IMAGE targets Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 09/17] tests/tcg: add compiler test variables when using containers Paolo Bonzini
` (9 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
The commands for docker-image-debian-hexagon-cross are the same as those
in debian-toolchain-run, just with a nonstandard path to build-toolchain.sh.
Reuse the definition by renaming the debian-hexagon-cross.docker.d directory.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 26 +++----------------
.../build-toolchain.sh | 0
2 files changed, 4 insertions(+), 22 deletions(-)
rename tests/docker/dockerfiles/{debian-hexagon-cross.docker.d => debian-hexagon-cross.d}/build-toolchain.sh (100%)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 2a187cb5a2..eb100c294f 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -121,28 +121,6 @@ docker-image-debian11: NOUSER=1
# alpine has no adduser
docker-image-alpine: NOUSER=1
-#
-# The build rule for hexagon-cross is special in so far for most of
-# the time we don't want to build it. While dockers caching does avoid
-# this most of the time sometimes we want to force the issue.
-#
-docker-image-debian-hexagon-cross: $(DOCKER_FILES_DIR)/debian-hexagon-cross.docker
- $(if $(NOCACHE), \
- $(call quiet-command, \
- $(DOCKER_SCRIPT) build -t qemu/debian-hexagon-cross -f $< \
- $(if $V,,--quiet) --no-cache \
- --registry $(DOCKER_REGISTRY) --extra-files \
- $(DOCKER_FILES_DIR)/debian-hexagon-cross.docker.d/build-toolchain.sh, \
- "BUILD", "debian-hexagon-cross"), \
- $(call quiet-command, \
- $(DOCKER_SCRIPT) fetch $(if $V,,--quiet) \
- qemu/debian-hexagon-cross $(DOCKER_REGISTRY), \
- "FETCH", "debian-hexagon-cross") \
- $(call quiet-command, \
- $(DOCKER_SCRIPT) update $(if $V,,--quiet) \
- qemu/debian-hexagon-cross --add-current-user, \
- "PREPARE", "debian-hexagon-cross"))
-
debian-toolchain-run = \
$(if $(NOCACHE), \
$(call quiet-command, \
@@ -162,6 +140,10 @@ debian-toolchain-run = \
"PREPARE", $1))
debian-toolchain = $(call debian-toolchain-run,$(patsubst docker-image-%,%,$1))
+docker-image-debian-hexagon-cross: $(DOCKER_FILES_DIR)/debian-hexagon-cross.docker \
+ $(DOCKER_FILES_DIR)/debian-hexagon-cross.d/build-toolchain.sh
+ $(call debian-toolchain, $@)
+
docker-image-debian-microblaze-cross: $(DOCKER_FILES_DIR)/debian-toolchain.docker \
$(DOCKER_FILES_DIR)/debian-microblaze-cross.d/build-toolchain.sh
$(call debian-toolchain, $@)
diff --git a/tests/docker/dockerfiles/debian-hexagon-cross.docker.d/build-toolchain.sh b/tests/docker/dockerfiles/debian-hexagon-cross.d/build-toolchain.sh
similarity index 100%
rename from tests/docker/dockerfiles/debian-hexagon-cross.docker.d/build-toolchain.sh
rename to tests/docker/dockerfiles/debian-hexagon-cross.d/build-toolchain.sh
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 09/17] tests/tcg: add compiler test variables when using containers
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (7 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 08/17] tests/docker: do not duplicate rules for hexagon-cross Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 10/17] tests/tcg: remove CONFIG_LINUX_USER from config-target.mak Paolo Bonzini
` (8 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Even for container-based cross compilation use $(CROSS_CC_HAS_*) variables.
This makes the TCG test makefiles oblivious of whether the compiler is
invoked through a container or not.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220328140240.40798-9-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/aarch64/Makefile.softmmu-target | 2 +-
tests/tcg/aarch64/Makefile.target | 10 +++++-----
tests/tcg/configure.sh | 17 +++++++++++++++++
tests/tcg/i386/Makefile.target | 2 +-
tests/tcg/ppc64/Makefile.target | 4 ++--
tests/tcg/ppc64le/Makefile.target | 4 ++--
6 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target
index a7286ac295..f6fcd4829e 100644
--- a/tests/tcg/aarch64/Makefile.softmmu-target
+++ b/tests/tcg/aarch64/Makefile.softmmu-target
@@ -64,7 +64,7 @@ run-memory-replay: memory-replay run-memory-record
EXTRA_RUNS+=run-memory-replay
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_3),)
+ifneq ($(CROSS_CC_HAS_ARMV8_3),)
pauth-3: CFLAGS += -march=armv8.3-a
else
pauth-3:
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index f7121cb4d8..6ad0ad49f9 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -18,7 +18,7 @@ run-fcvt: fcvt
$(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
# Pauth Tests
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_3),)
+ifneq ($(CROSS_CC_HAS_ARMV8_3),)
AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5
pauth-%: CFLAGS += -march=armv8.3-a
run-pauth-%: QEMU_OPTS += -cpu max
@@ -27,7 +27,7 @@ endif
# BTI Tests
# bti-1 tests the elf notes, so we require special compiler support.
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_BTI),)
+ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
AARCH64_TESTS += bti-1
bti-1: CFLAGS += -mbranch-protection=standard
bti-1: LDFLAGS += -nostdlib
@@ -36,12 +36,12 @@ endif
AARCH64_TESTS += bti-2
# MTE Tests
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_MTE),)
+ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7
mte-%: CFLAGS += -march=armv8.5-a+memtag
endif
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_SVE),)
+ifneq ($(CROSS_CC_HAS_SVE),)
# System Registers Tests
AARCH64_TESTS += sysregs
sysregs: CFLAGS+=-march=armv8.1-a+sve
@@ -88,7 +88,7 @@ EXTRA_RUNS += run-gdbstub-sysregs run-gdbstub-sve-ioctls
endif
endif
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_SVE2),)
+ifneq ($(CROSS_CC_HAS_SVE2),)
AARCH64_TESTS += test-826
test-826: CFLAGS+=-march=armv8.1-a+sve2
endif
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 84f928f7f8..8927a2b260 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -348,6 +348,23 @@ for target in $target_list; do
echo "DOCKER_CROSS_LD_GUEST=$container_cross_ld" >> \
$config_target_mak
fi
+ case $target in
+ aarch64-*)
+ echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
+ echo "CROSS_CC_HAS_SVE2=y" >> $config_target_mak
+ echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
+ echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
+ echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
+ ;;
+ ppc*)
+ echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
+ echo "CROSS_CC_HAS_POWER10=y" >> $config_target_mak
+ ;;
+ i386-linux-user)
+ echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
+ ;;
+ esac
+ break
fi
done
fi
diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
index e1c0310be6..bd73c96d0d 100644
--- a/tests/tcg/i386/Makefile.target
+++ b/tests/tcg/i386/Makefile.target
@@ -30,7 +30,7 @@ hello-i386: LDFLAGS+=-nostdlib
# test-386 includes a couple of additional objects that need to be
# linked together, we also need a no-pie capable compiler due to the
# non-pic calls into 16-bit mode
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_I386_NOPIE),)
+ifneq ($(CROSS_CC_HAS_I386_NOPIE),)
test-i386: CFLAGS += -fno-pie
test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S test-i386.h test-i386-shift.h test-i386-muldiv.h
diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target
index 8197c288a7..babd209573 100644
--- a/tests/tcg/ppc64/Makefile.target
+++ b/tests/tcg/ppc64/Makefile.target
@@ -5,14 +5,14 @@
VPATH += $(SRC_PATH)/tests/tcg/ppc64
VPATH += $(SRC_PATH)/tests/tcg/ppc64le
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER8_VECTOR),)
+ifneq ($(CROSS_CC_HAS_POWER8_VECTOR),)
PPC64_TESTS=bcdsub non_signalling_xscv
endif
$(PPC64_TESTS): CFLAGS += -mpower8-vector
PPC64_TESTS += mtfsf
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),)
+ifneq ($(CROSS_CC_HAS_POWER10),)
PPC64_TESTS += byte_reverse sha512-vector
endif
byte_reverse: CFLAGS += -mcpu=power10
diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target
index 9624bb1e9c..5b0eb5e870 100644
--- a/tests/tcg/ppc64le/Makefile.target
+++ b/tests/tcg/ppc64le/Makefile.target
@@ -4,12 +4,12 @@
VPATH += $(SRC_PATH)/tests/tcg/ppc64le
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER8_VECTOR),)
+ifneq ($(CROSS_CC_HAS_POWER8_VECTOR),)
PPC64LE_TESTS=bcdsub non_signalling_xscv
endif
$(PPC64LE_TESTS): CFLAGS += -mpower8-vector
-ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),)
+ifneq ($(CROSS_CC_HAS_POWER10),)
PPC64LE_TESTS += byte_reverse sha512-vector
endif
byte_reverse: CFLAGS += -mcpu=power10
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 10/17] tests/tcg: remove CONFIG_LINUX_USER from config-target.mak
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (8 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 09/17] tests/tcg: add compiler test variables when using containers Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 11/17] tests/tcg: remove CONFIG_USER_ONLY " Paolo Bonzini
` (7 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee, Philippe Mathieu-Daudé
Just check the target name instead.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-10-pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/configure.sh | 2 --
tests/tcg/multiarch/Makefile.target | 2 +-
tests/tcg/x86_64/Makefile.target | 2 +-
3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 8927a2b260..57026b5899 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -227,12 +227,10 @@ for target in $target_list; do
case $target in
*-linux-user)
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
- echo "CONFIG_LINUX_USER=y" >> $config_target_mak
echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
;;
*-bsd-user)
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
- echo "CONFIG_BSD_USER=y" >> $config_target_mak
echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
;;
*-softmmu)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index dec401e67f..6bba523729 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -10,7 +10,7 @@ MULTIARCH_SRC=$(SRC_PATH)/tests/tcg/multiarch
# Set search path for all sources
VPATH += $(MULTIARCH_SRC)
MULTIARCH_SRCS = $(notdir $(wildcard $(MULTIARCH_SRC)/*.c))
-ifneq ($(CONFIG_LINUX_USER),)
+ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET))
VPATH += $(MULTIARCH_SRC)/linux
MULTIARCH_SRCS += $(notdir $(wildcard $(MULTIARCH_SRC)/linux/*.c))
endif
diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
index 17cf168f0a..f9fcd31caf 100644
--- a/tests/tcg/x86_64/Makefile.target
+++ b/tests/tcg/x86_64/Makefile.target
@@ -8,7 +8,7 @@
include $(SRC_PATH)/tests/tcg/i386/Makefile.target
-ifneq ($(CONFIG_LINUX_USER),)
+ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET))
X86_64_TESTS += vsyscall
TESTS=$(MULTIARCH_TESTS) $(X86_64_TESTS) test-x86_64
else
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 11/17] tests/tcg: remove CONFIG_USER_ONLY from config-target.mak
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (9 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 10/17] tests/tcg: remove CONFIG_LINUX_USER from config-target.mak Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 12/17] tests/tcg: prepare Makefile.prereqs at configure time Paolo Bonzini
` (6 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Just check the target name instead.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-11-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/Makefile.target | 8 ++++----
tests/tcg/configure.sh | 12 +++---------
2 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index acda5bcec2..c75e8d983f 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -34,7 +34,7 @@ all:
-include ../config-$(TARGET).mak
# Get semihosting definitions for user-mode emulation
-ifeq ($(CONFIG_USER_ONLY),y)
+ifeq ($(filter %-softmmu, $(TARGET)),)
-include $(SRC_PATH)/configs/targets/$(TARGET).mak
endif
@@ -44,7 +44,7 @@ COMMA := ,
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
# $1 = test name, $2 = cmd, $3 = desc
-ifdef CONFIG_USER_ONLY
+ifeq ($(filter %-softmmu, $(TARGET)),)
run-test = $(call quiet-command, timeout --foreground $(TIMEOUT) $2 > $1.out, \
"TEST",$3)
else
@@ -91,7 +91,7 @@ QEMU_OPTS=
# 90s with --enable-tcg-interpreter
TIMEOUT=90
-ifdef CONFIG_USER_ONLY
+ifeq ($(filter %-softmmu, $(TARGET)),)
# The order we include is important. We include multiarch first and
# then the target. If there are common tests shared between
# sub-targets (e.g. ARM & AArch64) then it is up to
@@ -153,7 +153,7 @@ extract-plugin = $(wordlist 2, 2, $(subst -with-, ,$1))
RUN_TESTS+=$(EXTRA_RUNS)
-ifdef CONFIG_USER_ONLY
+ifeq ($(filter %-softmmu, $(TARGET)),)
run-%: %
$(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<, "$< on $(TARGET_NAME)")
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 57026b5899..0d864c24fc 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -225,18 +225,12 @@ for target in $target_list; do
echo "TARGET_NAME=$arch" >> $config_target_mak
echo "target=$target" >> $config_target_mak
case $target in
- *-linux-user)
- echo "CONFIG_USER_ONLY=y" >> $config_target_mak
- echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
- ;;
- *-bsd-user)
- echo "CONFIG_USER_ONLY=y" >> $config_target_mak
- echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
- ;;
*-softmmu)
- echo "CONFIG_SOFTMMU=y" >> $config_target_mak
echo "QEMU=$PWD/qemu-system-$arch" >> $config_target_mak
;;
+ *-linux-user|*-bsd-user)
+ echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
+ ;;
esac
eval "target_compiler_cflags=\${cross_cc_cflags_$arch}"
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 12/17] tests/tcg: prepare Makefile.prereqs at configure time
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (10 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 11/17] tests/tcg: remove CONFIG_USER_ONLY " Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 13/17] tests/tcg: list test targets in Makefile.prereqs Paolo Bonzini
` (5 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
List the dependencies of the build-tcg-tests-* and run-tcg-tests-*
targets in a Makefile fragment, without going through Makefile.prereqs's
"parsing" of config-*.mak.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-12-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/Makefile.include | 9 ++++++---
tests/tcg/Makefile.prereqs | 18 ------------------
tests/tcg/configure.sh | 10 ++++++++--
3 files changed, 14 insertions(+), 23 deletions(-)
delete mode 100644 tests/tcg/Makefile.prereqs
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 05c534ea56..b5d0d6bc98 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -39,14 +39,17 @@ SPEED = quick
# Build up our target list from the filtered list of ninja targets
TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
+-include tests/tcg/Makefile.prereqs
+config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh
+tests/tcg/Makefile.prereqs: config-host.mak
+
# Per guest TCG tests
BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TARGETS))
CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGETS))
RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGETS))
-# Probe for the Docker Builds needed for each build
-$(foreach PROBE_TARGET,$(TARGET_DIRS), \
- $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs))
+$(foreach TARGET,$(TARGETS), \
+ $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))
$(BUILD_TCG_TARGET_RULES): build-tcg-tests-%: $(if $(CONFIG_PLUGIN),test-plugins)
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
diff --git a/tests/tcg/Makefile.prereqs b/tests/tcg/Makefile.prereqs
deleted file mode 100644
index 9a29604a83..0000000000
--- a/tests/tcg/Makefile.prereqs
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# TCG Compiler Probe
-#
-# This Makefile fragment 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.
-
-DOCKER_IMAGE:=
-
--include $(BUILD_DIR)/tests/tcg/config-$(PROBE_TARGET).mak
-
-ifneq ($(DOCKER_IMAGE),)
-build-tcg-tests-$(PROBE_TARGET): docker-image-$(DOCKER_IMAGE)
-endif
-$(BUILD_DIR)/tests/tcg/config_$(PROBE_TARGET).mak: config-host.mak
-config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 0d864c24fc..904c351029 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -80,6 +80,8 @@ fi
: ${cross_as_tricore="tricore-as"}
: ${cross_ld_tricore="tricore-ld"}
+makefile=tests/tcg/Makefile.prereqs
+: > $makefile
for target in $target_list; do
arch=${target%%-*}
@@ -226,14 +228,17 @@ for target in $target_list; do
echo "target=$target" >> $config_target_mak
case $target in
*-softmmu)
- echo "QEMU=$PWD/qemu-system-$arch" >> $config_target_mak
+ qemu="qemu-system-$arch"
;;
*-linux-user|*-bsd-user)
- echo "QEMU=$PWD/qemu-$arch" >> $config_target_mak
+ qemu="qemu-$arch"
;;
esac
+ echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
+
eval "target_compiler_cflags=\${cross_cc_cflags_$arch}"
+ echo "QEMU=$PWD/$qemu" >> $config_target_mak
echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
got_cross_cc=no
@@ -329,6 +334,7 @@ for target in $target_list; do
test -n "$container_image"; then
for host in $container_hosts; do
if test "$host" = "$cpu"; then
+ echo "build-tcg-tests-$target: docker-image-$container_image" >> $makefile
echo "DOCKER_IMAGE=$container_image" >> $config_target_mak
echo "DOCKER_CROSS_CC_GUEST=$container_cross_cc" >> \
$config_target_mak
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 13/17] tests/tcg: list test targets in Makefile.prereqs
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (11 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 12/17] tests/tcg: prepare Makefile.prereqs at configure time Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 14/17] tests/tcg: invoke Makefile.target directly from QEMU's makefile Paolo Bonzini
` (4 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Omit the rules altogether for targets that do not have a compiler.
Makefile.qemu now is only invoked if the tests are actually built/run.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-13-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/Makefile.include | 14 +++++++-------
tests/tcg/Makefile.qemu | 11 -----------
tests/tcg/configure.sh | 17 ++++++++++++-----
3 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index b5d0d6bc98..091ca8513f 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -36,19 +36,16 @@ export SRC_PATH
SPEED = quick
-# Build up our target list from the filtered list of ninja targets
-TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
-
-include tests/tcg/Makefile.prereqs
config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh
tests/tcg/Makefile.prereqs: config-host.mak
# Per guest TCG tests
-BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TARGETS))
-CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGETS))
-RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGETS))
+BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TCG_TESTS_TARGETS))
+CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TCG_TESTS_TARGETS))
+RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS))
-$(foreach TARGET,$(TARGETS), \
+$(foreach TARGET,$(TCG_TESTS_TARGETS), \
$(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))
$(BUILD_TCG_TARGET_RULES): build-tcg-tests-%: $(if $(CONFIG_PLUGIN),test-plugins)
@@ -84,6 +81,9 @@ clean-tcg: $(CLEAN_TCG_TARGET_RULES)
.PHONY: check-venv check-avocado check-acceptance check-acceptance-deprecated-warning
+# Build up our target list from the filtered list of ninja targets
+TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
+
TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu
index 84c8543878..cda5e5a33e 100644
--- a/tests/tcg/Makefile.qemu
+++ b/tests/tcg/Makefile.qemu
@@ -95,7 +95,6 @@ all:
.PHONY: guest-tests
-ifneq ($(GUEST_BUILD),)
guest-tests: $(GUEST_BUILD)
run-guest-tests: guest-tests
@@ -105,16 +104,6 @@ run-guest-tests: guest-tests
SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \
"RUN", "tests for $(TARGET_NAME)")
-else
-guest-tests:
- $(call quiet-command, true, "BUILD", \
- "$(TARGET) guest-tests SKIPPED")
-
-run-guest-tests:
- $(call quiet-command, true, "RUN", \
- "tests for $(TARGET) SKIPPED")
-endif
-
# It doesn't matter if these don't exits
.PHONY: clean-guest-tests
clean-guest-tests:
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 904c351029..e51cd56b60 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -81,7 +81,9 @@ fi
: ${cross_ld_tricore="tricore-ld"}
makefile=tests/tcg/Makefile.prereqs
-: > $makefile
+echo "# Automatically generated by configure - do not modify" > $makefile
+
+tcg_tests_targets=
for target in $target_list; do
arch=${target%%-*}
@@ -228,6 +230,7 @@ for target in $target_list; do
echo "target=$target" >> $config_target_mak
case $target in
*-softmmu)
+ test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
qemu="qemu-system-$arch"
;;
*-linux-user|*-bsd-user)
@@ -235,11 +238,7 @@ for target in $target_list; do
;;
esac
- echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
-
eval "target_compiler_cflags=\${cross_cc_cflags_$arch}"
- echo "QEMU=$PWD/$qemu" >> $config_target_mak
- echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
got_cross_cc=no
@@ -362,8 +361,16 @@ for target in $target_list; do
echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
;;
esac
+ got_cross_cc=yes
break
fi
done
fi
+ if test $got_cross_cc = yes; then
+ echo "QEMU=$PWD/$qemu" >> $config_target_mak
+ echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
+ echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
+ tcg_tests_targets="$tcg_tests_targets $target"
+ fi
done
+echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $makefile
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 14/17] tests/tcg: invoke Makefile.target directly from QEMU's makefile
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (12 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 13/17] tests/tcg: list test targets in Makefile.prereqs Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 15/17] tests/tcg: isolate from QEMU's config-host.mak Paolo Bonzini
` (3 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Build the "docker.py cc" invocation directly in tests/tcg/configure.sh, and
remove the Makefile.qemu wrapper around Makefile.target. The config-*.mak
files now include the actual variables used when building the tests, rather
than the CROSS_* variables that Makefile.qemu used to "translate".
This is a first step towards generalizing the cross-compilation infrastructure
so that it can be used for firmware as well.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-14-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/Makefile.include | 36 +++++++------
tests/tcg/Makefile.qemu | 110 --------------------------------------
tests/tcg/Makefile.target | 3 +-
tests/tcg/configure.sh | 28 +++++-----
4 files changed, 33 insertions(+), 144 deletions(-)
delete mode 100644 tests/tcg/Makefile.qemu
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 091ca8513f..ec84b2ebc0 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -48,25 +48,27 @@ RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS))
$(foreach TARGET,$(TCG_TESTS_TARGETS), \
$(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))
-$(BUILD_TCG_TARGET_RULES): build-tcg-tests-%: $(if $(CONFIG_PLUGIN),test-plugins)
- $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
- -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
- SRC_PATH=$(SRC_PATH) \
- V="$(V)" TARGET="$*" guest-tests, \
- "BUILD", "TCG tests for $*")
+.PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%)
+$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak
+ $(call quiet-command, \
+ $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
+ DOCKER_SCRIPT="$(DOCKER_SCRIPT)" \
+ TARGET="$*" SRC_PATH="$(SRC_PATH)", \
+ "BUILD","$* guest-tests")
-$(RUN_TCG_TARGET_RULES): run-tcg-tests-%: build-tcg-tests-% all
- $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
- -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
- SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \
- V="$(V)" TARGET="$*" run-guest-tests, \
- "RUN", "TCG tests for $*")
+.PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%)
+$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-% $(if $(CONFIG_PLUGIN),test-plugins)
+ $(call quiet-command, \
+ $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
+ TARGET="$*" SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run, \
+ "RUN", "$* guest-tests")
-$(CLEAN_TCG_TARGET_RULES): clean-tcg-tests-%:
- $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
- -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
- SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \
- "CLEAN", "TCG tests for $*")
+.PHONY: $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%)
+$(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%:
+ $(call quiet-command, \
+ $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
+ TARGET="$*" SRC_PATH="$(SRC_PATH)" clean, \
+ "CLEAN", "$* guest-tests")
.PHONY: build-tcg
build-tcg: $(BUILD_TCG_TARGET_RULES)
diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu
deleted file mode 100644
index cda5e5a33e..0000000000
--- a/tests/tcg/Makefile.qemu
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# TCG tests (per-target rules)
-#
-# This Makefile fragment is included from the build-tcg target, once
-# for each target we build. We have two options for compiling, either
-# using a configured guest compiler or calling one of our docker images
-# to do it for us.
-#
-
-# The configure script fills in extra information about
-# useful docker images or alternative compiler flags.
-
-# Usage: $(call quiet-command,command and args,"NAME","args to print")
-# This will run "command and args", and either:
-# if V=1 just print the whole command and args
-# otherwise print the 'quiet' output in the format " NAME args to print"
-# NAME should be a short name of the command, 7 letters or fewer.
-# If called with only a single argument, will print nothing in quiet mode.
-quiet-command-run = $(if $(V),,$(if $2,printf " %-7s %s\n" $2 $3 && ))$1
-quiet-@ = $(if $(V),,@)
-quiet-command = $(quiet-@)$(call quiet-command-run,$1,$2,$3)
-
-CROSS_CC_GUEST:=
-CROSS_AS_GUEST:=
-CROSS_LD_GUEST:=
-DOCKER_IMAGE:=
-
--include tests/tcg/config-$(TARGET).mak
-
-GUEST_BUILD=
-TCG_MAKE=../Makefile.target
-
-# We also need the Docker make rules to depend on
-SKIP_DOCKER_BUILD=1
-include $(SRC_PATH)/tests/docker/Makefile.include
-
-# Support installed Cross Compilers
-
-ifdef CROSS_CC_GUEST
-
-.PHONY: cross-build-guest-tests
-cross-build-guest-tests:
- $(call quiet-command, \
- (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
- $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \
- $(if $(CROSS_AS_GUEST),AS="$(CROSS_AS_GUEST)") \
- $(if $(CROSS_LD_GUEST),LD="$(CROSS_LD_GUEST)") \
- SRC_PATH="$(SRC_PATH)" BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \
- EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
- "BUILD","$(TARGET) guest-tests with $(CROSS_CC_GUEST)")
-
-GUEST_BUILD=cross-build-guest-tests
-
-endif
-
-# Support building with Docker
-
-ifneq ($(DOCKER_IMAGE),)
-
-DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc \
- --cc $(DOCKER_CROSS_CC_GUEST) \
- -i qemu/$(DOCKER_IMAGE) \
- -s $(SRC_PATH) -- "
-
-DOCKER_AS_CMD=$(if $(DOCKER_CROSS_AS_GUEST),"$(DOCKER_SCRIPT) cc \
- --cc $(DOCKER_CROSS_AS_GUEST) \
- -i qemu/$(DOCKER_IMAGE) \
- -s $(SRC_PATH) -- ")
-
-DOCKER_LD_CMD=$(if $(DOCKER_CROSS_LD_GUEST),"$(DOCKER_SCRIPT) cc \
- --cc $(DOCKER_CROSS_LD_GUEST) \
- -i qemu/$(DOCKER_IMAGE) \
- -s $(SRC_PATH) -- ")
-
-
-.PHONY: docker-build-guest-tests
-docker-build-guest-tests: docker-image-$(DOCKER_IMAGE)
- $(call quiet-command, \
- (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
- $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC=$(DOCKER_COMPILE_CMD) \
- $(if $(DOCKER_AS_CMD),AS=$(DOCKER_AS_CMD)) \
- $(if $(DOCKER_LD_CMD),LD=$(DOCKER_LD_CMD)) \
- SRC_PATH="$(SRC_PATH)" BUILD_STATIC=y \
- EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
- "BUILD","$(TARGET) guest-tests with docker qemu/$(DOCKER_IMAGE)")
-
-GUEST_BUILD=docker-build-guest-tests
-
-endif
-
-# Final targets
-all:
- @echo "Do not invoke this Makefile directly"; exit 1
-
-.PHONY: guest-tests
-
-guest-tests: $(GUEST_BUILD)
-
-run-guest-tests: guest-tests
- $(call quiet-command, \
- (cd tests/tcg/$(TARGET) && \
- $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" \
- SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \
- "RUN", "tests for $(TARGET_NAME)")
-
-# It doesn't matter if these don't exits
-.PHONY: clean-guest-tests
-clean-guest-tests:
- rm -rf tests/tcg/$(TARGET)
diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index c75e8d983f..95499d8c9b 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -187,4 +187,5 @@ gdb-%: %
.PHONY: run
run: $(RUN_TESTS)
-# There is no clean target, the calling make just rm's the tests build dir
+clean:
+ rm -f $(TESTS) *.o
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index e51cd56b60..a577dd7ece 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -227,7 +227,6 @@ for target in $target_list; do
echo "# Automatically generated by configure - do not modify" > $config_target_mak
echo "TARGET_NAME=$arch" >> $config_target_mak
- echo "target=$target" >> $config_target_mak
case $target in
*-softmmu)
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
@@ -257,13 +256,13 @@ for target in $target_list; do
if do_compiler "$target_compiler" $target_compiler_cflags \
-o $TMPE $TMPC ; then
got_cross_cc=yes
- echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
- echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak
+ echo "BUILD_STATIC=y" >> $config_target_mak
+ echo "CC=$target_compiler" >> $config_target_mak
fi
else
got_cross_cc=yes
- echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
- echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak
+ echo "BUILD_STATIC=y" >> $config_target_mak
+ echo "CC=$target_compiler" >> $config_target_mak
fi
fi
fi
@@ -274,9 +273,8 @@ for target in $target_list; do
if has $target_as && has $target_ld; then
case $target in
tricore-softmmu)
- echo "CROSS_CC_GUEST=$target_as" >> $config_target_mak
- echo "CROSS_AS_GUEST=$target_as" >> $config_target_mak
- echo "CROSS_LD_GUEST=$target_ld" >> $config_target_mak
+ echo "AS=$target_as" >> $config_target_mak
+ echo "LD=$target_ld" >> $config_target_mak
got_cross_cc=yes
;;
esac
@@ -334,16 +332,13 @@ for target in $target_list; do
for host in $container_hosts; do
if test "$host" = "$cpu"; then
echo "build-tcg-tests-$target: docker-image-$container_image" >> $makefile
- echo "DOCKER_IMAGE=$container_image" >> $config_target_mak
- echo "DOCKER_CROSS_CC_GUEST=$container_cross_cc" >> \
- $config_target_mak
+ echo "BUILD_STATIC=y" >> $config_target_mak
+ echo "CC=\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --" >> $config_target_mak
if test -n "$container_cross_as"; then
- echo "DOCKER_CROSS_AS_GUEST=$container_cross_as" >> \
- $config_target_mak
+ echo "AS=\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$container_image -s $source_path --" >> $config_target_mak
fi
if test -n "$container_cross_ld"; then
- echo "DOCKER_CROSS_LD_GUEST=$container_cross_ld" >> \
- $config_target_mak
+ echo "LD=\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$container_image -s $source_path --" >> $config_target_mak
fi
case $target in
aarch64-*)
@@ -367,8 +362,9 @@ for target in $target_list; do
done
fi
if test $got_cross_cc = yes; then
+ mkdir -p tests/tcg/$target
echo "QEMU=$PWD/$qemu" >> $config_target_mak
- echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
+ echo "EXTRA_CFLAGS=$target_compiler_cflags" >> $config_target_mak
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
tcg_tests_targets="$tcg_tests_targets $target"
fi
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 15/17] tests/tcg: isolate from QEMU's config-host.mak
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (13 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 14/17] tests/tcg: invoke Makefile.target directly from QEMU's makefile Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 16/17] tests/docker: remove SKIP_DOCKER_BUILD Paolo Bonzini
` (2 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
Do not include variables for the QEMU's own compiler, as they
are not necessarily related to the cross compiler used for tests/tcg.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 3 +--
tests/tcg/Makefile.target | 3 +--
tests/tcg/configure.sh | 5 +++++
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index 7c08c18358..e8786d478e 100755
--- a/configure
+++ b/configure
@@ -2937,7 +2937,6 @@ echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
echo "MESON=$meson" >> $config_host_mak
echo "NINJA=$ninja" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
-echo "HOST_CC=$host_cc" >> $config_host_mak
echo "AR=$ar" >> $config_host_mak
echo "AS=$as" >> $config_host_mak
echo "CCAS=$ccas" >> $config_host_mak
@@ -3057,7 +3056,7 @@ done
(for i in $cross_cc_vars; do
export $i
done
-export target_list source_path use_containers cpu
+export target_list source_path use_containers cpu host_cc
$source_path/tests/tcg/configure.sh)
# temporary config to build submodules
diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index 95499d8c9b..f427a0304e 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -30,7 +30,7 @@
#
all:
--include ../../../config-host.mak
+-include ../config-host.mak
-include ../config-$(TARGET).mak
# Get semihosting definitions for user-mode emulation
@@ -77,7 +77,6 @@ EXTRA_TESTS=
# Start with a blank slate, the build targets get to add stuff first
CFLAGS=
-QEMU_CFLAGS=
LDFLAGS=
QEMU_OPTS=
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index a577dd7ece..75603fee6d 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -83,6 +83,11 @@ fi
makefile=tests/tcg/Makefile.prereqs
echo "# Automatically generated by configure - do not modify" > $makefile
+config_host_mak=tests/tcg/config-host.mak
+echo "# Automatically generated by configure - do not modify" > $config_host_mak
+echo "SRC_PATH=$source_path" >> $config_host_mak
+echo "HOST_CC=$host_cc" >> $config_host_mak
+
tcg_tests_targets=
for target in $target_list; do
arch=${target%%-*}
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 16/17] tests/docker: remove SKIP_DOCKER_BUILD
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (14 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 15/17] tests/tcg: isolate from QEMU's config-host.mak Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-01 14:13 ` [PATCH 17/17] tests/tcg: fix non-static build Paolo Bonzini
2022-04-11 9:59 ` [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Alex Bennée
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
It is now unused.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-15-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/Makefile.include | 12 +-------
tests/docker/docker.py | 57 -----------------------------------
2 files changed, 1 insertion(+), 68 deletions(-)
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index eb100c294f..ca2157db46 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -33,15 +33,7 @@ $(DOCKER_SRC_COPY):
docker-qemu-src: $(DOCKER_SRC_COPY)
-# General rule for building docker images. If we are a sub-make
-# invoked with SKIP_DOCKER_BUILD we still check the image is up to date
-# though
-ifdef SKIP_DOCKER_BUILD
-docker-image-%: $(DOCKER_FILES_DIR)/%.docker
- $(call quiet-command, \
- $(DOCKER_SCRIPT) check --quiet qemu/$* $<, \
- "CHECK", "$*")
-else
+# General rule for building docker images.
docker-image-%: $(DOCKER_FILES_DIR)/%.docker
$(call quiet-command,\
$(DOCKER_SCRIPT) build -t qemu/$* -f $< \
@@ -77,8 +69,6 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
{ echo "You will need to build $(EXECUTABLE)"; exit 1;},\
"CHECK", "debian-$* exists"))
-endif
-
# Enforce dependencies for composite images
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian10 debian11
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 78dd13171e..d0af2861b8 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -676,63 +676,6 @@ def run(self, args, argv):
as_user=True)
-class CheckCommand(SubCommand):
- """Check if we need to re-build a docker image out of a dockerfile.
- Arguments: <tag> <dockerfile>"""
- name = "check"
-
- def args(self, parser):
- parser.add_argument("tag",
- help="Image Tag")
- parser.add_argument("dockerfile", default=None,
- help="Dockerfile name", nargs='?')
- parser.add_argument("--checktype", choices=["checksum", "age"],
- default="checksum", help="check type")
- parser.add_argument("--olderthan", default=60, type=int,
- help="number of minutes")
-
- def run(self, args, argv):
- tag = args.tag
-
- try:
- dkr = Docker()
- except subprocess.CalledProcessError:
- print("Docker not set up")
- return 1
-
- info = dkr.inspect_tag(tag)
- if info is None:
- print("Image does not exist")
- return 1
-
- if args.checktype == "checksum":
- if not args.dockerfile:
- print("Need a dockerfile for tag:%s" % (tag))
- return 1
-
- dockerfile = _read_dockerfile(args.dockerfile)
-
- if dkr.image_matches_dockerfile(tag, dockerfile):
- if not args.quiet:
- print("Image is up to date")
- return 0
- else:
- print("Image needs updating")
- return 1
- elif args.checktype == "age":
- timestr = dkr.get_image_creation_time(info).split(".")[0]
- created = datetime.strptime(timestr, "%Y-%m-%dT%H:%M:%S")
- past = datetime.now() - timedelta(minutes=args.olderthan)
- if created < past:
- print ("Image created @ %s more than %d minutes old" %
- (timestr, args.olderthan))
- return 1
- else:
- if not args.quiet:
- print ("Image less than %d minutes old" % (args.olderthan))
- return 0
-
-
def main():
global USE_ENGINE
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 17/17] tests/tcg: fix non-static build
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (15 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 16/17] tests/docker: remove SKIP_DOCKER_BUILD Paolo Bonzini
@ 2022-04-01 14:13 ` Paolo Bonzini
2022-04-11 9:59 ` [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Alex Bennée
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2022-04-01 14:13 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, alex.bennee
If linking with -static fails at configure time, -static should not be used
at build time either. Do not include BUILD_STATIC in $config_target_mak.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220328140240.40798-16-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/configure.sh | 1 -
1 file changed, 1 deletion(-)
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 75603fee6d..691d90abac 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -261,7 +261,6 @@ for target in $target_list; do
if do_compiler "$target_compiler" $target_compiler_cflags \
-o $TMPE $TMPC ; then
got_cross_cc=yes
- echo "BUILD_STATIC=y" >> $config_target_mak
echo "CC=$target_compiler" >> $config_target_mak
fi
else
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 00/17] tests/docker and tests/tcg cleanup and diet
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
` (16 preceding siblings ...)
2022-04-01 14:13 ` [PATCH 17/17] tests/tcg: fix non-static build Paolo Bonzini
@ 2022-04-11 9:59 ` Alex Bennée
17 siblings, 0 replies; 19+ messages in thread
From: Alex Bennée @ 2022-04-11 9:59 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: richard.henderson, qemu-devel
Paolo Bonzini <pbonzini@redhat.com> writes:
> The first eight patches simplify and clean up a bit the
> tests/docker/Makefile.include file.
Queued to testing/next, thanks.
--
Alex Bennée
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2022-04-11 10:02 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01 14:13 [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Paolo Bonzini
2022-04-01 14:13 ` [PATCH 01/17] tests/docker: remove dead code for linux-user containers Paolo Bonzini
2022-04-01 14:13 ` [PATCH 02/17] tests/docker: remove test targets Paolo Bonzini
2022-04-01 14:13 ` [PATCH 03/17] tests/docker: remove dead variable Paolo Bonzini
2022-04-01 14:13 ` [PATCH 04/17] tests/docker: remove unnecessary default definitions Paolo Bonzini
2022-04-01 14:13 ` [PATCH 05/17] tests/docker: inline variable definitions or move close to use Paolo Bonzini
2022-04-01 14:13 ` [PATCH 06/17] tests/docker: remove unnecessary filtering of $(DOCKER_IMAGES) Paolo Bonzini
2022-04-01 14:13 ` [PATCH 07/17] tests/docker: simplify docker-TEST@IMAGE targets Paolo Bonzini
2022-04-01 14:13 ` [PATCH 08/17] tests/docker: do not duplicate rules for hexagon-cross Paolo Bonzini
2022-04-01 14:13 ` [PATCH 09/17] tests/tcg: add compiler test variables when using containers Paolo Bonzini
2022-04-01 14:13 ` [PATCH 10/17] tests/tcg: remove CONFIG_LINUX_USER from config-target.mak Paolo Bonzini
2022-04-01 14:13 ` [PATCH 11/17] tests/tcg: remove CONFIG_USER_ONLY " Paolo Bonzini
2022-04-01 14:13 ` [PATCH 12/17] tests/tcg: prepare Makefile.prereqs at configure time Paolo Bonzini
2022-04-01 14:13 ` [PATCH 13/17] tests/tcg: list test targets in Makefile.prereqs Paolo Bonzini
2022-04-01 14:13 ` [PATCH 14/17] tests/tcg: invoke Makefile.target directly from QEMU's makefile Paolo Bonzini
2022-04-01 14:13 ` [PATCH 15/17] tests/tcg: isolate from QEMU's config-host.mak Paolo Bonzini
2022-04-01 14:13 ` [PATCH 16/17] tests/docker: remove SKIP_DOCKER_BUILD Paolo Bonzini
2022-04-01 14:13 ` [PATCH 17/17] tests/tcg: fix non-static build Paolo Bonzini
2022-04-11 9:59 ` [PATCH 00/17] tests/docker and tests/tcg cleanup and diet Alex Bennée
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.