Message ID | 20180703101444.23778-12-alex.bennee@linaro.org |
---|---|
State | New |
Headers | show |
Series | Travis, Code Coverage and Cross Build updates | expand |
On 03/07/2018 12:14, Alex Bennée wrote: > The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the > effect of defaulting all docker builds to the current configured set > of targets. This is actually reasonable behaviour but does run into > problems if you have linux-user builds configured and you want to test > the windows cross builds. This commit fixes that by adding a > DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds > so we don't pass the whole set down. > +# Special cases > +# mingw/windows builds cannot build linux-user > +docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user > +docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user > +docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user Some questions: 1) Any reason to keep all three? 2) Can we do it in the test script instead? 3) DEF_TARGET_LIST in the test script becomes meaningless. 4) You now have to override TARGET_LIST with "make TARGET_LIST=foo-softmmu docker-test-mingw@fedora". Does this interact badly with other uses of TARGET_LIST in the Makefile? Thanks, Paolo
Paolo Bonzini <pbonzini@redhat.com> writes: > On 03/07/2018 12:14, Alex Bennée wrote: >> The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the >> effect of defaulting all docker builds to the current configured set >> of targets. This is actually reasonable behaviour but does run into >> problems if you have linux-user builds configured and you want to test >> the windows cross builds. This commit fixes that by adding a >> DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds >> so we don't pass the whole set down. > >> +# Special cases >> +# mingw/windows builds cannot build linux-user >> +docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user >> +docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user >> +docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user > > Some questions: > > 1) Any reason to keep all three? We could prune but it doesn't hurt. > > 2) Can we do it in the test script instead? > > 3) DEF_TARGET_LIST in the test script becomes meaningless. Good point. > > 4) You now have to override TARGET_LIST with "make > TARGET_LIST=foo-softmmu docker-test-mingw@fedora". Does this interact > badly with other uses of TARGET_LIST in the Makefile? Yeah I originally thought this made sense from the "docker builds the same as my configured setup" sense but your right that's overkill. > > Thanks, > > Paolo -- Alex Bennée
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 91d9665517..1813ec0781 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -20,6 +20,9 @@ DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py TESTS ?= % IMAGES ?= % +# This is used to filter targets from some docker builds +DOCKER_FILTER_TARGETS ?= + CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$) DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME) @@ -108,6 +111,12 @@ $(foreach i,$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES), \ ) \ ) +# Special cases +# mingw/windows builds cannot build linux-user +docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user +docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user +docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user + docker: @echo 'Build QEMU and run tests inside Docker containers' @echo @@ -174,7 +183,7 @@ docker-run: docker-qemu-src $(if $V,,--rm) \ $(if $(DEBUG),-ti,) \ $(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \ - -e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(TARGET_LIST)) \ + -e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(filter-out $(DOCKER_FILTER_TARGETS),$(TARGET_LIST))) \ -e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \ -e V=$V -e J=$J -e DEBUG=$(DEBUG) \ -e SHOW_ENV=$(SHOW_ENV) \ @@ -195,7 +204,8 @@ docker-run: docker-qemu-src 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) + @$(MAKE) docker-run TEST=$(CMD) IMAGE=qemu:$(IMAGE) DOCKER_FILTER_TARGETS=$(DOCKER_FILTER_TARGETS) + docker-clean: $(call quiet-command, $(DOCKER_SCRIPT) clean)
The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the effect of defaulting all docker builds to the current configured set of targets. This is actually reasonable behaviour but does run into problems if you have linux-user builds configured and you want to test the windows cross builds. This commit fixes that by adding a DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds so we don't pass the whole set down. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Paolo Bonzini <pbonzini@redhat.com> -- 2.17.1