Lines Matching +full:cross +full:- +full:mips64el +full:- +full:user
3 .PHONY: docker docker-help docker-test docker-clean docker-image docker-qemu-src
9 HOST_ARCH = $(shell uname -m)
10 USER = $(if $(NOUSER),,$(shell id -un))
11 UID = $(if $(NOUSER),,$(shell id -u))
15 DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
19 RUNC ?= $(if $(shell command -v docker), docker, podman)
20 DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(RUNC)
22 CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
23 DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME)
29 $(call quiet-command, cp "$(SRC_ARCHIVE)" $@/qemu.tar, \
31 $(call quiet-command, cd $(SRC_PATH) && scripts/archive-source.sh $@/qemu.tar, \
33 $(call quiet-command, cp $(SRC_PATH)/tests/docker/run $@/run, \
36 docker-qemu-src: $(DOCKER_SRC_COPY)
39 docker-image-%: $(DOCKER_FILES_DIR)/%.docker
40 $(call quiet-command, \
42 $(if $V,,--quiet) \
43 $(if $(NOCACHE),--no-cache, \
44 $(if $(DOCKER_REGISTRY),--cache-from $(DOCKER_REGISTRY)/qemu/$*)) \
45 --build-arg BUILDKIT_INLINE_CACHE=1 \
47 --build-arg USER=$(USER) \
48 --build-arg UID=$(UID)) \
49 -t qemu/$* - < $< $(if $V,,> /dev/null),\
52 # Special rule for debootstraped binfmt linux-user images
53 docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
55 $(error EXECUTABLE not set, debootstrap of debian-$* would fail))
57 $(error DEB_ARCH not set, debootstrap of debian-$* would fail))
59 $(error DEB_TYPE not set, debootstrap of debian-$* would fail))
61 $(call quiet-command, \
65 $(DOCKER_SCRIPT) build -t qemu/debian-$* -f $< \
66 $(if $V,,--quiet) $(if $(NOCACHE),--no-cache) \
67 $(if $(NOUSER),,--add-current-user) \
68 $(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES)) \
69 $(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)), \
70 "BUILD","binfmt debian-$* (debootstrapped)"), \
71 $(call quiet-command, \
72 $(DOCKER_SCRIPT) check --quiet qemu/debian-$* $< || \
74 "CHECK", "debian-$* exists"))
76 # Special case cross-compiling x86_64 on non-x86_64 systems.
78 DOCKER_PARTIAL_IMAGES += debian-amd64-cross
80 DOCKER_PARTIAL_IMAGES += debian-amd64
83 # For non-x86 hosts not all cross-compilers have been packaged
85 DOCKER_PARTIAL_IMAGES += debian-mipsel-cross debian-mips64el-cross
86 DOCKER_PARTIAL_IMAGES += debian-ppc64el-cross
87 DOCKER_PARTIAL_IMAGES += debian-s390x-cross
92 docker-image-alpine: NOUSER=1
94 debian-toolchain-run = \
96 $(call quiet-command, \
97 $(DOCKER_SCRIPT) build -t qemu/$1 -f $< \
98 $(if $V,,--quiet) $(if $(NOCACHE),--no-cache) \
99 --registry $(DOCKER_REGISTRY) --extra-files \
100 $(DOCKER_FILES_DIR)/$1.d/build-toolchain.sh, \
102 $(call quiet-command, \
103 $(DOCKER_SCRIPT) fetch $(if $V,,--quiet) \
106 $(call quiet-command, \
107 $(DOCKER_SCRIPT) update $(if $V,,--quiet) \
109 $(if $(NOUSER),,--add-current-user) \
111 debian-toolchain = $(call debian-toolchain-run,$(patsubst docker-image-%,%,$1))
113 docker-image-debian-microblaze-cross: $(DOCKER_FILES_DIR)/debian-toolchain.docker \
114 $(DOCKER_FILES_DIR)/debian-microblaze-cross.d/build-toolchain.sh
115 $(call debian-toolchain, $@)
118 DOCKER_PARTIAL_IMAGES += debian-microblaze-cross
119 DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
122 DOCKER_VIRTUAL_IMAGES := debian-bootstrap debian-toolchain
124 __IMAGES := $(sort $(filter-out $(DOCKER_VIRTUAL_IMAGES), $(notdir $(basename $(wildcard $(DOCKER_F…
127 __TESTS := $(notdir $(shell find $(SRC_PATH)/tests/docker/ -name 'test-*' -type f))
130 # Expand all the pre-requistes for each docker image and test combination
131 $(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
133 $(eval .PHONY: docker-$t@$i) \
134 $(eval docker-$t@$i: docker-image-$i; @$(MAKE) docker-run TEST=$t IMAGE=qemu/$i) \
137 $(eval docker-all-tests: docker-$t@$i) \
138 $(eval docker-$t: docker-$t@$i) \
148 @echo ' docker-all-tests: Run all image/test combinations.'
149 @echo ' docker-TEST: Run "TEST" on all image combinations.'
150 @echo ' docker-clean: Kill and remove residual docker testing containers.'
151 @echo ' docker-TEST@IMAGE: Run "TEST" in container "IMAGE".'
155 @echo ' docker-image: Build all images.'
156 @echo ' docker-image-IMAGE: Build image "IMAGE".'
157 @echo ' docker-run: For manually running a "TEST" with "IMAGE".'
172 @echo ' J=[0..9]* Overrides the -jN parameter for make commands'
178 @echo ' NOUSER=1 Define to disable adding current user to containers passwd.'
186 docker-help: docker
189 DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache
193 # docker-test-foo@bar) which will also ensure the image is up to date.
195 # For example: make docker-run TEST="test-quick" IMAGE="debian:arm64" EXECUTABLE=./aarch64-linux-us…
197 docker-run: docker-qemu-src
198 @mkdir -p "$(DOCKER_CCACHE_DIR)"
199 @if test -z "$(IMAGE)" || test -z "$(TEST)"; \
203 $(call quiet-command, \
205 $(IMAGE) --executable $(EXECUTABLE), \
207 $(call quiet-command, \
209 --rm \
212 -u $(UID), \
213 --userns keep-id \
216 --security-opt seccomp=unconfined \
217 $(if $(DEBUG),-ti,) \
218 $(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \
219 -e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(TARGET_LIST)) \
220 -e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \
221 -e TEST_COMMAND="$(TEST_COMMAND)" \
222 -e V=$V -e J=$J -e DEBUG=$(DEBUG) \
223 -e SHOW_ENV=$(SHOW_ENV) \
225 -e CCACHE_DIR=/var/tmp/ccache \
226 -v $(DOCKER_CCACHE_DIR):/var/tmp/ccache:z \
228 -v $$(readlink -e $(DOCKER_SRC_COPY)):/var/tmp/qemu:z$(COMMA)ro \
232 $(call quiet-command, rm -r $(DOCKER_SRC_COPY), \
235 docker-image: ${DOCKER_IMAGES:%=docker-image-%}
237 docker-clean:
238 $(call quiet-command, $(DOCKER_SCRIPT) clean)