@ -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
i f e q ( $( HOST_ARCH ) , x 8 6 _ 6 4 )
DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
e n d i f
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
e n d i f
# Enforce dependencies for composite images
# we don't run tests on intermediate images (used as base by another image)
DOCKER_PARTIAL_IMAGES := debian10 debian11
i f e q ( $( HOST_ARCH ) , x 8 6 _ 6 4 )
docker-image-debian-amd64 : docker -image -debian 10
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)